搭建模拟环境:
操作系统:centos7
内存:1G
jdk:1.8.0_131
tomcat:8.0.48
环境准备我们这里就不直接演示了,直接配置tomcat的jmx
1、进入到tomcat的bin目录下
# cd /opt/tomcat/apache-tomcat-8.0.48/bin/
2、编辑配置文件
# vim catalina.sh
3、在下图中上面添加参数
![图片[1]-通过Tomcat开启JMX监控的方法图解_Tomcat-渗透云记 - 专注于网络安全与技术分享](https://b.encenc.com/wp-content/uploads/2022/06/04241a4d0a93.png)
参数添加后的样子
3.1、此配置连接jmx不需要账号密码:
CATALINA_OPTS="$CATALINA_OPTS -Dcom.sun.management.jmxremote -Djava.rmi.server.hostname=192.168.100.117 -Dcom.sun.management.jmxremote.port=9999 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false"
配置后的截图:
![图片[2]-通过Tomcat开启JMX监控的方法图解_Tomcat-渗透云记 - 专注于网络安全与技术分享](https://b.encenc.com/wp-content/uploads/2022/06/286708b935e3.png)
参数说明:
hostname:是监控tomcat所在服务器的ip地址
jmxremote.port:端口号,是要开启的监控端口号
jmxremote.ssl:是否要开启ssl连接
authenticate:false表示监控不需要用户和密码
3.2、需要配置用户名、密码:
CATALINA_OPTS="$CATALINA_OPTS -Dcom.sun.management.jmxremote -Djava.rmi.server.hostname=192.168.100.117 -Dcom.sun.management.jmxremote.port=9999 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=true -Dcom.sun.management.jmxremote.password.file=../conf/jmxremote.password -Dcom.sun.management.jmxremote.access.file=../conf/jmxremote.access"
配置后的截图:
![图片[3]-通过Tomcat开启JMX监控的方法图解_Tomcat-渗透云记 - 专注于网络安全与技术分享](https://b.encenc.com/wp-content/uploads/2022/06/aafcb51cb054.png)
参数说明:
authenticate:为true开启账号验证
access.file:权限文件路径
password.file:密码文件路径
3.3、当没有配置密码验证的时候,不需要此步操作,当启用用户、密码验证后需要操作此步骤
3.3.1、找到jdk安装目录
如果不知道安装到目录那个地方可以通过命令查找:
# java -verbose
![图片[4]-通过Tomcat开启JMX监控的方法图解_Tomcat-渗透云记 - 专注于网络安全与技术分享](https://b.encenc.com/wp-content/uploads/2022/06/ba71dbcd51fa.jpg)
3.3.2、切换到jdk目录中
![图片[5]-通过Tomcat开启JMX监控的方法图解_Tomcat-渗透云记 - 专注于网络安全与技术分享](https://b.encenc.com/wp-content/uploads/2022/06/6a5427d61e2f.png)
进入# cd jre/lib/management/
在文件目录下会有jmxremote.access jmxremote.password.template文件,拷贝到tomcat的conf目录下
# cp jmxremote.* /opt/tomcat/apache-tomcat-8.0.48/conf/
3.3.3、修改jmxremote.access文件
![图片[6]-通过Tomcat开启JMX监控的方法图解_Tomcat-渗透云记 - 专注于网络安全与技术分享](https://b.encenc.com/wp-content/uploads/2022/06/090eca652fd7.png)
3.3.4、重命名密码文件:
# mv jmxremote.password.template jmxremote.password
3.3.5、编辑密码文件
# vim jmxremote.password
![图片[7]-通过Tomcat开启JMX监控的方法图解_Tomcat-渗透云记 - 专注于网络安全与技术分享](https://b.encenc.com/wp-content/uploads/2022/06/51e0cbdf9384.png)
3.3.6、编辑完文件后,要修改access文件和password文件权限,不然tomcat启动不起来
# chmod 600 jmxremote.*
4、启动tomcat
[root@ha bin]# ./startup.sh Using CATALINA_BASE: /opt/tomcat/apache-tomcat-8.0.48 Using CATALINA_HOME: /opt/tomcat/apache-tomcat-8.0.48 Using CATALINA_TMPDIR: /opt/tomcat/apache-tomcat-8.0.48/temp Using JRE_HOME: /usr Using CLASSPATH: /opt/tomcat/apache-tomcat-8.0.48/bin/bootstrap.jar:/opt/tomcat/apache-tomcat-8.0.48/bin/tomcat-juli.jar Tomcat started.
![图片[8]-通过Tomcat开启JMX监控的方法图解_Tomcat-渗透云记 - 专注于网络安全与技术分享](https://b.encenc.com/wp-content/uploads/2022/06/dc03714aa4f1.png)
4.1、做完上面操作,使用jdk自带的jvisualvm.exe连接,可以在windows下测试
![图片[9]-通过Tomcat开启JMX监控的方法图解_Tomcat-渗透云记 - 专注于网络安全与技术分享](https://b.encenc.com/wp-content/uploads/2022/06/bd84534e75ec.png)
![图片[10]-通过Tomcat开启JMX监控的方法图解_Tomcat-渗透云记 - 专注于网络安全与技术分享](https://b.encenc.com/wp-content/uploads/2022/06/7b27e3f09082.png)
![图片[11]-通过Tomcat开启JMX监控的方法图解_Tomcat-渗透云记 - 专注于网络安全与技术分享](https://b.encenc.com/wp-content/uploads/2022/06/f13f050130be.png)
![图片[12]-通过Tomcat开启JMX监控的方法图解_Tomcat-渗透云记 - 专注于网络安全与技术分享](https://b.encenc.com/wp-content/uploads/2022/06/f8880c3a0fe4.png)
![图片[13]-通过Tomcat开启JMX监控的方法图解_Tomcat-渗透云记 - 专注于网络安全与技术分享](https://b.encenc.com/wp-content/uploads/2022/06/dd67f9289dd1.png)
双击打开jmx连接
![图片[14]-通过Tomcat开启JMX监控的方法图解_Tomcat-渗透云记 - 专注于网络安全与技术分享](https://b.encenc.com/wp-content/uploads/2022/06/7afc790e6c59.png)
![图片[15]-通过Tomcat开启JMX监控的方法图解_Tomcat-渗透云记 - 专注于网络安全与技术分享](https://b.encenc.com/wp-content/uploads/2022/06/ad1d27805fa3.png)
4.2、重启tomcat,测试jmx是否还可以连接上
# ./shutdown.sh
4.2.1、再次连接jmx查看是否可以连接上
数据监控图都查看不了,连接不上
![图片[16]-通过Tomcat开启JMX监控的方法图解_Tomcat-渗透云记 - 专注于网络安全与技术分享](https://b.encenc.com/wp-content/uploads/2022/06/439c7c8e832c.png)
![图片[17]-通过Tomcat开启JMX监控的方法图解_Tomcat-渗透云记 - 专注于网络安全与技术分享](https://b.encenc.com/wp-content/uploads/2022/06/c8ca6addf4f2.png)
为什会出现这个问题?
网上给出的结论是:
tomcat的jmx远程健康是需要两个端口,一个是注册端口,一个是服务端口,之前配置指定的9999端口是注册端口,tomcat在启动的时候会随机指定一个服务端口,由于我们注册端口只有一个,所以在重启服务后,注册端口没有变化,服务端口已经变了,再次通过注册端口连接已经连接不上之前的服务端口了,没有办法指定服务端连接,服务端口是随机的。
有一种方法是设置jmx固定的注册端口和服务端口,通过jar包实现
5、登录tomcat官网(注意,我的tomcat版本是1.8.0的官网上只有1.8.5的也可以使用)
根据自己的tomcat版本找到JMX Remote jar
![图片[18]-通过Tomcat开启JMX监控的方法图解_Tomcat-渗透云记 - 专注于网络安全与技术分享](https://b.encenc.com/wp-content/uploads/2022/06/5ed1a0225e4c.png)
6、把下载下来的上传到tomcta的lib目录下
获取jar包的连接也可以直接wget到lib目录下
# wget http://mirror.bit.edu.cn/apache/tomcat/tomcat-8/v8.5.50/bin/extras/catalina-jmx-remote.jar
![图片[19]-通过Tomcat开启JMX监控的方法图解_Tomcat-渗透云记 - 专注于网络安全与技术分享](https://b.encenc.com/wp-content/uploads/2022/06/1843a5f6e6fa.png)
7、编辑tomcat的conf目录下的server.xml文件
# vim server.xml
添加下面内容:
<Listener className="org.apache.catalina.mbeans.JmxRemoteLifecycleListener" rmiRegistryPortPlatform="10001" rmiServerPortPlatform="10002" />
![图片[20]-通过Tomcat开启JMX监控的方法图解_Tomcat-渗透云记 - 专注于网络安全与技术分享](https://b.encenc.com/wp-content/uploads/2022/06/0fc26f5574f7.png)
8、编辑tomcat的bin目录下catalina.sh
# vim catalina.sh
删除参数:
-Dcom.sun.management.jmxremote.port=9999
![图片[21]-通过Tomcat开启JMX监控的方法图解_Tomcat-渗透云记 - 专注于网络安全与技术分享](通过Tomcat开启JMX监控的方法图解_Tomcat /2019123016203322.png)
9、重启tomcat测试,jmx注册端口为10001,服务端口为10002
![图片[22]-通过Tomcat开启JMX监控的方法图解_Tomcat-渗透云记 - 专注于网络安全与技术分享](通过Tomcat开启JMX监控的方法图解_Tomcat /2019123016203323.png)
![图片[23]-通过Tomcat开启JMX监控的方法图解_Tomcat-渗透云记 - 专注于网络安全与技术分享](通过Tomcat开启JMX监控的方法图解_Tomcat /2019123016203324.png)
![图片[24]-通过Tomcat开启JMX监控的方法图解_Tomcat-渗透云记 - 专注于网络安全与技术分享](通过Tomcat开启JMX监控的方法图解_Tomcat /2019123016203325.png)
![图片[25]-通过Tomcat开启JMX监控的方法图解_Tomcat-渗透云记 - 专注于网络安全与技术分享](通过Tomcat开启JMX监控的方法图解_Tomcat /2019123016203326.png)
![图片[26]-通过Tomcat开启JMX监控的方法图解_Tomcat-渗透云记 - 专注于网络安全与技术分享](通过Tomcat开启JMX监控的方法图解_Tomcat /2019123016203327.png)
10、重启tomcat再次连接测试
当我们双击之前创建的jmx远程连接的时候会发现也连接不上,这是为什么呢,这里我们要注意上面连接中的pid号,经过查询,我们发现这个pid号就是linux中tomcat的pid号,当我们重启tomcat后,会产生新的pid号,所以我们想要连接就要新建一个连接
![图片[27]-通过Tomcat开启JMX监控的方法图解_Tomcat-渗透云记 - 专注于网络安全与技术分享](通过Tomcat开启JMX监控的方法图解_Tomcat /2019123016203428.png)
![图片[28]-通过Tomcat开启JMX监控的方法图解_Tomcat-渗透云记 - 专注于网络安全与技术分享](通过Tomcat开启JMX监控的方法图解_Tomcat /2019123016203429.png)
11、我们再次新建jmx连接的时候会获取新的pid号
![图片[29]-通过Tomcat开启JMX监控的方法图解_Tomcat-渗透云记 - 专注于网络安全与技术分享](通过Tomcat开启JMX监控的方法图解_Tomcat /2019123016203430.png)
![图片[30]-通过Tomcat开启JMX监控的方法图解_Tomcat-渗透云记 - 专注于网络安全与技术分享](通过Tomcat开启JMX监控的方法图解_Tomcat /2019123016203431.png)
12、到这里我们就测试成功了,这样在我们使用zabbix使用jmx监控tomcat的时候就不用担心tomcat重启jmx端口连接不上了
总结
以上所述是小编给大家介绍的通过Tomcat开启JMX监控的方法图解,希望对大家有所帮助!














请登录后查看评论内容