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. 操作步骤:详细编译步骤请自行google 1) 编译参数:./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
# ls bin lib settings.sh shutdown.sh startup.sh 配置文件内容如下:
# grep -Ev "^#|^$"settings.sh LISTEN_IP="0.0.0.0" LISTEN_PORT=10052 PID_FILE="/tmp/zabbix_java.pid" START_POLLERS=5 3) 配置zabbixsever路径:/usr/local/zabbix/etc
# ls zabbix_agentd.conf zabbix_agentd.conf.d zabbix_server.conf zabbix_server.conf.d 配置文件增加下面内容
# grep -Ev "^#|^$"zabbix_server.conf … JavaGateway=127.0.0.1 JavaGatewayPort=10052 StartJavaPollers=5 4) 启动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/t ... lina-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=MemoryHeapMemoryUsage 11/11/2016 17:27:54 +0800org.archive.jmx.Client HeapMemoryUsage: committed: 127533056 init: 134217728 max: 127533056 used: 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=Memory Attributes: 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=MemoryPool 11/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=Compilation java.lang:type=ClassLoading java.lang:type=Memory java.lang:name=Metaspace,type=MemoryPool java.lang:name=EdenSpace,type=MemoryPool java.lang:type=Threading java.lang:name=SurvivorSpace,type=MemoryPool java.lang:name=MetaspaceManager,type=MemoryManager java.lang:type=Runtime java.lang:name=MarkSweepCompact,type=GarbageCollector java.lang:name=Compressed ClassSpace,type=MemoryPool java.lang:name=CodeCacheManager,type=MemoryManager java.lang:name=Copy,type=GarbageCollector java.lang:type=OperatingSystem java.lang:name=CodeCache,type=MemoryPool java.lang:name=TenuredGen,type=MemoryPool 正确的执行方式,如下:
# java -jar/root/cmdline-jmxclient-0.10.3.jar - 127.0.0.1:9080 java.lang:name=Metaspace,type=MemoryPool Attributes: Valid: Valid (type=boolean) Usage: Usage(type=javax.management.openmbean.CompositeData) PeakUsage: PeakUsage(type=javax.management.openmbean.CompositeData) MemoryManagerNames: MemoryManagerNames(type=[Ljava.lang.String;) 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”,所以自己要认真查看自己所部署的环境所支持的选项,不能盲目照搬他人的成果。
工具包及zabbix模版.rar
(30.98 KB, 下载次数: 6)
|