kinr 发表于 2014-11-13 08:58:13

zabbix 监控服务系列之--------使用JMX监控tomcat

我的环境是centOS6.5.64位、
首先,我的zabbix——server服务器端,之前已经安装了zabbix,所以环境省略。
接下来,开始安装需要用于监控tomcat的一些东西:
1、
rpm -ivh jdk-8u20-linux64-x.rpm or
tar xvf jdk-8u20-linux64-tar.gz
2、
vi /etc/profile
JAVA_HOME=/usr/java/jdk1.8.0_20
PATH=$PATH:$JAVA_HOME
CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export JAVA_HOME
export PATH
export CLASSPATH
source /etc/profile
java -version
3、重新编译zabbix,所以,先备份之前配置文件。(zabbix_server.conf)
cd /root/zabbix-2.0.6
./configure ./configure --enable-java -prefix=/usr/local/zabbix--enable-server --enable-agent --with-mysql --with-net-snmp --with-libcurl   --with-net-snmp --with-libcurl

4、找到zabbix_java
vi /usr/local/zabbix/zabbix_java/sbin/zabbix_java/settings.sh
LISTEN_IP="0.0.0.0"
LISTEN_PORT=10052
START_POLLERS=5

5、在zabbix_server添加以下文件
vi /usr/local/zabbix/etc/zabbix_server.conf
JavaGateway=127.0.0.1
JavaGatewayPort=10052
StartJavaPollers=5

6、启动
cd /usr/local/zabbix/zabbix_java/sbin/zabbix_java
./startup.sh

在tomcat端:
1、

cd /usr/apache-tomcat-7.0.53/bin
修改tomcat catalina.sh
添加如下内容:
CATALINA_OPTS="-Dcom.sun.management.jmxremote-Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.port=12345 -Dcom.sun.management.jmxremote.ssh=false -Djava.rmi.server.hostname=192.168.18.19"
-----备注(192.168.18.19是客户端ip地址,即tomcat本身ip)
-----这里的Port要和zabbix服务器定义的监听jmx端口保持一致
2、
cd /usr/apache-tomcat-7.0.53/conf
vim server.xml
<Listener className="org.apache.catalina.mbeans.JmxRemoteLifecycleListener"rmiRegistryPortPlatform="12345" rmiServerPortPlatform="12346"/>
-----这里的Port要和zabbix服务器定义的监听jmx端口保持一致

3、 暂时不确定是不是需要
修改tomcat服务器的hostname
192.168.18.19 localhost.localdomain localhost
4、
cd /usr/apache-tomcat-7.0.53/lib
cp catalina-jmx-remote.jar /usr/apache-tomcat-7.0.53/lib

5、
重启tomcat

6;
cd /usr/apache-tomcat-7.0.53/bin
./startup.sh
回到 zabbix服务器:

在zabbix服务器端用工具测试
下载cmdline-jmxclient-0.10.3.jar工具
java -jar cmdline-jmxclient-0.10.3.jar -192.168.1.189:12345 java.lang:type=Memory NonHeapMemoryUsage
11/12/2014 15:39:30 +0800 org.archive.jmx.Client NonHeapMemoryUsage:
committed: 552665088
init: 539426816
max: 587202560
used: 75002232

回到 zabbixserver 端,我发现zabbix自带的tomcat模板,不出图,网上找到模块,直接导入即可使用。
(附件包括 cmdline-jmxclient-0.10.3.jar    catalina-jmx-remote.jar tomcat模板 )



roy_shen 发表于 2014-12-4 21:55:51

好东西学习了

神枪无敌镇京城 发表于 2015-6-3 16:29:22

真牛逼,好用啊!

pepsilile 发表于 2015-7-3 18:31:10

不错不错,感谢楼主

haoqiu008 发表于 2015-9-7 15:35:48

为毛我执行测试就饱这个错
java -jar cmdline-jmxclient-0.10.3.jar - xxx.x.x.x.:10052 java.lang:type=Memory NonHeapMemoryUsage
Exception in thread "main" java.rmi.ConnectIOException: error during JRMP connection establishment; nested exception is:
      javax.net.ssl.SSLHandshakeException: Received fatal alert: handshake_failure
      at sun.rmi.transport.tcp.TCPChannel.createConnection(TCPChannel.java:286)
      at sun.rmi.transport.tcp.TCPChannel.newConnection(TCPChannel.java:184)
      at sun.rmi.server.UnicastRef.invoke(UnicastRef.java:110)
      at javax.management.remote.rmi.RMIServerImpl_Stub.newClient(Unknown Source)
      at javax.management.remote.rmi.RMIConnector.getConnection(RMIConnector.java:2312)
      at javax.management.remote.rmi.RMIConnector.connect(RMIConnector.java:277)
      at javax.management.remote.JMXConnectorFactory.connect(JMXConnectorFactory.java:248)
      at org.archive.jmx.Client.execute(Client.java:225)
      at org.archive.jmx.Client.main(Client.java:154)
