目前部署了zabbix3.0做为生产的监控系统,最近发现一个有趣的问题,就是套用percona公司的percona moinitor plugins中MySQL的监控模板的时候,有些agent的机器在取MySQL.running-slave这个item值的时候,agent侧取值同server侧取值是不一致的,以下:mysql
agent:sql
[root@mysql03 zabbix_agentd.d]# /var/lib/zabbix/percona/scripts/get_mysql_stats_wrapper.sh running-slaveapp
1
ide
server:server
[root@zabbix zabbix]# zabbix_get -s 192.168.1.81 -k "MySQL.running-slave"blog
0ip
排查过程:
部署
我经过在脚本中echo $RES和状态码到/tmp目录下的RES.TXT和xxx.txt里,观察echo出来的值,发现状态码确实是0,而非1。get
那为何会出现手工跑脚本和经过应用自主调用脚本,结果会不一致呢? 这通常是环境变量致使的状况,由于$RES这个变量在程序调度echo出来就是空值,而其实这就是一个sql查询而已。因此直接将原mysql替换成/usr/local/mysql/bin/mysql 这个绝对路径,而后再次检验后,agent端和server端取值终于一致,问题解决。
it