jmx配合jvisualvm远程监控Java程序

jvisualvm和jmx都是JDK自带的工具

jvisualvm的位置在$JAVA_HOME/bin目录下

Windows下可以双击exe启动,也可以命令行启动 

 

远程主机配置jmx:

1、

找到配置文件$JAVA_HOME/jre/lib/management/jmxremote.password.template,复制一份并改名为jmxremote.password,然后打开jmxremote.passwrod,取消以下两行注释:

#monitorRole QED
#controlRole  R&D

其中monitorRole就是监控的账号名,后面是密码,最好把密码改了,不然要密码也没有什么意义,比如改为QED123456。

2、

修改所要启动的java程序的启动参数(JVM_OPTS)。如果是linux下的tomcat,则打开tomcat的bin目录下的catalina.sh(windows下应该是catalina.bat,windows下怎么处理请自行谷歌百度),加入以下内容(非tomcat程序也类似):

JAVA_OPTS="$JAVA_OPTS   -Djava.rmi.server.hostname=192.168.236.20 \

-Dcom.sun.management.jmxremote.port=18999 \       

-Dcom.sun.management.jmxremote.ssl=false \     

-Dcom.sun.management.jmxremote.authenticate=true"

其中参数hostname=192.168.236.20是远程主机的ip,port=18999就是jmx监听的端口,等待jvisualvm连接。

其中最后一个参数authenticate表示是否需要密码认证,如果是生产环境,为了安全最好赋值为true,这样第1步设置的密码也有了真正的用处。

3、

很重要,你需要监控的程序是由哪个用户启动,则把jmxremote.password文件的权限改为这个用户的只读权限,否则启动程序会报错:Error: Password file read access must be restricted。其实这些在jmxremote.password里的注释都有说明。

比如,如果你是用root用户启动tomcat,则先执行

chown root jmxremote.password

再执行

chmod 400 jmxremote.password

4、

启动待监控的程序,比如tomcat

 

本地启动jvisualvm:

5、

启动jvisualvm,左边栏,右键“远程”>>“添加远程主机”

jmx配合jvisualvm远程监控Java程序_第1张图片

左侧栏,右键刚才添加的远程主机>>“添加jmx链接”

jmx配合jvisualvm远程监控Java程序_第2张图片

其中用户名和口令就是第一步中配置的用户名和密码。点击“确定”。


至此,应该就可以监控到远程主机上java程序的运行状况了。

你可能感兴趣的:(jmx配合jvisualvm远程监控Java程序)