在ZABBIX上监控MQ队列
众所周知,Zabbix是可以自定义监控项的,那么就代表只要能获得到的数字都可以进入Zabbix的监控范围内。作为消息队列,Activemq里的“消息堆积数”是监控的重点项目之一。
获取消息堆积数并不是一个很难的事儿,浏览器里登陆MQ的web网页控制台,输入账号密码之后,在Queues的网页里就能看到如下的界面:
其中Pending Messages就是“等待消息”,Consumers是“消费者”,Enqueued是“入队”,Dequeued是“出队”。入队数=出队数+等待数
。
现在我们要获取到图中的队列叫AggregateQueue里的那个23596,很简单,shell语句是:
1
curl -s -u网站用户名:网站密码 http://网站外网IP地址:8161/admin/queues.jsp | grep -A 5 "具体的队列名</a></td>"|awk -F '<' '{print $2}'|sed 's/td>//g'|head -2|tail -1
这里curl有一个-s
的参数,不然会显示curl的状态。如图:
语句在此,写脚本就很easy了。不过我这里就直接监控具体数字了,没有写脚本,如果要写python脚本的话,我推荐各位移步:http://blog.51cto.com/sfzhang88/1316789 ,看一下这篇文章。
现在把这个监控项添加到具体的zabbix_agentd.conf
里吧,具体添加过程可以参看 http://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情况如下:
配置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界面就会看到插件已经成功安装,如图:
其他更多的插件下载可以在grafana的官方网站查看到:https://grafana.com/plugins ,用grafana-cli
都能搞定,还是那话,墙里的同学速度要慢一点。
现在配置Zabbix作为Grafana的数据源,首选点击网站上面的红色漩涡标志,选择zabbix
,点击Plugin Config
,点击Enable
,启动Zabbix插件。如图:
再次点击红色漩涡,这次选择Data Sources
,点击Add data source
,如果插件启动成功,那么在Type里是可以选择zabbix
的,然后就是填各种东西,如图:
这里有一些要额外说明:
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,如图:
在Grafana展示趋势图
点击左上方红色漩涡,Dashboards
的地方点击+new
,然后在小齿轮的地方选择Templating
,如图:
在Templating里要建立4个模板,其中group的添加方法如下,如果Query正确的话,在点击Include All option
的时候,就会有“组”显示出,而且和zabbix里完全一致:
group添加完了,还有host、application、iteams,添加的大同小异,需要注意的是Query的不同:
host的Query:$group.*
application的Query: $group.$host.*
iterm的Query:$group.$host.$application.*
以上四个template都搞定之后,应该是这个样子:
模板搞定了,下面就是图形展示,选择对应的hosts、application和items就自动有图像生成了!
最后说一下页面自动刷新,点击右上角“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