JVM 監控工具備不少,像命令 jstat,jmap,jstack,jinfo 能夠根據不一樣需求查看不一樣的系統信息,還有圖像化界面 jconsole,都是很方便的工具。這些能夠參考 JAVA自帶監控工具的介紹。php
可是現代監控工具都是集成的,上可監控服務器性能,下可監控個組件運行狀況,不用每次查詢都在命令行敲啊敲的,圖像化實時展現數據,本文就我的實際操做經驗來談談現代集成監控工具 Zabbix 和 Cloud Insight 實現監控 Tomcat 的體驗。html
最開始使用 Zabbix 只是監控服務器,並無想到之後要監控 Tomcat,因此直接簡單 yum 安裝,安裝完成後配置 host,templates,而後就能夠直接從圖表上看到服務器的性能數據。前端
如今想要監控 Tomcat,本人使用的2.4.7版本的 Zabbix 已然提供了原生對 JMX 應用的監控,即 Zabbix Java gateway。它是採用 Java 編寫的一個守護進程,當 Zabbix server 想知道主機 JMX 計數器的值時,將利用 JMX 管理 API 去請求遠程的有關應用。應用不須要額外安裝軟件,只須要在啓動時在命令行指定 -Dcom.sun.management.jmxremote
選項。java
Java gateway 接受來自 Zabbix server 或者代理的鏈接,所以在每個 Zabbix server 或代理中只能配置一個 Java gateway。若是一個主機有 JMX agent 及其餘類型的監控項,則只有 JMX agent 類型的監控項能夠經過 Java gateway 進行監控。當在 Java gateway 上的一個監控項值更新了,Zabbix server 或代理將鏈接 Java gateway 請求該值,由於 Java gateway 不會緩存任何值.linux
Zabbix server 或代理能夠經過 StartJavaPollers 控制鏈接 Java gateway 的進程。Java gateway 在內部經過 START_POLLERS 控制選項使用多線程啓動。StartJavaPollers 要小於或等於 START_POLLERS,不然可能致使當鏈接 Java gateway 時沒有多餘的線程進行處理;在服務端,若是一個鏈接請求超過了 Timeout 設定的秒數,鏈接將會終止,但 Java gateway 也許此時依然從 JMX 計數器中檢索該值。git
原理講完,上手操做github
--enable-java
參數,參考官網 Java gateway,進行編譯安裝,其中還須要下載 catalina-jmx-remote.jar 包,配置 zabbix_java,zabbix_server,zabbix_agent 等配置文件http://ip/zabbix
在安裝界面進行配置,若是報403錯誤的話要考慮關閉防火牆等服務器配置完成後,就是配置客戶端了web
相對於複雜的安裝編譯配置的 zabbix 來講,Cloud Insight 就真的簡單多了,一鍵複製即完成安裝(執行的 shell 腳本里面會把須要的環境模塊一同下載下來進行安裝,造成一個黑盒環境,不須要再安裝其餘軟件),以後在 web 上見能夠看到系統 CPU 的相關數據了。shell
再來就是監控 Tomcat,Cloud Insight 一樣也是經過 JMX 遠程監控服務來監控 Tomcat。爲了收集這些指標,Cloud Insight 會調用一個輕量級的 Java 插件 JMXFetch 鏈接到 MBean 服務器,並經過 OneStatsd 服務器,將這些指標發送到 Cloud Insight Agent,具體參考文檔 JMX 遠程監控:apache
Cloud Insight 要實現監控 Tomcat 很簡單
-Dcom.sun.management.jmxremote
tomcat.yaml
Zabbix 和 Cloud Insight 安裝步驟對比:
Zabbix
Cloud Insight
Zabbix 和 Cloud Insight 監控 Tomcat 指標對比:
Zabbix 和 Cloud Insight 分別適合的人羣:
Cloud Insight 集監控、管理、計算、協做、可視化於一身,幫助全部 IT 公司,減小在系統監控上的人力和時間成本投入,讓運維工做更加高效、簡單。想閱讀更多技術文章,請訪問 OneAPM 官方技術博客。 本文轉自 OneAPM 官方博客