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)在远程的时候, 输入账号密码即可

 

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