【运维知识进阶篇】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年运维经验,持续分享运维干货,感谢大家的阅读和关注!

目录
相关文章
|
20天前
|
监控 安全 Java
在 Java 中使用线程池监控以及动态调整线程池时需要注意什么?
【10月更文挑战第22天】在进行线程池的监控和动态调整时,要综合考虑多方面的因素,谨慎操作,以确保线程池能够高效、稳定地运行,满足业务的需求。
97 38
|
15天前
|
小程序 前端开发 算法
|
16天前
|
SQL 监控 Java
Java连接池技术的最新发展,包括高性能与低延迟、智能化管理与监控、扩展性与兼容性等方面
本文探讨了Java连接池技术的最新发展,包括高性能与低延迟、智能化管理与监控、扩展性与兼容性等方面。同时,结合最佳实践,介绍了如何选择合适的连接池库、合理配置参数、使用监控工具及优化数据库操作,以实现高效稳定的数据库访问。示例代码展示了如何使用HikariCP连接池。
10 2
|
20天前
|
Prometheus 监控 Cloud Native
JAVA线程池监控以及动态调整线程池
【10月更文挑战第22天】在 Java 中,线程池的监控和动态调整是非常重要的,它可以帮助我们更好地管理系统资源,提高应用的性能和稳定性。
55 4
|
20天前
|
Java API 开发者
Java如何实现企业微信审批流程
大家好,我是V哥。本文分享如何在企业微信中实现审批流程,通过调用企业微信的开放API完成。主要内容包括获取Access Token、创建审批模板、发起审批流程和查询审批结果。提供了一个Java示例代码,帮助开发者快速上手。希望对你有帮助,关注V哥爱编程,编码路上同行。
|
20天前
|
Prometheus 监控 Cloud Native
在 Java 中,如何使用线程池监控以及动态调整线程池?
【10月更文挑战第22天】线程池的监控和动态调整是一项重要的任务,需要我们结合具体的应用场景和需求,选择合适的方法和策略,以确保线程池始终处于最优状态,提高系统的性能和稳定性。
88 2
|
23天前
|
SQL IDE Java
入门Cloud Toolkit:简化你的Java应用开发与部署流程
【10月更文挑战第19天】作为一名长期从事Java开发的程序员,我一直致力于寻找能够简化日常开发工作的工具。在众多工具中,阿里巴巴推出的Cloud Toolkit引起了我的注意。这款免费的插件旨在帮助开发者更轻松地进行开发、测试及部署工作,尤其是在与云服务交互时表现尤为出色。本文将从个人的角度出发,介绍Cloud Toolkit的基本功能及其使用技巧,希望能帮助初学者快速上手这款实用工具。
18 1
|
30天前
|
前端开发 安全 Java
java发布公告的实现流程
构建一个Java公告发布系统涉及到前端界面设计、后端业务逻辑处理、数据库设计与交互、安全性保障等多个环节。通过采用现代的开发框架和最佳实践,可以高效地开发出既安全又易于维护的系统。随着需求的增长,系统还可以进一步扩展,比如增加评论功能、通知订阅、多语言支持等。
29 1
|
1月前
|
运维 Cloud Native Java
Java项目部署的发展流程
本文介绍了四种不同的应用部署方式:传统部署、虚拟化部署、容器化部署和云原生部署。每种方式的特点、部署流程及优缺点进行了详细说明。传统部署直接在物理机上运行应用,存在资源利用率低和运维成本高的问题;虚拟化部署通过虚拟机实现资源隔离和复用,但有性能损失和单点故障风险;容器化部署则提供轻量级、可移植的应用环境,具备良好的隔离性和一致性;云原生部署结合了容器化和微服务架构,实现高效运维和灵活扩展。
Java项目部署的发展流程
消息中间件 缓存 监控
116 0

推荐镜像

更多