JConsole远程连接tomcat[终极版]

2020-08-05 223

场景描述:本地windows系统远程连接Linux系统tomcat程序,实时监控

先吐槽一下,初次接触JConsole这种Java的内存分析工具,百度网上是什么样的都有,但是没有完整详细点说明具体操作的,也可能是小编悟性不够,研究一上午搞出来,写篇入门级的教程,方便小白少走弯路。

第一种情况[不需要密码和口令]

1.在tomcat的启动文件tomcat/bin/catalina.sh中添加如下代码段,注意添加位置不要是catalina.sh的开头!!!!亲测添加到开头没作用!!!
图1:不要添加到开头这里!!!
图2:找中间位置添加!!!
if [ "$1" = "start" ];then echo "set console"; JAVA_OPTS="$JAVA_OPTS -Djava.rmi.server.hostname=192.168.0.0" #改成tomcat所在机器的IP JAVA_OPTS="$JAVA_OPTS -Dcom.sun.management.jmxremote" JAVA_OPTS="$JAVA_OPTS -Dcom.sun.management.jmxremote.port=12345" JAVA_OPTS="$JAVA_OPTS -Dcom.sun.management.jmxremote.rmi.port=12345" JAVA_OPTS="$JAVA_OPTS -Dcom.sun.management.jmxremote.authenticate=false" JAVA_OPTS="$JAVA_OPTS -Dcom.sun.management.jmxremote.ssl=false" JAVA_OPTS="$JAVA_OPTS -Dcom.sun.management.jmxremote.local.only=false" else echo "no startup"; fi;
解释说明:
  • -Djava.rmi.server.hostname=192.168.0.0                                     这里的IP改为tomcat所在服务器的IP
  • -Dcom.sun.management.jmxremote.port=12345                        这里的端口号可以自定义
  • -Dcom.sun.management.jmxremote.rmi.port=12345                 同理端口号自定义和上面的保持一样
  • -Dcom.sun.management.jmxremote.authenticate=false            这里值为false,意思是不需要身份认证,下面会有加身份认证的情况
  • -Dcom.sun.management.jmxremote.ssl=false                             这里值为false,是否为https,false意味否,即使用http
  • -Dcom.sun.management.jmxremote.local.only=false                 这里值为false,是否只能本机连接,false其他机器也能连接,有了这个就不需要网上大多数说的修改 /etc/hosts 文件了!
注意:不需要修改/etc/hosts 文件!不需要修改/etc/hosts 文件!不需要修改/etc/hosts 文件!
2.防火墙开放你自定以的端口号
  • firewall-cmd --zone=public --add-port=这里是需要开启的端口号/tcp --permanent                     添加成功后会出现success  
  • firewall-cmd --reload                                                                                                                        刷新防火墙同样出现success
3.完成配置之后在本地使用JConsole.exe连接,工具位置在jdk1.8.0_231\bin下
图3:添加连接
图4:添加连接
图5:连接成功!

第二种情况[需要密码和口令]

  • 修改配置文件
1.cd 到 jdk1.8.0_201/jre/lib/management 下面
2.将jmxremote.password.template 复制出来一份,命令:cp jmxremote.password.template jmxremote.password
3.更改权限,执行命令:chmod 600 jmxremote.access jmxremote.password
4.编辑刚复制出来的jmxremote.password 命令:vim jmxremote.password
图6:修改口令
注意:这里的用户名不能随意更改!!!需要更改的话请把jdk1.8.0_201/jre/lib/management目录下面的jmxremote.access 一同修改!
按照原有的格式修改!
图6:access文件
  • 新的代码块
if [ "$1" = "start" ];then echo "set console"; JAVA_OPTS="$JAVA_OPTS -Djava.rmi.server.hostname=192.168.0.0" #改成tomcat所在机器的IP JAVA_OPTS="$JAVA_OPTS -Dcom.sun.management.jmxremote" JAVA_OPTS="$JAVA_OPTS -Dcom.sun.management.jmxremote.port=12345" JAVA_OPTS="$JAVA_OPTS -Dcom.sun.management.jmxremote.rmi.port=12345" JAVA_OPTS="$JAVA_OPTS -Dcom.sun.management.jmxremote.authenticate=true" #此处由false改为true JAVA_OPTS="$JAVA_OPTS -Dcom.sun.management.jmxremote.ssl=false" JAVA_OPTS="$JAVA_OPTS -Dcom.sun.management.jmxremote.local.only=false" JAVA_OPTS="$JAVA_OPTS -Dcom.sun.management.jmxremote.pwd.file=/root/jdk1.8.0_201/jre/lib/management/jmxremote.password" #此处为新加,路径指向你的jmxremote.password文件位置 else echo "no startup"; fi;
  • 修改完毕,连接
图7:使用用户名和口令连接即可
1 0