两个Zabbix_get问题记录

Zabbix_get的结果是contacting

在监控zookeeper的时候,我写了一个简单的脚本checkZKrole.sh来获取当前的角色,如下:

1
2
3
4
[root@zookeeper1 ~]# cat checkZKrole.sh 
#!/bin/bash
role=$(sh /usr/zookeeper/bin/zkServer.sh status| cut -d" " -f2)
echo $role

执行效果如下:
akb48

本地执行没问题,然后在zabbix-agentd.conf里也把这个脚本添加到自定义监控项里:
akb48

重启了zabbix-agent后,发现一个很奇怪的现象,在zabbix-server里使用zabbix-get去拿值的时候拿到的是contacting,如图:
akb48

从上图可见,同样在127.1.1.28里取值,proc.num没问题,而且是秒取,但是这个自定义项就取不到。

我怀疑是脚本的问题,于是我改成一个单纯的echo,如下:

1
2
3
4
5
[root@zookeeper1 ~]# cat checkZKrole.sh 
#!/bin/bash
role=$(sh /usr/zookeeper/bin/zkServer.sh status| cut -d" " -f2)
#echo $role
echo woshinibaba

这一次的返回值是正常的,可见不是脚本的问题:
akb48

那是他妈的什么问题,真是见了鬼了…后来想干脆写一个crontab,让crontab把角色写到本地,然后再用cut命令切开把结果当做zabbix_get的目标。但是在这里发现了问题所在,当我的crontab是* * * * * cd /usr/zookeeper/bin/; ./zkServer.sh status > /tmp/role.txt > /dev/null 2>&1,发现/tmp/role.txt里根本没有值,应该是crontab在执行有参数的命令的时候出现了问题。

后来发现了,原来是sudo搞得鬼,如果是由于zookeeper是root用户启动的,所以只有root用户能成功访问,如果是sudo的话,那么就会返回“Error contacting service. It is probably not running.”,所以截取出来的部分就是contacting,如图:
akb48

zabbix_get执行脚本超时

在监控mq队列时候,同样也需要到了自定义监控项,我写了几个简单的脚本如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
[root@dahuatech zabbix]# cat monitor_mq.sh 
#!/bin/sh
ip=$1
queuename=$2
type=$3

case ${type} in
Pending)
curl -s -u 'admin:admin' "http://${ip}:8161/admin/queues.jsp"|grep "${queuename}</a></td>" -A 5|sed -n '2p'|egrep -o '[0-9]+'
;;
Enqueued)
curl -s -u 'admin:admin' "http://${ip}:8161/admin/queues.jsp"|grep "${queuename}</a></td>" -A 5|sed -n '4p'|egrep -o '[0-9]+'
;;
Dequeued)
curl -s -u 'admin:admin' "http://${ip}:8161/admin/queues.jsp"|grep "${queuename}</a></td>" -A 5|sed -n '5p'|egrep -o '[0-9]+'
;;
esac

配置了UserParameter=activemq.check[*],sh /etc/zabbix/monitor_mq.sh $1 $2 $3放到zabbix-agentd.conf里,重启了zabbix-agent。在zabbix-server配置了对应的item,如图:
akb48

然后在本地执行这个脚本,发现回值秒取,但是同样在zabbix-get里使用,就是timeout:
akb48

后来发现原来自己摆了一个乌龙,在zabbix-get的时候不能使用{HOST.IP},因为zabbix-get不识别他,但是zabbix-server是识别的,所以在脚本里把ip=$1改成ip=真实的IP地址即可。
akb48

感谢您请我喝咖啡~O(∩_∩)O,如果要联系请直接发我邮箱chenx1242@163.com,我会回复你的
-------------本文结束感谢您的阅读-------------