zabbix之tomcat监控(JMX)

为什么选择JMX

  其实监控tomcat的方式有很多种,比如:通过进程、端口、访问状态等,可是这些情况在一些情况下有很明显的弊端,有时候进程死了,端口还在。而JMX就不会这样了,JMX 既是 Java 管理系统的一个标准,一个规范,也是一个接口,一个框架。可以跨越一系列异构操作系统平台、系统体系结构和网络传输协议,灵活的开发无缝集成的系统、网络和服务管理应用。

后期还可以扩展kafka、zookeeper、solr等java应用的监控。

zabbix-server端的操作

安装JDK

jmx是java开发的,安装前需要有jdk环境。 jdk环境的安装无非就是两种,

1、在 java官网下载,配置好环境变量即可。

2、apt或者yun安装

注:zabbix-server安装的java版本需要和被监控agent上的版本一致

安装zabbix-java-gateway

官方支持三种安装方式:源码、包安装(apt、yum)、容器(应该是docker) 后文我也只介绍我的操作过程,不再过多解释,详情见 zabbix官网

apt-get install zabbix-java-gateway

配置文件/etc/zabbix/zabbix_java_gateway.conf 默认即可

root@OPS-20-127:/tmp# egrep -v '^#|^$' /etc/zabbix/zabbix_java_gateway.conf
PID_FILE="/var/run/zabbix/zabbix_java_gateway.pid"
START_POLLERS=5
TIMEOUT=3

注:START_POLLERS是配置启动的进出数,该值必须大于等于Zabbix-Server.conf里面的startJavaPollers。

修改zabbix-server.conf,

vim /etc/zabbix/zabbix_server.conf
JavaGateway=127.0.0.1
StartJavaPollers=3

注:端口一直使用默认的10052;两个文件的Pollers相关参数根据agent节点数配置

下载catalina-jmx-remote.jar文件,放到/usr/share/zabbix-java-gateway/lib/

下载cmdline-jmxclient-0.10.3.jar放在/tmp即可,后续用。

在zabbix-server上重启服务

/etc/init.d/zabbix-server restart
/etc/init.d/zabbix-java-gateway restart

zabbit-agent端操作

下载catalina-jmx-remote.jar文件,放到tomcat/lib

tomcat/bin/setenv.sh最后追加

CATALINA_OPTS="$CATALINA_OPTS -Dcom.sun.management.jmxremote \
-Dcom.sun.management.jmxremote.port=12345 \
-Dcom.sun.management.jmxremote.ssl=false \
-Dcom.sun.management.jmxremote.authenticate=false \
-Djava.rmi.server.hostname=agent的IP"

修改tomcat/conf/server.xml, 在<Listener className="org.apache.catalina.core.ThreadLocalLeakPreventionListener" />后添加<Listener className="org.apache.catalina.mbeans.JmxRemoteLifecycleListener" rmiRegistryPortPlatform="12345" rmiServerPortPlatform="12345" />

重启tomcat 检查端口

netstat -ptnl | grep 12345
tcp        0      0 :::12345                    :::*                        LISTEN      2532/java      

切回到zabbix-server

用到刚刚下载的cmdline-jmxclient-0.10.3.jar文件

root@OPS-20-127:/tmp# java -jar cmdline-jmxclient-0.10.3.jar - agent的IP:12345 java.lang:type=Memory NonHeapMemoryUsage
08/05/2015 17:05:32 +0800 org.archive.jmx.Client NonHeapMemoryUsage:
committed: 82837504
init: 2555904
max: -1
used: 80883872

切到web,添加模板

在添加web监控的时候,把Template JMX GenericTemplate JMX Tomcat都添加进去,进到应用集,没用的禁掉就行。

Table of Contents