[Zabbix] Tomcat 监控
一、安装 Tomcat
# cd /usr/local/src/tarbag/
# tar -zxvf jdk-8u144-linux-x64.tar.gz
# tar -zxvf apache-tomcat-9.0.0.M22.tar.gz
# mv jdk1.8.0_144 /usr/local/java
# mv apache-tomcat-9.0.0.M22 /usr/local/tomcat9
# vi /etc/profile
export JAVA_HOME=/usr/local/java CLASSPATH=/usr/local/java/lib/dt.jar:/usr/local/java/lib/tools.jar PATH=/usr/local/java/bin:$PATH export PATH JAVA_HOME CLASSPATH |
# source /etc/profile
# java -version
java version "1.8.0_144" Java(TM) SE Runtime Environment (build 1.8.0_144-b01) Java HotSpot(TM) 64-Bit Server VM (build 25.144-b01, mixed mode) |
#/usr/local/tomcat9/bin/startup.sh #启动tomcat
# url登入http://192.168.1.208:8080看看欢迎界面
二、zabbix server端配置
Java支持
编译安装zabbixserver需要加上--enable-java以支持jmx监控,如果之前的zabbix server没加,那么请重新编译安装, 分享下我的安装参数:
./configure --prefix=/usr/local/zabbix --enable-server --enable-agent --with-mysql --with-net-snmp --with-libcurl --with-libxml2 --enable-java |
----------------------------------------------------------------------------------------------------------
# yum -y install zabbix-java-gateway #我是yum安装
# vi /etc/zabbix/zabbix_proxy.conf
Server=10.254.0.3 ServerPort=10051 Hostname=Zabbix_proxy01 LogFile=/var/log/zabbix/zabbix_proxy.log LogFileSize=0 PidFile=/var/run/zabbix/zabbix_proxy.pid DBHost=10.254.0.4 DBName=zabbix_proxy DBUser=zabbix DBPassword=zabbix JavaGateway=192.168.1.208 JavaGatewayPort=10052 StartJavaPollers=5 SNMPTrapperFile=/var/log/snmptrap/snmptrap.log CacheSize=4G Timeout=4 ExternalScripts=/usr/lib/zabbix/externalscripts FpingLocation=/usr/sbin/fping LogSlowQueries=3000 |
# vi /etc/zabbix/zabbix_java_gateway.conf
默认就好 |
# systemctl restart zabbix-proxy
# systemctl restart zabbix-java-gateway.service
三、配置Tomcat JMX
# vi /usr/local/tomcat9/bin/catalina.sh
# ----- Execute The Requested Command ----------------------------------------- #一定要添加到这一行下面,不然失效 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"
# Bugzilla 37848: only output this if we have a TTY |
# cd /usr/local/tomcat9/bin/
# ./shutdown.sh
# ./startup.sh
# lsof -i:10052
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
java 19850 zabbix 13u IPv6 11352236 0t0 TCP *:10052 (LISTEN)
# lsof -i:12345
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
java 12780 root 20u IPv6 11785157 0t0 TCP *:italk (LISTEN)
# java -jar/root/cmdline-jmxclient-0.10.3.jar - 192.168.1.208:12345 | sort #查看能监控的项
# java -jar/root/cmdline-jmxclient-0.10.3.jar - 192.168.1.208:12345 Catalina:port=8080,type=Connector #查看能监控的项
# java -jar/root/cmdline-jmxclient-0.10.3.jar - 192.168.1.208:12345 Catalina:port=8080,type=ConnectorprocessorCache #取值
# cmdline-jmxclient-0.10.3.jar 下载地址:点击打开链接
四、WEB端设置
# 利用zabbix3 自带的两个JMX 模板
五、zabbix监控jvm部分监控项解释
监控项 |
涵义 |
键值 |
类别 |
http-8010 bytes received per second |
接收字节数/秒 |
jmx["Catalina:type=GlobalRequestProcessor,name=http-8010",bytesReceived] |
http |
http-8010 bytes sent per second |
发送字节数/秒 |
jmx["Catalina:type=GlobalRequestProcessor,name=http-8010",bytesSent] |
http |
http-8010 errors per second |
错误数/秒 |
jmx["Catalina:type=GlobalRequestProcessor,name=http-8010",errorCount] |
http |
http-8010 request processing time |
请求处理时间 |
jmx["Catalina:type=GlobalRequestProcessor,name=http-8010",processingTime] |
http |
http-8010 requests per second |
请求数/秒 |
jmx["Catalina:type=GlobalRequestProcessor,name=http-8010",requestCount] |
http |
http-8010 threads allocated |
已分配线程 |
jmx["Catalina:type=ThreadPool,name=http-8010",currentThreadCount] |
http |
http-8010 threads busy |
忙碌线程 |
jmx["Catalina:type=ThreadPool,name=http-8010",currentThreadsBusy] |
http |
http-8010 threads max |
最大线程数 |
jmx["Catalina:type=ThreadPool,name=http-8010",maxThreads] |
http |
jk-8019 bytes received per second |
接收字节数/秒 |
jmx["Catalina:type=GlobalRequestProcessor,name=jk-8019",bytesReceived] |
ajp |
jk-8019 bytes sent per second |
发送字节数/秒 |
jmx["Catalina:type=GlobalRequestProcessor,name=jk-8019",bytesSent] |
ajp |
jk-8019 errors per second |
错误数/秒 |
jmx["Catalina:type=GlobalRequestProcessor,name=jk-8019",errorCount] |
ajp |
jk-8019 request processing time |
请求处理时间 |
jmx["Catalina:type=GlobalRequestProcessor,name=jk-8019",processingTime] |
ajp |
jk-8019 requests per second |
请求数/秒 |
jmx["Catalina:type=GlobalRequestProcessor,name=jk-8019",requestCount] |
ajp |
jk-8019 threads allocated |
已分配线程 |
jmx["Catalina:type=ThreadPool,name=jk-8019",currentThreadCount] |
ajp |
jk-8019 threads busy |
忙碌线程 |
jmx["Catalina:type=ThreadPool,name=jk-8019",currentThreadsBusy] |
ajp |
jk-8019 threads max |
最大线程数 |
jmx["Catalina:type=ThreadPool,name=jk-8019",maxThreads] |
ajp |
Maximum number of active sessions so far |
历史最大活动会话数 |
jmx["Catalina:type=Manager,path=/,host=localhost",maxActive] |
会话 |
Number of active sessions at this moment |
当前活动会话数 |
jmx["Catalina:type=Manager,path=/,host=localhost",activeSessions] |
会话 |
Number of sessions created by this manager per second |
每秒创建会话数 |
jmx["Catalina:type=Manager,path=/,host=localhost",sessionCounter] |
会话 |
Number of sessions we rejected due to maxActive being reached |
达到最大会话数后被拒绝的会话数 |
jmx["Catalina:type=Manager,path=/,host=localhost",rejectedSessions] |
会话 |
The maximum number of active Sessions allowed, or -1 for no limit |
最大允许会话数量,-1时为无限 |
jmx["Catalina:type=Manager,path=/,host=localhost",maxActiveSessions] |
会话 |
cl Loaded Class Count |
已加载类计数 |
jmx["java.lang:type=ClassLoading",LoadedClassCount] |
加载类 |
cl Total Loaded Class Count |
全加载类计数 |
jmx["java.lang:type=ClassLoading",TotalLoadedClassCount] |
加载类 |
comp Accumulated time spent in compilation |
总编译时间 |
jmx["java.lang:type=Compilation",TotalCompilationTime] |
加载类 |
gc ConcurrentMarkSweep accumulated time spent in collection |
CMS收集累计时间 |
jmx["java.lang:type=GarbageCollector,name=ConcurrentMarkSweep",CollectionTime] |
垃圾回收 |
gc Copy accumulated time spent in collection |
GC副本收集累计时间 |
jmx["java.lang:type=GarbageCollector,name=ConcurrentMarkSweep",CollectionCount] |
垃圾回收 |
gc Copy number of collections per second |
每秒GC副本收集数 |
jmx["java.lang:type=GarbageCollector,name=Copy",CollectionTime] |
垃圾回收 |
gc ParNew accumulated time spent in collection |
ParNew收集累计时间 |
jmx["java.lang:type=GarbageCollector,name=Copy",CollectionCount] |
垃圾回收 |
gc ParNew number of collections per second |
每秒ParNew收集数 |
jmx["java.lang:type=GarbageCollector,name=ParNew",CollectionTime] |
垃圾回收 |
mem Heap Memory committed |
堆内存 |
jmx["java.lang:type=GarbageCollector,name=ParNew",CollectionCount] |
堆 |
mem Heap Memory max |
堆内存最大 |
jmx["java.lang:type=Memory",HeapMemoryUsage.max] |
堆 |
mem Heap Memory used |
堆内存已使用 |
jmx["java.lang:type=Memory",HeapMemoryUsage.used] |
堆 |
mem Non-Heap Memory committed |
非堆内存 |
jmx["java.lang:type=Memory",NonHeapMemoryUsage.committed] |
非堆 |
mem Non-Heap Memory max |
非堆内存最大 |
jmx["java.lang:type=Memory",NonHeapMemoryUsage.max] |
非堆 |
mem Non-Heap Memory used |
非堆内存已使用 |
jmx["java.lang:type=Memory",NonHeapMemoryUsage.used] |
非堆 |
mem Object Pending Finalization Count |
暂挂结束操作的对象的大约数目 |
jmx["java.lang:type=Memory",ObjectPendingFinalizationCount] |
堆 |
mp CMS Old Gen committed |
年老代 |
jmx["java.lang:type=MemoryPool,name=CMS Old Gen",Usage.committed] |
堆 |
mp CMS Old Gen max |
年老代最大 |
jmx["java.lang:type=MemoryPool,name=CMS Old Gen",Usage.max] |
堆 |
mp CMS Old Gen used |
年老代已用 |
jmx["java.lang:type=MemoryPool,name=CMS Old Gen",Usage.used] |
堆 |
mp CMS Perm Gen committed |
永久代 |
jmx["java.lang:type=MemoryPool,name=CMS Perm Gen",Usage.committed] |
堆 |
mp CMS Perm Gen max |
永久代最大 |
jmx["java.lang:type=MemoryPool,name=CMS Perm Gen",Usage.max] |
堆 |
mp CMS Perm Gen used |
永久代已用 |
jmx["java.lang:type=MemoryPool,name=CMS Perm Gen",Usage.used] |
堆 |
mp Code Cache committed |
代码缓存 |
jmx["java.lang:type=MemoryPool,name=Code Cache",Usage.committed] |
非堆 |
mp Code Cache max |
代码缓存最大 |
jmx["java.lang:type=MemoryPool,name=Code Cache",Usage.max] |
非堆 |
mp Code Cache used |
代码缓存已用 |
jmx["java.lang:type=MemoryPool,name=Code Cache",Usage.used] |
非堆 |
mp Perm Gen committed |
方法区 |
jmx["java.lang:type=MemoryPool,name=Perm Gen",Usage.committed] |
非堆 |
mp Perm Gen max |
方法区最大 |
jmx["java.lang:type=MemoryPool,name=Perm Gen",Usage.max] |
非堆 |
mp Perm Gen used |
方法区已用 |
jmx["java.lang:type=MemoryPool,name=Perm Gen",Usage.used] |
非堆 |