JVM之遠程監控springboot程序

1. 準備好springboot 的jar包

2. 編寫啓動腳本.

這是改動之前的腳本:

jarname='eureka-server'
pid=`ps aux | grep $jarname | grep -v grep | awk '{print $2}'`
echo $pid
if [ "$jarname" != "" ]
then 
  kill -9 $pid
fi
kill -9 $pid
#!/bin/sh --spring.profiles.active=dev
nohup java \
-jar $jarname.jar \
--spring.profiles.active=local \
-server -Xms512m -Xmx1024m -Xss256k > ./$jarname.log 2>&1 &
echo "start successed!!!"

這是改動之後的

jarname='eureka-server'
pid=`ps aux | grep $jarname | grep -v grep | awk '{print $2}'`
echo $pid
if [ "$jarname" != "" ]
then 
  kill -9 $pid
fi
kill -9 $pid
#!/bin/sh --spring.profiles.active=dev
nohup java \
-Djava.rmi.server.hostname=20.21.1.147 \
-Dcom.sun.management.jmxremote \
-Dcom.sun.management.jmxremote.port=1099 \
-Dcom.sun.management.jmxremote.authenticate=false \
-Dcom.sun.management.jmxremote.ssl=false \
-jar $jarname.jar \
--spring.profiles.active=local \
-server -Xms512m -Xmx1024m -Xss256k > ./$jarname.log 2>&1 &
echo "start successed!!!"

主要是增加這段啓動參數:

-Djava.rmi.server.hostname=192.168.2.39 \ 

-Dcom.sun.management.jmxremote \
-Dcom.sun.management.jmxremote.port=1099 \
-Dcom.sun.management.jmxremote.authenticate=false \
-Dcom.sun.management.jmxremote.ssl=false \
 

其中hostname是主機內網ip, port是端口開放, authenticate我這邊選擇不用驗證.

3. 使用jconsole 或jvisualVM 監控遠程 spring boot程序

博主這邊使用了jvisualVM做例子:

3.1先命令行輸入 jvisualvm 打開jvisualVM 程序

3.2 添加遠程主機

這裏填寫你的hostname

3.3 添加JMX連接

右鍵遠程主機, 點擊添加jmx連接

補上端口號, 我這裏是1009

點擊確定.

連接成功;

3.4 驗證登錄

(1)將authenticate 改成true

Dcom.sun.management.jmxremote.authenticate=true 

(2)並且添加額外的兩行啓動參數

Dcom.sun.management.jmxremote.access.file=../conf/jmxremote.access -
Dcom.sun.management.jmxremote.password.file=../conf/jmxremote.password"

(3) 在../conf 目錄下添加如下文件jmxremote.access和jmxremote.password

jmxremote.access 文件

guest readonly
manager readwrite

jmxremote.password 文件

guest guest
manager manager


(4)授予權限 : chmod 600 *jmxremot*

(5)在遠程的時候, 輸入賬號密碼即可

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章