【已解决】,zabbix监控tomcat

回复 收藏
本帖最后由 清茶一杯 于 2016-9-1 11:42 编辑

[root@zabbix-16 ~]# java -jar /root/cmdline-jmxclient-0.10.3.jar - 192.168.16.251:18090 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: 192.168.16.251; 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:270)
    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.16.251; nested exception is:
    java.net.ConnectException: Connection refused]
    at com.sun.jndi.rmi.registry.RegistryContext.lookup(RegistryContext.java:122)
    at com.sun.jndi.toolkit.url.GenericURLContext.lookup(GenericURLContext.java:205)
    at javax.naming.InitialContext.lookup(InitialContext.java:417)
    at javax.management.remote.rmi.RMIConnector.findRMIServerJNDI(RMIConnector.java:1955)
    at javax.management.remote.rmi.RMIConnector.findRMIServer(RMIConnector.java:1922)
    at javax.management.remote.rmi.RMIConnector.connect(RMIConnector.java:287)
    ... 3 more
Caused by: java.rmi.ConnectException: Connection refused to host: 192.168.16.251; 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:342)
    at sun.rmi.registry.RegistryImpl_Stub.lookup(Unknown Source)
    at com.sun.jndi.rmi.registry.RegistryContext.lookup(RegistryContext.java:118)
    ... 8 more
Caused by: java.net.ConnectException: Connection refused
    at java.net.PlainSocketImpl.socketConnect(Native Method)
    at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:350)
    at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206)
    at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188)
    at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)
    at java.net.Socket.connect(Socket.java:589)
    at java.net.Socket.connect(Socket.java:538)
    at java.net.Socket.(Socket.java:434)
    at java.net.Socket.(Socket.java:211)
    at sun.rmi.transport.proxy.RMIDirectSocketFactory.createSocket(RMIDirectSocketFactory.java:40)
    at sun.rmi.transport.proxy.RMIMasterSocketFactory.createSocket(RMIMasterSocketFactory.java:148)
    at sun.rmi.transport.tcp.TCPEndpoint.newSocket(TCPEndpoint.java:613)
    ... 13 more

server端配置:
1.修改zabbix_java相关选项

[root@zabbix-16 zabbix]# cd  /usr/local/sbin/zabbix_java

[root@zabbix-16 zabbix_java]# vim settings.sh

[root@zabbix-16 zabbix_java]# sed -e '/^#/d;/^$/d' settings.sh   #该文件默认全部注释,启用下面几项即可

LISTEN_IP="0.0.0.0"

LISTEN_PORT=10052

PID_FILE="/tmp/zabbix_java.pid"

START_POLLERS=5


2.修改zabbix_server文件

[root@zabbix-16 zabbix_java]# sed -e '/^#/d;/^$/d' /usr/local/etc/zabbix_server.conf

LogFile=/tmp/zabbix_server.log

DBName=zabbix

DBUser=zabbix

DBPassword=zabbix

[root@zabbix-16 zabbix_java]# vim  /usr/local/etc/zabbix_server.conf

[root@zabbix-16 zabbix_java]# sed -e '/^#/d;/^$/d' /usr/local/etc/zabbix_server.conf

LogFile=/tmp/zabbix_server.log

DBName=zabbix

DBUser=zabbix

DBPassword=zabbix

JavaGateway=127.0.0.1

JavaGatewayPort=10052

StartJavaPollers=5


3.执行startup.sh

[
zabbix_java]# sh startup.sh


[root@zabbix-16 ~]# netstat -tnlup | grep 10052

tcp        0      0 :::10052                    :::*                        LISTEN      29326/java



tomcat端配置:(公司环境是yum安装的tomcat,不好更改)
4.tomcat端,安装catalina-jmx-remote.jar


[root@zabbix-test-16 ~]# mv catalina-jmx-remote.jar /usr/share/java/tomcat6



5.修改catalina.sh文件 (默认没找到这个文件,手工创建的)

[root@zabbix-test-16 tomcat6]# vim /usr/share/tomcat6/bin/catalina.sh

[root@zabbix-test-16 tomcat6]# cat  /usr/share/tomcat6/bin/catalina.sh

CATALINA_OPTS="-Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false -Djava.rmi.server.hostname=客户端IP"      


6.修改server.xml

[root@zabbix-test-16 tomcat6]# vim /etc/tomcat6/server.xml




7.重启服务

[root@zabbix-test-16 tomcat6]# /etc/init.d/tomcat6 restart

[root@zabbix-test-16 tomcat6]# /etc/init.d/zabbix-agent restart


8.服务端测试(jar包在网上下载)

[root@zabbix-16 ~]# java -jar /root/cmdline-jmxclient-0.10.3.jar - 192.168.16.251:18090 java.lang:type=Memory NonHeapMemoryUsage






2016-08-31 16:48 举报
已邀请:
0

hlymlv

赞同来自:

我今天也碰到了 端口得另起一个 不能是tomcat服务的端口
0

清茶一杯

赞同来自:

hlymlv 发表于 2016-8-31 19:01
我今天也碰到了 端口得另起一个 不能是tomcat服务的端口

问题是在于JMX的端口起不来,换了12345或18090还是不行
0

清茶一杯

赞同来自:

