目前部署了zabbix3.0作为生产的监控系统,最近发现一个有趣的问题,就是套用percona公司的percona moinitor plugins中MySQL的监控模板的时候,有些agent的机器在取MySQL.running-slave这个item值的时候,agent侧取值同server侧取值是不一致的,如下:

agent:

[root@mysql03 zabbix_agentd.d]# /var/lib/zabbix/percona/scripts/get_mysql_stats_wrapper.sh running-slave

1

server:

[root@zabbix zabbix]# zabbix_get -s 192.168.1.81 -k "MySQL.running-slave"

0

排查过程:

wKiom1jCU0XCl6agAACnQhHsOTM811.png-wh_50

我通过在脚本中echo $RES和状态码到/tmp目录下的RES.TXT和xxx.txt里,观察echo出来的值,发现状态码确实是0,而非1。

wKiom1jCVVKQuXkMAAAfrPo4WHg427.png-wh_50

那为什么会出现手工跑脚本和通过应用自主调用脚本,结果会不一致呢? 这一般是环境变量导致的情况,因为$RES这个变量在程序调度echo出来就是空值,而其实这就是一个sql查询而已。所以直接将原mysql替换成/usr/local/mysql/bin/mysql 这个绝对路径,然后再次检验后,agent端和server端取值终于一致,问题解决。