【运维知识进阶篇】Zabbix5.0稳定版详解8(Zabbix监控Java项目+详解JMX与Zabbix-Java-Gateway原理+详解监控Java项目流程原理)

简介: 【运维知识进阶篇】Zabbix5.0稳定版详解8(Zabbix监控Java项目+详解JMX与Zabbix-Java-Gateway原理+详解监控Java项目流程原理)

本篇文章给大家介绍用Zabbix监控Java项目,在监控Java项目的时候,我们可以通过JMX和Java Gateway两种监控方式。

JMX是一种用于监视和管理Java应用程序的标准API,允许你收集应用程序的运行时信息,如内存使用情况、线程状态、CPU负载等,并且还可以通过JMX远程连接进行配置和管理。你可以使用JMX客户端来连接到运行JMX的Java应用程序,以收集信息和执行管理操作。

Java Gateway则是使用JMX技术来远程管理和监控分布式Java应用程序的代理。它位于Java应用程序和JMX客户端之间,充当中间件,将JMX请求转发到Java应用程序中的相应MBean,并返回结果给JMX客户端。Java Gateway可以处理与多个Java应用程序的连接,从而提供集中的监控和管理接口。

我们在10.0.0.71部署zabbix服务端,在10.0.0.7部署zabbix-java-gateway,同时在10.0.0.7部署tomcat进行监控测试。

一、安装Tomcat服务并开启JMX协议和取值页面

1、安装JDK与Tomcat

1. # 安装JDK
2. [root@Web01 ~]# rpm -ivh jdk-8u181-linux-x64.rpm
3. [root@Web01 ~]# java -version
4. java version "1.8.0_181"
5. Java(TM) SE Runtime Environment (build 1.8.0_181-b13)
6. Java HotSpot(TM) 64-Bit Server VM (build 25.181-b13, mixed mode)
7. 
8. # 安装Tomcat
9. [root@Web01 ~]# wget https://dlcdn.apache.org/tomcat/tomcat-9/v9.0.76/bin/apache-tomcat-9.0.76.tar.gz --no-check-certificate
10. [root@Web01 ~]# tar xf apache-tomcat-9.0.76.tar.gz -C /usr/local/
11. [root@Web01 ~]# ln -s /usr/local/apache-tomcat-9.0.76 /usr/local/tomcat

2、开启JMX协议

1. # 搜索CATALINA_OPTS定位到eval定义这个变量的位置
2. # 在它定义的后面添加如下内容,有个else判断,所以需要添加两处
3. -Dcom.sun.management.jmxremote \
4. -Djava.rmi.server.hostname=172.16.1.7 \    # hostname为本机的IP
5. -Dcom.sun.management.jmxremote.port=12345 \
6. -Dcom.sun.management.jmxremote.ssl=false \
7. -Dcom.sun.management.jmxremote.authenticate=false \

3、启动tomcat

启动并查看JMX协议

1. [root@Web01 ~]# /usr/local/tomcat/bin/startup.sh 
2. [root@Web01 ~]# ss -ntl | grep 12345
3. LISTEN     0      50        [::]:12345                 [::]:*

二、安装并启动zabbix-java-gateway

1. [root@Web01 ~]# yum -y install zabbix-java-gateway
2. [root@Web01 ~]# systemctl enable --now zabbix-java-gateway.service
3. [root@Web01 ~]# netstat -tnulp|grep 10052
4. tcp6       0      0 :::10052                :::*                    LISTEN      95299/java

三、配置服务端连接Java-gateway

1. [root@Zabbix ~]# cat /etc/zabbix/zabbix_server.conf
2. ...
3. JavaGateway=172.16.1.7
4. ...
5. JavaGatewayPort=10052
6. ...
7. StartJavaPollers=3
8. [root@Zabbix ~]# systemctl restart zabbix-server.service

四、通过JMX进行监控

删除原主机后通过JMX再次添加主机

可以链接官网提供的tomcat的模板

可以监控到数据

五、监控Java项目流程原理详解

Zabbix Java Gateway是一个独立的Java应用程序,用于与Zabbix服务器进行通信,并代理与Java应用程序的JMX接口交互。Zabbix服务器通过与Java Gateway通信来获取Java应用程序的监控数据。

由于我们的Zabbix-Java-Gateway和要监控的Tomcat部署在了同一台主机,所以效果不明显,我这边简单说下,其实我们的zabbix服务端在配置文件中配置了Zabbix-Java-Gateway的主机,所以在监控JMX接口的服务的时候,都是通过Zabbix-Java-Gateway的主机去监控,相当于把Zabbix-Java-Gateway的主机变成了中间件,当Zabbix的监控接口传递给Zabbix-Java-Gateway后,Zabbix-Java-Gateway再去寻找这个接口(IP和端口),寻找到这个接口后再通过JMX去采集Tomcat所需要监控的数据;

这是因为zabbix是c语言写的,web端是php,不能直接与java进行通信,所以需要Zabbix-Java-Gateway这个中间件去做请求转发;

