qq78707 发表于 2019-1-20 06:01:35

zabbix 3.0.2自定义脚本

  有一个通知队列,如果超过了一定的值,就需要报警一下
  查询接口可以返回队列的数量,格式是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代码就可以得到数字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服务器的后台页面
  点击配置->主机,点击名称下面的一台主机(修改配置文件的那台)

  

  点击监控项->创建监控项
  输入名称,选择类型,信息类型是数字,因为脚本执行返回的格式是数字
  输入应用集名称
  点击更新
http://s4.运维网.com/wyfs02/M01/7F/AC/wKiom1coYD2hh1KAAABT2NgQK1g528.png
  

  点击触发器->创建触发器
  输入名称
  表达式: {host_1:inform_queue.min(1m)}>3
  表示队列最后1分钟内超过3那么触发器表达式将会返回true
  选择严重性,点击更新
http://s2.运维网.com/wyfs02/M00/7F/AC/wKiom1coZOeCJUayAAA56NJiOt8491.png
  

  点击图形->创建图形
  输入名称,选择纵轴固定,可固定
  添加监控项,点击更新
http://s4.运维网.com/wyfs02/M02/7F/AA/wKioL1coYoGSQ5sfAABJ85RQoIs025.png
  

  

  点击监测中->图形

  选择主机,选择图形inform_queue
  等待几分钟,就会有数据了。
http://s5.运维网.com/wyfs02/M02/7F/AC/wKiom1coYinjKmZFAABcHuAIpbU000.png
  

  

  

  

  




页: [1]
查看完整版本: zabbix 3.0.2自定义脚本