目的:做 zabbix 监控,在客户端上自定义一个 item key,用来监控 mysql 队列数值
现象:
客户端上,设置 item key,可以看到 命令的返回值是 53,说明mysql队列有53
[root@ape-test2-1120 ~]# vim /etc/zabbix/zabbix_agentd.d/userparameter_mysql_processlist.conf
UserParameter=mysql.processlist.count[*],mysql -uroot -p123456 -e "show full processlist" 2>/dev/null |grep -v "Id"|wc -l
[root@ape-test2-1120 ~]# mysql -uroot -p123456 -e "show full processlist" 2>/dev/null |grep -v "Id"|wc -l
53
服务端上:get到的值一直为 0,正常的话应该是 53 才对
[root@iZm5ehq0spxwe0fe6nay7fZ ~]# zabbix_get -s 192.168.100.120 -p 10050 -k 'mysql.processlist.count'
0
解决方法:想了半天,试了各种方法,一直以为是权限问题,在网上查了不少老铁的文章,最后灵光一闪,想到可能是命令的路径在不同机器上不一致的问题,所以给conf 文件中的mysql命令改为了绝对路径
UserParameter=mysql.processlist.count[*],/usr/local/mysql/bin/mysql -uroot -p123456 -e "show full processlist" 2>/dev/null |grep -v "Id"|wc -l
然后重启 zabbix-agent 服务
最后在服务端上:
[root@iZm5ehq0spxwe0fe6nay7fZ ~]# zabbix_get -s 192.168.100.120 -p 10050 -k 'mysql.processlist.count'
53
问题解决!!!