zabbix使用jmx監控tomcat


 

監控原理:當Zabbix-Server需要知道java應用程序的某項性能的時候,會啟動自身的一個Zabbix-JavaPollers進程去連接Zabbix-JavaGateway請求數據,而ZabbixJavagateway收到請求后使用"JMXmanagementAPI"去查詢特定的應用程序,而前提是應用程序這端在開啟時需要"-Dcom.sun.management.jmxremote"參數來開啟JMX遠程查詢就行。Java程序會啟動自身的一個簡單的小程序端口12345向Zabbix-JavaGateway提供請求數據。

從上面的原理圖中可以看出,配置Zabbix監控Java應用程序的關鍵點在於:配置Zabbix-JavaGateway、讓Zabbix-Server能夠連接Zabbix-JavaGateway、Tomcat開啟JVM遠程監控功能等

1、zabbix server安裝Zabbix-Java-gateway

Java-gateway不安裝在zabbix-server上也可以,僅僅是作為一個采集器!

[root@zabbix ~]# yum install -y zabbix-java-gateway

[root@zabbix ~]# java -version

openjdk version "1.8.0_171"

OpenJDK Runtime Environment (build 1.8.0_171-b10)

OpenJDK 64-Bit Server VM (build 25.171-b10, mixed mode)

2、配置zabbix sever端

[root@zabbix ~]# vim /etc/zabbix/zabbix_java_gateway.conf
LISTEN_IP="0.0.0.0"    #
監聽地址
LISTEN_PORT=10052    #
監聽端口
PID_FILE="/var/run/zabbix/zabbix_java.pid"#PID_FILE
文件
START_POLLERS=5        #
開啟的工作線程數

[root@zabbix ~]# systemctl start zabbix-java-gateway.service

[root@zabbix ~]# systemctl enable zabbix-java-gateway.service

[root@zabbix ~]# vim /etc/zabbix/zabbix_server.conf

JavaGateway=127.0.0.1        #java_gateway的地址

JavaGatewayPort=10052    #java_gateway的端口

StartJavaPollers=5        #采集進程數,與java_gateway配置相同

[root@zabbix ~]# systemctl restart zabbix-server.service        #重啟zabbix-server

注意:如果是編譯安裝zabbix server需要加上--enable-java以支持jmx監控,如果之前的zabbix server沒加,那么請重新編譯安裝,參考編譯參數

./configure --prefix=/user/local/zabbix --enable-server --enable-agent --enable-java --enable-ipv6 --with-mysql=/application/mysql-5.5.49/bin/mysql_config --with-net-snmp --with-libcurl --with-libxml2 --with-openipmi --with-unixodbc --with-openssl

 

3、客戶端配置

配置tomcat開啟jmx remote,配置zabbix-agent客戶端Tomcat JMX,即tomcat的遠程調用腳本

[root@tomcat ~]# vim /application/tomcat/bin/catalina.sh

#!/bin/sh

CATALINA_OPTS="-Dcom.sun.management.jmxremote         #開啟遠程監控

-Dcom.sun.management.jmxremote.authenticate=false         #關閉權限認證

-Dcom.sun.management.jmxremote.ssl=false                 #遠程ssl驗證為false

-Djava.rmi.server.hostname=192.168.1.7                    #部署了tomcat的主機地址

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

[root@tomcat ~]# vim /etc/hosts        #設置本地host解析,不然會報錯,12345端口無法查看,報錯信息可在catalina日志中查看

10.0.0.7     tomcat

[root@tomcat ~]# /application/tomcat/bin/shutdown.sh        #重啟tomcat

[root@tomcat ~]# /application/tomcat/bin/startup.sh

[root@tomcat ~]# netstat -lntup

Active Internet connections (only servers)

Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name

tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN 2647/mysqld

tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1774/sshd

tcp6 0 0 :::8009 :::* LISTEN 5946/java

tcp6 0 0 :::55404 :::* LISTEN 5946/java

tcp6 0 0 :::8080 :::* LISTEN 5946/java

tcp6 0 0 :::22 :::* LISTEN 1774/sshd

tcp6 0 0 :::12345 :::* LISTEN 5946/java

tcp6 0 0 :::53819 :::* LISTEN 5946/java

tcp6 0 0 127.0.0.1:8005 :::* LISTEN 5946/java

udp6 0 0 :::5353 :::* 5946/java

udp6 0 0 :::33848 :::* 5946/java

4、測試

4.1 Jconsole測試

JConsole是jdk安裝之后在windows下的一款監控測試工具,首先下載windows下的jdk應用程序並安裝,安裝好后在安裝路徑下即C:\Program Files\Java\jdk1.8.0_171\bin找到jconsole程序並打開

新建連接

連接成功后界面如下

查看某個監控項的具體信息,監控對象的名字ObjectName與zabbix中的對應,可以利用此在zabbix中自定義監控項,創建模板

4.2 命令行測試

在有java環境的機器上下載cmdline-jmxclient-0.10.3.jar包進行測試

[root@zabbix tools]# java -jar cmdline-jmxclient-0.10.3.jar - 192.168.1.7:12345 java.lang:type=Memory NonHeapMemoryUsage

06/26/2018 14:44:55 +0800 org.archive.jmx.Client NonHeapMemoryUsage:

committed: 117006336

init: 2555904

max: -1

used: 113687744

成功取到值!

 

5、在zabbix的web界面添加主機

添加主機,選擇jmx接口,輸入tomcat主機的ip地址

為主機鏈接模板,模板選擇需要適合當前的tomcat版本,其中的Template JMX Tomcat模板較老,不適合監控tomcat8.0以上版本,導入新版模板

稍等片刻等待主機的jmx連接成功變為綠色

5、查看最新數據

 

至此,zabbix監控tomcat完成!

 

博主原創文章,轉載請務必注明出處


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM