目的:做 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

问题解决!!!