Caused by: javax.net.ssl.SSLHandshakeException: Received fatal alert: handshake_failure
      at com.sun.net.ssl.internal.ssl.Alerts.getSSLException(Alerts.java:174)
      at com.sun.net.ssl.internal.ssl.Alerts.getSSLException(Alerts.java:136)
      at com.sun.net.ssl.internal.ssl.SSLSocketImpl.recvAlert(SSLSocketImpl.java:1657)
      at com.sun.net.ssl.internal.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:932)
      at com.sun.net.ssl.internal.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.java:1096)
      at com.sun.net.ssl.internal.ssl.SSLSocketImpl.writeRecord(SSLSocketImpl.java:623)
      at com.sun.net.ssl.internal.ssl.AppOutputStream.write(AppOutputStream.java:59)
      at java.io.BufferedOutputStream.flushBuffer(BufferedOutputStream.java:65)
      at java.io.BufferedOutputStream.flush(BufferedOutputStream.java:123)
      at java.io.DataOutputStream.flush(DataOutputStream.java:106)
      at sun.rmi.transport.tcp.TCPChannel.createConnection(TCPChannel.java:211)
      ... 8 more

皮皮豆豆 发表于 2015-10-22 13:06:06

haoqiu008 发表于 2015-9-7 15:35
为毛我执行测试就饱这个错
java -jar cmdline-jmxclient-0.10.3.jar - xxx.x.x.x.:10052 java.lang:type=M ...

我的也出现这样的情况了!
请问你有没有解决啊?

xlm4017 发表于 2015-11-27 16:39:55

CATALINA_OPTS="-Dcom.sun.management.jmxremote-Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.port=12345 -Dcom.sun.management.jmxremote.ssh=false -Djava.rmi.server.hostname=192.168.18.19"

这个应该不能加到最后,加到判断os后面即可

ybx13218464908 发表于 2015-11-29 18:34:29

皮皮豆豆 发表于 2015-10-22 13:06
我的也出现这样的情况了!
请问你有没有解决啊?

端口错了,应该用12345这个端口进行测试取值

panlans 发表于 2016-1-25 17:52:09

好东西,下载了

kjw 发表于 2016-4-21 17:10:17

Exception in thread "main" java.io.IOException: Failed to retrieve RMIServer stub: javax.naming.ServiceUnavailableException [Root exception is java.rmi.ConnectException: Connection refused to host: 192.168.44.147; nested exception is:
        java.net.ConnectException: Connection refused]
        at javax.management.remote.rmi.RMIConnector.connect(RMIConnector.java:369)
        at javax.management.remote.JMXConnectorFactory.connect(JMXConnectorFactory.java:268)
        at org.archive.jmx.Client.execute(Client.java:225)
        at org.archive.jmx.Client.main(Client.java:154)
Caused by: javax.naming.ServiceUnavailableException [Root exception is java.rmi.ConnectException: Connection refused to host: 192.168.44.147; nested exception is:
        java.net.ConnectException: Connection refused]
        at com.sun.jndi.rmi.registry.RegistryContext.lookup(RegistryContext.java:118)
        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:1929)
        at javax.management.remote.rmi.RMIConnector.findRMIServer(RMIConnector.java:1896)
        at javax.management.remote.rmi.RMIConnector.connect(RMIConnector.java:286)
        ... 3 more
Caused by: java.rmi.ConnectException: Connection refused to host: 192.168.44.147; nested exception is:
        java.net.ConnectException: Connection refused
        at sun.rmi.transport.tcp.TCPEndpoint.newSocket(TCPEndpoint.java:619)
        at sun.rmi.transport.tcp.TCPChannel.createConnection(TCPChannel.java:216)
        at sun.rmi.transport.tcp.TCPChannel.newConnection(TCPChannel.java:202)
        at sun.rmi.server.UnicastRef.newCall(UnicastRef.java:341)
        at sun.rmi.registry.RegistryImpl_Stub.lookup(Unknown Source)
        at com.sun.jndi.rmi.registry.RegistryContext.lookup(RegistryContext.java:114)
        ... 8 more
