zabbix通过http API监控RabbitMQ指定队列速率

2021-07-27  本文已影响0人  阿乐_822e

队列所在vhost: /abc
队列名称: abc-def
rabbitmq访问帐号:admin / admin
rabbitmq httpapi地址:192.168.0.114:15672
zabbix安装目录: /usr/local/zabbix-agent
需求:查询指定队列的访问速率

1、编写脚本文件

$ cd  /usr/local/zabbix-agent/scripts
$ vi  check_queue_rate.sh
#!/bin/bash
curl -s 'http://admin:admin@192.168.0.114:15672/api/queues/%2fabc/abc-def?columns=backing_queue_status' | sed 's/,/\n/g' | grep avg_ingress_rate | head -1 | sed 's/:/\n/g'| sed 1d | cut -c1-4
$ chmod +x *.sh
$ chown zabbix.zabbix *.sh

脚本文件说明:

  1. vhost以斜杠“/"打头,要使用“%2f"转义;
  2. curl命令使用-s参数,不输出回应的头部信息;
  3. curl命令会返回json字符串,要对它进行解析;
  4. sed 's/,/\n/g' 将返回json字符串中逗号替换为换行,将信息分行,以便截取;
  5. sed 1d 将返回的信息删除第一行标题(“avg_ingress_rate”)
  6. cut -c1-4  取返回速率的左4位(含小数点)

2、添加自定义监控项

$ cd  /usr/local/zabbix-agent/conf
$ vi zabbix_agentd.conf   #添加一行
userParameter=rabbitmq.mq.checkqueuerate[*],/usr/local/zabbix-agent/scripts/check_queue_rate.sh

3、重启zabbix-agent服务

4、添加自定义监控项

登陆zabbix web页面,添加自定义监控项,键值使用,rabbitmq.mq.checkqueuerate[*],信息类型为浮点数,单位为b/s

5、添加触发器(略)

说明:如果要监控多个队列,可以改造一下脚本,接收2个传入参数(vhost名称与队列名称),再拼装一下url

上一篇下一篇

猜你喜欢

热点阅读