写在前面: 使用jvisualvm远程监控tomcat(阿里云ECS),连接是报错:service:jmx:rmi:////jndi/rmi:IP:端口// 连接到 IP:端口,网上找了很多资料,未能解决,现已解决,记录下,供参考
本文为本地jvisualvm远程监控阿里云ecs服务器tomcat实践
准备工作:
1.服务器上安装好jdk,在linux命令环境执行java -version,显示如下图则表示安装成功
2.tomcat,并启动tomcat并能在本地正常访问,如下图:
3.修改tomcat catalina.sh文件以启动Jmx服务配置,操作命令如下:
cd /bin
vi catalina.sh
输入大写G,跳到文档最后一行
输入 /JAVA_OPTS= 后按Enter,在下图位置添加如下内容(位置要对,否则tomcat启动无法开启该端口):
JAVA_OPTS="$JAVA_OPTS -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=端口 -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false -Djava.net.preferIPv4Stack=true -Djava.rmi.server.hostname=服务器IP"
注意:上述添加内容要记得修改成自己的端口和服务器IP,且authenticate=false,所以不需要进行授权配置
然后,按Esc退出,按:wq保存
添加配置最终结果如下图:
最后,重启tomcat,启动成功后输入 netstat -nltp查看端口是否启动成功,另外jmx Server会同时启动其它两个随机接口,如下图:
阿里云安全组设置,登录阿里云,进入控制台->ECS服务器 ->网络与安全->安全组,在实例列表中点击更多,点击配置规则
点击快速创建规则,将上面的3个端口分别加入规则中,加入内容填写如下:
进入本地jdk安装目录bin目录(前提是本地要安装了JDK,如未安装请先安装),找到jvisualvm并打开
上图中点击确定即可添加成功,连接成功后会在主机下会有对应的连接显示,如下图
常见问题:
1.无法使用 service:jmx:rmi:////jndi/rmi:IP:端口// 连接到 IP:端口
解决办法:将随机端口添加到安全组(不需要像其它资料上说的要将防火墙firewall改成iptable)
2.在catalina.sh中添加配置后没有启动jmx端口
解决办法:配置内容不要放在catalina.sh文档的最后,一定要放在正确的位置,如上图
3.如tomcat无法访问,可以使用service firewalld status查看状态,如下是关闭状态:
关闭防火墙命令:
开启防火墙命令: