1.修改Tomcat下的bin/catalina.sh文件,在Execute The Requested Command上一行添加:
CATALINA_OPTS="$CATALINA_OPTS -Djava.rmi.server.hostname=111.123.3.70 -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=9999 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=true"
其中111.123.3.70为主机IP,9999为jmx的端口号(端口号值随便设置,必须先开启端口号能外部访问)
参考图:
2.切换到jdk下的management目录/下,复制jmxremote.password.template模板改名为jmxremote.password。
如图:
3.修改jmxremote.access最后一行增加一个账户并设置读写权限(如:可设置jmxzz readwrite)或者取消monitorRole,controlRole角色的注释.
如图:
4.修改jmxremote.password,最后一行增加一个用户和密码(如:可设置jmxzz jmxzz)
如图:
5.然后将jmxremote.access,jmxremote.password文件权限设置为600(如:chmod 600 jmxremote.access jmxremote.password)
6.重启tomcat
7.远程使用jconsole或者jvisualvm链接输入主机IP,端口,帐号,密码即可登录(如例子所示:主机IP111.123.3.70,端口9999,帐号jmxuser,密码jmxzz)
PS:
1.在catalina.sh中设置jmx远程配置最好使用CATALINA_OPTS,不要用JAVA_OPTS因为它任何命令时使用的Java运行时选项,当使用JAVA_OPTS时通过命令shutdown.sh停止时也会执行这个jmx配置启动jmx远程服务会导致报错提示9999已经被占用,那就需要在catalina.sh里面增加判断是开启才执行这命令相对麻烦。而CATALINA_OPTS只会在Java运行时选项在“开始”时使用,所以不影响shutdown.sh停止操作。
2.jmxremote.password中设置的远程访问帐号要与jmxremote.access里允许的帐号名相同,不然连接不成功.
3.设置端口号前要先开启端口号允许外部访问。
4.防火墙跟添加端口号相关命令:
查看防火墙状态:systemctl status firewalld
开启防火墙:systemctl start firewalld
关闭防火墙:systemctl stop firewalld
端口
添加
firewall-cmd --zone=public --add-port=9999/tcp --permanent (--permanent永久生效,没有此参数重启后失效)
重新载入
firewall-cmd --reload
查看
firewall-cmd --zone=public --query-port=9999/tcp(如果为yes说明成功了,如果为no,可以尝试执行重新载入再查看)
删除
firewall-cmd --zone=public --remove-port=9999/tcp --permanent