使用zabbix server監控tomcat實戰案例


       使用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 ~]# 
[root@zabbix203.yinzhengjie.org.cn ~]# sed -r -i 's@# (JavaGateway=)@\1172.200.5.253@' /yinzhengjie/softwares/zabbix/etc/zabbix_server.conf

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 ~]# 
[root@zabbix203.yinzhengjie.org.cn ~]# sed -r -i 's@# (JavaGatewayPort=10052)@\1@' /yinzhengjie/softwares/zabbix/etc/zabbix_server.conf

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 ~]# 
[root@zabbix203.yinzhengjie.org.cn ~]# sed -r -i 's@# (StartJavaPollers=)0@\132@' /yinzhengjie/softwares/zabbix/etc/zabbix_server.conf

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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM