【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執行情況講解完了。一共兩種連線方式,兩種工具。根據自己的需要自行選擇即可。