使用zabbix server監控tomcat實戰案例
作者:尹正傑
版權聲明:原創作品,謝絕轉載!否則將追究法律責任。
大家都知道,zabbix server效率高是使用C語言編寫的,有很多應用程序是使用Java寫的,zabbix如何去監控呢?官方有一個組件叫做Zabbix Java Gateway。Zabbix在監控Java 程序時首先會去找Zabbix Java Gateway,然后Zabbix Java Gateway再去找JMX取數據。
一.部署tomcat並啟用JMX實戰案例
博主推薦閱讀: https://www.cnblogs.com/yinzhengjie2020/p/12315341.html
二.部署zabbix java gateway服務
博主推薦閱讀: https://www.cnblogs.com/yinzhengjie2020/p/12318937.html
三.配置zabbix server支持zabbix java gateway
1>.指定zabbix java gateway的IP地址

[root@zabbix203.yinzhengjie.org.cn ~]# grep JavaGateway= /yinzhengjie/softwares/zabbix/etc/zabbix_server.conf # JavaGateway= [root@zabbix203.yinzhengjie.org.cn ~]# [root@zabbix203.yinzhengjie.org.cn ~]# sed -r -i 's@# (JavaGateway=)@\1172.200.5.253@' /yinzhengjie/softwares/zabbix/etc/zabbix_server.conf [root@zabbix203.yinzhengjie.org.cn ~]# [root@zabbix203.yinzhengjie.org.cn ~]# grep JavaGateway= /yinzhengjie/softwares/zabbix/etc/zabbix_server.conf JavaGateway=172.200.5.253 [root@zabbix203.yinzhengjie.org.cn ~]#
2>.指定zabbix java gateway的監聽端口(此處我使用的是默認端口)

[root@zabbix203.yinzhengjie.org.cn ~]# grep JavaGatewayPort= /yinzhengjie/softwares/zabbix/etc/zabbix_server.conf # JavaGatewayPort=10052 [root@zabbix203.yinzhengjie.org.cn ~]# [root@zabbix203.yinzhengjie.org.cn ~]# sed -r -i 's@# (JavaGatewayPort=10052)@\1@' /yinzhengjie/softwares/zabbix/etc/zabbix_server.conf [root@zabbix203.yinzhengjie.org.cn ~]# [root@zabbix203.yinzhengjie.org.cn ~]# grep JavaGatewayPort= /yinzhengjie/softwares/zabbix/etc/zabbix_server.conf JavaGatewayPort=10052 [root@zabbix203.yinzhengjie.org.cn ~]# [root@zabbix203.yinzhengjie.org.cn ~]#
3>.指定zabbix server的用於zabbix java gateway的工作線程數(推薦小於等於你生產環境的core數)

[root@zabbix203.yinzhengjie.org.cn ~]# grep StartJavaPollers= /yinzhengjie/softwares/zabbix/etc/zabbix_server.conf # StartJavaPollers=0 [root@zabbix203.yinzhengjie.org.cn ~]# [root@zabbix203.yinzhengjie.org.cn ~]# [root@zabbix203.yinzhengjie.org.cn ~]# sed -r -i 's@# (StartJavaPollers=)0@\132@' /yinzhengjie/softwares/zabbix/etc/zabbix_server.conf [root@zabbix203.yinzhengjie.org.cn ~]# [root@zabbix203.yinzhengjie.org.cn ~]# grep StartJavaPollers= /yinzhengjie/softwares/zabbix/etc/zabbix_server.conf StartJavaPollers=32 [root@zabbix203.yinzhengjie.org.cn ~]#
4>.重啟zabbix server使得配置生效
[root@zabbix203.yinzhengjie.org.cn ~]# systemctl restart zabbix-server.service
5>.驗證zabbix server啟動的zabbix java gateway的工作線程數是否和咱們配置的一致
[root@zabbix203.yinzhengjie.org.cn ~]# ps -ef | grep "java poller" | grep -v grep | wc -l 32 [root@zabbix203.yinzhengjie.org.cn ~]#
四.配置zabbix webUI對tomcat的監控
1>.如下圖所示,依次點擊"配置" ---> "主機" ---> "創建主機"
2>.配置主機信息
3>.如下圖所示,選擇tomcat模板
4>.添加到鏈接模板
5>.鏈接模板添加成功,點擊"添加"按鈕會添加主機
6>.主機添加成功啦~
7>.觀察默認的tomcat模板無法采集到數據
8>.將之前的模板取消掉
9>.選擇通用的java模板
10>.點擊添加按鈕
11>.點擊更新按鈕
12>.模板更換成功
13>.更換了多個版本之后,發現JMX始終無法監控到zabbix數據(就得考慮zabbix java gateway的版本是否和zabbix server版本一致性的問題了)
14>.剖析zabbix webUI始終無法獲取到數據的原因(zabbix server 和zabbix java gateway版本不一致)
遇到JMX監控不到數據時,仔細回憶了監控tomcat的過程:
(1)部署tomcat並且用JMX功能,而且使用windows安裝的JConsole工具測試過可用正常監控到數據,排除tomcat及其的可能性;
(2)部署zabbix java gateway,我使用的apt命令行工具安裝的,就是為了圖省事;
(3)在zabbix server中配置zabbix java gateway服務器的地址及端口;
(4)在webUI添加對tomcat的監控信息;
綜上所述,四個步驟中最可能出現問題的就是第(2)步和第(3)步,經過我仔細檢查zabbix server的配置后,確認第(3)步不是故障點,於是所有矛頭指向了第(2)步,於是我登錄到zabbix java gateway服務器上,盡管服務是正常啟動的,查看日志我們就發現了問題,zabbix java gateway 和zabbix server版本不一致,如下圖所示。
問題解決方案:
使用源碼方式安裝zabbix java gateway,或者直接部署在和zabbix server上也是可以的。
15>.解決問題
干貨分享:
安裝zabbix 相關組件時,建議大家不要一會編譯安裝,一會yum/apt等操作系統自帶工具包進行安裝,這樣你無法確認使用的zabbix版本是否是一致性的。
因此我推薦大家生產環境部署服務時,盡量采用編譯方式安裝,這樣類似於版本不一致的問題就會迎刃而解啦~
五.使用自定義的模板監控tomcat
1>.點擊導入模板
2>. 從本地選擇到導入的模板
3>.導入成功
4>.導入模板成功
5>.接下里就可用讓監控的主機使用咱們自定義的模板
6>.模板鏈接成功
7>.查看tomcat的監控圖形
六.監控java程序的JMX端口數據工具"cmdline-jmxclient-0.10.3.jar"
1>.下載"cmdline-jmxclient-0.10.3.jar"工具(需要翻牆)
博主推薦閱讀: http://www.crawler.archive.org/cmdline-jmxclient/downloads.html
2>.測試能否獲取到java當前已經分配的線程數
[root@zabbix203.yinzhengjie.org.cn ~]# java -jar cmdline-jmxclient-0.10.3.jar - 172.200.5.250:12345 'Catalina:name="http-nio-8080",type=ThreadPool' currentThreadCount
2>.測試能否獲取到java最大的線程數
[root@zabbix203.yinzhengjie.org.cn ~]# java -jar cmdline-jmxclient-0.10.3.jar - 172.200.5.250:12345 'Catalina:name="http-bio-8080",type=ThreadPool' maxThreads