在ZABBIX上監控MQ隊列
衆所周知,Zabbix是可以自定義監控項的,那麼就代表只要能獲得到的數字都可以進入Zabbix的監控範圍內。作爲消息隊列,Activemq裏的“消息堆積數”是監控的重點項目之一。
獲取消息堆積數並不是一個很難的事兒,瀏覽器裏登陸MQ的web網頁控制檯,輸入賬號密碼之後,在Queues的網頁裏就能看到如下的界面:
其中Pending Messages就是“等待消息”,Consumers是“消費者”,Enqueued是“入隊”,Dequeued是“出隊”。入隊數=出隊數+等待數。
現在我們要獲取到圖中的隊列叫AggregateQueue裏的那個23596,很簡單,shell語句是:
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腳本的話,我推薦各位移步: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情況如下:
配置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裏完全一致:
(這個是zabbix的web端界面)
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
最後的最後,如果您覺得本文對您升職加薪有幫助,那麼請不吝贊助之手,刷一下下面的二維碼,贊助本人繼續寫更多的博文!