包含JVM监控 使用 Zabbix 监控 Tomcat

1.前言:
我们的监控系统是zabbix,最近刚做完jvm还有Tomcat的监控,需要吐槽以下内容:

  • zabbix官方提供的jvm和tomcat监控模版,存在item书写格式的坑,导致很多内容无法获取到监控 。
  • 网友写的zabbix监控JAVA文章,99%就只有环境的搭建,没有zabbix item键值,所以环境监控上了,item键值不知道怎么写 。
本文监控jvm内容如下:
内存使用状态:堆内存(Heap memory)和非堆内存(No Heap memory),包括已用值、最大值、已提交;堆内存内存池:新生代(eden space),survivor space,老年代(old gen)的内存使用状态;非堆内存内存池:代码缓存(Code cache),元空间(meta space),压缩类空间(compressed class space);类加载:加载总数,已加载,已卸载 。Java线程:总开启线程,活动线程,线程峰值 。本文监控tomcat内容如下:
Tomcat请求数:包括每秒请求数,每秒出错数;Tomcat网络流量统计:包括进流量统计,出流量统计;Tomcat线程:包括最大线程数,当前线程数,当前繁忙线程数 。我没有在zabbix中添加垃圾回收(gc)的监控,而是在catalina配置里面添加gc日输入来给开发进行分析,设置方式如下 。
CATALINA_OPTS=”-XX:ParallelGCThreads=4 -XX:+PrintGCDetails -Xloggc:日志存放路径”
监控效果如下:
包含JVM监控 使用 Zabbix 监控 Tomcat

文章插图
 

包含JVM监控 使用 Zabbix 监控 Tomcat

文章插图
 

包含JVM监控 使用 Zabbix 监控 Tomcat

文章插图
 
 
2.监控环境搭建
环境介绍:
[root@tomcat-01 ~]# /usr/local/tomcat/bin/version.shServer version: Apache Tomcat/8.0.23Server built: May 19 2015 14:58:38 UTCServer number: 8.0.23.0OS Name: linuxOS Version: 2.6.32-573.22.1.el6.x86_64Architecture: amd64JVM Version: 1.8.0_65-b17JVM Vendor: Oracle Corporation2.1.Server端配置
1、 Zabbix server端安装java jdk环境并开启javaGateway支持java监控 。
javaGateway 启用方式如下:
Zabbix通过rpm包安装:只需要安装zabbix-java-gateway包即可 。
Zabbix通过编译安装:在编译时需要加上—enable-java以支持jmx监控,如果之前没加需要重新编译 。
2、修改zabbix-java-gateway配置文件
[root@zabbix ~]# vim /etc/zabbix/zabbix_java_gateway.confLISTEN_IP="192.168.10.3"LISTEN_PORT=10052PID_FILE="/var/run/zabbix/zabbix_java.pid"START_POLLERS=5修改zabbix-server配置文件[root@zabbix ~]# vim /etc/zabbix/zabbix_server.confJavaGateway=192.168.10.3JavaGatewayPort=10052StartJavaPollers=5启动zabbix-java-gateway服务[root@zabbix ~]# /etc/init.d/zabbix-java-gateway start 
2.2.Tomcat服务器配置
1、下载catalina-jmx-remote.jar包,到tomcat安装目录下的lib目录
wget -O /usr/local/tomcat/lib/catalina-jmx-remote.jar http://archive.apache.org/dist/tomcat/tomcat-8/v8.0.23/bin/extras/catalina-jmx-remote.jar2、修改catalina.sh添加如下内容
CATALINA_OPTS="$CATALINA_OPTS -Dcom.sun.management.jmxremote-Dcom.sun.management.jmxremote.port=8090-Dcom.sun.management.jmxremote.ssl=false-Dcom.sun.management.jmxremote.authenticate=false"3、重启tomcat与监控测试
(1)下载cmdline-jmxclient-0.10.3.jar文件,下载地址http://crawler.archive.org/cmdline-jmxclient/downloads.html
(2)本地执行如下命令查看tomcat的堆内存信息
[root@tomcat-01 ~]# java -jar /root/cmdline-jmxclient-0.10.3.jar - 127.0.0.1:8090 java.lang:type=Memory HeapMemoryUsage11/04/2016 15:23:16 +0800 org.archive.jmx.Client HeapMemoryUsage:committed: 2146959360init: 2147483648max: 2146959360used: 4076118083.监控数据采集
3.1.堆内存
Tomcat本地查看堆内存信息:
[root@tomcat-01 ~]# java -jar cmdline-jmxclient-0.10.3.jar controlRole:tomcat 127.0.0.1:8090 java.lang:type=Memory HeapMemoryUsage11/04/2016 15:36:58 +0800 org.archive.jmx.Client HeapMemoryUsage:committed: 2145910784init: 2147483648max: 2145910784used: 741540536zabbix监控堆内存键值:
堆内存最大值:jmx["java.lang:type=Memory","HeapMemoryUsage.max"]已用堆内存:jmx["java.lang:type=Memory","HeapMemoryUsage.used"]已提交堆内存:jmx["java.lang:type=Memory","HeapMemoryUsage.committed"]一个完整的zabbix item填写方式如下,不同内容填写不同的键值即可:
包含JVM监控 使用 Zabbix 监控 Tomcat

文章插图
 
3.2.内存池eden space:
Tomcat本地查看eden space:
java -jar cmdline-jmxclient-0.10.3.jar - 127.0.0.1:8090 java.lang:type=MemoryPool,name=PS Eden Space Usage


推荐阅读