使用 JMX 连接远程服务进行监测

使用 JMX 连接远程服务进行监测


使用相关JMX工具连接部署在服务器上的Java应用,可以对应用的内存使用量,CPU占用率和线程等信息进行监测。
相关监测工具有jconsole,jprofiler,jvisualvm等。

1.JVM参数

监测的前提是在应用启动时候指定好了相关JVM参数。

下面列举了必须的JVM 参数:

-Djava.rmi.server.hostname=[远程机器 IP]
-Dcom.sun.management.jmxremote.port=1099
-Dcom.sun.management.jmxremote.rmi.port=1099
-Dcom.sun.management.jmxremote.ssl=false
-Dcom.sun.management.jmxremote.authenticate=false

2.启动脚本

nohup java -Xmx256m -Xms256m -Djava.rmi.server.hostname=x.x.x.x -Dcom.sun.management.jmxremote.port=1099 -Dcom.sun.management.jmxremote.rmi.port=1099 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005 -jar demo.jar >logs/log_$(date +"%Y-%m-%d").out 2>&1 &

上述脚本中需要替换Djava.rmi.server.hostname的值为自己服务器的ip,如87.34.178.79

如果启动时出现找不到 jmxremote.password 密码文件的报错,可以到 {JAVA_HOME}/jre/lib/management/ 下复制一份 jmxremote.password.template 并改名为 jmxremote.password
下面是具体的指令:

cd /usr/local/java/jdk1.8.0_321/jre/lib/management
cp jmxremote.password.template jmxremote.password

注意:这里的/usr/local/java/jdk1.8.0_321是JAVA的安装路径,不同机器根据实际情况,所在路径不同

这里我是已经完成了拷贝的操作

在这里插入图片描述

打开 jmxremote.password 文件并取消最后两行的注释:

monitorRole QED
controlRole R&D

如果 -Dcom.sun.management.jmxremote.authenticate 设置为 true,则在远程登录进行监测的时候需要使用这里的密码进行连接。例如:用户名是monitorRole,密码是QED

3.演示

这里使用jconsole进行演示。
打开cmd,输入jconsole,进入到登录界面。
在这里插入图片描述
点击远程进程,然后输入ip:port,下面的用户名和口令如果在JVM参数里将需要密码登录连接设置成true的情况下,需要输入jmxremote.password中保存的用户名和口令,我这里是设置的不需要密码连接,所以直接点击连接按钮,即可连接成功。
在这里插入图片描述

Guess you like

Origin blog.csdn.net/qq_41821963/article/details/128802709
JMX