zabbix使用jmx监控tomcat

本文详细介绍如何使用Zabbix监控Tomcat应用,包括配置JMX、Zabbix-JavaGateway及Zabbix-Server,确保高性能监控。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Java gateway简介

从Zabbix 2.0版本开始,以Zabbix守护进程的形式原生支持监控JMX程序出现了,它被称为Zabbix Java gateway。Zabbix gateway 是用Java语言写成。要查得一台主机特定的JMX计数器值,Zabbix server向Zabbix Java gateway发送请求,后者使用JMX管理API 去请求远程的有关应用。应用不需要额外安装软件,只需要启动时在命令行指定-Dcom.sun.management.jmxremote 即可。

Java gateway接受来自Zabbix Server或Agent的传入连接,且只能用作“被动proxy”。 与Zabbix proxy相反,它也可以从Zabbix agent调用(Zabbix agent不能被链接)。 每个Java gateway的访问都直接在Zabbix sever或 proxy配置文件中配置,因此每个Zabbix sever或Zabbix agent只能配置一个Java gateway。 如果一台主机具 JMX agent 类型的监控项和和其他类型的监控项,则只将JMX agent监控项传递到Java gateway进行检索。

当在Java gateway上的一个监控项值更新了,Zabbix server或agent将连接Java gateway请求查询该值,Java gateway会依次retrieves并传回到server或proxy。 同样的,Java gateway不会缓存任何值.

Zabbix sever或proxy具有连接到Java gateway特定类型的进程,由 START_POLLERS 选项控制。 在内部,Java gateway启动多个由该选项控制的线程。 在sever端,如果连接超过 Timeout 秒,则将终止,但Java gateway可能仍忙于从JMX计数器检索值。 为了解决这个问题,由于Zabbix 2.0.15,Zabbix 2.2.10和Zabbix 2.4.5在Java gateway中有TIMEOUT选项,允许为JMX网络操作设置超时。

Zabbix server或agent将尽可能地将请求集中到一个JMX目标(受监控项间隔影响),并将它们发送到单一连接中的Java gateway,以获得更好的性能。 建议 StartJavaPollers 小于或等于 START_POLLERS ,否则可能导致当连接Java gateway时而Java gateway没有多余的线程进行处理
Zabbix 的JMX监控架构
zaibbix Server–>Java gateway–>JMX counter

在这里插入图片描述
从上面的原理图中可以看出,配置Zabbix监控Java应用程序的关键点在于:配置Zabbix-JavaGateway、让Zabbix-Server能够连接Zabbix-JavaGateway、Tomcat开启JVM远程监控功能等

zabbix-server运行在10051端口,Zabbix-server要知道java应用程序的某项性能的使用时候 ,会启动自身的一个Zabbix-JavaPollers进程去链接zabbix-JavaGateway请求数据,而zabbix-Javagateway收到请求后并使用,使用"JMXmanagementAPI"去查询特定的应用程序。
Zabbix-server有一个特殊的进程用来连接Javagateway叫StartJavaPollers;Javagateway通过配置文件中START_POLLERS参数设置启动多个线程,在zabbix服务器这边如果一个连接所用时间超过Timeout,将会被中断,但是Javagateway将继续从JMXcounter取数据。所以StartJavaPollers设置的值要小于等于START_POLLERS设置的值。
zabbix-java-gateway工作在10052端口,Zabbix-Javagateway就相当于一个代理,它负责收集客户端tomcat数据。图中的12345端口是在配置tomcat时指定的,可是自定义。

一、配置JMX

修改tomcat配置文件/usr/local/tomcat/bin/catalina.sh

CATALINA_OPTS="${CATALINA_OPTS} -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.port=12345 -Djava.rmi.server.hostname=192.168.147.131"

解析

 -Dcom.sun.management.jmxremote  #启用远程监控JMX
 -Dcom.sun.management.jmxremote.authenticate=false #不使用用户名密码
 -Dcom.sun.management.jmxremote.ssl=false#不使用ssl认证
 -Dcom.sun.management.jmxremote.port=12345#默认启动的JMX端口号, 要和zabbix-server添加主机时候的端口一致即可
  -Djava.rmi.server.hostname=X.X.X.X#tomcat主机自己的IP地址, 不要写zabbix服务器的地址

重启tomcat

[root@centos7 lib]# su - tomcat -c "catalina.sh stop"
su: warning: cannot change directory to /home/tomcat: No such file or directory
Using CATALINA_BASE:   /usr/local/tomcat
Using CATALINA_HOME:   /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME:        /usr
Using CLASSPATH:       /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
[root@centos7 lib]# su - tomcat -c "catalina.sh start"
su: warning: cannot change directory to /home/tomcat: No such file or directory
Using CATALINA_BASE:   /usr/local/tomcat
Using CATALINA_HOME:   /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME:        /usr
Using CLASSPATH:       /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
Tomcat started.

查看端口信息,这时8080及12345端口已经开启。

[root@centos7 lib]# ss -ntl
State      Recv-Q Send-Q                                        Local Address:Port                                                       Peer Address:Port              
LISTEN     0      128                                                       *:111                                                                   *:*                  
LISTEN     0      128                                                       *:80                                                                    *:*                  
LISTEN     0      128                                                       *:22                                                                    *:*                  
LISTEN     0      100                                               127.0.0.1:25                                                                    *:*                  
LISTEN     0      128                                               127.0.0.1:6010                                                                  *:*                  
LISTEN     0      128                                               127.0.0.1:6011                                                                  *:*                  
LISTEN     0      128                                               127.0.0.1:6013                                                                  *:*                  
LISTEN     0      128                                                       *:10050                                                                 *:*                  
LISTEN     0      128                                               127.0.0.1:9000                                                                  *:*                  
LISTEN     0      50                                                       :::43277                                                                :::*                  
LISTEN     0      128                                                      :::111                                                                  :::*                  
LISTEN     0      100                                                      :::8080                                                                 :::*                  
LISTEN     0      128                                                      :::80                                                                   :::*                  
LISTEN     0      128                                                      :::22                                                                   :::*                  
LISTEN     0      50                                                       :::12345                                                                :::*                  
LISTEN     0      100                                                     ::1:25                                                                   :::*                  
LISTEN     0      128                                                     ::1:6010                                                                 :::*                  
LISTEN     0      128                                                     ::1:6011                                                                 :::*                  
LISTEN     0      128                                                     ::1:6013                                                                 :::*                  
LISTEN     0      128                                                      :::10050                                                                :::*                  
LISTEN     0      1                                          ::ffff:127.0.0.1:8005                                                                 :::*                  
LISTEN     0      100                                                      :::8009                                                                 :::*                  
LISTEN     0      50                                                       :::39146                                                                :::*                  

二、配置zabbix-server

1、安装zabbix-java-gateway。之前已经配置好了zabbix的yum仓库,所以直接yum安装。

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

2、配置zabbix_java_gateway.conf

[root@centos7 zabbix]# cat zabbix_java_gateway.conf 
LISTEN_IP="0.0.0.0"  //监听的地址默认是0.0.0.0,表示监听本机的所有地址
LISTEN_PORT=10052    //监听的端口
PID_FILE="/var/run/zabbix/zabbix_java.pid"  //指定pid文件
START_POLLERS=5   //启动的工作线程数量,默认是5个。这里配置和serve.conf一样
TIMEOUT=20  //连接超时时长,默认是3秒,因此JAVA程序比较慢,如果超时时间太短,会导致数据获取不到

3、配置zabbix_server.conf

[root@centos7 zabbix]# cat zabbix_server.conf 
JavaGateway=127.0.0.1 #指定java gateway的地,zabbix-java-gateway安装在了zabbix-server上,所以使用本地地址
JavaGatewayPort=10052 #指定java gateway的服务器监听端口,端口号和javagateway要对应
StartJavaPollers=5  #启动多少个进程去轮训 java gateway, 要和java gateway的配置一致
Timeout=30  #启动多少个进程去轮训 java gateway, 要和java gateway的配置一致

注意:线程数StartJavaPollers<=START_POLLERS

4、启动zabbix-java-gateway服务和重启zabbix-server

[root@centos7 zabbix]#systemctl start zabbix-java-gateway
[root@centos7 zabbix]#systemctl restart zabbix-server
[root@centos7 zabbix]# ss -ntl
State      Recv-Q Send-Q                                        Local Address:Port                                                       Peer Address:Port              
LISTEN     0      128                                                       *:111                                                                   *:*                  
LISTEN     0      5                                             192.168.122.1:53                                                                    *:*                  
LISTEN     0      128                                                       *:22                                                                    *:*                  
LISTEN     0      128                                               127.0.0.1:631                                                                   *:*                  
LISTEN     0      100                                               127.0.0.1:25                                                                    *:*                  
LISTEN     0      128                                               127.0.0.1:6010                                                                  *:*                  
LISTEN     0      128                                                       *:10051                                                                 *:*                  
LISTEN     0      50                                                        *:3306                                                                  *:*                  
LISTEN     0      128                                                      :::111                                                                  :::*                  
LISTEN     0      128                                                      :::80                                                                   :::*                  
LISTEN     0      128                                                      :::22                                                                   :::*                  
LISTEN     0      128                                                     ::1:631                                                                  :::*                  
LISTEN     0      100                                                     ::1:25                                                                   :::*                  
LISTEN     0      128                                                     ::1:6010                                                                 :::*                  
LISTEN     0      128                                                      :::443                                                                  :::*                  
LISTEN     0      50                                                       :::10052                                                                :::* 

三、在zabbix的web界面添加主机

配置—主机—选择要监控的主机
在这里插入图片描述
添加jmx接口,输入tomcat主机的ip地址及端口
在这里插入图片描述
为主机链接模板,模板选择需要适合当前的tomcat版本
在这里插入图片描述
稍等片刻等待主机的jmx连接成功变为绿色
在这里插入图片描述
查看最新数据
在这里插入图片描述
至此,zabbix监控tomcat完成

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值