简单的方法使用zabbix监控rabbitmq消息队列堵塞

简单的方法使用zabbix监控rabbitmq消息队列堵塞

公司需要把rabbitmq的队列信息使用zabbix监控,一开始使用最简单的办法也是最傻的办法去每条消息队列添加一个key值,然后在监控项里添加。(公司的rabbitmq三百多个消息队列)

[root@rabbitmq02 rootadmin]# rabbitmqctl list_queues  | grep Test147.MicaConsume | awk '{print $2}'
0

我的想法是如上命令作为自定义key然后大于多少就报警这条消息队列堵塞:

UserParameter=Test147.MicaConsume ,rabbitmqctl list_queues  | grep Test147.MicaConsume | awk '{print $2}'
其中Test147.MicaConsume为队列名字,三百多个,我就创建了三百多个key...

加了一个下午的时间,结果发现根本就不可用!!!
原因:
1、rabbitmqctl这条命令是root用户使用的,zabbix用户没有此权限
2、即使有权限,执行时间要两三秒中左右,zabbix获取值得时间为一秒,超过了就默认为没有获取到

网上查找了资料也很少有写这个的,写了的也是用了Python等语言搞很复杂的脚本获取rabbitmq自己的监控页面内容,很麻烦,不适合我这种菜鸟。
后来由于公司有别的事情就放了很长一段时间都没有去研究。

最近有点空闲时间于是就研究了一下,想到了一个很有效但是不高端的方法...
计划任务将队列信息获取到后输入到一个文档:

crontab -e
*/1 * * * * /usr/sbin/rabbitmqctl list_queues | grep -v delay | grep -v queues > /tmp/rabbitmq.txt

这个计划任务的意思就是每一分钟把所有消息队列的信息以及消息数输出到/tmp/rabbitmq.txt

zabbix监控agent最后添加一个key:
UserParameter=queues,/usr/bin/awk '{print $2}' /tmp/rabbitmq.txt | sort -nr | awk 'NR==1{print$1}'












你可能感兴趣的:(zabbix,rabbitmq)