1.前言:java
內存使用狀態:堆內存(Heap memory)和非堆內存(No Heap memory),包括已用值、最大值、已提交;
堆內存內存池:新生代(eden space),survivor space,老年代(old gen)的內存使用狀態;
非堆內存內存池:代碼緩存(Code cache),元空間(meta space),壓縮類空間(compressed class space);
類加載:加載總數,已加載,已卸載。
Java線程:總開啓線程,活動線程,線程峯值。複製代碼
Tomcat請求數:包括每秒請求數,每秒出錯數;
Tomcat網絡流量統計:包括進流量統計,出流量統計;
Tomcat線程:包括最大線程數,當前線程數,當前繁忙線程數。複製代碼
2.監控環境搭建面試
[root@tomcat-01 ~]# /usr/local/tomcat/bin/version.sh
Server version: Apache Tomcat/8.0.23
Server built: May 19 2015 14:58:38 UTC
Server number: 8.0.23.0
OS Name: Linux
OS Version: 2.6.32-573.22.1.el6.x86_64
Architecture: amd64
JVM Version: 1.8.0_65-b17
JVM Vendor: Oracle Corporation複製代碼
[root@zabbix ~]# vim /etc/zabbix/zabbix_java_gateway.conf
LISTEN_IP="192.168.10.3"
LISTEN_PORT=10052
PID_FILE="/var/run/zabbix/zabbix_java.pid"
START_POLLERS=5
修改zabbix-server配置文件
[root@zabbix ~]# vim /etc/zabbix/zabbix_server.conf
JavaGateway=192.168.10.3
JavaGatewayPort=10052
StartJavaPollers=5
啓動zabbix-java-gateway服務
[root@zabbix ~]# /etc/init.d/zabbix-java-gateway start複製代碼
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.jar複製代碼
二、修改catalina.sh添加以下內容apache
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"複製代碼
[root@tomcat-01 ~]# java -jar /root/cmdline-jmxclient-0.10.3.jar - 127.0.0.1:8090 java.lang:type=Memory HeapMemoryUsage
11/04/2016 15:23:16 +0800 org.archive.jmx.Client HeapMemoryUsage:
committed: 2146959360
init: 2147483648
max: 2146959360
used: 407611808複製代碼
3.監控數據採集vim
[root@tomcat-01 ~]# java -jar cmdline-jmxclient-0.10.3.jar controlRole:tomcat 127.0.0.1:8090 java.lang:type=Memory HeapMemoryUsage
11/04/2016 15:36:58 +0800 org.archive.jmx.Client HeapMemoryUsage:
committed: 2145910784
init: 2147483648
max: 2145910784
used: 741540536複製代碼
zabbix監控堆內存鍵值:瀏覽器
堆內存最大值:jmx["java.lang:type=Memory","HeapMemoryUsage.max"]
已用堆內存:jmx["java.lang:type=Memory","HeapMemoryUsage.used"]
已提交堆內存:jmx["java.lang:type=Memory","HeapMemoryUsage.committed"]複製代碼
java -jar cmdline-jmxclient-0.10.3.jar - 127.0.0.1:8090 java.lang:type=MemoryPool,name=PS\ Eden\ Space Usage複製代碼
zabbix監控eden區域鍵值:緩存
最大空間:jmx["java.lang:type=MemoryPool,name=PS Eden Space",Usage.max]
已用空間:jmx["java.lang:type=MemoryPool,name=PS Eden Space",Usage.used]
提交空間:jmx["java.lang:type=MemoryPool,name=PS Eden Space",Usage.committed]複製代碼
java -jar cmdline-jmxclient-0.10.3.jar - 127.0.0.1:8090 java.lang:type=MemoryPool,name=PS\ Survivor\ Space Usage複製代碼
jmx["java.lang:type=MemoryPool,name=PS Survivor Space",Usage.committed]
jmx["java.lang:type=MemoryPool,name=PS Survivor Space",Usage.max]
jmx["java.lang:type=MemoryPool,name=PS Survivor Space",Usage.used]複製代碼
java -jar cmdline-jmxclient-0.10.3.jar - 127.0.0.1:8090 java.lang:name=PS\ Old\ Gen,type=MemoryPool Usage複製代碼
jmx["java.lang:type=MemoryPool,name=PS Old Gen",Usage.committed]
jmx["java.lang:type=MemoryPool,name=PS Old Gen",Usage.max]
jmx["java.lang:type=MemoryPool,name=PS Old Gen",Usage.used]複製代碼
java -jar cmdline-jmxclient-0.10.3.jar controlRole:tomcat 127.0.0.1:8090 java.lang:type=Memory NonHeapMemoryUsag1
zabbix監控非堆內存使用
1jmx["java.lang:type=Memory","NonHeapMemoryUsag.committed"]
jmx["java.lang:type=Memory","NonHeapMemoryUsag.used"]複製代碼
java -jar cmdline-jmxclient-0.10.3.jar - 127.0.0.1:8090 java.lang:type=MemoryPool,name=Metaspace Usage複製代碼
jmx["java.lang:type=MemoryPool,name=Metaspace",Usage.committed]
jmx["java.lang:type=MemoryPool,name=Metaspace",Usage.used]複製代碼
java -jar cmdline-jmxclient-0.10.3.jar - 127.0.0.1:8090 java.lang:type=MemoryPool,name=Code\ Cache Usage複製代碼
jmx["java.lang:type=MemoryPool,name=Code Cache",Usage.committed]
jmx["java.lang:type=MemoryPool,name=Code Cache",Usage.max]
jmx["java.lang:type=MemoryPool,name=Code Cache",Usage.used]複製代碼
java -jar cmdline-jmxclient-0.10.3.jar - 127.0.0.1:8090 java.lang:type=MemoryPool,name=Compressed\ Class\ Space Usage複製代碼
jmx["java.lang:type=MemoryPool,name=Compressed Class Space",Usage.committed]
jmx["java.lang:type=MemoryPool,name=Compressed Class Space",Usage.max]
jmx["java.lang:type=MemoryPool,name=Compressed Class Space",Usage.used]複製代碼
加載總數: java -jar cmdline-jmxclient-0.10.3.jar controlRole:tomcat 127.0.0.1:8090 java.lang:type=ClassLoading TotalLoadedClassCoun
已加載: java -jar cmdline-jmxclient-0.10.3.jar controlRole:tomcat 127.0.0.1:8090 java.lang:type=ClassLoading LoadedClassCount
已卸載: java -jar cmdline-jmxclient-0.10.3.jar controlRole:tomcat 127.0.0.1:8090 java.lang:type=ClassLoading UnloadedClassCount複製代碼
加載總數: jmx["java.lang:type=ClassLoading","TotalLoadedClassCount"]
已加載: jmx["java.lang:type=ClassLoading","LoadedClassCount"]
已卸載: jmx["java.lang:type=ClassLoading","UnloadedClassCount"]複製代碼
總開啓線程: java -jar cmdline-jmxclient-0.10.3.jar controlRole:tomcat 127.0.0.1:8090 java.lang:type=Threading TotalStartedThreadCount
活動線程: java -jar cmdline-jmxclient-0.10.3.jar controlRole:tomcat 127.0.0.1:8090 java.lang:type=Threading PeakThreadCount
線程峯值: java -jar cmdline-jmxclient-0.10.3.jar controlRole:tomcat 127.0.0.1:8090 java.lang:type=Threading PeakThreadCount複製代碼
總開啓線程: jmx["java.lang:type=Threading","TotalStartedThreadCount"]
活動線程: jmx["java.lang:type=Threading","ThreadCount"]
線程峯值: jmx["java.lang:type=Threading","PeakThreadCount"]複製代碼
最大線程:java -jar cmdline-jmxclient-0.10.3.jar - 127.0.0.1:8090 Catalina:name=\"http-nio-8080\",type=ThreadPool maxThreads 當前線程:java -jar cmdline-jmxclient-0.10.3.jar - 127.0.0.1:8090 Catalina:name=\"http-nio-8080\",type=ThreadPool currentThreadCount 繁忙線程:java -jar cmdline-jmxclient-0.10.3.jar - 127.0.0.1:8090 Catalina:name=\"http-nio-8080\",type=ThreadPool currentThreadsBusy複製代碼
最大線程:jmx["Catalina:type=ThreadPool,name=\"http-nio-8080\"",maxThreads]
當前線程:jmx["Catalina:type=ThreadPool,name=\"http-nio-8080\"",currentThreadCount]
繁忙線程 jmx["Catalina:type=ThreadPool,name=\"http-nio-8080\"",currentThreadsBusy]複製代碼
接收的字節:java -jar cmdline-jmxclient-0.10.3.jar - 127.0.0.1:8090 Catalina:name=\"http-nio-8080\",type=GlobalRequestProcessor bytesReceived 發送的字節:java -jar cmdline-jmxclient-0.10.3.jar - 127.0.0.1:8090 Catalina:name=\"http-nio-8080\",type=GlobalRequestProcessor bytesSent複製代碼
接收的字節:jmx["Catalina:type=GlobalRequestProcessor,name=\"http-nio-8080\"",bytesReceived]
發送的字節:jmx["Catalina:type=GlobalRequestProcessor,name=\"http-nio-8080\"",bytesSent]複製代碼
tomcat請求數: java -jar cmdline-jmxclient-0.10.3.jar - 192.168.10.46:8090 Catalina:name=\"http-nio-8080\",type=GlobalRequestProcessor requestCount tomcat出錯請求: java -jar cmdline-jmxclient-0.10.3.jar - 192.168.10.46:8090 Catalina:name=\"http-nio-8080\",type=GlobalRequestProcessor errorCount複製代碼
tomcat請求數: jmx["Catalina:type=GlobalRequestProcessor,name=\"http-nio-8080\"",requestCount]
tomcat出錯請求:jmx["Catalina:type=GlobalRequestProcessor,name=\"http-nio-8080\"",errorCount]複製代碼
# java -jar /root/cmdline-jmxclient-0.10.3.jar - 127.0.0.1:9080 java.lang:type=MemoryPool,name=PS\ Eden\ Space Usag
11/11/2016 10:03:37 +0800
org.archive.jmx.Client java.lang:name=PS Eden Space,type=MemoryPool is not a registered bean複製代碼
(2)經過命令行查看:直接使用java -jar cmdline-jmxclient-0.10.3.jar – 127.0.0.1:8090命令能夠獲取全部的Mbean信息,輸出太多這裏就不貼輸出結果了。我經過grep命令獲取全部內存池的監控信息方式以下。tomcat
[root@tomcat-01 ~]# java -jar cmdline-jmxclient-0.10.3.jar - 127.0.0.1:8090 | grep MemoryPool
java.lang:name=Compressed Class Space,type=MemoryPool
java.lang:name=Metaspace,type=MemoryPool
java.lang:name=PS Old Gen,type=MemoryPool
java.lang:name=PS Eden Space,type=MemoryPool
java.lang:name=PS Survivor Space,type=MemoryPool
java.lang:name=Code Cache,type=MemoryPool複製代碼
[root@tomcat-01 ~]# java -jar cmdline-jmxclient-0.10.3.jar - 127.0.0.1:8090 java.lang:name=PS\ Eden\ Space,type=MemoryPool
Attributes:
Usage: Usage (type=javax.management.openmbean.CompositeData)
PeakUsage: PeakUsage (type=javax.management.openmbean.CompositeData)
MemoryManagerNames: MemoryManagerNames (type=[Ljava.lang.String;)
UsageThreshold: UsageThreshold (type=long)
UsageThresholdExceeded: UsageThresholdExceeded (type=boolean)
UsageThresholdCount: UsageThresholdCount (type=long)
UsageThresholdSupported: UsageThresholdSupported (type=boolean)
CollectionUsageThreshold: CollectionUsageThreshold (type=long)
CollectionUsageThresholdExceeded: CollectionUsageThresholdExceeded (type=boolean)
CollectionUsageThresholdCount: CollectionUsageThresholdCount (type=long)
CollectionUsage: CollectionUsage (type=javax.management.openmbean.CompositeData)
CollectionUsageThresholdSupported: CollectionUsageThresholdSupported (type=boolean)
Valid: Valid (type=boolean)
Name: Name (type=java.lang.String)
Type: Type (type=java.lang.String)
ObjectName: ObjectName (type=javax.management.ObjectName)
Operations:
resetPeakUsage: resetPeakUsage
Parameters 0, return type=void複製代碼
[root@tomcat-01 ~]# java -jar cmdline-jmxclient-0.10.3.jar - 127.0.0.1:8090 java.lang:name=PS\ Eden\ Space,type=MemoryPool Usage
12/03/2016 08:33:58 +0800 org.archive.jmx.Client Usage:
committed: 712507392
init: 537395200
max: 712507392
used: 396006304複製代碼
文章系做者原創投稿,做者:西門飛冰,一名90後it男,一直在北京工做,熱愛運動,熱愛冒險,熱愛旅行。 原文:西門飛冰的博客-專一於Linux運維 » zabbix監控tomcat(包含jvm監控)。
在 民工哥技術之路 微信公衆號對話框回覆關鍵字:1024 能夠獲取一份最新整理的技術乾貨。
bash