Zabbix利用JMX監控多實例Tomcat運行狀態
環境介紹:
Centos 6.5
Zabbix 2.2.15
Tomcat 7.0.68
監控JMX配置步驟
1.在zabbix服務器上安裝配置zabbix-java-gateway,並且配置相關參數。
2.配置tomcat服務器,JMX服務相關參數,上傳依賴包
3.zabbix web端添加監控
4.啟動tomcat服務,查看zabbix web端監控運行狀態,排錯.
5.自定義圖形和監控項
一.Zabbix-java-gateway配置
1.安裝zabbix-java-gateway
yum -y install zabbix-java-gateway
2.配置zabbix-java-gateway
grep "^[A-Z]" /etc/zabbix/zabbix_java_gateway.conf
LISTEN_IP="0.0.0.0" #監聽本機所有ip LISTEN_PORT=10052 #在10052端口提供服務 PID_FILE="/var/run/zabbix/zabbix_java.pid" START_POLLERS=5
3.啟動服務
service zabbix-java-gateway start
4.配置zabbix-server
grep "^[A-Z]" /etc/zabbix/zabbix_server.conf|grep Java
JavaGateway=127.0.0.1 #JavaGateway所在服務器的IP JavaGatewayPort=10052 #JavaGateway的默認端口 StartJavaPollers=5 #JVM進行監控輪詢實例數,默認是0
5.重啟zabbix-server
service zabbix-server restart
6.查看監聽端口
二.Tomcat配置
1.配置catalina.sh
vim /apache-tomcat-7.0.68/bin/catalina.sh
CATALINA_OPTS="$CATALINA_OPTS -Dfile.encoding=utf-8 -Dcom.sun.management.jmxremote #開啟遠程 -Dcom.sun.management.jmxremote.authenticate=false #免密認證 # -Dcom.sun.management.jmxremote.port=12345 #這裏不需要這行,一會兒說明原因 -Dcom.sun.management.jmxremote.ssl=false -Djava.rmi.server.hostname=192.168.66.22" #要監控的tomcat主機ip
2.配置server.xml
vim /m.aaa.com/conf/server.xml (註意,這裏是實例裏面的配置文件)
在任意位置添加如下文字,意思是遠程連接端口是12345,獲取數據端口是123456,如果有多實例,全部都要加這行文字,端口數字不同即可
<Listener className="org.apache.catalina.mbeans.JmxRemoteLifecycleListener" rmiRegistryPortPlatform="12345" rmiServerPortPlatform="12346"/>
3.開放指定端口
iptables -I INPUT -p tcp -m multiport --dports 12345,12346 -j ACCEPT
4.下載支持的jar包
鏈接:http://down.51cto.com/data/2448735
裏面包含兩個jar包,catalina-jmx-remote.jar和cmdline-jmxclient-0.10.3.jar 還有一個監控模板
catalina-jmx-remote.jar存放位置:/apache-tomcat-7.0.68/lib/
cmdline-jmxclient-0.10.3.jar 這個jar是用來測試連通情況的,zabbix和tomcat服務器上都要放一個
三.Zabbix web監控配置
1.添加JMX介面,這裏添加的端口號是遠程連接端口號
2.添加監控模板
3.監控項添加完後,JMX圖標顯示紅色,因為tomcat服務還沒有起
4.多實例監控,進入主機-項目進行配置,在server.xml中指定的什麽端口,這裏就選什麽端口
四.啟動tomcat服務,查看zabbix web端監控運行狀態,排錯
- 在zabbix服務器端嘗試獲取數據,顯示如下數據連接正確
java -jar cmdline-jmxclient-0.10.3.jar - 192.168.66.22:12345 java.lang:type=Memory NonHeapMemoryUsage
- 在tomcat服務器端顯示使用12346進行連接
如果看者嚴格按照上面的配置操作,這時zabbix服務web端JMX圖標已經顯示綠色,如果還是紅色,請參考下面的提示排錯
1.java.rmi.ConnectException: Connection refused to host: 192.168.66.22; nested exception is:
java.net.ConnectException: Connecti
錯誤原因:只在catalina.sh中配置了一個遠程端口
還記得上面我在/apache-tomcat-7.0.68/bin/catalina.sh有一行註釋掉了麽,在這個文件中不能指定端口號,否則就會報如上錯誤
2.java.io.IOException: Failed to retrieve RMIServer stub: javax.naming.ServiceUnavailableException [Root exception is java.rmi.Con
錯誤原因:沒有配置遠程端口
光刪除掉上面的端口號還不夠,還需要在/m.aaa.com/conf/server.xml中添加相應的端口配置
3.java.lang.ClassNotFoundException: org.apache.catalina.mbeans.JmxRemoteLifecycleListener
錯誤原因:這是tomcat報錯,缺少支持的jar包catalina-jmx-remote.jar
請往上翻,找51cto的下載鏈接,下載相關jar包
4.Catalina:type=ThreadPool,name=http-8080
錯誤原因:支持的name裏沒有http-8080
查看支持哪些類型和調用
java -jar cmdline-jmxclient-0.10.3.jar - 192.168.66.22:12345
上面報錯的解決方法是:
1.java -jar cmdline-jmxclient-0.10.3.jar - 192.168.66.22:12347|grep Thread
2.配置模板
3.點擊進入修改鍵值
4.改完後是這樣的
5.目標是全綠
Zabbix利用JMX監控多實例Tomcat運行狀態