JVM 監(jiān)控工具有很多持际,像命令 jstat,jmap哗咆,jstack蜘欲,jinfo 可以根據(jù)不同需求查看不同的系統(tǒng)信息,還有圖像化界面 jconsole晌柬,都是很方便的工具姥份。這些可以參考 JAVA自帶監(jiān)控工具的介紹。
但是現(xiàn)代監(jiān)控工具都是集成的年碘,上可監(jiān)控服務(wù)器性能澈歉,下可監(jiān)控個組件運(yùn)行情況,不用每次查詢都在命令行敲啊敲的屿衅,圖像化實(shí)時展示數(shù)據(jù)埃难,本文就個人實(shí)際操作經(jīng)驗(yàn)來談?wù)劕F(xiàn)代集成監(jiān)控工具 Zabbix 和 Cloud Insight 實(shí)現(xiàn)監(jiān)控 Tomcat 的體驗(yàn)。
Zabbix 監(jiān)控 Tomcat
最開始使用 Zabbix 只是監(jiān)控服務(wù)器傲诵,并沒有想到以后要監(jiān)控 Tomcat凯砍,所以直接簡單 yum 安裝,安裝完成后配置 host拴竹,templates悟衩,然后就可以直接從圖表上看到服務(wù)器的性能數(shù)據(jù)。
現(xiàn)在想要監(jiān)控 Tomcat栓拜,本人使用的2.4.7版本的 Zabbix 已然提供了原生對 JMX 應(yīng)用的監(jiān)控座泳,即 Zabbix Java gateway。它是采用 Java 編寫的一個守護(hù)進(jìn)程幕与,當(dāng) Zabbix server 想知道主機(jī) JMX 計(jì)數(shù)器的值時挑势,將利用 JMX 管理 API 去請求遠(yuǎn)程的有關(guān)應(yīng)用。應(yīng)用不需要額外安裝軟件啦鸣,只需要在啟動時在命令行指定 -Dcom.sun.management.jmxremote
選項(xiàng)潮饱。
Java gateway 接受來自 Zabbix server 或者代理的連接,因此在每一個 Zabbix server 或代理中只能配置一個 Java gateway诫给。如果一個主機(jī)有 JMX agent 及其他類型的監(jiān)控項(xiàng)香拉,則只有 JMX agent 類型的監(jiān)控項(xiàng)可以通過 Java gateway 進(jìn)行監(jiān)控啦扬。當(dāng)在 Java gateway 上的一個監(jiān)控項(xiàng)值更新了,Zabbix server 或代理將連接 Java gateway 請求該值凫碌,因?yàn)?Java gateway 不會緩存任何值.
Zabbix server 或代理可以通過 StartJavaPollers 控制連接 Java gateway 的進(jìn)程扑毡。Java gateway 在內(nèi)部通過 START_POLLERS 控制選項(xiàng)使用多線程啟動。StartJavaPollers 要小于或等于 START_POLLERS盛险,否則可能導(dǎo)致當(dāng)連接 Java gateway 時沒有多余的線程進(jìn)行處理瞄摊;在服務(wù)端,如果一個連接請求超過了 Timeout 設(shè)定的秒數(shù)苦掘,連接將會終止换帜,但 Java gateway 也許此時依然從 JMX 計(jì)數(shù)器中檢索該值。
原理講完鸟蜡,上手操作
- 編譯添加
--enable-java
參數(shù)膜赃,參考官網(wǎng) Java gateway,進(jìn)行編譯安裝揉忘,其中還需要下載 catalina-jmx-remote.jar 包跳座,配置 zabbix_java,zabbix_server泣矛,zabbix_agent 等配置文件 - 把 php 等前端文件放到 apache 網(wǎng)站目錄上疲眷,通過訪問
http://ip/zabbix
在安裝界面進(jìn)行配置,如果報(bào)403錯誤的話要考慮關(guān)閉防火墻 - 在界面上配置 Zabbix您朽,然而在進(jìn)行 php 環(huán)境檢查的時候報(bào)錯缺少9個模塊( ̄ェ ̄)狂丝,又是坑又要編譯 PHP,參考圖文講解zabbix安裝全過程(5)哗总,把 php 編譯了一遍(早發(fā)現(xiàn)這篇文章多好 -_-#)几颜,接著進(jìn)行 zabbix 配置,終于成功啦讯屈!
等服務(wù)器配置完成后蛋哭,就是配置客戶端了
- 創(chuàng)建 host,引用模版就可以實(shí)現(xiàn)監(jiān)控系統(tǒng) cpu 等數(shù)據(jù)涮母,而想要監(jiān)控 Tomcat 數(shù)據(jù)谆趾,也需要相應(yīng)的模塊,但 zabbix 自帶的 tomcat 模板不好用(其實(shí)都沒有找到)叛本,所以需要自己添加模版
- 在 github 上有相應(yīng)的文件沪蓬,可以下載下來直接使用,就這樣導(dǎo)入模版
- 然后參考官網(wǎng) JMX monitoring 進(jìn)行配置来候,想要看哪個圖表跷叉,需要自己創(chuàng)建相應(yīng)的 item graph。
Cloud Insight 監(jiān)控 Tomcat
相對于復(fù)雜的安裝編譯配置的 zabbix 來說,Cloud Insight 就真的簡單多了性芬,一鍵復(fù)制即完成安裝(執(zhí)行的 shell 腳本里面會把需要的環(huán)境模塊一同下載下來進(jìn)行安裝峡眶,形成一個黑盒環(huán)境剧防,不需要再安裝其他軟件)植锉,之后在 web 上見可以看到系統(tǒng) CPU 的相關(guān)數(shù)據(jù)了。
再來就是監(jiān)控 Tomcat峭拘,Cloud Insight 同樣也是通過 JMX 遠(yuǎn)程監(jiān)控服務(wù)來監(jiān)控 Tomcat俊庇。為了收集這些指標(biāo),Cloud Insight 會調(diào)用一個輕量級的 Java 插件 JMXFetch 連接到 MBean 服務(wù)器鸡挠,并通過 OneStatsd 服務(wù)器辉饱,將這些指標(biāo)發(fā)送到 Cloud Insight Agent,具體參考文檔 JMX 遠(yuǎn)程監(jiān)控:
Cloud Insight 要實(shí)現(xiàn)監(jiān)控 Tomcat 很簡單
- 在 Tomcat 配置文件里面添加 JMX 的環(huán)境變量
-Dcom.sun.management.jmxremote
- 配置 Ci 里面 Tomcat 的配置文件
tomcat.yaml
- 重啟探針
總結(jié)
Zabbix 和 Cloud Insight 安裝步驟對比:
Zabbix
- Zabbix 需要同時安裝服務(wù)端和客戶端拣展,用戶需要自己配置 PHP 做前端
- 此外 Zabbix 會檢查 php 對前端的支持情況彭沼,所需要的模塊是否都已安裝,需要按教程把 php 參數(shù)設(shè)置好
- 監(jiān)控 java 等應(yīng)用時還需要進(jìn)行額外編譯
- 監(jiān)控組件時 zabbix 本身的模版支持不夠备埃,需要自己導(dǎo)入模塊(自己寫也行)
Cloud Insight
- Cloud Insight 只需要一鍵安裝探針姓惑,配置服務(wù),探針?biāo)璧沫h(huán)境模塊都在一個包里
- 數(shù)據(jù)從 OneAPM 官網(wǎng)上看按脚,有默認(rèn)抓取的指標(biāo)于毙,一般無需配置,如果有特殊需求可在配置文件里面進(jìn)行配置
Zabbix 和 Cloud Insight 監(jiān)控 Tomcat 指標(biāo)對比:
- Zabbix 監(jiān)控的指標(biāo)和使用的模版有關(guān)辅搬,可以監(jiān)控 JVM JMX Tomcat 等指標(biāo)
- Cloud Insight 默認(rèn)收集 JVM JMX Tomcat 等20+指標(biāo)唯沮,如果想添加監(jiān)控項(xiàng)可以自己配置,參考 JMX 監(jiān)控堪遂,默認(rèn)上限350個指標(biāo)
Zabbix 和 Cloud Insight 分別適合的人群:
- Zabbix 歷史悠久介蛉,有相關(guān)社區(qū),很多人已經(jīng)使用習(xí)慣
- 如果喜歡挑戰(zhàn)新事物溶褪,想要解放運(yùn)維人力币旧,還是用 Cloud Insight 吧 (^?^)
Cloud Insight 集監(jiān)控、管理竿滨、計(jì)算佳恬、協(xié)作、可視化于一身于游,幫助所有 IT 公司毁葱,減少在系統(tǒng)監(jiān)控上的人力和時間成本投入,讓運(yùn)維工作更加高效贰剥、簡單倾剿。想閱讀更多技術(shù)文章,請?jiān)L問 OneAPM 官方技術(shù)博客。
本文轉(zhuǎn)自 OneAPM 官方博客