Zabbix 监控Tomcat
概述
需要安装的软件包括:
- Java JRE环境,1.7或1.8
- Zabbix-Java-Gateway
- cmdline-jmxclient.jar工具
Zabbix的JMX监控架构
组件关系示意图:
Java环境的安装
可以从官网下载JDK包,解压缩到/usr/share目录下,然后配置一下JAVA_HOME变量。
使用java -version检查是否安装完成。
安装Zabbix-Java-Gateway
在安装zabbix的yum源的基础上,使用如下命令完成安装
yum install -y zabbix-java-gateway
安装完毕后,可以使用如下命令测试:
service zabbix-java-gateway status
此时应该提示服务没有启动。
注:监控安装在不同Host上的多个Tomcat,也只需要安装一个Zabbix-Java-Gateway。
修改Zabbix-java-gateway配置文件
打开/etc/zabbix/zabbix_java_gateway.conf文件,主要关注/修改如下几个参数:
- 监听地址:LISTEN_IP=“0.0.0.0” #默认地址,java gateway绑定IP,一般不需要设置
- 监听端口:LISTEN_PORT=10052 #默认端口,zabbix server访问端口
- 启动的工作线程数:START_POLLERS=5
然后使用service zabbix-java-gateway start启动服务就可以。
修改zabbix-server端的配置文件
打开/etc/zabbix/zabbix_server.conf文件,主要关注/自古如下几个参数:
- Java Gateway地址:JavaGateway=192.168.71.196
- Java Gateway端口:JavaGatewayPort=10052
- JavaGateway启动线程:StartJavaPollers=5 #此处数值要等于或小于zabbix-java-gateway配置文件中的START_POLLERS值。
然后重启zabbix服务:service zabbix-server restart就可以了
客户端(Tomcat)配置
- Tomcat添加JMX支持方法1:
在Tomcat的bin目录下修改catalina.sh文件,为CATALINA_OPTS添加如下参数:
CATALINA_OPTS="$CATALINA_OPTS
-Dcom.sun.management.jmxremote
-Djava.rmi.server.hostname=192.168.71.196
-Dcom.sun.management.jmxremote.port=12345
-Dcom.sun.management.jmxremote.ssl=false
-Dcom.sun.management.jmxremote.authenticate=false"
- Tomcat添加JMX支持方法2:
在Tomcat的bin目录下面添加setenv.sh文件,为CATALINA_OPTS添加如下参数:
export CATALINA_OPTS="$CATALINA_OPTS -Dcom.sun.management.jmxremote=true -Dcom.sun.management.jmxremote.port=12345 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false -Djava.rmi.server.hostname=192.168.71.196"
此处的IP地址为Tomcat安装的host的IP地址,端口12345为通过JMX读取Tomcat数据的端口。在Zabbix的前端管理中配置时使用。
- 检查端口
[root@agent bin]# netstat -nltp | grep 12345
tcp 0 0 :::12345 :::* LISTEN 11380/java
使用cmdline-jmxclient.jar工具测试jmx配置
下载工具到zabbix-java-gateway安装的机器。
wget http://crawler.archive.org/cmdline-jmxclient/cmdline-jmxclient-0.10.3.jar
执行如下命令:
java -jar cmdline-jmxclient-0.10.3.jar - localhost:12345 java.lang:type=Memory NonHeapMemoryUsage
也可以通过jconsole 查MBean的可用参数
添加监控模板
添加JMX监控目标
添加Tomcat监控模板
监控项参数调整
其它监控项参数值,如实际和模板不同的,也应做相应调整。实际参数可以使用cmdline-jmxclient.jar工具查询。
添加新的监控项目(适用于Java8)
在“Configuration”菜单里面,可以通过“Create Item”添加模板里面没有,且想要监控的项目。
注意:对于内存参数,添加新的监控项时,单位填写:B,这样系统会以合适的单位显示监控值,否则显示的将会是字节数
- 堆监控参数:
名称:堆内存最大值
键值:jmx["java.lang:type=Memory","HeapMemoryUsage.max"]
名称:已提交堆内存
键值:jmx["java.lang:type=Memory","HeapMemoryUsage.committed"]
名称:已用堆内存
键值:jmx["java.lang:type=Memory","HeapMemoryUsage.used"]
- old gen监控
名称:内存池old gen使用空间
键值:jmx["java.lang:type=MemoryPool,name=PS Old Gen",Usage.used]
名称:内存池old gen已提交空间
键值:jmx["java.lang:type=MemoryPool,name=PS Old Gen",Usage.committed]
名称:内存池old gen最大空间
jmx["java.lang:type=MemoryPool,name=PS Old Gen",Usage.max]
- eden space监控
名称:eden space已用空间
键值:jmx["java.lang:type=MemoryPool,name=PS Eden Space",Usage.used]
名称:eden space已提交空间
键值:jmx["java.lang:type=MemoryPool,name=PS Eden Space",Usage.committed]
名称:eden space最大空间
jmx["java.lang:type=MemoryPool,name=PS Eden Space",Usage.max]
- Tomcat线程监控
名称:总开启线程数
键值:jmx["java.lang:type=Threading","TotalStartedThreadCount"]
名称:活动线程数
键值:jmx["java.lang:type=Threading","ThreadCount"]
名称:线程峰值数
键值:jmx["java.lang:type=Threading","PeakThreadCount"]