JMX(Java Management Extensions,即Java管理擴充)是java平台上為應用程式、裝置、系統等植入管理功能的架構。
JMX工作原理:
zabbix_server想知道一台主機上的特定的JMX值時,它向Zabbix-Java-gateway詢問,而Zabbix-Javagateway使用“JMXmanagementAPI”去查詢特定的應用程式,而前提是應用程式這端在開啟時需要“-Dcom.sun.management.jmxremote”參數來開啟JMX查詢就行了。
Zabbixserver有一個特殊的程序用來連接配接Java-gateway叫StartJavaPollers;Java-gateway通過配置檔案中START_POLLERS參數設定啟動多個線程,在zabbix伺服器這邊如果一個連接配接所用時間超過Timeout,将會被中斷,但是Java-gateway将繼續從JMXcounter取資料。是以 StartJavaPollers設的值要小于等于START_POLLERS設定的值。 Zabbix-Java-gateway就相當于一個代理。
配置JMX監控步驟:
1、安裝Zabbix-Java-Gateway
2、配置zabbix_java_gateway.conf參數
3、配置zabbix_server.conf參數
4、Java應用開啟JMX協定
5、Zabbix Web配置JMX監控的Java應用
安裝Zabbix-Java-Gateway
源碼安裝的時候,加--enable-java參數,依賴關系有java、java-devel軟體包。
RPM方式安裝指令如下:
1
<code># yum -y install zabbix-java-gateway</code>
配置zabix_java_gateway.conf檔案
2
3
4
5
<code>[root@dnsserver zabbix]</code><code># grep -v '^#' /etc/zabbix/zabbix_java_gateway.conf </code>
<code>LISTEN_IP=</code><code>"127.0.0.1"</code>
<code>LISTEN_PORT=10052</code>
<code>PID_FILE=</code><code>"/var/run/zabbix/zabbix_java.pid"</code>
<code>START_POLLERS=5</code>
配置zabbix_server.conf檔案
<code>StartJavaPollers=5 </code>
<code>JavaGateway=127.0.0.1</code>
<code>JavaGatewayPort=10052</code>
注意:如果要使用JMX監控,那麼必須滿足
StartJavaPollers <= START_POLLERS
如果不滿足這個條件,就會出現Zabbix-Server向Zabbix-Java-Gateway送出請求後無響應的情況。
重新開機zabbix-server服務和zabbix-java-gateway服務
<code>service zabbix-java-gateway restart</code>
使用JMX監控Tomcat:
1、修改tomcat端的配置檔案:
編輯TOMCAT_HOME/bin/catalina.sh,如果是監控本地的tomcat,則加入以下指令: 千萬注意複制粘貼過去後換行符的問題
<code>CATALINA_OPTS=</code><code>"-Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.port=12345"</code>
監控遠端主機上的Tomcat執行個體:
<code>CATALINA_OPTS="-Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.authenticate=</code><code>false</code> <code>-Dcom.sun.management.jmxremote.ssl=</code><code>false</code> <code>-Dcom.sun.management.jmxremote.port=12345 -Djava.rmi.server.</code><code>hostname</code><code>=10.10.10.202</code>
IP位址填寫遠端主機的IP位址。
修改Tomcat配置檔案後,記得重新開機Tomcat。
注意:在測試環境中,發現啟動tomcat總是失敗,原因是主機名無法被解析,導緻tomcat無法啟動。報錯資訊如下:
<code>Error: Exception thrown by the agent : java.net.MalformedURLException: Local host name unknown: java.net.UnknownHostException: dnsserve</code>
<code>r: dnsserver: unknown error</code>
解決辦法:編輯/etc/hosts檔案,将hostname寫到該檔案中
<code>127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 dnsserver</code>
<code>::1 localhost localhost.localdomain localhost6 localhost6.localdomain6</code>
添加tomcat 的JMX監控,并連結JMX的監控模闆
<a href="http://s1.51cto.com/wyfs02/M00/82/C4/wKioL1dgxtnDS9nlAANWwZCNKx0300.png" target="_blank"></a>
<a href="http://s3.51cto.com/wyfs02/M01/82/C4/wKioL1dgx5WQ5TXiAAVsDtV66ZE828.png" target="_blank"></a>
檢視是否擷取到監控資料
<a href="http://s2.51cto.com/wyfs02/M00/82/C6/wKiom1dgxw3i2f1sAAIL77wq-x8162.png" target="_blank"></a>
指令行擷取JMX監控資料:
要先下載下傳 cmdline-jmxclient-0.10.3.jar工具
[root@dnsserver srv]# java -jar cmdline-jmxclient-0.10.3.jar - 127.0.0.1:12345 java.lang:type=Memory NonHeapMemoryUsage
06/15/2016 11:32:34 +0800 org.archive.jmx.Client NonHeapMemoryUsage:
committed: 28835840
init: 2555904
max: -1
used: 27741272
本文轉自 曾哥最愛 51CTO部落格,原文連結:http://blog.51cto.com/zengestudy/1789425,如需轉載請自行聯系原作者