1.在zabix服务端安装java工具(服务器已安装zabbix)
[root@db02 ~]# rpm -ivh
http://repo.zabbix.com/zabbix/2.4/rhel/6/x86_64/zabbix-java-gateway-2.4.7-1.el6.x86_64.rpm
[root@db02 ~]# vim /etc/zabbix/zabbix_server.conf
JavaGateway=127.0.0.1
JavaGatewayPort=10055
StartJavaPollers=5
[root@db02 ~]# vim /etc/zabbix/zabbix_java_gateway.conf
LISTEN_IP="0.0.0.0"
LISTEN_PORT=10055
START_POLLERS=5
[root@db02 ~]# /etc/init.d/zabbix-server restart
Shutting down Zabbix server: [ OK ]
Starting Zabbix server: [ OK ]
[root@db02 ~]# /etc/init.d/zabbix-java-gateway restart
Shutting down zabbix java gateway: [ OK ]
Starting zabbix java gateway: [ OK ]
[root@db02 ~]# netstat -antulp | grep 10055
tcp 0 0 :::10055 :::* LISTEN 15958/java
[root@db02 ~]#
2.在tomcat端添加一个端口,供zabbix获取数据
jmxcmd下载地址:
https://sourceforge.net/projects/jmxcmd/files/latest/download?source=typ_redirect
[root@web02 ~]# vim /usr/local/tomcat-7.0.67/bin/catalina.sh --添加以下行,获取tomcat服务器的IP地址
CATALINA_OPTS="-Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false -Djava.rmi.server.hostname=本机IP地址"
[root@web02 ~]# vim /usr/local/tomcat-7.0.67Html/conf/server.xml --暴露一个端口给zabbix获取数据
<Listener className="org.apache.catalina.mbeans.JmxRemoteLifecycleListener" rmiRegistryPortPlatform="9999" rmiServerPortPlatform="9999"/>
[root@web02 ~]# /usr/local/tomcat-7.0.67/bin/shutdown.sh --关闭tomcat服务
[root@web02 ~]# /usr/local/tomcat-7.0.67/bin/startup.sh --启动tomcat服务
[root@web02 ~]# netstat -antulp | grep 9999
tcp 0 0 :::9999 :::* LISTEN 12469/java
[root@web02 ~]# java -jar jmxcmd.jar - localhost:9999 java.lang:type=Memory NonHeapMemoryUsage
04/26/2016 16:21:38 +0800 de.layereight.jmxcmd.Client NonHeapMemoryUsage:
committed: 136183808
init: 134676480
max: 318767104
used: 36691992
[root@web02 ~]#
3.在zabbix中添加分类,项目,键
(1).启用jmx模块
(2).创建分类
错误处理:
[root@web02 ~]# java -jar jmxcmd.jar - 180.178.55.82:9999 java.lang:type=Memory NonHeapMemoryUsage
Exception in thread "main" java.io.IOException: Failed to retrieve RMIServer stub: javax.naming.NameNotFoundException: jmxrmi
at javax.management.remote.rmi.RMIConnector.connect(RMIConnector.java:369)
at javax.management.remote.JMXConnectorFactory.connect(JMXConnectorFactory.java:268)
at de.layereight.jmxcmd.Client.execute(Client.java:126)
at de.layereight.jmxcmd.Client.main(Client.java:65)
Caused by: javax.naming.NameNotFoundException: jmxrmi
at com.sun.jndi.rmi.registry.RegistryContext.lookup(RegistryContext.java:116)
at com.sun.jndi.toolkit.url.GenericURLContext.lookup(GenericURLContext.java:203)
at javax.naming.InitialContext.lookup(InitialContext.java:411)
at javax.management.remote.rmi.RMIConnector.findRMIServerJNDI(RMIConnector.java:1936)
at javax.management.remote.rmi.RMIConnector.findRMIServer(RMIConnector.java:1903)
at javax.management.remote.rmi.RMIConnector.connect(RMIConnector.java:286)
解决方法:
是tomcat_java的端口被占用了