visualvm远程连接Docker容器中部署的java应用
前言
jdk1.8中自带了,java11中需要单独下载
下载地址
简介
java虚拟机监控,故障排查及性能分析工具。
网络配置
局域网与docker内网打通,请参考:办公网络与Docker内网网络互通
服务于网络
服务名称 | 节点IP | java服务IP | 连接服务 | 默认端口 | JDK版本 |
---|---|---|---|---|---|
drug | 192.168.1.218 | 172.18.0.9 | jstatd | 1099 | 11.0.11 |
jstatd–监控方法
进入容器–创建安全策略文件
[root@dev-2 ~]# docker exec -it drug /bin/bash
root@drug:/usr/local# echo 'grant {
permission java.security.AllPermission;
permission java.util.PropertyPermission "java.rmi.server.ignoreSubClasses", "write";
};' > /usr/local/jstatd.all.policy
启动jstatd服务
root@drug:/usr/local# jstatd -J-Djava.security.policy=jstatd.all.policy -p 1099
jstatd started (bound to //:1099/JStatRemoteHost)
添加监控主机
连接正常获取进程如下
双击进程信息查看监控信息
jstatd没有CPU信息,可以使用jmx方式连接获取CPU信息。
JMX–监控方法
进入容器–获取主进程ID
[root@dev-2 ~]# docker exec -it drug /bin/bash
root@drug:/usr/local# jps -l
310 jdk.jcmd/sun.tools.jps.Jps
7 /usr/local/app.jar
使用 jcmd
动态启用 JMX
root@drug:/usr/local# jcmd 7 ManagementAgent.start jmxremote.port=9999 jmxremote.authenticate=false jmxremote.ssl=false
7:
Command executed successfully
添加监控主机