天天看點

JVM遠端監控-JMX1. 文章目标 4. jvisualvm監控

1. 文章目标

通過

JMX

+

jvisualvm

監控遠端JVM,本文以監控Tomcat為例

  • 動态開啟JMX無需重新開機

    無認證模式 — 有認證模式

  • 啟動時開啟JMX需重新開機

    無認證模式 — 有認證模式

  • jvisualvm監控

1.1 環境介紹

  • 本機環境簡介

    Win10,192.168.

    1.1

    oracle

    Jdk 1.8.0_201
  • 伺服器環境簡介

    Centos 7.6,192.168.

    1.14

    open

    Jdk 1.8.0_232,tomcat 8.5.50

2. 動态開啟JMX

2.1 無認證模式

通過jps指令獲得tomcat pid

jps -l
           

傳回資訊如下所示,tomcat程序id為19533

19533 org.apache.catalina.startup.Bootstrap
19583 sun.tools.jps.Jps
           

開啟無認證模式的JMX,此處JMX端口為9999(可自選)

jcmd 19533 ManagementAgent.start jmxremote.host=192.168.1.14 \
jmxremote.port=9999 jmxremote.ssl=false jmxremote.authenticate=false
           

傳回如下資訊表明開啟成功

19533:
Command executed successfully
           

關閉JMX

jcmd 19533 ManagementAgent.stop
           

傳回如下資訊表明關閉成功

19533:
Command executed successfully
           

2.2 有認證模式

此處依然使用無認證模式tomcat程序id 19533

建立權限檔案/root/jmxremote.access,内容如下:

root readwrite
dft readonly
           

jmxremote.access

檔案定義了使用者的權限,root使用者具備讀寫權限,dft使用者隻有讀權限

建立密碼檔案/root/jmxremote.password,内容如下

root [email protected]#
dft 123456a?
           

jmxremote.access

檔案定義了使用者的密碼資訊

更改檔案權限

jmxremote.access和jmxremote.password檔案的通路權限需要設定為

600

,否則會報錯

chmod 600 /root/jmxremote.access /root/jmxremote.password
           

建立配置檔案/root/management.properties,内容如下

# 開放端口号
com.sun.management.jmxremote.port=9999
# 是否隻能本地連接配接
com.sun.management.jmxremote.local.only=false
# 是否使用ssl加密
com.sun.management.jmxremote.ssl=false
# 是否需要賬号密碼認證
com.sun.management.jmxremote.authenticate=true
# 密碼檔案路徑
com.sun.management.jmxremote.password.file=/root/jmxremote.password
# 權限檔案路徑
com.sun.management.jmxremote.access.file=/root/jmxremote.access
           

開啟有認證模式的JMX

jcmd 19533 ManagementAgent.start config.file=/root/management.properties
           

傳回如下資訊表明開啟成功

19533:
Command executed successfully
           

關閉JMX

jcmd 19533 ManagementAgent.stop
           

傳回如下資訊表明關閉成功

19533:
Command executed successfully
           

3. 啟動時開啟JMX

需重新開機Tomcat

3.1 無認證模式

編輯TOMCAT_HOME/bin/catalina.sh,如果已定義變量JAVA_OPTS,則在此基礎上進行修改;如果未定義JAVA_OPTS,則新增此變量。此處以新增為例,在catalina.sh第二行後添加如下内容:

JVM遠端監控-JMX1. 文章目标 4. jvisualvm監控

添加完成後,重新開機Tomcat即可。

3.2 有認證模式

如下四步與2.2小節完全一緻,參照2.2配置

  • 建立權限檔案/root/jmxremote.access
  • 建立密碼檔案/root/jmxremote.password
  • 更改檔案權限
  • 建立配置檔案/root/management.properties

編輯$TOMCAT_HOME/bin/catalina.sh

此處假設未定義

JAVA_OPTS

變量,在catalina.sh第二行後添加如下内容:

JVM遠端監控-JMX1. 文章目标 4. jvisualvm監控

添加完成後,重新開機Tomcat即可。

4. jvisualvm監控

輕按兩下

%JAVA_HOME%/bin/jvisualvm.exe

啟動Java VisualVM,如果你的JDK中沒有預設安裝jvisualvm,可以去http://visualvm.github.io/下載下傳。

右鍵

點選

遠端

,然後點選

添加遠端主機

JVM遠端監控-JMX1. 文章目标 4. jvisualvm監控

在彈出的視窗中填寫遠端主機IP位址,此處遠端主機為192.168.1.14,然後點選

确定

按鈕,如下圖所示

JVM遠端監控-JMX1. 文章目标 4. jvisualvm監控

在剛添加的遠端主機

192.168.1.14

上點選

右鍵

,然後選擇

添加JMX連接配接...

JVM遠端監控-JMX1. 文章目标 4. jvisualvm監控

在主機IP後面,填寫我們開啟的JMX的端口,本例為9999,然後點選

确定

JVM遠端監控-JMX1. 文章目标 4. jvisualvm監控

如果你開啟了賬号認證,則在彈出的視窗中添加賬号,密碼,點确定按鈕

JVM遠端監控-JMX1. 文章目标 4. jvisualvm監控

此處我們沒有開啟SSL,是以會有一個SSL連接配接失敗提示(當然你在輸端口的時候,勾選了不啟用SSL就不會有),點選

JVM遠端監控-JMX1. 文章目标 4. jvisualvm監控

最後輕按兩下我們新加的JMX連接配接就能愉快的遠端監控了

JVM遠端監控-JMX1. 文章目标 4. jvisualvm監控