用於監控遠程環境Jvm的運行情況
一. 首先在服務器終端設置環境變量,主要是便於每次啓動項目時使用:
-
在/etc/profile文件的最後加上以下代碼
export JAVA_OPTS='-Djava.rmi.server.hostname=服務器地址(公網ip) -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=8617 -Dcom.sun.management.jmxremote.rmi.port=8617 -Dcom.sun.management.jmxremote.authenticate=true -Dcom.sun.management.jmxremote.ssl=false'
使用到的相關命令:
vim profile
編輯指令 i
保存並退出指令 :wq
配置完成後截圖: -
設置環境變量後,用命令重新加載配置文件:source /etc/profile
-
參數解析:
- 配置遠程調用主機地址,即jar包運行所在系統的IP地址,不配置則默認使用hosts文件中的值:-Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=8617
- 指定JMX的運行端口,jconsole需要對接的既是該端口:-Dcom.sun.management.jmxremote.rmi.port=8617
- 是否需要進行身份驗證:-Dcom.sun.management.jmxremote.authenticate=true
- 是否允許使用ssl方式接入:-Dcom.sun.management.jmxremote.ssl=false
注:一步驟只是爲了設置統一環境變量,便於jar包啓動時同時啓動jmx(jconsole)的相關ip,端口,連接賬號,密碼信息
二. jmx的賬號密碼的設置
-
切換到服務器jvm的配置路徑(路徑不確定可以在/etc/profile統一環境變量中找)
以下是我的jvm的配置路徑:
-
配置jmx的賬號密碼:
切換到你服務器的jvm配置路徑:cd /usr/lib/jvm/java-1.8.0-openjdk.x86_64/
拷貝jmxremote.password.template文件到jmxremote.pwssword:
sudo cp jmxremote.password.template jmxremote.password
給jmxremote.password文件添加讀寫權限
sudo chmod 666 jmxremote.password
修改jmxremote.password文件,取消最後兩行的註釋,保存退出.
注:再將權限修改爲只讀(有點坑,我開始沒有這一步驟,導致jconsole遠程連接失敗):
chmod 400 jmxremote.password
這裏默認的用戶有monitorRole和controlRole,對應的密碼分別是QED和R&D
注意:這裏的monitorRole只有讀權限,而controlRole有讀寫權限
啓動項目進行測試(jar包後臺運行):
java $JAVA_OPTS -jar onecard-2.2.0.jar &
三.使用jconsole遠程連接:
注:查看指定端口監聽狀態:
sudo netstat -apn | grep java