自学内容网 自学内容网

【监控软件】Zabbix

目录

重点提要

1. 常见监控软件

2. 常用的zabbix组件

3. 主动模式与被动模式原理

4. 主动模式与被动模式实现

5. 监测JAVA程序Tomcat

6. proxy架构

7. proxy的安装

8. proxy的主动被动实现

9. zabbix自定义模版

10. zabbix邮件通知

11. zabbix自愈(nginx为例)

12. zabbix批量添加主机


重点提要

1. 常见监控软件

cacti:流量监控工具,对交换机路由器,对服务器不行
nagios:分层告警,监控数量有限,承载能力低
Open-falcon:小米开发
Nightingale:与猎鹰差不多
zabbix:功能强大,成熟稳定
prometheus:主要监控容器

2. 常用的zabbix组件

zabbix-server
zabbix-agent
zabbix-proxy用于转发
java-gateway用于监控java程序

3. 主动模式与被动模式原理

主动、被动模式都是相对于agent而言的,默认是被动模式
若业务量大,且不想用proxy,则最好使用主动模式
​
主动模式:客户端主动将数据发给server或proxy
1. 初次连接agent服务器会开启随机端口去连接   服务端的 10051 端口 来获取 需要监控的数据类型(监控项)
2. 从节点将数据交给主
3. 主写入数据库
4. 最后展示在 web页面中
5. 此后的数据收集就不需要先去获取监控项目
​
被动模式:客户端什么都不用做,只需要等被动等待server或proxy索要数据
1. 主服务器会开启随机端口去连接 客户端的 10050 端口 来获取数据
2. 从节点将数据交给主
3. 主写入数据库
4. 最后展示在 web页面中
被动模式

主动模式

4. 主动模式与被动模式实现

#主动模式实现
#在agent服务器
vim /apps/zabbix/etc/zabbix_agentd.conf
​
Server=192.168.254.10#谁可以来主动获取本服务器的数据
ServerActive=192.168.254.10#配置主动模式的zabbix server地址
​
#被动模式实现
#默认即为被动模式

5. 监测JAVA程序Tomcat

#通过JMX监控软件来监测
​
#在tomcat服务器上
vim /usr/local/tomcat/bin/catalina.sh
#一般加在116行
CATALINA_OPTS="$CATALINA_OPTS  -Dcom.sun.management.jmxremote #启用远程监控JMX -Dcom.sun.management.jmxremote.port=12345 #默认启动的JMX端口号,要和zabbix添加主机时候的端口一致即可                 -Dcom.sun.management.jmxremote.authenticate=false    #不使用用户名密码-Dcom.sun.management.jmxremote.ssl=false  #不使用ssl认证-Djava.rmi.server.hostname=192.168.254.20"#hostname填写自己的IP
​
​
​
#在zabbix_server服务器上
vim /apps/zabbix_server/sbin/zabbix_java/settings.sh
START_POLLERS=5  #启动5个线程去采集java数据
TIMEOUT=30       #一个数据的超时时间30s
​
​
/apps/zabbix_server/sbin/zabbix_java/startup.sh
#启动服务
ss -antp |grep 10052
vim /apps/zabbix_server/etc/zabbix_server.conf
JavaGateway=192.168.254.100    #指明gateway地址
StartJavaPollers=5            #开启多少个进程去收集java服务器的信息
JavaGatewayPort=10052         # 默认不用改
​
systemctl restart zabbix-server
/apps/zabbix_server/sbin/zabbix_java/startup.sh

6. proxy架构

proxy也分主动和被动模式
一般推荐使用主动模式减轻server的负担
​
主动模式:agent主动去连proxy,proxy再连server
​
被动模式:proxy先向server发送连接请求,agent被动等待proxy连接,proxy再转发给server

7. proxy的安装

