只用五分鐘為系統實現基於JMX的監控
轉載自:
http://my.oschina.net/zhongl/blog/29075
JMX 早期是作為J2EE的一部分, 因此總給人一種開發起來會很"重"的感覺, 這讓不少Java程式設計師寧願選擇自行實現"輕量級"方案. 時至今日, 藉助一些優秀的開源專案, JMX 也可以用起來很"輕".
使用 pojo-mbean 宣告MBean
pojo-mbean 使用Annotation對MBean進行宣告, 省去不少 JMX規範中要求的羅嗦程式碼, 不知道有多羅嗦的請見 這裡 . 例如, ManagableServer 希望被宣告為一個MBean, 只有兩個步驟:
註解
註冊
執行之後, 你可以透過 jconsole 檢視到已經發布的MBean.
如果 jconsole 就可以滿足你對監控的要求, 那麼下文的內容大可不必再看啦.
使用 jolokia 訪問MBean
jolokia 實現了透過HTTP+JSON的方式訪問MBean, 很好的解決這個問題. 無需額外編寫程式碼便可使用, 只需要在啟動命令中指定 -javaagent 選項即可實現:
java -javaagent:/path/to/jolokia-jvm-jdk6-x.xx-agent.jar=port=7777,host=localhost -cp ...
再使用 jolokia 提供的 javascript API 便可打造一個超輕量的 web console, 如圖:
使用 jmxetric 與 Ganglia 整合
開發一個真正滿足應用的 web console 肯定不是5分鐘能夠搞定的, 專業的監控平臺還是有很多可供使用的, Ganglia 便是其中之一.
如題所述, jmxetric 就提供方便與 Ganglia 整合解決方案, 同樣無需額外編寫程式碼, 實現的兩個步驟是:
宣告資料採集點
啟動時(javaagent )載入
java -javaagent:/path/to/jmxetric-0.0.x.jar=config=etc/jmxetric.xml,wireformat31x=true -cp ...
在 jmxetric -0.0.6中, 若要設定wireformat31x為true只有在 javaagent option中設定才能生效, 詳情請見 issue25 .
在 Ganglia 中的效果是:
http://my.oschina.net/zhongl/blog/29075
JMX 早期是作為J2EE的一部分, 因此總給人一種開發起來會很"重"的感覺, 這讓不少Java程式設計師寧願選擇自行實現"輕量級"方案. 時至今日, 藉助一些優秀的開源專案, JMX 也可以用起來很"輕".
使用 pojo-mbean 宣告MBean
pojo-mbean 使用Annotation對MBean進行宣告, 省去不少 JMX規範中要求的羅嗦程式碼, 不知道有多羅嗦的請見 這裡 . 例如, ManagableServer 希望被宣告為一個MBean, 只有兩個步驟:
註解
- @MBean(objectName="jsmx:type=Demo")
- class ManagableServer {
- @ManagedAttribute
- public long getCount() {...}
- @ManagedAttribute
- public int getGauge() {...}
- @ManagedOperation
- public void shutdown() {...}
- }
註冊
- ManagableServer mBean = new ManagableServer();
- new MBeanRegistration(mBean).register();
執行之後, 你可以透過 jconsole 檢視到已經發布的MBean.
如果 jconsole 就可以滿足你對監控的要求, 那麼下文的內容大可不必再看啦.
使用 jolokia 訪問MBean
jolokia 實現了透過HTTP+JSON的方式訪問MBean, 很好的解決這個問題. 無需額外編寫程式碼便可使用, 只需要在啟動命令中指定 -javaagent 選項即可實現:
java -javaagent:/path/to/jolokia-jvm-jdk6-x.xx-agent.jar=port=7777,host=localhost -cp ...
再使用 jolokia 提供的 javascript API 便可打造一個超輕量的 web console, 如圖:
使用 jmxetric 與 Ganglia 整合
開發一個真正滿足應用的 web console 肯定不是5分鐘能夠搞定的, 專業的監控平臺還是有很多可供使用的, Ganglia 便是其中之一.
如題所述, jmxetric 就提供方便與 Ganglia 整合解決方案, 同樣無需額外編寫程式碼, 實現的兩個步驟是:
宣告資料採集點
- <jmxetric-config>
- <jvm process="JSMX" />
- <sample delay="10">
- <mbean name="jsmx:type=Demo" pname="Demo">
- <attribute name="count" type="int32" pname="Count" />
- <attribute name="gauge" type="int32" pname="Gauge" />
- </mbean>
- </sample>
- <ganglia hostname="localhost" port="8649" mode="multicast" wireformat31x="true" />
- </jmxetric-config>
啟動時(javaagent )載入
java -javaagent:/path/to/jmxetric-0.0.x.jar=config=etc/jmxetric.xml,wireformat31x=true -cp ...
在 jmxetric -0.0.6中, 若要設定wireformat31x為true只有在 javaagent option中設定才能生效, 詳情請見 issue25 .
在 Ganglia 中的效果是:
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29254281/viewspace-1969305/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 基於 Prometheus 的監控系統實踐Prometheus
- Java 監控基礎 - 使用 JMX 監控和管理 Java 程式Java
- 基於施耐德PLC的水位測控系統如何實現遠端監控上下載
- 使用Sar實現系統監控
- PIGOSS BSM 使用JMX實現中介軟體Tomcat監控GoTomcat
- 基於 ZooKeeper 實現爬蟲叢集的監控爬蟲
- 基於 IntersectionObserver 實現一個元件的曝光監控Server元件
- 基於PLC的物料分揀系統如何實現雲端監控和遠端維護
- 基於系統融合的統一監控平臺設計
- 基於 Zabbix 系統監控 Windows、Linux、VMwareWindowsLinux
- OneAPM大講堂 | 基於影像質量分析的攝像頭監控系統的實現
- 來!做一個分鐘級業務監控系統 【實戰】
- 分散式監控系統之Zabbix 使用SNMP、JMX通道採集資料分散式
- 基於HTML5 Canvas 實現商場監控HTMLCanvas
- 基於各種感測器的空調系統監控
- SSH Exporter:基於Prometheus的遠端系統效能監控神器ExportPrometheus
- 實時監控系統,統一監控企業APIAPI
- 基於Prometheus閘道器的監控完整實現參考Prometheus
- Unix檔案系統頁面監控實現
- 監控影片行為分析系統
- 蘋果系統用於系統監控和管理的命令蘋果
- 基於PLC的礦井通風控制系統如何實現資料採集和遠端監控?
- 基於 HTML5 WebGL 的 智慧樓宇能源監控系統HTMLWeb
- 基於 HTML5 Canvas 實現地鐵站監控HTMLCanvas
- 基於HTML5 Canvas 實現地鐵站監控HTMLCanvas
- 基於螢石雲實現的九宮格影片監控效果
- 基於OkHttp的Http監控HTTP
- 施工現場影片監控系統
- Linux系統行為新型實時監控技術Linux
- 基於 WebGL 的 HTML5 3D 棉花加工監控系統WebHTML3D
- 基於 HTML5 WebGL 的 3D 棉花加工監控系統HTMLWeb3D
- 構建基於 HarmonyOS Next 的分散式工業監控系統分散式
- 前端監控基礎篇 — Docker + Sentry 搭建前端監控系統前端Docker
- 基於資料採集閘道器實現工業生產現場裝置遠端監控系統
- Zabbix監控系統深度實踐
- JavaWeb的監控系統JavaWeb
- 使用JMX Exporter監控Rainbond上的Java應用ExportAIJava
- 在k8s中快速搭建基於Prometheus監控系統K8SPrometheus