導航:首頁 > 編程語言 > java監控工具

java監控工具

發布時間:2025-07-23 02:34:24

A. 使用 JMX 監控和管理 java 程序

主題 JMX

本文講解Java JMX技術的相關概念和實際應用。

本文章屬於Java性能分析優化系列文章,點擊話題可查看所有文章。

1. JMX是什麼?

Java Management Extensions(JMX)是Java SE平台的標准功能,提供了一種簡單且標准化的資源監控和管理方式。它定義了資源的結構和模式,主要用於監控和管理Java應用程序運行狀態、設備和資源信息以及Java虛擬機運行情況。JMX的動態性使其能夠在資源創建、安裝、實現時進行動態監控和管理。JDK自帶的jconsole就是基於JMX技術的監控工具。

在使用JMX技術時,通過定義一個MBean(或MXBean)的Java對象來表示要管理的資源,並將其注冊到MBean Server,對外提供服務。MBean Server作為代理,負責對外提供服務和對內管理MBean資源,實現了資源管理和MBean Server的完全獨立控制。

JMX不僅適用於本地管理,還通過JMX Remote API擴展了遠程功能,使其能夠通過網路遠程監視和管理應用程序。

2. 為何使用JMX技術?

JMX技術為Java開發者提供了一種簡單、靈活且標准化的資源監控方式,得益於其相對獨立的架構設計,JMX能輕松集成到各種監控系統中。

JMX的具體優點包括:

3. JMX的技術架構

JMX架構由資源管理(MBean/MXBean)、資源代理(MBean Server)和遠程管理(Remote API)組成。下圖展示了三個模塊之間的關系。

3.1. 資源管理MBean

資源管理是架構中的資源探測層(Probe Level),在JMX中,使用MBean或MXBean表示資源,訪問和管理資源都通過MBean,MBean包含資源的屬性和操作方法。

JMX已經為JVM提供了多維度資源檢測,可以輕松啟動JMX代理訪問內置的JVM資源檢測,從而實現遠程監控和管理JVM。

以下是JMX對JVM資源檢測類的示例代碼。

運行後得到結果如下:

3.2. 資源代理MBean Server

MBean Server是MBean資源的代理,通過MBean Server可以實現MBean資源的遠程管理。MBean資源和MBean Server通常在同一JVM中,但不是強制要求。

為了使MBean Server管理MBean資源,需要將資源注冊到MBean Server。任何符合JMX規范的MBean資源都可以進行注冊,MBean Server會暴露遠程通信介面對外提供服務。

3.3. JMX遠程管理

可以通過HTTP協議、SNMP協議、RMI遠程調用協議等網路協議訪問JMX API,JMX技術默認實現了RMI遠程調用協議。

由於資源管理MBean的充分解耦,可以輕松將資源管理功能擴展到其他協議,如通過HTTP在網頁端進行管理。

4. JMX的具體使用

在資源管理MBean部分已經展示了使用JMX獲取JVM運行信息,那麼如何自定義資源MBean呢?

下面通過一個例子,模擬一個內存資源MBean,最後實現遠程管理。

4.1. 編寫資源管理MBean

MBean的編寫遵循JMX設計規范,MBean類似於特殊的Java Bean,需要介面和實現類。MBean資源介面以MBean或MXBean結尾,實現類以介面去掉MBean或MXBean後的名字命名。

編寫一個內存資源管理MBean介面如下:

然後實現這個介面:

這樣就完成了線程數量資源MBean的創建,其中total和used是資源屬性,doMemoryInfo是資源操作方法。

4.2. 注冊資源到MBean Server

通過上述JMX架構圖,我們知道MBean資源需要注冊到MBean Server進行代理才能暴露給外部調用。為了通過遠程管理自定義的MyMemory資源,需要先進行資源代理。

啟動後可以看到控制台每三秒列印我們自定義的內存信息。

不加任何JVM參數啟動Java程序,JMX只能在當前機器訪問,若要通過網路實現真正的遠程訪問,需要指定當前機器IP和開放埠。

4.3. 遠程管理jconsole

jconsole是Java自帶的基於JMX技術的監控管理工具,若已配置JDK環境變數,可通過控制台運行jconsole命令啟動。

啟動jconsole後列出當前機器上的Java進程,選擇要監控的Java進程進行監控,連接後提示不安全的協議,原因是Java程序默認啟動不配置HTTPS協議。

連接後可以看到多維度的JVM監控信息,這些信息通過讀取JVM資源MBean信息獲得。

在下面的頁面展示了線程信息,注意最下面的線程信息,可以看到RMI TCP線程,這證明了JMX默認通過RMI協議進行遠程管理。

在MBean頁面可以瀏覽所有可管理的MBean信息,也可以看到我們自定義的com.wdbyte.jmx中的內存信息,甚至可以直接修改其中的used變數。

修改後控制台日誌立即發生變化,已修改成功。

在操作中可以調用doMemoryInfo方法,調用後可以看到返回值中使用內存已從啟動時的20MB更新為30MB。

以上代碼示例存放在github.com/niumoo/JavaN...

當前系列:

---- E ND ----

分享一波面試資料,請點擊鏈接加入群聊【馬士兵官方java編程學】:

B. 必須要會的JVM性能監測工具(JVisualVM)

JVisualVM是Java開發者必須要掌握的JVM性能監測工具,其主要特點和功能如下:

綜上所述,JVisualVM以其強大的功能和易用性,成為Java開發者在進行JVM性能監控和問題診斷時必不可少的工具。

C. Java開發者最有用的監控工具

Java 開發者最有用的監控工具如下:

Datadog

Datadog 是 SaaS 監測工具,針對 DevOps 團隊,從 app 或者其他各種工具獲取數據並提供數據可視化功能。它把從基礎設備和軟體採集的數據統一處理並存儲。允許創建儀表盤和搜索訪問提供的數據。

Ruxit

它由 Dynatrace 開發,Ruxit 是一個應用性能監控工具,它作用於 SaaS 模型。它通過 SaaS 提供不同的 APM 體驗,並工作在高擴展性環境中。

Takipi

Takipi 告 知生產環境下的代碼在什麼時候、因什麼原因而終止執行。它對所有錯誤進行檢測,同時會給出出現錯誤時代碼的位置和變數的狀態。Takipi 是以 Java 代理的身份運行的,與任何日誌文件無關,這樣就會減少小於 %3 的 CPU 和 IO 運行花費。

閱讀全文

與java監控工具相關的資料

熱點內容
楚留香為什麼沒有伺服器 瀏覽:733
伺服器怎麼用手機搭建 瀏覽:430
存儲伺服器如何掛載到伺服器 瀏覽:376
編譯安裝pythondev 瀏覽:110
農信卡app密碼忘記了怎麼辦 瀏覽:845
文明史pdf 瀏覽:587
妻友app蘋果怎麼下載 瀏覽:141
win10系統如何遠程桌面連接到伺服器 瀏覽:277
編譯原理張晶是哪的人 瀏覽:271
資深程序員怎麼做 瀏覽:401
程序員那麼可愛三年前發生了什麼 瀏覽:243
跑腿app源碼上傳 瀏覽:268
html5簡單小游戲源碼 瀏覽:22
在轉轉app怎麼領福利 瀏覽:358
app的雙重認證怎麼解除 瀏覽:224
加密貨幣價格動盪的6個原因 瀏覽:183
站內搜索引擎源碼 瀏覽:410
sqlite常用命令 瀏覽:106
演算法導論第三版pdf中文 瀏覽:970
伺服器如何分成多台的軟體 瀏覽:778