天天看點

Zabbix3.2.6之通過JMX監控Tomcatrpm -ivh jdk-8u45-linux-x64.rpmvim /etc/profile.d/java.shsource /etc/profile.d/java.shjava -versioncd /usr/local/zabbix/sbin/zabbix_java/vim settings.sh

JMX的全稱是Java Management Extensions,即Java管理擴充。Java程式會開放一些端口,用來擷取運作狀況。在Zabbix 1.8以前,隻能使用Zapcat來監控JMX,并需要修改源代碼來支援,非常麻煩。另一種方法是使用jmx-cmd-client,他的作用是從指令行去擷取JMX資訊,可以在它的上層包裝一個程式,用來擷取JMX資料。

從Zabbix 2.0開始,内置了監控JMX的功能,叫做“Zabbix Java Gateway”,在Zabbix Server和Zabbix Proxy上啟動名為“Zabbix Java Gateway”的程序,當需要擷取JMX資料時,Zabbix Server會“問”JMX Gateway,然後JMX Gateway根據JMX管理API去查詢需要的資料。在使用時,Java程式不需要在代碼中新增任何東西,隻需要在啟動的時候加上一些JVM參數,使得它可以支援使用端口監控JMX。

wKiom1loJDSiVsf-AACrrkazRAg707.jpg

一、Server端安裝配置JDK

export JAVA_HOME=/usr/java/default

export PATH=$JAVA_HOME/bin:$PATH

export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

系統配置立即生效

檢視JAVA版本

java version "1.8.0_45"

Java(TM) SE Runtime Environment (build 1.8.0_45-b14)

Java HotSpot(TM) 64-Bit Server VM (build 25.45-b02, mixed mode)

二、Zabbix Server的編譯

1、編譯zabbix的時候需要添加參數--enable-java

2、備份zabbix_server.conf和zabbix_agentd.conf檔案,重新編譯安裝zabbix

cd zabbix-3.2.6

./configure \

--prefix=/usr/local/zabbix \

--sysconfdir=/etc/zabbix \

--enable-server \

--enable-agent \

--with-mysql \

--with-net-snmp \

--with-libcurl \

--with-ssh2 \

--with-openssl \

--enable-java

請自行查閱解決依賴關系。

三、Java gateway的配置

1、修改zabbix_java相關選項

zabbix_java的目錄結構如下

zabbix_java/

├── bin

│ └── zabbix-java-gateway-3.2.6.jar

├── lib

│ ├── android-json-4.3_r3.1.jar

│ ├── logback-classic-0.9.27.jar

│ ├── logback-console.xml

│ ├── logback-core-0.9.27.jar

│ ├── logback.xml

│ └── slf4j-api-1.6.1.jar

├── settings.sh

├── shutdown.sh

└── startup.sh

設定java gateway的監聽端口以及程序個數

LISTEN_IP="0.0.0.0"

LISTEN_PORT=10052

PID_FILE="/tmp/zabbix_java.pid"

START_POLLERS=5

其中 LISTEN_PORT 和 LISTEN_IP 可以不配置,zabbix_java 會采用預設值。但是 PID_FILE 和 START_POLLERS 必須配置,尤其主意 START_POLLERS,若不配置 zabbix_java 依舊可以啟動但是是不工作的。

2、修改zabbix_server檔案

既然java gateway運作了,你要告訴zabbix server去×××java gateway,在配置檔案中開啟如下幾項參數。

JavaGateway=127.0.0.1

JavaGatewayPort=10052 #和上面的LISTEN_PORT一樣

StartJavaPollers=3 #這個數值要小于上面的START_POLLERS

這三項都需要配置,其中StartJavaPollers會被視為開關性質的參數。0或者未配置将被系統認為不具有Java資訊抓取能力。這點在Zabbix JMX Monitoring Wiki中未提及,但是實際效果就是這樣。同時Zabbix Proxy的配置檔案解析中也有介紹此參數的含義。

3、啟動zabbix_java

找到zabbix_java目錄路徑,然後執行指令./startup.sh,并重新開機zabbix server。

自此Server端已經配置完成,下面配置Agent端的設定。

四、Agent端配置

1、修改tomcat/bin/catalina.sh檔案

修改catalina.sh檔案,添加

CATALINA_OPTS="-Xms1024m -Xmx1024m 

-XX:NewRatio=4 

-XX:PermSize=192m 

-XX:MaxPermSize=192m 

-Xss256k 

-XX:SurvivorRatio=4

-Dcom.sun.management.jmxremote

-Dcom.sun.management.jmxremote.authenticate=false #不進行驗證

-Dcom.sun.management.jmxremote.port=12345 #jmx遠端監控端口

-Dcom.sun.management.jmxremote.ssl=false 

-Djava.rmi.server.hostname=10.0.1.13" #10.0.0.15是Agent的本地IP

就這種方式而言,需要注意的是catalina.sh中提供的預設變量名JAVA_OPTS和CATALINA_OPTS。由于JAVA_OPTS所添加的參數會在tomcat開啟和關閉時都運作,是以如果你把 -Dcom.sun.management.jmxremote.port=12345寫在JAVA_OPTS中,就會在關閉tomcat時出現如下錯誤,進而無法關閉。

Error: Exception thrown by the agent : java.rmi.server.ExportException : Port

already in use: 12345;nested exception is:

java.net.BindException: Address already in use: JVM_Bind

而CATALINA_OPTS隻會在開啟tomcat的時候運作,是以應該将這些配置寫在CATALINA_OPTS中。

五、伺服器端自定義監控項

Java gateway已經運作,Zabbix Server也知道去×××它,Agent Tomcat在啟動的時候也支援了JMX遠端監控,那下面我們就改進行一下WEB頁面的設定了。

1、添加主機的地方填寫如下

wKioL1lnOoORA0nbAAD4IUKDHkE543.jpg

wKiom1lnOoORR1zKAAC6xTGxl9w527.jpg

2、我們切換到Items可以自定義要監控的key

wKiom1lnOqexFqdwAADuk1D9B3U919.jpg

3、配置OK狀态

wKioL1lnPMDjEKz9AACm_FQ_M8M880.jpg

4、導入自定義模闆

zabbix自帶的JMX監控tomcat的參數比較少,而且感覺監控的數值意義不是很大,我再附件上傳了我使用的自定義JVM一些參數的模闆,大家可以直接導入使用,效果如下。

wKioL1lnQeODBwcjAAEzIMH2nBM687.jpg

wKioL1lnQebD-s0xAAIWccJqqOc571.jpg

參考文檔:

<a href="https://www.zabbix.com/documentation/3.2/manual/config/items/itemtypes/jmx_monitoring">https://www.zabbix.com/documentation/3.2/manual/config/items/itemtypes/jmx_monitoring</a>

<a href="https://www.zabbix.com/documentation/3.2/manual/concepts/java">https://www.zabbix.com/documentation/3.2/manual/concepts/java</a>

<a href="http://tomcat.apache.org/tomcat-7.0-doc/monitoring.html">http://tomcat.apache.org/tomcat-7.0-doc/monitoring.html</a>

如果想詳細了解,搭建請看上面的官方文檔講解。

     本文轉自1321385590 51CTO部落格,原文連結:http://blog.51cto.com/linux10000/2063514,如需轉載請自行聯系原作者

下一篇: linux-iptables