#安装依赖环境
yum install gcc libxml2-devel net-snmp net-snmp-devel curl curl-devel php php-bcmath php-mbstring mariadb mariadb-devel java-1.8.0-openjdk-devel -y
​
./configure --prefix=/apps/zabbix_proxy --enable-proxy --enable-agent --with-mysql --enable-ipv6 --with-net-snmp --with-libcurl --with-libxml2
​
make   install
​
#准备 数据库
yum install mariadb-server -y
systemctl start mariadb
​
#新建表 后用于主动与被动模式的配置
create database zabbix_proxy_active character set utf8 collate utf8_bin;
create database zabbix_proxy_passive character set utf8 collate utf8_bin;
# 授权
grant all privileges on zabbix_proxy_active.*  to proxy@'192.168.254.%' identified by '158436';
grant all privileges on zabbix_proxy_passive.* to proxy@'192.168.254.%' identified by '158436';
grant all privileges on zabbix_proxy_active.*  to proxy@'localhost' identified by '158436';
grant all privileges on zabbix_proxy_passive.* to proxy@'localhost' identified by '158436';
​
#导入数据结构
#先去源码包目录
mysql -uproxy -p158436 -h192.168.254.30 zabbix_proxy_passive < database/mysql/schema.sql
mysql -uproxy -p158436 -h192.168.254.30 zabbix_proxy_active < database/mysql/schema.sql

8. proxy的主动被动实现

环境介绍:
zabbix_server:192.168.254.50
zabbix_agent:192.168.254.30
zabbix_proxy:192.168.254.10
​
##########################被动模式#################################
#先去源码包目录,为数据库添加数据
mysql -uproxy -p158436  -h192.168.254.30 zabbix_proxy_passive < database/mysql/schema.sql
​
#配置proxy服务器
vim   /apps/zabbix_proxy/etc/zabbix_proxy.conf
ProxyMode=1
#1是被动 0为主动 修改为1
Server=192.168.254.10
# 指向 zabbix服务器 , 就算是主动模式也需要修改应为不是所有监控项都是主动还有被动的
ServerPort=10051
#被动模式可以不修改 应为是 zabbix-server 主动
Hostname=passive
# web 配置中需要使用, 必须一致
DBHost=192.168.254.30
#数据库地址
DBName=zabbix_proxy_passive
# 数据库名字
DBUser=proxy
#数据库用户
DBPassword=158436
#数据库密码
ConfigFrequency=5
#间隔多少秒从zabbix server获取监控项信息
#创建zabbix用户
useradd zabbix
#开启proxy
/apps/zabbix_proxy/sbin/zabbix_proxy
ss -natpl |grep 10051
#开启agent
/apps/zabbix_proxy/sbin/zabbix_agentd
pstree -p|grep zabbix
​
#在web端添加被动代理
点击管理,点击agent代理创建,名称为上面Hostname的值,IP为proxy服务器IP
​
#在agent服务器上
vim /apps/zabbix/etc/zabbix_agentd.conf
Server=192.168.254.10,192.168.254.50
systemctl  restart   zabbix-agent.service
​
##########################主动模式###############################
#先去源码包目录,为数据库添加数据
mysql -uproxy -p158436  -h192.168.254.30 zabbix_proxy_active < database/mysql/schema.sql
​
#配置proxy服务器
vim   /apps/zabbix_proxy/etc/zabbix_proxy.conf
ProxyMode=0
# 1是被动   0为主动 需要开启
Server=192.168.254.10
# 指向 zabbix服务器 , 就算是主动模式也需要修改应为不是所有监控项都是主动还有被动的
ServerPort=10051
#被动模式可以不修改 应为是 zabbix-server 主动
Hostname=active
# web 配置中需要使用, 必须一致
DBHost=192.168.254.30
#数据库地址
DBName=zabbix_proxy_active
# 数据库名字
DBUser=proxy
#数据库用户
DBPassword=158436
#数据库密码
#创建zabbix用户
useradd zabbix
#开启proxy
/apps/zabbix_proxy/sbin/zabbix_proxy
ss -natpl |grep 10051
#开启agent
/apps/zabbix_proxy/sbin/zabbix_agentd
pstree -p|grep zabbix
​
#在agent服务器上
vim /apps/zabbix/etc/zabbix_agentd.conf
Server=192.168.254.10,192.168.254.50
ServerActive=192.168.254.10
systemctl  restart   zabbix-agent.service

