天天看点

JVM远程监控-JMX1. 文章目标 4. jvisualvm监控

1. 文章目标

通过

JMX

+

jvisualvm

监控远程JVM,本文以监控Tomcat为例

  • 动态开启JMX无需重启

    无认证模式 — 有认证模式

  • 启动时开启JMX需重启

    无认证模式 — 有认证模式

  • jvisualvm监控

1.1 环境介绍

  • 本机环境简介

    Win10,192.168.

    1.1

    oracle

    Jdk 1.8.0_201
  • 服务器环境简介

    Centos 7.6,192.168.

    1.14

    open

    Jdk 1.8.0_232,tomcat 8.5.50

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第二行后添加如下内容:

JVM远程监控-JMX1. 文章目标 4. jvisualvm监控

添加完成后,重启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第二行后添加如下内容:

JVM远程监控-JMX1. 文章目标 4. jvisualvm监控

添加完成后,重启Tomcat即可。

4. jvisualvm监控

双击

%JAVA_HOME%/bin/jvisualvm.exe

启动Java VisualVM,如果你的JDK中没有默认安装jvisualvm,可以去http://visualvm.github.io/下载。

右键

点击

远程

,然后点击

添加远程主机

JVM远程监控-JMX1. 文章目标 4. jvisualvm监控

在弹出的窗口中填写远程主机IP地址,此处远程主机为192.168.1.14,然后点击

确定

按钮,如下图所示

JVM远程监控-JMX1. 文章目标 4. jvisualvm监控

在刚添加的远程主机

192.168.1.14

上点击

右键

,然后选择

添加JMX连接...

JVM远程监控-JMX1. 文章目标 4. jvisualvm监控

在主机IP后面,填写我们开启的JMX的端口,本例为9999,然后点击

确定

JVM远程监控-JMX1. 文章目标 4. jvisualvm监控

如果你开启了账号认证,则在弹出的窗口中添加账号,密码,点确定按钮

JVM远程监控-JMX1. 文章目标 4. jvisualvm监控

此处我们没有开启SSL,所以会有一个SSL连接失败提示(当然你在输端口的时候,勾选了不启用SSL就不会有),点击

JVM远程监控-JMX1. 文章目标 4. jvisualvm监控

最后双击我们新加的JMX连接就能愉快的远程监控了

JVM远程监控-JMX1. 文章目标 4. jvisualvm监控