在server.xml中添加JMX端口,发现导致8080服务起不来
[cn.sjcloud.pingan.portal.catalog.service.impl.DataSyncService]添加一个监听者 cn.sjcloud.pingan.portal.catalog.service.impl.CmdbSyncObserver@40c65ddc
[cn.sjcloud.pingan.admin.system.handle.EventManager]注册监听开始
[cn.sjcloud.pingan.admin.system.handle.EventManager]cn.sjcloud.pingan.admin.system.event.CloudVMEvent第一次注册监听
[cn.sjcloud.pingan.admin.system.handle.EventManager]注册监听结束
[cn.sjcloud.pingan.admin.system.handle.EventManager]注册监听开始
[cn.sjcloud.pingan.admin.system.handle.EventManager]cn.sjcloud.pingan.admin.system.event.CloudDiskEvent第一次注册监听
[cn.sjcloud.pingan.admin.system.handle.EventManager]注册监听结束
[cn.sjcloud.pingan.admin.system.handle.EventManager]注册监听开始
[cn.sjcloud.pingan.admin.system.handle.EventManager]cn.sjcloud.pingan.admin.system.event.CloudRestoreEvent第一次注册监听
[cn.sjcloud.pingan.admin.system.handle.EventManager]注册监听结束
[cn.sjcloud.pingan.admin.system.handle.EventManager]注册监听开始
[cn.sjcloud.pingan.admin.system.handle.EventManager]cn.sjcloud.pingan.admin.system.event.CloudRestoreEmailEvent第一次注册监听
[cn.sjcloud.pingan.admin.system.handle.EventManager]注册监听结束
[cn.sjcloud.pingan.admin.system.handle.EventManager]注册监听开始
[cn.sjcloud.pingan.admin.system.handle.EventManager]cn.sjcloud.pingan.admin.system.event.CloudBackupEvent第一次注册监听
[cn.sjcloud.pingan.admin.system.handle.EventManager]注册监听结束
0

hlymlv

赞同来自:

http://lovelace.blog.51cto.com/1028430/1424964/看这个,加一个监听端口的,不需要在server.xml里配置
0

hlymlv

赞同来自:

http://lovelace.blog.51cto.com/1028430/1424964/看这个,加一个监听端口的,不需要在server.xml里配置
0

hlymlv

赞同来自:

http://lovelace.blog.51cto.com/1028430/1424964/看这个,加一个监听端口的,不需要在server.xml里配置
0

hlymlv

赞同来自:

本帖最后由 hlymlv 于 2016-8-31 23:55 编辑

这个 不错,可以看下
0

清茶一杯

赞同来自:

hlymlv 发表于 2016-8-31 23:53
http://lovelace.blog.51cto.com/1028430/1424964/看这个,加一个监听端口的,不需要在server.xml里配置

我很疑惑,这篇博文没在catalina.sh或者server.xml中定义端口,tomcat怎么知道 哪个作为监控JMX的端口了。而且后面 测试用了9999端口,
0

清茶一杯

赞同来自:

hlymlv 发表于 2016-8-31 23:53
这个 不错,可以看下

问题解决:还是catalina.sh 问题

此为正确的写法
CATALINA_OPTS="$CATALINA_OPTS
-Dcom.sun.management.jmxremote
-Djava.rmi.server.hostname=192.168.16.253
-Dcom.sun.management.jmxremote.port=12345
-Dcom.sun.management.jmxremote.ssl=false
-Dcom.sun.management.jmxremote.authenticate=false"

[root@zabbix-16 bin]# netstat -tnlup
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address               Foreign Address             State       PID/Program name   
tcp        0      0 0.0.0.0:10050               0.0.0.0:*                   LISTEN      5878/zabbix_agentd  
tcp        0      0 0.0.0.0:3306                0.0.0.0:*                   LISTEN      1783/mysqld         
tcp        0      0 0.0.0.0:22                  0.0.0.0:*                   LISTEN      1411/sshd           
tcp        0      0 :::10050                    :::*                        LISTEN      5878/zabbix_agentd  
tcp        0      0 :::41671                    :::*                        LISTEN      11156/java         
tcp        0      0 :::8009                     :::*                        LISTEN      11156/java         
tcp        0      0 :::8080                     :::*                        LISTEN      11156/java         
tcp        0      0 ::ffff:127.0.0.1:8082       :::*                        LISTEN      4286/java           
tcp        0      0 ::ffff:127.0.0.1:8083       :::*                        LISTEN      4285/java           
tcp        0      0 ::ffff:127.0.0.1:8084       :::*                        LISTEN      4284/java           
tcp        0      0 :::49430                    :::*                        LISTEN      11156/java         
tcp        0      0 :::22                       :::*                        LISTEN      1411/sshd           
tcp        0      0 :::12345                    :::*                        LISTEN      11156/java  
        
[root@zabbix-16 bin]#  java -jar /root/cmdline-jmxclient-0.10.3.jar  - 192.168.16.253:12345 java.lang:type=Memory NonHeapMemoryUsage
09/01/2016 09:37:12 +0800 org.archive.jmx.Client NonHeapMemoryUsage:
committed: 40632320
init: 2555904
max: -1
used: 38613456


0

清茶一杯

赞同来自:

blob.png

WEB界面还是无法监控

0

清茶一杯

赞同来自:

sh startup.sh  &   #放入后台启动    解决

因为没放入后台启动,关闭终端后 10052就不侦听了
0

hlymlv

赞同来自:

清茶一杯 发表于 2016-9-1 09:39
问题解决:还是catalina.sh 问题

此为正确的写法

嗯 其实主要是看那个脚本里写的

回复帖子,请先登录注册

退出全屏模式 全屏模式 回复
评分
可选评分理由: