Zabbix配置JAVA JMX监控

JAVA JMX监控简介

官方文档:https://www.zabbix.com/documentation/current/zh/manual/concepts/java

Zabbix Java gateway以 Zabbix 守护进程方式原生支持监控 JMX 应用程序。Zabbix Java gateway 的守护进程是用 Java 编写。为了在特定主机上找到 JMX 计数器的值,Zabbix server 向 Zabbix Java gateway 发送请求,后者使用 JMX 管理 API 来远程查询相关的应用。该应用不需要安装额外的软件。只需要在启动时,命令行添加-Dcom.sun.management.jmxremote选项即可。

在这里插入图片描述

Zabbix通过JMX(Java Management Extensions)监控Java应用程序(如Tomcat),可以收集详细的性能指标。首先,确保Tomcat已安装并运行,然后配置JMX远程管理。

zabbix环境信息:

节点 IP OS Role
zabbix-server 192.168.72.31 Ubuntu 22.04 zabbix-server、zabbix-java-gateway
tomcat01 192.168.72.32 Ubuntu 22.04 tomcat server

zabbix 版本: v7.0.0
Tomcat 版本:v10.1.25

前置要求:已在tomcat01节点上安装tomcat server。

安装 Java gateway

官方文档:https://www.zabbix.com/documentation/current/zh/manual/concepts/java/from_debian_ubuntu

只有当你想监控 JMX 应用程序时,才需要安装 Java gateway 。 Java gateway 是轻量级的,不需要数据库。

  1. Zabbix Java gateway可以部署在与Zabbix server不同的机器上。这种灵活性允许根据需求进行分布式部署。

  2. 如果您有大量Java应用需要监控,将Java gateway部署在单独的机器上可以减轻Zabbix server的负担。

  3. 有时,由于网络限制,可能需要将Java gateway部署在更靠近被监控Java应用的位置。

  4. 如果Java gateway部署在不同的机器上,您需要在Zabbix server的配置中指定Java gateway的地址和端口。

  5. Zabbix还支持配置多个Java gateway,以实现负载均衡和高可用性。

  6. 在小型环境中,将Java gateway与Zabbix server部署在同一台机器上也是常见的做法,这简化了配置和管理。

以在zabbix-server节点安装为例,安装 Zabbix repository

wget https://repo.zabbix.com/zabbix/7.0/ubuntu/pool/main/z/zabbix-release/zabbix-release_7.0-1+ubuntu22.04_all.deb
dpkg -i zabbix-release_7.0-1+ubuntu22.04_all.deb
apt update -y

添加了所需的软件源之后,就可执行如下命令安装 Zabbix Java gateway:

apt install -y zabbix-java-gateway

修改配置文件

root@zabbix-server:~# nano /etc/zabbix/zabbix_java_gateway.conf
......
LISTEN_IP="0.0.0.0"
LISTEN_PORT=10052
PID_FILE="/var/run/zabbix/zabbix_java_gateway.pid"
START_POLLERS=5
TIMEOUT=3

重新启动服务

systemctl restart zabbix-java-gateway.service

配置 Zabbix Server 关联 Java 网关

当Java网关启动并运行后,需要告诉Zabbix server去哪里找Zabbix Java网关。

通过在zabbix server 配置文件中指定JavaGateway和JavaGatewayPort来完成这个操作。如果运行JMX应用程序的主机是由Zabbix proxy 监控的,则可以在proxy 配置文件中指定连接参数。

默认情况下,server不会启动任何与JMX监控相关的进程。如果你希望用到它,则必须指定Java pollers的数量。此操作与配置常规 pollers 和 trappers数量一样。

root@zabbix-server:~# nano /etc/zabbix/zabbix_server.conf
......
JavaGateway=192.168.72.31
JavaGatewayPort=10052
StartJavaPollers=5
...

配置完server或proxy后,重启server或proxy。

root@zabbix-server:~# systemctl restart zabbix-server.service 

配置tomcat

在tomcat节点执行,本示例tomcat安装目录为/opt/tomcat,不同安装方式可能有差异。

查看tomcat 启动文件配置:

root@tomcat01:~# cat /etc/systemd/system/tomcat.service 
[Unit]
Description=Apache Tomcat 10 Web Application Server
After=network.target
 
[Service]
Type=forking
 
User=tomcat
Group=tomcat
 
Environment="JAVA_HOME=/usr/lib/jvm/java-21-openjdk-amd64"
Environment="CATALINA_HOME=/opt/tomcat"
Environment="CATALINA_BASE=/opt/tomcat"
Environment="CATALINA_PID=/opt/tomcat/temp/tomcat.pid"
Environment="CATALINA_OPTS=-Xms512M -Xmx1024M -server -XX:+UseParallelGC"
 
ExecStart=/opt/tomcat/bin/startup.sh
ExecStop=/opt/tomcat/bin/shutdown.sh
 
[Install]
WantedBy=multi-user.target

创建 setenv.sh 文件,通常位于 $CATALINA_HOME/bin 目录下:

cat >/opt/tomcat/bin/setenv.sh<<'EOF'
export CATALINA_OPTS="$CATALINA_OPTS -Dcom.sun.management.jmxremote \
  -Dcom.sun.management.jmxremote.port=12345 \
  -Dcom.sun.management.jmxremote.rmi.port=12345 \
  -Dcom.sun.management.jmxremote.ssl=false \
  -Dcom.sun.management.jmxremote.authenticate=false \
  -Djava.rmi.server.hostname=192.168.72.32"
EOF

注意:请勿在catalina.sh脚本中设置此变量。相反,请将它们放入 CATALINA_BASE/bin 目录下的 setenv.sh 脚本中,以便将自定义设置保持独立。

重启tomcat服务

root@tomcat01:~# systemctl restart tomcat.service 

确认端口正常监听

root@tomcat01:~# ss -antulp |grep 12345
tcp   LISTEN 0      50                      *:12345            *:*    users:(("java",pid=149856,fd=12))                                                                                                                                                                                                            

查看tomcat参数及版本信息:

root@tomcat01:~# /opt/tomcat/bin/version.sh
Using CATALINA_BASE:   /opt/tomcat
Using CATALINA_HOME:   /opt/tomcat
Using CATALINA_TMPDIR: /opt/tomcat/temp
Using JRE_HOME:        /usr
Using CLASSPATH:       /opt/tomcat/bin/bootstrap.jar:/opt/tomcat/bin/tomcat-juli.jar
Using CATALINA_OPTS:    -Dcom.sun.management.jmxremote   -Dcom.sun.management.jmxremote.port=12345   -Dcom.sun.management.jmxremote.rmi.port=12345   -Dcom.sun.management.jmxremote.ssl=false   -Dcom.sun.management.jmxremote.authenticate=false   -Djava.rmi.server.hostname=192.168.72.32
Server version: Apache Tomcat/10.1.25
Server built:   Jun 14 2024 19:31:59 UTC
Server number:  10.1.25.0
OS Name:        Linux
OS Version:     5.15.0-102-generic
Architecture:   amd64
JVM Version:    21.0.3+9-Ubuntu-1ubuntu122.04.1
JVM Vendor:     Ubuntu
root@tomcat01:~# 

配置zabbix web

在Zabbix Web界面中添加主机并配置JMX接口。

  1. 登录Zabbix Web界面,导航到数据采集-> Hosts

  2. 点击 Create host 按钮。配置主机名,例如 tomcat01

  3. 选择模板,在application中选择Apache Tomcat by JMX

  4. 选择主机群组,例如 Applications

  5. 添加一个新的接口,选择 JMX interface,并填写Tomcat服务器的IP地址和端口号(例如 192.168.72.3212345)。

  6. 导航到 监测-> 最新数据,选择刚刚添加的主机,查看数据是否正常收集。

示例配置

在这里插入图片描述

配置完成后确认可用性
在这里插入图片描述

查看最新监控数据
在这里插入图片描述
查看仪表盘
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/networken/article/details/140363776