队列所在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
脚本文件说明:
- vhost以斜杠“/"打头,要使用“%2f"转义;
- curl命令使用-s参数,不输出回应的头部信息;
- curl命令会返回json字符串,要对它进行解析;
- sed 's/,/\n/g' 将返回json字符串中逗号替换为换行,将信息分行,以便截取;
- sed 1d 将返回的信息删除第一行标题(“avg_ingress_rate”)
- 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
网友评论