±à¼ÍƼö: |
±¾ÎÄÖ÷Òª½éÉÜÁË¼à¿Ø»·¾³´î½¨£¬¼à¿ØÊý¾Ý²É¼¯ÒÔ¼°½â¾ö˼·µÈÏà¹ØÎÊÌ⣬ϣÍû¶Ô´ó¼ÒÓÐËù°ïÖú¡£
±¾ÎÄÀ´×ÔÓÚcsdn£¬ÓÉ»ðÁú¹ûÈí¼þAlice±à¼¡¢ÍƼö¡£ |
|
1.ǰÑÔ£º
ÎÒÃÇµÄ¼à¿ØÏµÍ³ÊÇzabbix£¬×î½ü¸Õ×öÍêjvm»¹ÓÐtomcatµÄ¼à¿Ø£¬ÐèҪͲÛÒÔÏÂÄÚÈÝ£º
zabbix¹Ù·½ÌṩµÄjvmºÍtomcat¼à¿ØÄ£°æ£¬´æÔÚitemÊéд¸ñʽµÄ¿Ó£¬µ¼ÖºܶàÄÚÈÝÎÞ·¨»ñÈ¡µ½¼à¿Ø¡£
ÍøÓÑдµÄzabbix¼à¿ØjavaÎÄÕ£¬99%¾ÍÖ»Óл·¾³µÄ´î½¨£¬Ã»ÓÐzabbix item¼üÖµ£¬ËùÒÔ»·¾³¼à¿ØÉÏÁË£¬item¼üÖµ²»ÖªµÀÔõôд¡£
±¾ÎÄ¼à¿ØjvmÄÚÈÝÈçÏ£º
ÄÚ´æÊ¹ÓÃ״̬£º¶ÑÄڴ棨Heap memory£©ºÍ·Ç¶ÑÄڴ棨No Heap memory£©£¬°üÀ¨ÒÑÓÃÖµ¡¢×î´óÖµ¡¢ÒÑÌá½»£»
¶ÑÄÚ´æÄÚ´æ³Ø£ºÐÂÉú´ú£¨eden space£©£¬survivor space,ÀÏÄê´ú£¨old gen£©µÄÄÚ´æÊ¹ÓÃ״̬£»
·Ç¶ÑÄÚ´æÄÚ´æ³Ø£º´úÂ뻺´æ£¨Code cache£©£¬Ôª¿Õ¼ä£¨meta space£©£¬Ñ¹ËõÀà¿Õ¼ä£¨compressed
class space£©£»
Àà¼ÓÔØ£º¼ÓÔØ×ÜÊý£¬ÒѼÓÔØ£¬ÒÑÐ¶ÔØ¡£
JavaỊ̈߳º×Ü¿ªÆôỊ̈߳¬»î¶¯Ị̈߳¬Ï̷߳åÖµ¡£
±¾ÎÄ¼à¿ØtomcatÄÚÈÝÈçÏ£º
TomcatÇëÇóÊý£º°üÀ¨Ã¿ÃëÇëÇóÊý£¬Ã¿Ãë³ö´íÊý£»
TomcatÍøÂçÁ÷Á¿Í³¼Æ£º°üÀ¨½øÁ÷Á¿Í³¼Æ£¬³öÁ÷Á¿Í³¼Æ£»
TomcatỊ̈߳º°üÀ¨×î´óÏß³ÌÊý£¬µ±Ç°Ïß³ÌÊý£¬µ±Ç°·±Ã¦Ïß³ÌÊý¡£
ÎÒûÓÐÔÚzabbixÖÐÌí¼ÓÀ¬»ø»ØÊÕ£¨gc£©µÄ¼à¿Ø£¬¶øÊÇÔÚcatalinaÅäÖÃÀïÃæÌí¼ÓgcÈÕÊäÈëÀ´¸ø¿ª·¢½øÐзÖÎö£¬ÉèÖ÷½Ê½ÈçÏ¡£
CATALINA_OPTS=¡±-XX:ParallelGCThreads=4 -XX:+PrintGCDetails
-Xloggc:ÈÕÖ¾´æ·Å·¾¶¡±
¼à¿ØÐ§¹ûÈçÏ£º



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 |
2.1.Server¶ËÅäÖÃ
1¡¢ Zabbix server¶Ë°²×°java jdk»·¾³²¢¿ªÆôjavaGatewayÖ§³Öjava¼à¿Ø¡£
javaGateway ÆôÓ÷½Ê½ÈçÏ£º
Zabbixͨ¹ýrpm°ü°²×°£ºÖ»ÐèÒª°²×°zabbix-java-gateway°ü¼´¿É¡£
Zabbixͨ¹ý±àÒë°²×°£ºÔÚ±àÒëʱÐèÒª¼ÓÉÏ¡ªenable-javaÒÔÖ§³Öjmx¼à¿Ø£¬Èç¹û֮ǰû¼ÓÐèÒªÖØÐ±àÒë¡£
2¡¢ÐÞ¸Äzabbix-java-gatewayÅäÖÃÎļþ
[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 |
2.2.Tomcat·þÎñÆ÷ÅäÖÃ
1¡¢ÏÂÔØcatalina-jmx-remote.jar°ü£¬µ½tomcat°²×°Ä¿Â¼ÏµÄlibĿ¼
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
2¡¢ÐÞ¸Äcatalina.shÌí¼ÓÈçÏÂÄÚÈÝ
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" |
3¡¢ÖØÆôtomcat
4¡¢¼à¿Ø²âÊÔ
£¨1£©ÏÂÔØcmdline-jmxclient-0.10.3.jarÎļþ£¬ÏÂÔØµØÖ·http://crawler.archive.org/cmdline-jmxclient/downloads.html
£¨2£©±¾µØÖ´ÐÐÈçÏÂÃüÁî²é¿´tomcatµÄ¶ÑÄÚ´æÐÅÏ¢
[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.¼à¿ØÊý¾Ý²É¼¯
3.1.¶ÑÄÚ´æ
Tomcat±¾µØ²é¿´¶ÑÄÚ´æÐÅÏ¢£º
[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"] |
Ò»¸öÍêÕûµÄzabbix itemÌîд·½Ê½ÈçÏÂ,²»Í¬ÄÚÈÝÌîд²»Í¬µÄ¼üÖµ¼´¿É£º

3.2.ÄÚ´æ³Øeden space:
Tomcat±¾µØ²é¿´eden space£º
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] |
3.3.ÄÚ´æ³Øsurvivor space:
Tomcat±¾µØ²é¿´Survivor spaceÇøÓò£º
java -jar cmdline-jmxclient-0.10.3.jar
- 127.0.0.1:8090 java.lang:type=MemoryPool,name=PS\
Survivor\ Space Usage |
zabbix¼à¿ØSurvivor ¼üÖµ£º
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] |
3.4.ÄÚ´æ³Øold gen:
Tomcat±¾µØ²é¿´old genÇøÓòʹÓãº
java -jar cmdline-jmxclient -0.10.3.jar
- 127.0.0.1:8090 java.lang:name =PS\ Old\ Gen,type=MemoryPool
Usage
|
zabbix¼à¿Øold gen¼üÖµ£º
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]
|
3.5.·Ç¶ÑÄÚ´æ:
Tomcat ±¾µØ²é¿´·Ç¶ÑÄÚ´æÊ¹Óãº
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"] |
3.6.ÄÚ´æ³Ømeta space:
Tomcat ±¾µØ²é¿´meta spaceÇøÓòʹÓãº
java -jar cmdline-jmxclient-0.10.3.jar
- 127.0.0.1:8090 java.lang:type=MemoryPool,name=Metaspace
Usage |
zabbix¼à¿Ømete spaceÇøÓò¼üÖµ
jmx["java.lang:type=MemoryPool, name=Metaspace",Usage.committed]
jmx["java.lang:type=MemoryPool, name=Metaspace",Usage.used] |
3.7.ÄÚ´æ³Øcode cache:
Tomcat ±¾µØ²é¿´code cacheÇøÓòʹÓãº
java -jar cmdline- jmxclient-0.10.3.jar
- 127.0.0.1:8090 java.lang:type=MemoryPool,name=Code\
Cache Usage |
zabbix¼à¿Øcode cacheÇøÓòʹÓãº
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] |
3.8.ÄÚ´æ³Øcompressed class space:
Tomcat ±¾µØ²é¿´compressed class spaceÇøÓòʹÓãº
java -jar cmdline-jmxclient-0.10.3.jar
- 127.0.0.1:8090 java.lang:type=MemoryPool,name=Compressed\
Class\ Space Usage |
zabbix¼à¿Ø compressed class spaceÇøÓòʹÓüüÖµ£º
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] |
3.9.Àà¼ÓÔØ:
Tomcat±¾µØ²é¿´Àà¼ÓÔØÐÅÏ¢£º
¼ÓÔØ×ÜÊý£º 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
|
Zabbix¼à¿ØÀà¼ÓÔØ¼üÖµ£º
¼ÓÔØ×ÜÊý£º jmx["java.lang:type=
ClassLoading", "TotalLoadedClassCount"]
ÒѼÓÔØ£º jmx["java.lang:type= ClassLoading", "LoadedClassCount"]
ÒÑÐ¶ÔØ£º jmx["java.lang:type= ClassLoading",
"UnloadedClassCount"] |
3.10.javaỊ̈߳º
tomcat±¾µØ²é¿´javaỊ̈߳º
×Ü¿ªÆôỊ̈߳º 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
|
Zabbix¼à¿ØjavaÏ̼߳üÖµ£º
×Ü¿ªÆôỊ̈߳º jmx["java.lang:type=
Threading"," TotalStartedThreadCount"]
»î¶¯Ị̈߳º jmx["java.lang:type= Threading", "ThreadCount"]
Ï̷߳åÖµ£º jmx["java.lang:type= Threading", "PeakThreadCount"] |
3.11.tomcatỊ̈߳º
±¾µØ²é¿´tomcatÏß³ÌÐÅÏ¢£º
×î´óỊ̈߳º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
|
Zabbix¼à¿ØtomcatÏ̼߳üÖµ£º
×î´óỊ̈߳º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] |
3.12.ÍøÂçÁ÷Á¿£º
Tomcat±¾µØ²é¿´½ÓÊÕµÄ×Ö½Ú£º
½ÓÊÕµÄ×Ö½Ú£º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
|
Zabbix¼à¿Øtomcat½ÓÊÜ×Ö½Ú¼üÖµ£º
½ÓÊÕµÄ×Ö½Ú£ºjmx["Catalina:type
=GlobalRequestProcessor,name =\"http-nio-8080\"",bytesReceived]
·¢Ë͵Ä×Ö½Ú£ºjmx["Catalina:type =GlobalRequestProcessor,name
=\"http-nio-8080\"",bytesSent]
|
3.13.tomcatÇëÇ󣬳ö´íÇëÇó£º
tomcat±¾µØ²é¿´tomcatÇëÇóÊý£º
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
|
zabbix¼à¿ØtomcatÇëÇóÊý£º
tomcatÇëÇóÊý£º jmx["Catalina:type=
GlobalRequestProcessor,name= \"http-nio-8080\"",requestCount]
tomcat³ö´íÇëÇó£º jmx["Catalina:type= GlobalRequestProcessor,name=\"http-nio-8080\"",errorCount]
|
4.¹ØÓÚÍøÓÑÎÊÌâµÄ½â´ð
×î½üÓÐÍøÓÑÁªÏµÎÒ˵£¬¿´×ÅÎҵIJ©ÎĴÍêÁË»·¾³£¬»ñÈ¡²»µ½Êý¾Ý£¬ÎÒ°ïÖúÅŲéÁËһϣ¬ÕÒµ½ÁËÎÊÌâËùÔÚ£¬Ìش˼Ǽ¡£
ÍøÓѵı¨´íÈçÏ£º
# 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
|
4.1.½â¾ö˼·
Èç¹ûÄãʹÓÃÃüÁîÐÐ¼à¿Ø»ñÈ¡²»µ½Êý¾Ý£¬ÄÇô¾ÍÏÈʹÓÃjconsole¿´¿´ÓÐûÓÐÊý¾Ý£¬Èç¹ûjconsoleÓÐÊý¾Ý£¬ÄÇô¾ÍÍùÏ¿´£¬·´Ö®¼ì²éÄãµÄ»·¾³¡£
Èç¹ûjconsoleÓÐÊý¾Ý£¬µ«ÊÇÃüÁîÐÐûÓÐÊý¾Ý£¬ÄÇô¾ÍÊÇMbeanµÄObject Name»òÕßÊôÐÔÓÐÎÊÌâ£¬ÍøÓѶ¼ÊǸ´ÖÆÎҵ쬵«ÊÇ×Ô¼º±¾µØ»·¾³ºÍÎҵĻ·¾³²»Ò»ÑùËùÒÔµ¼Ö»ñÈ¡²»µ½Êý¾Ý£¬²éѯ×Ô¼ºµÄ±¾µØMbean·½·¨ÓÐÁ½ÖÖ£¬·Ö±ðÊÇͼÐκÍÃüÁîÐУ¬ÍøÓѵı¨´í˵ÊÂ×Ô¼ºµÄEden
Space¿Õ¼äÓÐÎÊÌ⣬ÄÇôÎÒ¾ÍÌù³öÀ´²é¿´±¾µØÄÚ´æ³ØµÄObject NameºÍÊôÐԵķ½·¨¡£
£¨1£©Í¨¹ýjconsole²é¿´£º

£¨2£©Í¨¹ýÃüÁîÐв鿴£ºÖ±½ÓʹÓÃjava -jar cmdline-jmxclient-0.10.3.jar
¨C 127.0.0.1:8090ÃüÁî¿ÉÒÔ»ñÈ¡ËùÓеÄMbeanÐÅÏ¢£¬Êä³öÌ«¶àÕâÀï¾Í²»ÌùÊä³ö½á¹ûÁË¡£ÎÒͨ¹ýgrepÃüÁî»ñÈ¡ËùÓÐÄÚ´æ³ØµÄ¼à¿ØÐÅÏ¢·½Ê½ÈçÏ¡£
[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
|
È»ºóÎÒÒª»ñÈ¡Eden SpaceµÄËùÓÐÊôÐÔÐÅÏ¢·½Ê½ÈçÏ£º£¨Ò»Ð©ÌØÊâ×Ö·ûÐèҪתÒ壩
[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 |
ÄÇôÎÒÃÇÔڲ鿴Eden Space¿Õ¼äµÄʹÓÃÐÅÏ¢¡£¾Í¿´µ½ÒѾ³öÀ´Êý¾ÝÁË
[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 |
|
|