1. 程式人生 > >【Linux運維入門】JMX方式遠端監控Linux下JVM執行情況

【Linux運維入門】JMX方式遠端監控Linux下JVM執行情況

這篇部落格以JBoss伺服器為例,介紹JMX以方式如何配置,以遠端連線伺服器,檢視JVM執行情況。其他伺服器如Tomcat等類似。

執行環境

1. 伺服器:CentOS 7(最小化安裝) ip:192.168.22.249 jdk:1.8
2. JBoss版本:Jboss-eap-6.2
3. 客戶端:WindowOS ip:xxx.xxx.xx.xx jdk:1.8


JMX方式也分為兩種,一種是不使用使用者名稱密碼登入,另一種是使用使用者名稱和密碼。兩種方式配置稍有不同,區別的話,當然是使用使用者名稱和密碼登入比較安全。只有知道密碼的人才可以遠端連線伺服器。

第一種方式:不需要使用者名稱密碼


① 修改JBoss啟動配置檔案standalone.conf

進入JBoss目錄:{Jboss_Home}/bin,開啟JBoss啟動配置檔案standalone.conf。修改/新增下列程式碼:

a.

if [ "x$JBOSS_MODULES_SYSTEM_PKGS" = "x" ]; then
       JBOSS_MODULES_SYSTEM_PKGS="org.jboss.byteman,org.jboss.logmanager"
    fi

b.

    # ===========add these OPTS for JMX by Er Niu=================== 
JBOSS_HOME_DIR="/usr/local/jboss6.2" JAVA_OPTS="${JAVA_OPTS} -Djava.rmi.server.hostname=192.168.22.249 -Dcom.sun.management.jmxremote.port=5789" JAVA_OPTS="${JAVA_OPTS} -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false" #Use the jboss logmanager
JAVA_OPTS="$JAVA_OPTS -Djava.util.logging.manager=org.jboss.logmanager.LogManager" JAVA_OPTS="$JAVA_OPTS -Xbootclasspath/p:$JBOSS_HOME/modules/system/layers/base/org/jboss/logmanager/main/jboss-logmanager-1.5.1.Final-redhat-1.jar" JAVA_OPTS="$JAVA_OPTS -Dorg.jboss.logging.Logger.pluginClass=org.jboss.logging.logmanager.LoggerPluginImpl" # =========================== End ==============================

【示例圖片】

這裡寫圖片描述

這幾個配置的說明如下:

-Dcom.sun.management.jmxremote.port:這個是配置遠端connection的埠號的,要確定這個埠沒有被佔用

-Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false:這兩個是固定配置,是JMX的遠端服務許可權的

-Djava.rmi.server.hostname:這個是配置server的IP的,要使用server的IP最好在機器上先用hostname –i看一下IP是不是機器本身的IP,如果是127.0.0.1的話要改一下,否則遠端的時候連不上,目前我們的server上我已經都改好了。

另外一定要注意配置上 #Use the jboss logmanager… 要不然JBoss啟動不起來。報找不到logmanager 的錯誤。
如圖:

這裡寫圖片描述

② 啟動JBoss伺服器:

./standalone.sh -b 192.168.21.35 通過-b引數指定Jboss伺服器繫結的地址,允許所有使用者遠端連線 則為 -b 0.0.0.0

使用命令:nohup ./standalone.sh 以後臺方式啟動JBoss

這裡寫圖片描述

③ 測試遠端連線:

I 通過VisualVM連線:

a. 在/java_home/bin目錄 開啟VisualVM,新增遠端主機—>新增JMX連線。

這裡寫圖片描述

b. 輸入遠端伺服器IP + 埠號即可

這裡寫圖片描述

c. 效果:

這裡寫圖片描述

II 用JConsole連線:

a. 在/java_home/bin目錄 開啟Jconsole ,在遠端程序欄輸入要遠端的伺服器 IP + 埠號,連線即可。

這裡寫圖片描述

b. 效果:
若出現,安裝連線失敗提示,選擇不安全的連線按鈕。

這裡寫圖片描述

這裡寫圖片描述

第二種方式:通過使用者名稱密碼連線

① 進入目錄:java_home/jre/lib/management

將jmxremote.password.template檔案複製一份,改名為:jmxremote.password
並且將最後兩行內容修改為:

這裡寫圖片描述

如果不做修改 登入的使用者名稱:monitorRole 密碼:QED (可根據需要修改使用者名稱密碼,但是如果做修改也要同時修改jmxremote.access中的相對應名字的許可權)

② 獲取這幾個檔案的許可權

chmod  600 jmxremote.password
chmod  600 jmxremote.access

③ 開啟JBoss啟動配置檔案standalone.conf,新增如下程式碼:

# ===========add these OPTS for JMX by Er Niu=================== 
JBOSS_HOME_DIR="/usr/local/jboss6.2" 
JAVA_OPTS="${JAVA_OPTS} -Djava.rmi.server.hostname=192.168.22.249 -Dcom.sun.management.jmxremote.port=5789" 
JAVA_OPTS="${JAVA_OPTS} -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false" 
JAVA_OPTS="$JAVA_OPTS   -Dcom.sun.management.jmxremote.password.file=/usr/local/jdk1.8/jre/lib/management/jmxremote.password"
#Use the jboss logmanager 
JAVA_OPTS="$JAVA_OPTS -Djava.util.logging.manager=org.jboss.logmanager.LogManager" 
JAVA_OPTS="$JAVA_OPTS -Xbootclasspath/p:$JBOSS_HOME/modules/system/layers/base/org/jboss/logmanager/main/jboss-logmanager-1.5.1.Final-redhat-1.jar"
JAVA_OPTS="$JAVA_OPTS -Dorg.jboss.logging.Logger.pluginClass=org.jboss.logging.logmanager.LoggerPluginImpl"
# =========================== End ==============================

④ 然後在按照第一種方式的步驟啟動JBoss,連線即可

這裡寫圖片描述

至此這兩篇部落格就把如何遠端監控Linux伺服器上JVM執行情況講解完了。一共兩種連線方式,兩種工具。根據自己的需要自行選擇即可。