https://blog.csdn.net/xiaoye319/article/details/103454246
无论是监控局域网还是远程java虚拟机运行的情况,都可以用jdk自带的jvisualvm进行远程监控。本文就是介绍如何配置在jvisualvm上远程监控虚拟机的运行情况。
一、前提说明
1、JMX能监控CPU、堆、类、线程的使用情况,但是无法监控GC的具体情况,如果需要监控GC的具体情况,得配置jstatd远程监控。
2、配置远程监控,前提是得设置好服务器的ip,如果使用hostname -i看到的是127.0.0.1,那么就是ip没配置好,自己去/etc/hosts中配置好实际ip。
二、配置JMX远程监控
1、配置参数配置
如果是用启动jar包,那么在启动脚本或者启动命令中加入以下命令:
-Dcom.sun.management.jmxremote.port=5050 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false -Djava.rmi.server.hostname=192.168.0.40
如果使用tomcat启动的,那么就在tomcat的tomcat/bin/catalina.sh中加入以下命令:
export CATALINA_OPTS="$CATALINA_OPTS -Dcom.sun.management.jmxremote
-Djava.rmi.server.hostname=192.168.0.40 -Dcom.sun.management.jmxremote.port=5050 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false"
参数说明:
-Dcom.sun.management.jmxremote.port
:配置一个远程服务器上未被占用的端口
-Dcom.sun.management.jmxremote.ssl=false
:配置 JMX 是否启用 ssl
-Dcom.sun.management.jmxremote.authenticate=false
:配置 JXM 是否启动鉴权
-Djava.rmi.server.hostname
:配置服务器 IP
2、jvisualvm配置JMX
点击远程添加你的服务器ip,然后选中服务器右击选择添加JMX连接,然后输入端口号,端口号就是上面命令中你设置的端口号,如果你选择了启动ssl校验,就输入服务器的登录账号和密码,然后点击确定。
然后你就能看到虚拟机的运行情况了,但是无法看到Visual GC的具体情况,如果想看具体的GC情况,继续配置jstatd。
三、配置jstatd远程监控
1、在远程服务器的任何一个目录创建文件jstatd.all.policy,我是在/home目录下创建的,在文件中加入以下内容
-
grant codebase "file:/usr/local/jdk1.8.0_161/lib/tools.jar" {
-
permission java.security.AllPermission;
-
注意:jdk的路径根据自己的具体jdk配置
2、启动jstatd
jstatd -J-Djava.security.policy=jstatd.all.policy -J-Djava.rmi.server.hostname=192.168.0.40 -J-Djava.rmi.server.logCalls=true -J-Djava.net.preferIPv4Stack=true -p 5056
参数说明:
-J-Djava.security.policy=jstatd.all.policy
指jstatd.all.policy文件的定路径
-J-Djava.rmi.server.logCalls=true
:是否打印日志
-J-Djava.rmi.server.hostname=192.168.19.114
:配置服务器地址
-p
:指定端口
然后jps查看jstatd是否启动了,如果启动了再进行下一步
3、jvisualvm配置jstatd
选中服务器右击选择添加jstatd连接,然后输入端口号,端口号就是上面命令中你设置的端口号,然后点击确定
左边就是你是服务器上运行的进程了,选择你想看的进程,在监控中你会发现CPU的监控看不了,所以如果想看CPU就配置JMX连接,如果想看GC回收情况,则配置jstatd