zabbix 3.0.2自定义脚本

http://blog.51cto.com/xiao987334176/1769766


有一个通知队列,如果超过了一定的值,就需要报警一下

查询接口可以返回队列的数量,格式是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服务器的后台页面

点击配置->主机,点击名称下面的一台主机(修改配置文件的那台)

点击监控项->创建监控项

输入名称,选择类型,信息类型是数字,因为脚本执行返回的格式是数字

输入应用集名称

点击更新

wKiom1coYD2hh1KAAABT2NgQK1g528.png

点击触发器->创建触发器

输入名称

表达式: {host_1:inform_queue.min(1m)}>3

表示队列最后1分钟内超过3那么触发器表达式将会返回true

选择严重性,点击更新

wKiom1coZOeCJUayAAA56NJiOt8491.png

点击图形->创建图形

输入名称,选择纵轴固定,可固定

添加监控项,点击更新

wKioL1coYoGSQ5sfAABJ85RQoIs025.png

点击监测中->图形

选择主机,选择图形inform_queue

等待几分钟,就会有数据了。

wKiom1coYinjKmZFAABcHuAIpbU000.png

原文地址:https://www.cnblogs.com/wangmo/p/9679253.html