准备:
1 一个war包或者jar包,这里我用springboot的
2 linux环境,安装tomcat,jdk,我用的jdk11和tomcat9,jdk11和8的拷贝权限文件路径有点不一样,这个需要注意
3 不管是Jconsole还是VisualVM,项目或者tomcat的配置都是一样的!
参考文章: https://blog.csdn.net/u010004317/article/details/82948040
远程监控WAR包:
1 设置hostname -i 为私有IP,如果是虚拟机ip,需要设置为连接的IP
vim /etc/hosts 添加:
2 修改catalina.sh文件,设置启动参数,在tomcat /bin目录:
添加JMX启动参数:
CATALINA_OPTS="$CATALINA_OPTS -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.password.file=../conf/jmxremote.password
-Dcom.sun.management.jmxremote.access.file=../conf/jmxremote.access -Djava.rmi.server.hostname=公有IP"
3 server.xml添加监听端口,即连接的端口:
添加监听端口:
<Listener className="org.apache.catalina.mbeans.JmxRemoteLifecycleListener" rmiRegistryPortPlatform="6379" rmiServerPortPlatform="3306" />
4 拷贝jmxremote权限文件,并编辑
这里jdk11和jdk8目录不一样,jdk11在jdk-11.0.4/conf/management/ 下面,拷贝到tomcat刚才配置的路径即可
编辑jmxremote.password:
编辑jmxremote.access:
5 添加catalina-jmx-remote.jar:
下载地址:http://mvnrepository.com/artifact/org.apache.tomcat/tomcat-catalina-jmx-remote 我用的9.0.14,放到tomcat/lib下面,正常启动就可以了
6 测试连接,用配置的用户名或者默认的
注意: 如果连接不通,可以先看端口能否Telnet,然后 hostname -i Ip是否正常!
远程监控JAR包: (这个实际测试中一直连接失败,暂时没找到原因)
项目 pom加入JMX依赖,需要和tomcat版本对应:
tomcat-catalina-jmx-remote: springboot 2.0.6对应的是8.5.34
<!-- https://mvnrepository.com/artifact/org.apache.tomcat/tomcat-catalina-jmx-remote -->
<dependency>
<groupId>org.apache.tomcat</groupId>
<artifactId>tomcat-catalina-jmx-remote</artifactId>
<version>8.5.34</version>
</dependency>
权限文件处理和war包一样,jar项目启动直接在后面加上配置权限即可,权限是必须配置的,还有端口在这里直接配置:
java -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.password.file=~/jmxremote.password
-Dcom.sun.management.jmxremote.access.file=~/jmxremote.access -Djava.rmi.server.hostname=47.93.1.227 -Dcom.sun.management.jmxremote.port=8011 -jar springmvc-0.0.1-SNAPSHOT.jar