Zabbix---通過JMX監控 java實例運行


如何使用zabbix監控tomcat呢?
 

一、簡介

1、什么是JMX?

JMX的全稱是Java Management Extensions,即Java管理擴展(Java Management Extensions,即Java管理擴展,是一個為應用程序、設備、系統等植入管理功能的框架,JMX可以跨越一系列異構操作系統平台、系統體系結構和網絡傳輸協議,靈活的開發無縫集成的系統、網絡和服務管理應用)。Java程序會開放一些端口,用來獲取運行狀況。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。

2、監控原理

 

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

3、監控架構

二、配置Zabbix 通過JMX監控 java實例運行

實驗環境

 
主機名
ip
服務
版本
server1
172.25.1.1
zabbix-server,zabbix-web,mariadb-server,zabbix-java-gateway
centos7
server2
172.25.1.2
zabbix-agent,tomcat
centos7
 

實驗

在web界面查看,發現server2上未開啟監控JMX功能
 

1、配置設置介紹

1、zabbix-java-gateway主機設置
  • 安裝 zabbix-java-gateway程序包,啟動服務;
[ root@sunli.com ~]# yum -y install zabbix-java-gateway
2、zabbix-server端設置(需要重啟服務)
JavaGateway=172.16.0.70 #即 zabbix server IP地址
JavaGatewayPort=10052
StartJavaPollers=5 #監控項
3、tomcat主機設置
  • 監控tomcat:
[ root@sunli.com ~]# vim /etc/sysconfig/tomcat
CATALINA_OPTS="-Djava.rmi.server.hostname=TOMCAT_SERVER_IP 
-Djavax.management.builder.initial= 
-Dcom.sun.management.jmxremote=true 
-Dcom.sun.management.jmxremote.port=12345 
-Dcom.sun.management.jmxremote.ssl=false 
-Dcom.sun.management.jmxremote.authenticate=false" #啟用JVM接口,默認沒有啟用
 
jmx[object_name,attribute_name]
object name # 它代表MBean的對象名稱
attribute name - # 一個MBean屬性名稱,可選的復合數據字段名稱以點分隔
示例:
jmx["java.lang:type=Memory","HeapMemoryUsage.used"
  • 注意: 如果是手動安裝的tomcat 需要編輯 catalina.sh 文件 ,重啟 tomcat

2、配置JVM接口監控

1、安裝配置 tomcat

1、下載安裝tomcat,主要是用JVM
[ root@sunli.com ~]# yum -y install java-1.8.0-openjdk-devel tomcat-admin-webapps tomcat-docs-webapp
2、加CATALINA_OPTS= #啟用JVM接口,默認沒有啟用
[ root@sunli.com ~]# vim /etc/sysconfig/tomcat
CATALINA_OPTS="-Djava.rmi.server.hostname=192.168.30.2 -Djavax.management.builder.initial= -Dcom.sun.management.jmxremote=true -Dcom.sun.management.jmxremote.port=12345 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false"
3、開啟服務
[ root@sunli.com ~]# systemctl start tomcat

2、在 zabbix-server 端安裝配置 java-gateway

1、安裝配置 java-gateway
[ root@sunli.com ~]# yum -y install zabbix-java-gateway
[ root@sunli.com ~]# vim /etc/zabbix/zabbix_java_gateway.conf # 安裝完后,會生成一個java_gateway 的配置文件
LISTEN_IP="0.0.0.0" #監聽服務器地址
LISTEN_PORT=10052 #監聽zabbix_java進程的端口,默認是10052
PID_FILE="/tmp/zabbix_java.pid" #zabbix_java的pid路徑
START_POLLERS=5 #zabbix_java的進程數
TIMEOUT=10 #zabbix_java的超時時間
[ root@sunli.com ~]# systemctl start zabbix-java-gateway.service # 可不用修改,直接開啟服務
2、修改 server 配置開啟 java-gateway 的配置
[ root@sunli.com ~]# vim /etc/zabbix/zabbix_server.conf
JavaGateway=192.168.30.107
JavaGatewayPort=10052
StartJavaPollers=5 # 打開5個監控項
3、 重啟zabbix-server 服務
[ root@sunli.com ~]# systemctl restart zabbix-server

3、在node2 主機上添加JMX接口,實驗模板

1、添加JMX接口
2、在 node2 上連接 tomcat JMX 模板
3、隨便查看一個監控項 item

4、自己定義一個堆內存使用的監控項,基於JVM接口(沒必要,使用模板就好)

 


免責聲明!

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



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