[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端设置

[Zabbix] Tomcat 监控

# 利用zabbix3 自带的两个JMX 模板


[Zabbix] Tomcat 监控


五、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]

非堆