9. zabbix自定义模版

1.先修改agent配置文件,290行左右加入监控项的键值
UserParameter=test[*],/usr/bin/bash /data/tcp.sh $1  $2
需要自备脚本,提取相应的值
2.在网页端,添加自定义模版,修改监控项、触发器、图形

10. zabbix邮件通知

1.使用qq邮箱,打开设置中的smtp协议,扫码后获取一个授权码。
2.进入zabbix-server的网页,点击管理,点击报警媒介类型,点击Email。
3.编辑smtp服务器:smtp.qq.com,端口465,SMTP HELO:qq.com,
SMTP电邮:你的QQ邮箱,SSL验证对端和主机☑️,用户名与密码:用户名为QQ邮箱、密码为授权码,点击更新。
4.点击管理,点击用户,点击Admin,点击报警媒介,点击添加,类型为Email,收件人可以填自己邮箱,点击添加,并且更新。
5.点击配置,点击动作,
5.1 创建动作,
名称:邮件通知(可自定义)。触发条件:触发器示警度、等于、警告(自选),点击添加。
5.2 点击操作,默认操作持续时间:60s。操作细节:步骤:1-0。发送到用户:Admin。仅送到:Email。点击添加。
5.3 点击回复操作,发送到用户:Admin。仅送到:Email。点击添加

11. zabbix自愈(nginx为例)

1.进入zabbix-agent服务器
vim /etc/zabbix/zabbix_agentd.conf
73  EnableRemoteCommands=1 #开启远程执行命令
287 UnsafeUserParameters=1 #允许远程执行命令的时候使用不安全的参数(特殊字符串)
systemctl restart zabbix-ag
​
2.进入zabbix-server网页
点击配置--动作--创建动作
名称:nginx自愈。新的触发条件:触发器、等于、选模版nginx listen80
​
点击操作,默认操作持续时间:60s,操作细节:操作类型:远程命令。目标列表:当前主机。类型:自定义脚本。命令:systemctl start nginx。
点击添加。

12. zabbix批量添加主机

1.获取token
2.编辑添加主机的信息
3.执行命令或脚本
​
#!/bin/bash
#zabbix-server的IP
HostIP="192.168.254.50"
#输入你想要添加主机的IP
AddIP="
192.168.254.100
192.168.254.110
192.168.254.120
"
#获取token
Token=$(curl -s -X POST -H 'Content-Type:application/json' -d '{"jsonrpc":"2.0","method":"user.login","params":{"user":"Admin","password":"zabbix"},"id":1}' http://192.168.254.50/zabbix/api_jsonrpc.php | cut -d : -f3 | cut -d , -f1 | tr -dc [:alnum:])
​
#批量添加主机(不加代理)
for i in ${AddIP}
do
curl -s -X POST -H 'Content-Type:application/json' -d '
{
 "jsonrpc": "2.0",
 "method": "host.create",
 "params": {
    "host": "'${i}'",
    #下面这项为代理的id,不加代理不需要下面这行
    "proxy_hostid": "10274", 
    #上面这项为代理的id,不加代理不需要上面这行
    "interfaces": [
      {
        "type": 1,
        "main": 1,
        "useip": 1,
        "ip": "'${i}'",
        "dns": "",
        "port": "10050"
      }
  ],
  "groups": [
    {
        "groupid": "15"
      }
  ],
  "templates": [
  {
       "templateid": "10001"
  }
  ]
},
"auth": "'${Token}'",
"id": 1
}' http://${HostIP}/zabbix/api_jsonrpc.php | python -m json.tool
done

原文地址:https://blog.csdn.net/qq_56950352/article/details/140667214

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!