共计 1071 个字符,预计需要花费 3 分钟才能阅读完成。
问题现象
MySQL监控数据的获取及显示正常,但agent端关闭mysql后,不会发出告警,zabbix不会发出告警。
排查
1、查看zabbix-agent启动方式,得到/etc/zabbix/zabbix_agentd.conf是配置文件,去查看里面的mysql.ping的参数设置:
#vim /etc/zabbix/zabbix_agentd.conf
UserParameter=mysql.ping,mysqladmin -P3306 -h127.0.0.1 ping | grep -c alive
使用mysqladmin组件的一连串命令并且检索alive来获取结果集的,获取到就返回 1 表示mysql服务是开启的获取不到就返回 0 表示mysql服务关闭了,但是实际上呢?能返回1但是返回不了 0,因为mysqladmin命令会先报错信息出来,这样zabbix-server调用的时候返回的不是纯粹数字,而是字符串+数字,zabbix-server的触发器里面识别不了,mysqladmin命令信息如下:
mysqladmin -P3306 -h127.0.0.1 ping | grep -c alive
mysqladmin: connect to server at'127.0.0.1' failed
error: 'Can't connect to MySQL server on'127.0.0.1' (111)'
Check that mysqld is running on 127.0.0.1and that the port is 3306.
You can check this by doing 'telnet127.0.0.1 3306'
0
再看zabbix自带的mysql模版的mysql is down的触发条件是:{agent.com:mysql.ping.last(0)}=0,当调用mysql.ping的最后一个值是0的时候,触发报警。
解决
修改agent的配置文件vim /etc/zabbix/zabbix_agentd.conf:
UserParameter=mysql.ping,netstat -ntpl|grep 3306 |grep mysql |wc |awk '{print $1}'
注意:
[v_warn]
1、修改完,重启agentd服务
2、执行chmod +s /bin/netstat防止zabbix-server远程调用失效。
[/v_warn]
在zabbix-server端check,能获取纯粹的数字0,证明此方法OK有效。
#zabbix_get -s 10.10.1.12 -p10050 -k mysql.ping
0