1. 文章目标
通过
JMX
+
jvisualvm
监控远程JVM,本文以监控Tomcat为例
-
动态开启JMX无需重启
无认证模式 — 有认证模式
-
启动时开启JMX需重启
无认证模式 — 有认证模式
- jvisualvm监控
1.1 环境介绍
-
本机环境简介
Win10,192.168.
,1.1
Jdk 1.8.0_201oracle
-
服务器环境简介
Centos 7.6,192.168.
,1.14
Jdk 1.8.0_232,tomcat 8.5.50open
2. 动态开启JMX
2.1 无认证模式
通过jps命令获得tomcat pid
jps -l
返回信息如下所示,tomcat进程id为19533
19533 org.apache.catalina.startup.Bootstrap
19583 sun.tools.jps.Jps
开启无认证模式的JMX,此处JMX端口为9999(可自选)
jcmd 19533 ManagementAgent.start jmxremote.host=192.168.1.14 \
jmxremote.port=9999 jmxremote.ssl=false jmxremote.authenticate=false
返回如下信息表明开启成功
19533:
Command executed successfully
关闭JMX
jcmd 19533 ManagementAgent.stop
返回如下信息表明关闭成功
19533:
Command executed successfully
2.2 有认证模式
此处依然使用无认证模式tomcat进程id 19533
创建权限文件/root/jmxremote.access,内容如下:
root readwrite
dft readonly
jmxremote.access
文件定义了用户的权限,root用户具备读写权限,dft用户只有读权限
创建密码文件/root/jmxremote.password,内容如下
root [email protected]#
dft 123456a?
jmxremote.access
文件定义了用户的密码信息
更改文件权限
jmxremote.access和jmxremote.password文件的访问权限需要设置为
600
,否则会报错
chmod 600 /root/jmxremote.access /root/jmxremote.password
创建配置文件/root/management.properties,内容如下
# 开放端口号
com.sun.management.jmxremote.port=9999
# 是否只能本地连接
com.sun.management.jmxremote.local.only=false
# 是否使用ssl加密
com.sun.management.jmxremote.ssl=false
# 是否需要账号密码认证
com.sun.management.jmxremote.authenticate=true
# 密码文件路径
com.sun.management.jmxremote.password.file=/root/jmxremote.password
# 权限文件路径
com.sun.management.jmxremote.access.file=/root/jmxremote.access
开启有认证模式的JMX
jcmd 19533 ManagementAgent.start config.file=/root/management.properties
返回如下信息表明开启成功
19533:
Command executed successfully
关闭JMX
jcmd 19533 ManagementAgent.stop
返回如下信息表明关闭成功
19533:
Command executed successfully
3. 启动时开启JMX
需重启Tomcat
3.1 无认证模式
编辑TOMCAT_HOME/bin/catalina.sh,如果已定义变量JAVA_OPTS,则在此基础上进行修改;如果未定义JAVA_OPTS,则新增此变量。此处以新增为例,在catalina.sh第二行后添加如下内容:
添加完成后,重启Tomcat即可。
3.2 有认证模式
如下四步与2.2小节完全一致,参照2.2配置
- 创建权限文件/root/jmxremote.access
- 创建密码文件/root/jmxremote.password
- 更改文件权限
- 创建配置文件/root/management.properties
编辑$TOMCAT_HOME/bin/catalina.sh
此处假设未定义
JAVA_OPTS
变量,在catalina.sh第二行后添加如下内容:
添加完成后,重启Tomcat即可。
4. jvisualvm监控
双击
%JAVA_HOME%/bin/jvisualvm.exe
启动Java VisualVM,如果你的JDK中没有默认安装jvisualvm,可以去http://visualvm.github.io/下载。
右键
点击
远程
,然后点击
添加远程主机
在弹出的窗口中填写远程主机IP地址,此处远程主机为192.168.1.14,然后点击
确定
按钮,如下图所示
在刚添加的远程主机
192.168.1.14
上点击
右键
,然后选择
添加JMX连接...
在主机IP后面,填写我们开启的JMX的端口,本例为9999,然后点击
确定
如果你开启了账号认证,则在弹出的窗口中添加账号,密码,点确定按钮
此处我们没有开启SSL,所以会有一个SSL连接失败提示(当然你在输端口的时候,勾选了不启用SSL就不会有),点击
是
最后双击我们新加的JMX连接就能愉快的远程监控了