我们将Zabbix-Java-Gateway和要监控的Tomcat部署在了同一台主机了,其实完全可以部署在不同主机哈,我这边就是图省事儿,这个逻辑有点类似于分布式监控,分布式监控其实也是用的中间件Proxy;

六、只使用JMX不使用Zabbix-Java-Gateway的尝试

满足大家的好奇心,我们测试一下只使用JMX不使用Zabbix-Java-Gateway

1、关闭Zabbix-Java-Gateway服务,zabbix服务端配置文件也取消调用,重启服务

1. [root@Web01 ~]# systemctl stop zabbix-java-gateway.service 
2. 
3. [root@Zabbix ~]# cat /etc/zabbix/zabbix_server.conf
4. ...
5. # JavaGateway=172.16.1.7
6. ...
7. # JavaGatewayPort=10052
8. ...
9. # StartJavaPollers=3
10. [root@Zabbix ~]# systemctl restart zabbix-server.service

2、取消添加的主机重新添加

发现一直监控不到数据


我是koten,10年运维经验,持续分享运维干货,感谢大家的阅读和关注!

目录
相关文章
|
8月前
|
前端开发 Java API
2025 年 Java 全栈从环境搭建到项目上线实操全流程指南:Java 全栈最新实操指南(2025 版)
本指南涵盖2025年Java全栈开发核心技术,从JDK 21环境搭建、Spring Boot 3.3实战、React前端集成到Docker容器化部署,结合最新特性与实操流程,助力构建高效企业级应用。
2711 1
|
8月前
|
传感器 边缘计算 运维
AR 虚实叠加技术在工业设备运维中的实现流程方案
AR技术通过虚实信息融合,实现工业设备参数可视化、故障立体化、操作直观化,提升运维效率与精度。结合物联网与数字孪生,打造智能运维新范式。
|
8月前
|
消息中间件 Java Kafka
Java 事件驱动架构设计实战与 Kafka 生态系统组件实操全流程指南
本指南详解Java事件驱动架构与Kafka生态实操,涵盖环境搭建、事件模型定义、生产者与消费者实现、事件测试及高级特性,助你快速构建高可扩展分布式系统。
412 7
|
8月前
|
消息中间件 Java 数据库
Java 基于 DDD 分层架构实战从基础到精通最新实操全流程指南
本文详解基于Java的领域驱动设计(DDD)分层架构实战,结合Spring Boot 3.x、Spring Data JPA 3.x等最新技术栈,通过电商订单系统案例展示如何构建清晰、可维护的微服务架构。内容涵盖项目结构设计、各层实现细节及关键技术点,助力开发者掌握DDD在复杂业务系统中的应用。
1653 0
|
10月前
|
自然语言处理 前端开发 Java
JBoltAI 框架完整实操案例 在 Java 生态中快速构建大模型应用全流程实战指南
本案例基于JBoltAI框架,展示如何快速构建Java生态中的大模型应用——智能客服系统。系统面向电商平台,具备自动回答常见问题、意图识别、多轮对话理解及复杂问题转接人工等功能。采用Spring Boot+JBoltAI架构,集成向量数据库与大模型(如文心一言或通义千问)。内容涵盖需求分析、环境搭建、代码实现(知识库管理、核心服务、REST API)、前端界面开发及部署测试全流程,助你高效掌握大模型应用开发。
957 5
|
8月前
|
Java 编译器
Java 17 Switch表达式:更简洁、更强大的流程控制
Java 17 Switch表达式:更简洁、更强大的流程控制
1005 111
|
8月前
|
JavaScript Java 微服务
现代化 Java Web 在线商城项目技术方案与实战开发流程及核心功能实现详解
本项目基于Spring Boot 3与Vue 3构建现代化在线商城系统,采用微服务架构,整合Spring Cloud、Redis、MySQL等技术,涵盖用户认证、商品管理、购物车功能,并支持Docker容器化部署与Kubernetes编排。提供完整CI/CD流程,助力高效开发与扩展。
950 64
|
6月前
|
存储 运维 监控
57_大模型监控与运维:构建稳定可靠的服务体系
随着大语言模型(LLM)技术的快速发展和广泛应用,如何确保模型在生产环境中的稳定运行、高效服务和安全合规已成为企业和开发者面临的关键挑战。2025年,大模型服务已从实验室走向各行各业的核心业务流程,其运维复杂度也随之呈指数级增长。与传统软件系统不同,大模型服务具有参数规模庞大、计算密集、行为不确定性高等特点,这使得传统的运维监控体系难以满足需求。
1268 0
|
8月前
|
运维 Prometheus 监控
可观测性不是监控的马甲:运维团队到底该怎么升级?
可观测性不是监控的马甲:运维团队到底该怎么升级?
232 7
|
8月前
|
JavaScript 安全 前端开发
Java开发:最新技术驱动的病人挂号系统实操指南与全流程操作技巧汇总
本文介绍基于Spring Boot 3.x、Vue 3等最新技术构建现代化病人挂号系统,涵盖技术选型、核心功能实现与部署方案,助力开发者快速搭建高效、安全的医疗挂号平台。
412 3

热门文章

最新文章

推荐镜像

更多