在ZABBIX上监控MQ队列

众所周知,Zabbix是可以自定义监控项的,那么就代表只要能获得到的数字都可以进入Zabbix的监控范围内。作为消息队列,Activemq里的“消息堆积数”是监控的重点项目之一。


获取消息堆积数并不是一个很难的事儿,浏览器里登陆MQ的web网页控制台,输入账号密码之后,在Queues的网页里就能看到如下的界面:

image.png


其中Pending Messages就是“等待消息”,Consumers是“消费者”,Enqueued是“入队”,Dequeued是“出队”。入队数=出队数+等待数。


现在我们要获取到图中的队列叫AggregateQueue里的那个23596,很简单,shell语句是:

curl -s -u网站用户名:网站密码 http://网站外网IP地址:8161/admin/queues.jsp | grep -A 5 "具体的队列名"|awk -F '<' '{print $2}'|sed 's/td>//g'|head -2|tail -1


这里curl 有一个“-s”的参数,不然会显示curl的状态。如图:

Zabbix监控ActiveMQ队列数以及结合Grafana展示_第1张图片


语句在此,写脚本就很easy了。不过我这里就直接监控具体数字了,没有写脚本,如果要写python脚本的话,我推荐各位移步:https://blog.51cto.com/sfzhang88/1316789 ,看一下这篇文章。


现在把这个监控项添加到具体的zabbix_agentd.conf里吧,具体添加过程可以参看 https://blog.51cto.com/chenx1242/1839829 ,由于是curl网站,那么直接把这个监控项加到Zabbix-server里就好,然后使用zabbix_get检查一下。有的zabbix 3.x里没有zabbix_get,安装zabbix_get方法:#yum install zabbix-get.x86_64


zabbix_get检查情况和具体的trigger情况如下:

1.png

image.png


配置Zabbix结合Grafana

我使用的Grafana版本是4.3.2,下载地址:https://s3-us-west-2.amazonaws.com/grafana-releases/release/grafana-4.3.2-1.x86_64.rpm  ,下载完毕之后,直接#yum install /路径/grafana-4.3.2-1.x86_64.rpm,由于Grafana使用的是AWS的云存储,可能在墙内的下载会比较吃力,有断开的情况就多试几次。话说Grafana的升级是比较频繁的,半年不到的时间升级了三次,现在最新版本已经是4.6.2。所以说这玩意,其实选择一个稳定的就好。


启动grafana的方法就是:#systemctl start grafana-server.service,配置开机自启动的方法:#chkconfig grafana-server on。然后在浏览器里输入“grafana外网ip地址:3000”就能看到grafana的界面,默认密码:admin/admin,grafana默认的日志存储路径是/var/log/grafana/。


Grafana与ZABBIX联系的插件下载方式:#grafana-cli plugins install alexanderzobnin-zabbix-app,安装之后,重启一下grafana-server,在web界面就会看到插件已经成功安装,如图:

Zabbix监控ActiveMQ队列数以及结合Grafana展示_第2张图片


其他更多的插件下载可以在grafana的官方网站查看到:https://grafana.com/plugins ,用grafana-cli都能搞定,还是那话,墙里的同学速度要慢一点。


现在配置Zabbix作为Grafana的数据源,首选点击网站上面的红色漩涡标志,选择“zabbix”,点击“Plugin Config”,点击Enable,启动Zabbix插件。如图:

Zabbix监控ActiveMQ队列数以及结合Grafana展示_第3张图片


再次点击红色漩涡,这次选择“Data Sources”,点击“Add data source”,如果插件启动成功,那么在Type里是可以选择“zabbix”的,然后就是填各种东西,如图:

Zabbix监控ActiveMQ队列数以及结合Grafana展示_第4张图片


这里有一些要额外说明:

1)url这个是zabbix的API地址"http://ip/zabbix/api_jsonrpc.php",这个可以在zabbix服务端上可查找"find / -name api_*.php";

2)username和passwd是zabbix WEB界面的登录用户名和密码,有读的权限即可;

3)alerting选择启动,min severity选择high;


然后点击“save & test”,如果都正确的话,就会出现success,如图:

Zabbix监控ActiveMQ队列数以及结合Grafana展示_第5张图片


在Grafana展示趋势图

点击左上方红色漩涡,"Dashboards"的地方点击“+new”,然后在小齿轮的地方选择“Templating”,如图:

Zabbix监控ActiveMQ队列数以及结合Grafana展示_第6张图片


在Templating里要建立4个模板,其中group的添加方法如下,如果Query正确的话,在点击“Include All option”的时候,就会有“组”显示出,而且和zabbix里完全一致:

Zabbix监控ActiveMQ队列数以及结合Grafana展示_第7张图片       Zabbix监控ActiveMQ队列数以及结合Grafana展示_第8张图片(这个是zabbix的web端界面)


group添加完了,还有host、application、iteams,添加的大同小异,需要注意的是Query的不同:

host的Query:$group.*

application的Query: $group.$host.*

iterm的Query: $group.$host.$application.*


以上四个template都搞定之后,应该是这个样子:

image.png


模板搞定了,下面就是图形展示,选择对应的hosts、application和items就自动有图像生成了!

Zabbix监控ActiveMQ队列数以及结合Grafana展示_第9张图片


最后说一下页面自动刷新,点击右上角“Last 6 hours”, 在弹出的下拉框中,选择Time range下的Refreshing every选项,点击下拉框按钮,默认应该有“off”和“1m”两个选项。点击“1m” 然后Apply设置,即为每一分钟刷新一次数据的意思。设置成功后,在原来Last 6 hours的后面会出现Refresh every 1m的橙色文字!


参考资料:《实践MQ的小demo》http://www.jianshu.com/p/3a39c8dd4f29



最后的最后,如果您觉得本文对您升职加薪有帮助,那么请不吝赞助之手,刷一下下面的二维码,赞助本人继续写更多的博文!

Zabbix监控ActiveMQ队列数以及结合Grafana展示_第10张图片