基于JMX实现消息队列监控

引言

实时监控中间件保障集群的可用性是极其重要的,本篇文章以JAVA语音基于JMX来实现对Kafka消息队列的监控

实现

添加依赖

在 pom.xml 中添加以下依赖:

<dependencies><!-- Kafka 客户端依赖 --><dependency><groupId>org.apache.kafka</groupId><artifactId>kafka-clients</artifactId><version>3.4.0</version></dependency><!-- JMX 依赖 --><dependency><groupId>javax.management</groupId><artifactId>javax.management-api</artifactId><version>1.4.0</version></dependency>
</dependencies>

Java实现

import javax.management.MBeanServerConnection;
import javax.management.ObjectName;
import javax.management.remote.JMXConnector;
import javax.management.remote.JMXConnectorFactory;
import javax.management.remote.JMXServiceURL;
import java.util.Set;public class KafkaPerformanceMonitor {private static final String JMX_URL = "service:jmx:rmi:///jndi/rmi://localhost:9999/jmxrmi";public static void main(String[] args) {try {// 连接到 JMX 服务器JMXServiceURL url = new JMXServiceURL(JMX_URL);JMXConnector connector = JMXConnectorFactory.connect(url);MBeanServerConnection mbeanServerConnection = connector.getMBeanServerConnection();// 获取所有 MBean 的名称Set<ObjectName> mbeanNames = mbeanServerConnection.queryNames(null, null);// 遍历 MBean 名称,查找 Kafka 相关的 MBeanfor (ObjectName mbeanName : mbeanNames) {if (mbeanName.getDomain().startsWith("kafka")) {System.out.println("Found Kafka MBean: " + mbeanName);// 获取 MBean 的属性Set<String> attributeNames = mbeanServerConnection.getMBeanInfo(mbeanName).getAttributes().stream().map(attr -> attr.getName()).collect(java.util.stream.Collectors.toSet());for (String attributeName : attributeNames) {try {Object attributeValue = mbeanServerConnection.getAttribute(mbeanName, attributeName);System.out.println("  Attribute: " + attributeName + " = " + attributeValue);} catch (Exception e) {System.err.println("Error getting attribute " + attributeName + " for MBean " + mbeanName + ": " + e.getMessage());}}}}// 关闭连接connector.close();} catch (Exception e) {e.printStackTrace();}}
}
  • JMX 连接:通过 JMXServiceURL 和 JMXConnectorFactory 连接到 Kafka 的 JMX 服务器。这里假设 Kafka 的 JMX 服务运行在本地的 9999 端口,你需要根据实际情况修改 JMX_URL
  • 获取 MBean 信息:使用 MBeanServerConnection 查询所有的 MBean 名称,并筛选出 Kafka 相关的 MBean。
  • 获取属性值:对于每个 Kafka 相关的 MBean,获取其所有属性的名称,并尝试获取属性的值进行打印。
  • 异常处理:在获取属性值时,可能会抛出异常,需要进行异常处理。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/68984.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

.Net Core笔记知识点(跨域、缓存)

设置前端跨域配置示例&#xff1a; builder.Services.AddCors(option > {option.AddDefaultPolicy(policy > {policy.WithOrigins(originUrls).AllowAnyMethod().AllowAnyHeader().AllowCredentials();});});var app builder.Build();app.UseCors(); 【客户端缓存】接…

Jupyterlab和notebook修改文件的默认存放路径的方法

文章目录 1.缘由2.操作流程2.1找到默认的路径2.2创建配置文件2.3修改配置文件内容2.4注意事项 1.缘由 我自己使用jupyterlab的时候&#xff0c;打开是在这个浏览器上面打开的&#xff0c;但是这个打开的文件路径显示的是C盘上面路径&#xff0c;所以这个就很麻烦&#xff0c;因…

HarmonyOS:ArkWeb进程

ArkWeb是多进程模型,分为应用进程、Web渲染进程、Web GPU进程、Web孵化进程和Foundation进程。 说明 Web内核没有明确的内存大小申请约束,理论上可以无限大,直到被资源管理释放。 ArkWeb进程模型图 应用进程中Web相关线程(应用唯一) 应用进程为主进程。包含网络线程、Vi…

基于Spring Security 6的OAuth2 系列之九 - 授权服务器--token的获取

之所以想写这一系列&#xff0c;是因为之前工作过程中使用Spring Security OAuth2搭建了网关和授权服务器&#xff0c;但当时基于spring-boot 2.3.x&#xff0c;其默认的Spring Security是5.3.x。之后新项目升级到了spring-boot 3.3.0&#xff0c;结果一看Spring Security也升级…

音标-- 02-- 重音 音节 变音

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 国际音标1.重音2.音节3.变音 国际音标 1.重音 2.音节 3.变音

验证回文串 II - 题解与分析

680. 验证回文串 II - 题解与分析 题目描述 给定一个字符串 s&#xff0c;最多可以从中删除一个字符。请判断 s 是否能通过删除一个字符后变成回文字符串。如果能&#xff0c;则返回 true&#xff1b;否则&#xff0c;返回 false。 示例 1: 输入&#xff1a;s "aba&q…

连续预测、

一、连续预测 调用模型遍历需要预测文件夹中的图片&#xff1a; image_ids open(‘VOCdevkit/VOC2007/ImageSets/Main/test.txt’).read().strip().split() for image_id in tqdm(image_ids): # 遍历测试图像 image_path “./VOCdevkit/VOC2007/JPEGImages/” image_id …

蓝桥备赛指南(6)

这篇文章非常简单&#xff01;重点只有两个&#xff0c;而且都和set非常相似。 se集合 set简介 首先&#xff0c;set集合是一种容器&#xff0c;用于存储一组唯一的元素&#xff0c;并按照一定的排序规则进行排序&#xff0c;set中的元素是按照升序排序的&#xff0c;默认情…

搜索插入位置(35)

35. 搜索插入位置 - 力扣&#xff08;LeetCode&#xff09; 相关算法&#xff1a;二分查找最左侧和最右侧target的index-CSDN博客 class Solution { public:int searchInsert(vector<int>& nums, int target) {int left 0;int right nums.size() - 1;int ans nu…

Adaptive LLM Transformer²

看到了一个不错的论文https://arxiv.org/pdf/2501.06252 TRANSFORMER-SQUARED: SELF-ADAPTIVE LLMS 挺有意思的&#xff0c;是一家日本AI公司SakanaAI的论文&#xff08;我以前写过他们的不训练提升模型的能力的文章&#xff0c;感兴趣可以去翻&#xff09;它家有Lion Jones坐镇…

优化代码性能:利用CPU缓存原理

在计算机的世界里&#xff0c;有一场如同龟兔赛跑般的速度较量&#xff0c;主角便是 CPU 和内存 。龟兔赛跑的故事大家都耳熟能详&#xff0c;兔子速度飞快&#xff0c;乌龟则慢吞吞的。在计算机中&#xff0c;CPU 就如同那敏捷的兔子&#xff0c;拥有超高的运算速度&#xff0…

linux 函数 sem_init () 信号量、sem_destroy()

&#xff08;1&#xff09; &#xff08;2&#xff09; 代码举例&#xff1a; #include <stdio.h> #include <stdlib.h> #include <pthread.h> #include <semaphore.h> #include <unistd.h>sem_t semaphore;void* thread_function(void* arg) …

分库分表技术方案选型

一、MyCat 官方网站&#xff0c;技术文档 MyCat是一款由阿里Cobar演变而来的用于支持数据库读写分离、分片的数据库中间件。它基于MySQL协议&#xff0c;实现了MySQL的协议和能力&#xff0c;并作为代理层位于应用和数据库之间&#xff0c;可以隐藏底层数据库的复杂性。 原理…

【智力测试——二分、前缀和、乘法逆元、组合计数】

题目 代码 #include <bits/stdc.h> using namespace std; using ll long long; const int mod 1e9 7; const int N 1e5 10; int r[N], c[N], f[2 * N]; int nr[N], nc[N], nn, nm; int cntr[N], cntc[N]; int n, m, t;void init(int n) {f[0] f[1] 1;for (int i …

SSM开发(八) MyBatis解决方法重载

目录 一、Mybatis能否支持方法重载? 二、解决 MyBatis 方法重载问题的几种方法 解决方法一: (注解方式) 将重载方法命名为不同的方法名 解决方法二:采用@SelectProvider注解 解决方法三:使用 MyBatis 的 标签和动态 SQL 来构建不同参数的 SQL 查询 三、总结 一、Myb…

IBM DB2常用命令(windows版),包含建库、建表、增删改查等命令

安装IBM DB2可以参考我上篇博客&#xff1a;IBM Db2 & IBM Db2 Data Management Console(可视化管理工具)的下载与安装&#xff08;简洁版&#xff09;-CSDN博客 使用管理员权限打开cmd窗口 G: cd G:\IBM\SQLLIB\BIN db2cmd首先&#xff0c;在服务端需要配置好服务名、监…

Flutter Scaffold 页面结构

Material是一套设计风格&#xff0c;提供了大量的小部件&#xff0c;这里用Material风格搭建一个常见的应用页面结构。 创建Material应用 import package:flutter/material.dart;class App extends StatelessWidget {overrideWidget build(BuildContext context) {return Mat…

【C++】string类(上):string类的常用接口介绍

文章目录 前言一、C中设计string类的意义二、string类的常用接口说明1. string类对象的常见构造2. string类对象的容量操作2.1 size、capacity 和 empty的使用2.2 clear的使用2.3 reserve的使用2.4 resize的使用 3. string类对象的访问及遍历操作3.1 下标[ ] 和 at3.2 迭代器it…

一文讲解Java中的ArrayList和LinkedList

ArrayList和LinkedList有什么区别&#xff1f; ArrayList 是基于数组实现的&#xff0c;LinkedList 是基于链表实现的。 二者用途有什么不同&#xff1f; 多数情况下&#xff0c;ArrayList更利于查找&#xff0c;LinkedList更利于增删 由于 ArrayList 是基于数组实现的&#…

[原创](Modern C++)现代C++的关键性概念: <format>标准库提供的格式化std::format

常用网名: 猪头三 出生日期: 1981.XX.XX 企鹅交流: 643439947 个人网站: 80x86汇编小站 编程生涯: 2001年~至今[共24年] 职业生涯: 22年 开发语言: C/C、80x86ASM、PHP、Perl、Objective-C、Object Pascal、C#、Python 开发工具: Visual Studio、Delphi、XCode、Eclipse、C Bui…