1. 程式人生 > >使用Collectd + InfluxDB + Grafana進行JMX監控

使用Collectd + InfluxDB + Grafana進行JMX監控

res 擴展 pan 遠程 jconsole bsp 分享 單擊 connect

我們已經看到使用Collectd監控CPU /內存利用率(本文)。但它沒有提供所有信息來確定性能問題的瓶頸。在本文中,我們將使用Collectd Java插件來使用其JMX技術來監視和管理Java虛擬機(JVM)。

目標:

使用Java的JMX技術監視和管理Java虛擬機(JVM)。

建築:

我們的高級架構如下所示 - 我們將監控所有應用服務器,JMeter服務器和JMeter-master的JVM。

技術分享圖片

JMX(Java托管擴展):

JMX是在Java 5.0發行版中引入的,用於在運行時管理/監視資源。使用JMX,我們將能夠監視內存使用情況,垃圾收集,加載的類,線程數等隨著時間的推移。這是性能工程中更有用的信息。

更多信息在這裏

技術分享圖片

如上圖所示,使用JMX連接器,JConsole / Collectd等客戶端與MBean服務器通信,以獲取我們感興趣的應用程序的度量標準。

JConsole的:

JConsole是一個用於監視JVM的GUI工具。它附帶Java JDK。讓我們看看它如何幫助我們監控JMeter。[我假設你安裝了JDK]

  • 啟動JMeter
  • 打開一個簡單的測試計劃/創建一個。
  • 轉到Java JDK Home / bin文件夾
  • 啟動JConsole.exe

技術分享圖片

  • 它將顯示正在運行的Java應用程序列表。選擇ApacheJMeter.jar並連接。如果出現此對話窗口,請單擊“不安全連接”

技術分享圖片

  • 運行JMeter測試。

技術分享圖片

  • JConsole顯示內存使用情況,線程數[ 不要與JMeter的線程數混淆 ],加載類等
  • 單個選項卡提供更多信息,如GC。

監控遠程過程:

  • 當我們在上面監視本地進程(ApacheJMeter.jar)時,JConsole也可用於監視遠程進程(遠程進程可能是您的tomcat服務器/ JMeter-server)
  • 應為遠程進程設置某些屬性,以便client / JConsole可以與JMX API通信以獲取信息。在啟動java進程時,傳遞以下屬性。

-Dcom.sun.management.jmxremote
-Dcom.sun.management.jmxremote.port=6969
-Dcom.sun.management.jmxremote.rmi.port=6969
-Dcom.sun.management.jmxremote.ssl=false
-Dcom.sun.management.jmxremote.authenticate=false

  • 如果您正在運行docker容器,請確保還使用了以下屬性。

-Djava.rmi.server.hostname=${HOST_IP}

  • 要收集jmeter-server jmx指標,我在下面設置環境變量並啟動jmeter-server.sh

export JVM_ARGS="-Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=6969 -Dcom.sun.management.jmxremote.rmi.port=6969 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false"

  • 對於Tomcat:

CATALINA_OPTS="-Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=6969 -Dcom.sun.management.jmxremote.rmi.port=6969 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false"

  • 只需將上述參數傳遞給java進程即可啟用JMX監控。
  • 現在,JConsole可以使用以下服務URL連接到遠程JMX。

service:jmx:rmi:///jndi/rmi://hostname:6969/jmxrmi

Collectd Java插件:

JConsole是一個很好的工具。但它不保留歷史數據。我們已經使用Collectd來監控我們的jmeter-servers和app服務器的CPU和內存利用率。我們可以使用Collectd的Java和JMX插件將JMX指標收集到InfluxDB中。

請先閱讀本文關於collectd的用法。

我將在collectd配置文件中添加以下部分。

重啟collectd服務。等幾分鐘來收集一些指標。

技術分享圖片

獲得此數據後,最後一步將在Grafana中創建一個儀表板來創建圖形。

技術分享圖片

摘要:

使用Collectd插件,以及CPU和內存利用率,我們還可以將JMX指標收集到InfluxDB中。使用Grafana,我們可以可視化,性能測試結果(最小值,最大值,平均響應時間,吞吐量等),JMX度量(堆內存使用,加載的類計數,線程數,GC)和其他指標,如所有的CPU和內存利用率JMeter服務器,App服務器。

使用Collectd + InfluxDB + Grafana進行JMX監控