1抵窒, zabbix 自動發(fā)現(xiàn)腳本編寫闲先,采用python
在網(wǎng)上搜索一番,實現(xiàn)方式大部分是采用 zabbix-java-gateway汽抚,這個對監(jiān)控幾個的tomcat比較簡單方便政冻,但是我一臺機器運行的tomcat有十多個枚抵,那就顯得很傻逼了。
還有就是采用visualvm 這個工具明场,這個工具能夠?qū)崟r查看tomcat性能參數(shù)汽摹,包含 堆內(nèi)存、線程數(shù)苦锨,元空間等逼泣。缺點就是他的數(shù)據(jù)數(shù)據(jù)不會存下來趴泌,只看到你打開這個工具的開始后的數(shù)據(jù)。
網(wǎng)上找到的模板和腳本拉庶,腳本可以用嗜憔,但是模板無法導入,由于自己在zabbix在自己編寫模板這塊不是很熟悉氏仗,決定痛定思痛吉捶,自己全部寫一遍,所有文章腳本和模板這些都是我結(jié)合網(wǎng)上的資料和自己的情況下皆尔,進行原創(chuàng)的呐舔。
前期準備工作,需要修改tomcat的catalina.sh 啟動參數(shù)添加性能遠程監(jiān)控接口
我這邊部署都是批量模板部署床佳,前期我就寫好了批量修改啟動參數(shù)模板和腳本的滋早,所以這邊我把模板文件修改下榄审,執(zhí)行腳本砌们,所有的工程就修改好了。
-Dcom.sun.management.jmxremote.port={jmxport}? #修改遠程端口搁进,默認12345
-Djava.rmi.server.hostname={ip}?#修改成tomcat 運行機器的ip 內(nèi)網(wǎng)地址
-Dcom.sun.management.jmxremote
-Dcom.sun.management.jmxremote.ssl=false
-Dcom.sun.management.jmxremote.authenticate=false
實現(xiàn)思路:
執(zhí)行腳本返回一個jason 格式數(shù)據(jù)浪感,包含應用的名稱,jmx 端口饼问,http端口影兽,
我這邊tomcat都是批量部署,都在同一個路徑下莱革,
應用名稱通過 os.listdir 處理峻堰,獲取名稱和覺得路徑
ip, jmx端口通過 進程命令獲取
http 端口盅视,通過讀取server.xml 獲取捐名。
2,監(jiān)控腳本編寫
實現(xiàn)思路就說python調(diào)用sh命令闹击,執(zhí)行命令:/app/jdk1.8.0_121/bin/java -jar /usr/lib/cmdline-jmxclient-0.10.3.jar - 192.168.254.26:12345 java.lang:type=Memory HeapMemoryUsage?
命令直接執(zhí)行效果圖
解析輸出結(jié)果獲取相關(guān)結(jié)果镶蹋。
這里分兩種情況,
a赏半,有的命令執(zhí)行的結(jié)果是包含我們監(jiān)控的三個維度的結(jié)果贺归,如上圖示例。對結(jié)果我們需要分別解析返回結(jié)果
b断箫,還有就是就是我們需要的結(jié)果拂酣,直接提取數(shù)據(jù),如下:
所以我在設(shè)計了一個監(jiān)控字典:{項目名稱:{需要執(zhí)行的命令:需要取的值}}
對b情況就直接賦值同一個值 normal
在上圖中這里是有點命令是需要轉(zhuǎn)義的仲义,不能會提示找不到命令類婶熬,這里需要提供http端口丹莲,我這采用有格式化傳值,有的人可能 http-bio這里可能需要注意下尸诽,腳本中也處理了甥材。
最終腳本執(zhí)行結(jié)果如下:
3,將腳本上傳到zabbix服務(wù)器和監(jiān)控主機性含,驗證監(jiān)控項目和腳本
被監(jiān)控段機器下洲赵,新建 /etc/zabbix/zabbix_agentd.d/userparameter_tomcat.conf,添加下面內(nèi)容商蕴,需要重啟監(jiān)控zabbix-agent
UserParameter=tomcat.discovery,/usr/bin/python2 /etc/zabbix/discovery_tomcat.py
UserParameter=tomcat.status[*],/usr/bin/python2 /etc/zabbix/tomcat_monintor.py? $1 $2 $3 $4
zabbix-server機器叠萍,執(zhí)行
zabbix_get -s 192.168.0.116 -p 10050 -k tomcat.status[192.168.0.116,12351,9050,HeapMemoryUsageused]
執(zhí)行結(jié)果
獲取到結(jié)果,正常绪商。如果不行苛谷,可以嘗試重啟下zabbix-server
3,zabbix監(jiān)控模板編寫
創(chuàng)建模板
點擊創(chuàng)建自動發(fā)現(xiàn)規(guī)則
創(chuàng)建自動發(fā)現(xiàn)規(guī)則
設(shè)置發(fā)現(xiàn)規(guī)則的key值
創(chuàng)建監(jiān)控原型
填入監(jiān)控key
后面的觸發(fā)器 圖像格郁,在我模板中都有設(shè)置
如果運行的tomcat比較多腹殿,由于我這邊監(jiān)控原型會有38個,監(jiān)控項目在zabbixserver端生成很多監(jiān)控項目例书,造成server的壓力锣尉,需要把 /etc/zabbix/zabbix_server.conf 修改
StartPollers=150? ?
我這邊在模板默認關(guān)閉了項目的監(jiān)控,需要的主機去模板中打開接口决采,防止突然造成服務(wù)器壓力
最終在zabbix 效果圖如下:
如果我的文章對你有用可以給我贊賞喲!