Caused by: java.net.ConnectException: Connection refused
        at java.net.PlainSocketImpl.socketConnect(Native Method)
        at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:339)
        at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:200)
        at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:182)
        at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)
        at java.net.Socket.connect(Socket.java:579)
        at java.net.Socket.connect(Socket.java:528)
        at java.net.Socket.<init>(Socket.java:425)
        at java.net.Socket.<init>(Socket.java:208)
        at sun.rmi.transport.proxy.RMIDirectSocketFactory.createSocket(RMIDirectSocketFactory.java:40)
        at sun.rmi.transport.proxy.RMIMasterSocketFactory.createSocket(RMIMasterSocketFactory.java:147)
        at sun.rmi.transport.tcp.TCPEndpoint.newSocket(TCPEndpoint.java:613)
        ... 13 more

kjw 发表于 2016-4-21 17:10:57

楼主若是看到,麻烦帮我看看呗,

你委屈一下吧 发表于 2016-5-19 11:16:09

haoqiu008 发表于 2015-9-7 15:35
**** 作者被禁止或删除 内容自动屏蔽 ****

# java -jar cmdline-jmxclient-0.10.3.jar -10.3.6.3:12345 java.lang:type=Memory NonHeapMemoryUsage
Exception in thread "main" java.io.IOException: Failed to retrieve RMIServer stub: javax.naming.ServiceUnavailableException [Root exception is java.rmi.ConnectException: Connection refused to host: 10.3.6.3; nested exception is:
        java.net.ConnectException: Connection refused]
        at javax.management.remote.rmi.RMIConnector.connect(RMIConnector.java:357)
        at javax.management.remote.JMXConnectorFactory.connect(JMXConnectorFactory.java:267)
        at org.archive.jmx.Client.execute(Client.java:225)
        at org.archive.jmx.Client.main(Client.java:154)
Caused by: javax.naming.ServiceUnavailableException [Root exception is java.rmi.ConnectException: Connection refused to host: 10.3.6.3; nested exception is:
        java.net.ConnectException: Connection refused]
        at com.sun.jndi.rmi.registry.RegistryContext.lookup(RegistryContext.java:118)
        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:1924)
        at javax.management.remote.rmi.RMIConnector.findRMIServer(RMIConnector.java:1891)
        at javax.management.remote.rmi.RMIConnector.connect(RMIConnector.java:274)
        ... 3 more
Caused by: java.rmi.ConnectException: Connection refused to host: 10.3.6.3; nested exception is:
        java.net.ConnectException: Connection refused
        at sun.rmi.transport.tcp.TCPEndpoint.newSocket(TCPEndpoint.java:619)
        at sun.rmi.transport.tcp.TCPChannel.createConnection(TCPChannel.java:216)
        at sun.rmi.transport.tcp.TCPChannel.newConnection(TCPChannel.java:202)
        at sun.rmi.server.UnicastRef.newCall(UnicastRef.java:340)
        at sun.rmi.registry.RegistryImpl_Stub.lookup(Unknown Source)
        at com.sun.jndi.rmi.registry.RegistryContext.lookup(RegistryContext.java:114)
        ... 8 more
Caused by: java.net.

wuchenlangzi 发表于 2016-6-12 18:15:00

谢谢楼主分享!!!!!

hhhjia 发表于 2016-7-21 22:45:26

各位又碰到这个模板导入到zabbix中是显示成功的但是使用的时候却死活找不到

hhhjia 发表于 2016-7-21 22:56:22

我有问题,求解决。导入模板的时候显示成功,但是在搜索使用的时候死活找不到

天下123 发表于 2016-7-22 09:26:56

好东西收藏了

feesx 发表于 2016-8-1 21:16:48

我用zabbix3.0 自带tomcat,log也没抱错,但是图像不显示,改成你这个,导入进去template又找不到

mmyyheart 发表于 2016-8-10 16:58:22

挺好

ybx13218464908 发表于 2016-8-11 09:58:42

还只是单端口的,用lld吧

37705109 发表于 2016-8-12 09:58:49

谢谢分享,模版导入成功,使用无异常~~~
页: [1] 2
查看完整版本: zabbix 监控服务系列之--------使用JMX监控tomcat