JConsole/JvisualVM 远程连接

Ubuntu 16.04 运行了一个Java进程,其运行的参数如下:

java -Dcom.sun.management.jmxremote.port=8999 -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false 进程名

于是,我直接在Windows下运行JvisualVM,然后输入ip+端口进行连接,收到了如下错误。

我的处理过程:

1. 检查linux的防火墙是否关闭;ufw status,如果是active的,运行 sudo ufw disable来禁用防火墙;

2. 检查在Windows下是否能够telnet 8999端口; 运行cmd,然后在cmd中敲入:telnet 192.168.197.136 8999,如下截图表示不通,这时请关闭Linux防火墙或者配置防火墙规则,打开8999端口;

 

3. 上述两步都完成以后(关闭防火墙,且能telnet 8999端口),如果还不能访问,就进行如下的操作,查看hostname -i 是不是当前服务器的IP地址,如果不是,跳到第四步;

4. 修改hostname对应的IP地址:sudo vi /etc/hosts,修改完之后,重新运行hostname -i,应该就是当前服务器的IP了。

至此,再次运行服务器上的java进程,通过JvisualVM的远程访问功能就能访问和监控Java进程的相关情况了。

本文使用的tomcat版本为7.0.77。

要通过JMX远程监控Tomcat,首先需要进行Tomcat的JMX远程配置。

注意:此配置添加在catalina.bat文件开头的注释行(rem或#)后面即可。

不需鉴权的配置:

先修改Tomcat的启动脚本,windows下为bin/catalina.bat(linux下为catalina.sh),添加以下内容:

set JMX_REMOTE_CONFIG=-Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=8999 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false  
set CATALINA_OPTS=%CATALINA_OPTS% %JMX_REMOTE_CONFIG% 
linux为
JAVA_OPTS=-Dcom.sun.management.jmxremote.port=8999 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false
-Dcom.sun.management.jmxremote.port=8999,是jmxremote使用的端口号,可修改。
-Dcom.sun.management.jmxremote.authenticate=false,表示不需要鉴权,主机+端口号即可监控。

需要鉴权的配置:

set JMX_REMOTE_CONFIG=-Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=8999 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=true -Dcom.sun.management.jmxremote.password.file=../conf/jmxremote.password -Dcom.sun.management.jmxremote.access.file=../conf/jmxremote.access  
set CATALINA_OPTS=%CATALINA_OPTS% %JMX_REMOTE_CONFIG%

复制并修改授权文件

JAVA_HOME/jre/lib/management下有jmxremote.access和jmxremote.password.template的模板文件,将两个文件复制到CATALINA_BASE/conf目录下
*重命名jmxremote.password.template文件为jmxremote.password

*修改CATALINA_BASE/conf/jmxremote.access 添加内容:
     monitorRole readonly
     controlRole readwrite
*修改CATALINA_BASE/conf/jmxremote.password 添加内容:
    monitorRole  liuke  #可自定义
    controlRole   liuke  #可自定义

使用jconsole或jvisualvm测试JMX

运行JAVA_HOME/bin目录下的jconsole或jvisualvm,打开控制台,然后建立连接,填写地址、端口号、用户名、口令即可连接。

猜你喜欢

转载自blog.csdn.net/rubbertree/article/details/93048158