tomcat 监控 — JMX方式(2)
2018-07-11 本文已影响3人
白痴糊涂人
上篇文章(tomcat 监控 — JMX方式(1))最后说到:打开防火墙以后,tomcat就不能被远程监控了,哪怕是放开了指定的端口。这篇文章主要就来解决这个问题。
tomcat官方 也说到这个问题 http://tomcat.apache.org/tomcat-7.0-doc/config/listeners.html#JMX_Remote_Lifecycle_Listener_-_org.apache.catalina.mbeans.JmxRemoteLifecycleListener,有兴趣可以看一下。
其实tomcat的jmx远程监控需要两个端口,一个是注册端口,一个服务端口。之前配置指定了9999 端口是注册端口,在tomcat启动的时候会随机指定一个服务端口,由于我们开放防火墙端口的时候,只开放了9999 端口,所以是连接不上的,而且服务端口是随机生成的,我们也无法提前开放服务器端口。
根据上面的解释,那么我们要想在打开防火墙的状态下,顺利连接上tomcat的监控,有两种方法:
- 设置防火墙,向一个网段或者某个ip开放所有端口;
- 指定tomcat jmx的 注册端口和服务端口,然后设置防火墙放开这两个端口。
第一种方法,不是重点,有兴趣可以上Google百度一下。
重点来讲一下第二种方法,下面说的方法依赖上篇文章,我强烈推荐先看一下之前的文章。
-
上tomcat的官网,下载catalina-jmx-remote.jar 放到tomcat的lib目录下。
下载catalina-jmx-remote.jar -
在tomcat的conf目录下的server.xml文件中加上
<Listener className="org.apache.catalina.mbeans.JmxRemoteLifecycleListener"
rmiRegistryPortPlatform="10001" rmiServerPortPlatform="10002" />
server.xml
- 去掉 setenv.sh(linux) 或 setenv.bat(window) 或 tomcat7w.exe 中的
-Dcom.sun.management.jmxremote.port=9999
- 在防火墙中开发上面指定的端口(10001和10002)