天天看點

14、Zabbix如何使用JMX監控

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 &lt;= 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,如需轉載請自行聯系原作者