zabbix通过jmx采用默认tomcat模板监控tomcat好多值不支持的问题排查
前言
采用zabbix 3.0对tomcat进行监控,已经安装好jmx,而且通过jconsole也能够连接tomcat进行监控。但是采用zabbix自带的监控模板却发现很多监控项都提示不支持。
排查故障
- 下载cmdline-jmxclient-0.10.3.jar,采用此软件可以探测需要监控的tomcat主机支持的监控项,而且能够获取所有监控项的值。
- 执行以下语句进行测试:
#ip地址为需要监控的tomcat主机的ip地址,即本机;
java.lang:name="Code Cache",type=MemoryPool为监控项
Usage为监控项支持的参数,如果不带监控参数就会列出所有支持的监控参数#
[root@localhost packages]# java -jar cmdline-jmxclient-0.10.3.jar - 192.168.1.52:12345 java.lang:name="Code Cache",type=MemoryPool Usage
09/04/2017 17:25:55 +0800 org.archive.jmx.Client Usage:
committed: 7012352
init: 2555904
max: 50331648
used: 6077824
#出现以上信息说明能够对jmx进行取值
- 通过java -jar cmdline-jmxclient-0.10.3.jar --help也可以获取所有帮助信息;
- 以下命令用于获取jmx支持的所有监控项:
java -jar cmdline-jmxclient-0.10.3.jar - 192.168.1.52:12345
#监控项分两种:Catalina和java.lang,可以采用grep分别查看
-
查看一个zabbix的tomcat监控模板自带的监控项,然后可以看到之所以娶不到值是因为监控键值不对,采用以下兼职发现根本获取不到信息:
-
执行以下命令查看正确的键值,发现正确的值为“http-bio-8080”,这是因为我的tomcat采用的是bio通信模型,tomcat还支持nio和apr,不同的模型这里的值也不同。:
[root@localhost packages]# java -jar cmdline-jmxclient-0.10.3.jar - 192.168.1.52:12345 |grep 'Catalina:name='
Catalina:name=HttpRequest1,type=RequestProcessor,worker="http-bio-8080"
Catalina:name="http-bio-8080",type=ThreadPool
Catalina:name="http-bio-8080",type=GlobalRequestProcessor
Catalina:name="ajp-bio-8009",type=ThreadPool
Catalina:name="ajp-bio-8009",type=GlobalRequestProcessor
Catalina:name=StandardEngineValve,type=Valve
Catalina:name=common,type=ServerClassLoader
- 采用正确的值再取一次数据发现能够取得数据,注意特殊字符需要转义:
- 修改zabbix的tomcat监控模板的值即可: