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