第一种.直接在catalina.sh中增加jmx的配置,因为数据传输端口是jmx随即开启的其他两个端口来进行数据的传输,所以防火墙只开启配置的端口无法获取数据。这种方式需要关闭防火墙。
CATALINA_OPTS="$CATALINA_OPTS -Dcom.sun.management.jmxremote -Djava.rmi.server.hostname=192.168.1.100 -Dcom.sun.management.jmxremote.port=2345 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.man
agement.jmxremote.authenticate=false"
第二种.除了在catalina.sh中配置jmx以外,还要做如下操作
在server.xml增加 listener配置
<Listener className="org.apache.catalina.mbeans.JmxRemoteLifecycleListener" rmiRegistryPortPlatform="10001" rmiServerPortPlatform="10002" />
上传catalina-jmx-remote.jar到tomcat/lib
上传jmxremote.access到tomcat/conf下,上传jmxremote.password到tomcat依赖的jdk/jre/lib/management下,两个文件信息如下
jmxremote.access
admin readwrite
jmxremote.password
monitorRole QED
controlRole R&D
修改javagateway com.zabbix.gateway.JMXItemChecker的一行代码
//url = new JMXServiceURL("service:jmx:rmi:///jndi/rmi://" + conn + ":" + port + "/jmxrmi");
url = new JMXServiceURL("service:jmx:rmi://"+conn+":"+10002+"/jndi/rmi://"+conn+":"+10001+"/jmxrmi");
防火墙开启10001 和 10002端口,catalina.sh配置的jmx端口不用开启