zabbix自定义监控
自定义监控:自定义场景监控
自定义监控进程
1.在客户端写一个通用脚本
2.在客户端打开自定义监控项
3.在客户端添加监控配置
4.在web界面配置监控项和触发器
//在根下面创建一个放脚本的文件夹,并写一个通用脚本
[root@localhost ~]# mkdir /shell
[root@localhost ~]# vim /shell/process.sh
[root@localhost ~]# cat /shell/process.sh
#!/bin/bash
process=$(ps -ef |grep "$1" |grep -Ev "grep | $0"|wc -l)
if [ $process -eq 0 ];then
echo "1"
else
echo "0"
fi
[root@localhost ~]# chmod a+x /shell/process.sh
//打开自定义监控项
[root@localhost ~]# vim /usr/local/etc/zabbix_agentd.conf
UnsafeUserParameters=1
UserParameter=check_process[*],/bin/bash /shell/process.sh $1
//然后在server端验证,0为服务开启,1为服务未开启
[root@zabbixserver ~]# zabbix_get -s 192.168.37.100 -k check_process[httpd]
1
[root@zabbixserver ~]# zabbix_get -s 192.168.37.100 -k check_process[sshd]
0
添加监控项
添加触发器
自定义监控日志文件
流程和监控进程一样,只不过使用的脚本不一样,监控日志文件不能使用shell脚本完成
//在受控机上安装一个python3
[root@localhost ~]# yum -y install python3
//创建一个测试日志文件
[root@localhost tmp]# touch /tmp/ceshi.log //随便往里面加点东西
//获取python代码,我这边使用的我同事的代码,可以检索日志文件中的Error关键字,第二次检索的时候会从上一次检索的位置开始检索
[root@localhost ~]# ls /shell/
log.py process.sh
//修改受控主机上的配置文件
[root@localhost ~]# vim /usr/local/etc/zabbix_agentd.conf
UserParameter=check_logs[*],python3 /shell/log.py $1 $2 $3 //改完记得重启
//在控制机上测试
[root@zabbixserver ~]# zabbix_get -s 192.168.37.100 -k check_logs[/tmp/ceshi.log]
1
[root@zabbixserver ~]# zabbix_get -s 192.168.37.100 -k check_logs[/tmp/ceshi.log]
0 //记得把受控主机上的logseek属主和属组改成zabbix用户和组,不然没有权限读取该文件
添加监控项
添加触发器
我们手动触发一次
[root@localhost ~]# echo 'Error' >> /tmp/ceshi.log
mysql主从监控
主从监控里监控的是从库的Slave_IO线程和Slave_SQL线程是否开启
主从配置可以看我之前的文章
写一个检测mysql线程状态的脚本
[root@localhost shell]# cat mysql_slave.sh
#!/bin/bash
mysql=$(mysql -uroot -payachinene -e 'show slave status\G'|grep -E 'IO_Running:|SQL_Running:'|grep -c 'Yes')
if [ $mysql -ne 2 ];then
echo '1'
else
echo '0'
fi
//查看状态为两个YES的时候为正常,其余的状态都是异常
//修改受控主机上的配置文件
[root@localhost ~]# vim /usr/local/etc/zabbix_agentd.conf
UserParameter=mysql_slave,/bin/bash /shell/mysql_slave.sh
//配置完记得重启
//在控制机上验证
[root@zabbixserver ~]# zabbix_get -s 192.168.37.100 -k mysql_slave
0
添加监控项
我们手动触发一次,打开主库的防火墙
mysql主从延迟监控
监控mysql的主从延迟查看Seconds_Behind_Master参数
//编写脚本
[root@localhost shell]# cat mysql_delay.sh
#!/bin/bash
mysql -uroot -payachinene -e'show slave status \G' | grep 'Seconds_Behind_Master' | awk '{print $NF}'
//修改受控主机上的配置文件
[root@localhost shell]# vim /usr/local/etc/zabbix_agentd.conf
UserParameter=mysql_delay,/bin/bash /shell/mysql_delay.sh
重启服务
//在控制机上测试
[root@zabbixserver ~]# zabbix_get -s 192.168.37.100 -k mysql_delay
0
添加监控项
添加触发器
触发报警