有一个通知队列,如果超过了一定的值,就需要报警一下
查询接口可以返回队列的数量,格式是json,data后面的数量就是队列的数量
{"code":0,"message":"成功","data":22}
在zabbix客户端编辑配置文件zabbix_agentd.conf
vim /usr/local/zabbix-agent/zabbix_agentd.conf
添加蓝色部分
LogFile=/tmp/zabbix_agentd.log
###zabbix 服务端地址
Server=192.168.1.110
##agent服务监听地址,也就是本机地址
#ListenIP=192.168.1.105
ServerActive=192.168.1.110
##zabbix-server端主机地址(zabbix server)
Hostname=zabbix server
#允许所有字符的参数传递给用户定义的参数
UnsafeUserParameters=1
#用户自定义key,格式: UserParameter=key名,执行命令
#例如:serParameter=system.test,who|wc -l
UserParameter=inform_queue,/usr/local/php/bin/php /usr/local/zabbix-agent/script/inform_queue.php
创建目录script
mkdir script
直接用shell过滤不太好,用php是比较好的
vim inform_queue.php
代码如下:
<?php
$str = file_get_contents(‘http://10.x.x.x/app/inform_queue‘);
$json=json_decode($str);
echo $json->data;
?>
测试执行php代码就可以得到数字22
重启zabbix客户端
killall -9 zabbix_agentd
/usr/local/zabbix-agent/sbin/zabbix_agentd -c /usr/local/zabbix-agent/etc/zabbix_agentd.conf
进入zabbix服务器,使用zabbix_get
zabbix_get参数说明:
-s --host: 指定客户端主机名或者IP
-p --port:客户端端口,默认10050
-I --source-address:指定源IP,写上zabbix server的ip地址即可,一般留空,服务器如果有多ip的时候,你指定一个。
-k --key:你想获取的key
测试key值是否生效
/usr/local/zabbix/bin/zabbix_get -s 192.168.1.105 -p10050 -k inform_queue
有数字返回说明就可以了。
进入zabbix服务器的后台页面
点击配置->主机,点击名称下面的一台主机(修改配置文件的那台)
点击监控项->创建监控项
输入名称,选择类型,信息类型是数字,因为脚本执行返回的格式是数字
输入应用集名称
点击更新
点击触发器->创建触发器
输入名称
表达式: {host_1:inform_queue.min(1m)}>3
表示队列最后1分钟内超过3那么触发器表达式将会返回true
选择严重性,点击更新
点击图形->创建图形
输入名称,选择纵轴固定,可固定
添加监控项,点击更新
点击监测中->图形
选择主机,选择图形inform_queue
等待几分钟,就会有数据了。