Zabbix 监控 tomcat 连接池(报错org.archive.jmx.Client ...is not a regi...
Zabbix 监控 tomcat 连接池(报错org.archive.jmx.Client ...is not a registered bean)Zabbix 监控 tomcat 连接池一、 前言领导提出需求,需要监控tomcat的连接池,之前已经通过zabbix监控了jvm(关于jvm监控这部分,后续补上)。在网上找了很多教程,经历了很多坑,不过还是要感谢那些帮助过我的人,踩着坑搞出来,也是记忆犹新呀。
二、 基础环境操作系统:Centos 6.8
Jdk:1.8.0_77(jdk最好是1.7及以上)
Tomcat:7.0.69
Zabbix:3.0.3
三、 环境部署(一) Zabbix Server端:1. 要求:开启javaGateway支持java监控(编译时添加--enable-java这个参数)2. 现状:由于我们的Server是编译安装的,已经在使用了,所以只能重新编译,把之前的已经编译好的zabbixserver目录替换掉(注意:要把conf下的配置文件,还有脚本要拷贝到重新编译好的zabbixserver目录里哦,我们的路径是/usr/local/zabbix。)3. 操作步骤:详细编译步骤请自行google1) 编译参数:./configure--prefix=/usr/local/zabbix --enable-server --enable-agent --enable-ipv6--with-mysql --with-net-snmp –enable-java注意:替换编译包时,要将zabbixsever端停止。2) 配置zabbix_java路径:/usr/local/zabbix/sbin/zabbix_java
# lsbin libsettings.shshutdown.sh startup.sh配置文件内容如下:
# grep -Ev "^#|^$"settings.sh LISTEN_IP="0.0.0.0"LISTEN_PORT=10052PID_FILE="/tmp/zabbix_java.pid"START_POLLERS=53) 配置zabbixsever路径:/usr/local/zabbix/etc
# lszabbix_agentd.confzabbix_agentd.conf.dzabbix_server.conf zabbix_server.conf.d配置文件增加下面内容
# grep -Ev "^#|^$"zabbix_server.conf…JavaGateway=127.0.0.1JavaGatewayPort=10052StartJavaPollers=54) 启动zabbixsever 以及zabbix_java# zabbix server启动/etc/init.d/zabbix_server start# zabbix_java 启动cd /usr/local/zabbix/sbin/zabbix_java./startup.sh(二) Zabbix Agent端:主要是配置tomcat容器
1) 下载catalina-jmx-remote.jar下载地址:(用wget在服务器下载即可)
http://archive.apache.org/dist/tomcat/tomcat-7/v7.0.69/bin/extras/catalina-jmx-remote.jar
上传catalina-jmx-remote.jar到tomcat的lib目录下,我的是/usr/local/tomcat/lib即可
2) 修改catalina.sh# 添加如下内容CATALINA_OPTS="$CATALINA_OPTS-server -Xms128m -Xmx128m -XX:MaxNewSize=64m -XX:PermSize=64M-XX:MaxPermSize=64m -XX:ThreadStackSize=256 -Dcom.sun.management.jmxremote-Dcom.sun.management.jmxremote.authenticate=false-Dcom.sun.management.jmxremote.ssl=false -Djava.rmi.server.hostname=客户端IP地址"3) 增加jmx监听端口# server.xml文件最后添加一行# tail -n 6 conf/server.xml<ListenerclassName="org.apache.catalina.mbeans.JmxRemoteLifecycleListener" rmiRegistryPortPlatform="9080"rmiServerPortPlatform="9080" /> </Host> </Engine> </Service></Server>4) 重启tomcat(三) 测试需要下载一个工具包cmdline-jmxclient-0.10.3.jar
下载地址:
http://crawler.archive.org/cmdline-jmxclient/downloads.html
执行如下命令:
# java -jar/root/cmdline-jmxclient-0.10.3.jar - 127.0.0.1:9080 java.lang:type=MemoryHeapMemoryUsage11/11/2016 17:27:54 +0800org.archive.jmx.Client HeapMemoryUsage:committed: 127533056init: 134217728max: 127533056used: 16984736四、 zabbix web 配置(一) 导入zabbix监控tomcat模版zabbix监控tomcat模版 见附件(二) Tomcat服务器主机添加jmx端口
(三) Tomcat服务器主机添加zabbix监控tomcat模版等待几分钟,查看相应主机的最新数据即可
五、 踩过的坑(这是个大坑,主要我是小白一枚,google了半天才找到原因)
首先,我执行这个,查看支持的选项,没有问题
# java -jar/root/cmdline-jmxclient-0.10.3.jar - 127.0.0.1:9080 java.lang:type=MemoryAttributes: ObjectPendingFinalizationCount:ObjectPendingFinalizationCount (type=int) HeapMemoryUsage: HeapMemoryUsage(type=javax.management.openmbean.CompositeData) NonHeapMemoryUsage: NonHeapMemoryUsage(type=javax.management.openmbean.CompositeData) Verbose: Verbose (type=boolean) ObjectName: ObjectName(type=javax.management.ObjectName)Operations: gc: gc Parameters 0, return type=void之后,我执行这个,报错如下:
# java -jar/root/cmdline-jmxclient-0.10.3.jar - 127.0.0.1:9080 java.lang:type=MemoryPool11/11/2016 17:39:24 +0800 org.archive.jmx.Clientjava.lang:type=MemoryPool is not a registered bean最后,google后才知道,这样执行是不对的
jmx支持的一些选项,如下
# java -jar/root/cmdline-jmxclient-0.10.3.jar - 127.0.0.1:9080 | grep java.lang:java.lang:type=Compilationjava.lang:type=ClassLoadingjava.lang:type=Memoryjava.lang:name=Metaspace,type=MemoryPooljava.lang:name=EdenSpace,type=MemoryPooljava.lang:type=Threadingjava.lang:name=SurvivorSpace,type=MemoryPooljava.lang:name=MetaspaceManager,type=MemoryManagerjava.lang:type=Runtimejava.lang:name=MarkSweepCompact,type=GarbageCollectorjava.lang:name=Compressed ClassSpace,type=MemoryPooljava.lang:name=CodeCacheManager,type=MemoryManagerjava.lang:name=Copy,type=GarbageCollectorjava.lang:type=OperatingSystemjava.lang:name=CodeCache,type=MemoryPooljava.lang:name=TenuredGen,type=MemoryPool正确的执行方式,如下:
# java -jar/root/cmdline-jmxclient-0.10.3.jar - 127.0.0.1:9080 java.lang:name=Metaspace,type=MemoryPoolAttributes: Valid: Valid (type=boolean) Usage: Usage(type=javax.management.openmbean.CompositeData) PeakUsage: PeakUsage(type=javax.management.openmbean.CompositeData) MemoryManagerNames: MemoryManagerNames(type= UsageThreshold: UsageThreshold (type=long) UsageThresholdExceeded: UsageThresholdExceeded(type=boolean) UsageThresholdCount: UsageThresholdCount(type=long) UsageThresholdSupported:UsageThresholdSupported (type=boolean) CollectionUsageThreshold:CollectionUsageThreshold (type=long) CollectionUsageThresholdExceeded:CollectionUsageThresholdExceeded (type=boolean) CollectionUsageThresholdCount:CollectionUsageThresholdCount (type=long) CollectionUsage: CollectionUsage(type=javax.management.openmbean.CompositeData) CollectionUsageThresholdSupported:CollectionUsageThresholdSupported (type=boolean) Name: Name (type=java.lang.String) Type: Type (type=java.lang.String) ObjectName: ObjectName (type=javax.management.ObjectName)Operations: resetPeakUsage: resetPeakUsage Parameters 0, return type=void总结:
Jmx支持的选项,是和tomcat版本有关的,之前我找的资料都是tomcat 8 的版本,执行之后就会报错“org.archive.jmx.Client java.lang:type=MemoryPool is not a registered bean”,所以自己要认真查看自己所部署的环境所支持的选项,不能盲目照搬他人的成果。
页:
[1]