RocketMQ 可观测性最佳实践
RocketMQ 概述
Apache RocketMQ 是一个开源的分布式消息传递和流处理平台,由阿里巴巴团队最初开发并捐赠给 Apache 软件基金会。它主要用于处理大规模消息的发送和接收,支持高吞吐量、可扩展性强且具有高可用性的消息服务。
RocketMQ 的优势有以下几点:
- 高性能: RocketMQ 能够支持每秒处理百万级消息的高吞吐量,满足企业级应用的需求。
- 高可用性: 支持故障转移和消息冗余,保证消息不丢失,实现99.999%的高可用性。
- 可扩展性: 结构支持水平扩展,无需停机即可增加节点,极大地提高了系统的灵活性和可扩展性。
- 多语言客户端支持: 除了Java,RocketMQ 还提供了 C++、Python、Go 等多种语言的客户端,满足不同开发需求。
- 易于监控和维护: 提供了丰富的监控指标和管理工具,帮助运维人员轻松管理和监控消息系统的状态。
RocketMQ 是一个功能强大的消息中间件,适用于需要高可靠性、高性能和高可扩展性的现代互联网、金融和电信等领域的企业级应用。
观测云
部署 DataKit
DataKit 是一个开源的、跨平台的数据收集和监控工具,由观测云开发并维护。它旨在帮助用户收集、处理和分析各种数据源,如日志、指标和事件,以便进行有效的监控和故障排查。DataKit 支持多种数据输入和输出格式,可以轻松集成到现有的监控系统中。
登录观测云控制台,在「集成」 - 「DataKit」选择对应安装方式,当前采用 Linux 主机部署 DataKit。

安装 RocketMQ Exporter
通过 RocketMQ Exporter 可以采集 RocketMQ 的指标信息并对外暴露。
- 拉取 rocketmq-exporter
git clone https://github.com/apache/rocketmq-exporter.git
进入安装目录
cd rocketmq-exporter/
- 构建安装包(2选1)
1)构建 jar 包方式
mvn clean package
构建完成,进入 target 目录
cd target
启动 jar 包 (替换命令行中 nameserverip 地址)
nohup java -jar target/rocketmq-exporter-0.0.2-SNAPSHOT.jar --rocketmq.config.namesrvAddr=nameserverip:9876 &
2)构建 Docker 镜像方式
mvn package -Dmaven.test.skip=true docker:build
使用镜像启动 Docker (替换命令行中 nameserverip 地址)
docker run -d --net="host" --name rocketmq-exporter -p 5557:5557 docker.io/rocketmq-exporter --rocketmq.config.namesrvAddr=nameserverip:9876
- 测试 rocketmq-exporter 是否正常
curl http://127.0.0.1:5557/metrics
采集 RocketMQ 指标
RocketMQ Exporter 暴露指标端口为:5557,可以直接通过 prom 采集器进行采集。进入 DataKit 安装目录 /usr/local/datakit/conf.d ,复制 prom 目录下的配置文件并命名为 rocketmq.conf 。 示例如下:
开启 DataKit Prometheus 插件,复制 sample 文件
cd /usr/local/datakit/conf.d/prom
cp prom.conf.sample rocketmq.conf
修改配置文件 rocketmq.conf
[[inputs.prom]]urls = ["http://127.0.0.1:5557/metrics"]ignore_req_err = falsesource = "rocketmq"
# metric_types 需要选择空,rocketmq-exporter 没有指定数据类型metric_types = []interval = "60s"
重启 DataKit
datakit service restart
监控视图
登录观测云控制台,点击「场景」 -「新建仪表板」,输入 “RocketMQ”, 选择“RocketMQ 监控视图”,点击“确定”。


关键指标
| 序号 | 指标名称 | 指标描述 |
|---|---|---|
| 1 | rocketmq_broker_tps | broker每秒生产消息数量 |
| 2 | rocketmq_broker_qps | broker每秒消费消息数量 |
| 3 | rocketmq_producer_tps | 某个topic每秒生产的消息数量 |
| 4 | rocketmq_producer_message_size | 某个生产者发送消息的平均消息大小(字节) |
| 5 | rocketmq_producer_offset | 某个topic的生产消息的进度 |
| 6 | rocketmq_consumer_tps | 某个消费组每秒消费的消息数量 |
| 7 | rocketmq_consumer_message_size | 某个消费者拉取消息的平均消息大小(字节) |
| 8 | rocketmq_consumer_offset | 某个消费组的消费消息的进度 |
| 9 | rocketmq_group_get_latency_by_storetime | 某个消费组的消费延时时间 |
| 10 | rocketmq_group_diff | 消费组的消息积压量 |
rocketmq_broker_tps ( broker 每秒生产消息数量)
- 这个指标显示了每秒中 Broker 接收的消息数量,是衡量消息生产活动高低的直接指标。监控这一指标可以帮助运维团队了解系统当前的负载能力和处理能力。
rocketmq_broker_qps ( broker 每秒消费消息数量)
- 相对于生产消息数量,这个指标显示的是 Broker 每秒处理的消费请求数量。这不仅反映了消费者的活跃程度,还可以用来评估 Broker 处理消费请求的效率。
rocketmq_producer_tps (某个 topic 每秒生产的消息数量)
- 特定 Topic 的生产速率能够帮助运维团队识别特定业务流的压力情况。通过监控这一指标,可以及时发现某个业务线可能存在的问题或者性能瓶颈。
rocketmq_consumer_tps (某个消费组每秒消费的消息数量)
- 这个指标展示了消费组的消费能力,通过监控可以了解消费组的处理效率和及时性。若消费速度跟不上生产速度,可能需要扩展消费者数量或优化消费逻辑。
rocketmq_group_diff (消费组堆积量指标)
- 这个指标展示了消费组的消息积压量,通过监控可以了解某个消费组对指定 Topic 的未消费消息数量,监控消费组的消费能力是否正常。
rocketmq_group_get_latency_by_storetime (某个消费组的消费延时时间)
- 这个指标显示了消息从存储到被消费组消费的延时。它是衡量消息系统响应能力的关键指标,对于要求实时性较高的应用尤其重要。
监控器
1)rocketmq_broker_tps ( broker 每秒生产消息数量)
阈值建议: 如果您的系统通常运行在每秒1000条消息,可以设置一个上限阈值为1500条,下限阈值为500条。
监控告警:
- 高阈值告警: 如果 TPS 超过1500条/秒,发送告警,因为可能出现生产过载。
- 低阈值告警: 如果 TPS 低于500条/秒,发送告警,可能存在生产中断或性能下降。

2)rocketmq_group_diff (消费组堆积量指标)
阈值建议:根据实际业务的吞吐量和消息处理需求设置阈值告警。

3)rocketmq_consumer_tps (某个消费组每秒消费的消息数量)
阈值建议: 如果正常消费速度为每秒800条,可以设置一个阈值下限为400条。
监控告警:
- 低阈值告警: 如果消费 TPS 低于400条/秒,发出告警。这可能意味着消费者处理能力不足或存在系统故障。

4)rocketmq_group_get_latency_by_storetime (某个消费组的消费延时时间)
阈值建议: 如果延时通常在5秒以内,可以设置告警阈值为10秒。
监控告警:如果延时超过10秒,发送告警。高延时可能影响业务操作的实时性,需检查并解决问题。

相关文章:
RocketMQ 可观测性最佳实践
RocketMQ 概述 Apache RocketMQ 是一个开源的分布式消息传递和流处理平台,由阿里巴巴团队最初开发并捐赠给 Apache 软件基金会。它主要用于处理大规模消息的发送和接收,支持高吞吐量、可扩展性强且具有高可用性的消息服务。 RocketMQ 的优势有以下几点…...
P9420 [蓝桥杯 2023 国 B] 子 2023
P9420 [蓝桥杯 2023 国 B] 子 2023 题目 分析代码 题目 分析 刚拿到这道题,我大脑简单算了一下,这个值太大了,直观感觉就很难!! 但是,你仔仔细细的一看,先从最简单的第一步入手,再…...
OpenAI开放Deep Research权限,AI智能体大战升级,DeepSeek与Claude迎来新对决
每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗?订阅我们的简报,深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同,从行业内部的深度分析和实用指南中受益。不要错过这个机会,成为AI领…...
学习笔记04——JMM内存模型
一、Java内存模型(JMM)是什么? Java内存模型(Java Memory Model, JMM)是Java多线程编程中共享内存的访问规则,定义了线程如何与主内存(Main Memory)和工作内存(Work Mem…...
将VsCode变得顺手好用(1
目录 设置中文 配置调试功能 提效和增强相关插件 主题和图标相关插件 创建js文件 设置中文 打开【拓展】 输入【Chinese】 下载完成后重启Vs即可变为中文 配置调试功能 在随便一个位置新建一个文件夹,用于放置调试文件以及你未来写的代码,随便命名但…...
Fisher信息矩阵(Fisher Information Matrix,简称FIM)
Fisher信息矩阵简介 Fisher信息矩阵(Fisher Information Matrix,简称FIM)是统计学和信息理论中的一个重要概念,广泛应用于参数估计、统计推断和机器学习领域。它以统计学家罗纳德费希尔(Ronald Fisher)的名…...
Vue2+Three.js加载并展示一个三维模型(提供Gitee源码)
目录 一、案例截图 二、安装Three.js 三、代码实现 四、Gitee源码 一、案例截图 二、安装Three.js npm install three 三、代码实现 模型资源我是放在public文件夹下面的: 完整代码: <template><div><div ref"container&qu…...
Linux红帽:RHCSA认证知识讲解(三)Linux基础指令与Vim编辑器的使用
Linux红帽:RHCSA认证知识讲解(三)Linux基础指令与Vim编辑器的使用 前言一、Linux基础指令二、Linux 文件系统层次结构概念三、通过路径指定文件四、使用命令行工具管理文件五、Vim 的安装方式六、Vim 的操作模式七、红帽建议掌握的 Vim 键和命…...
python读取sqlite温度数据,并画出折线图
需求: 在Windows下请用python画出折线图,x轴是时间,y轴是温度temperature 和体感温度feels_like_temperature 。可以选择县市近1小时,近1天,近1个月的。sqlite文件weather_data.db当前目录下,建表结构如下…...
《论企业集成平台的理解与应用》审题技巧 - 系统架构设计师
企业集成平台的理解与应用——论文写作框架 一、考点概述 本论题“企业集成平台的理解与应用”主要考察的是计算机软件测试工程师对于企业集成平台(EIP)的深入理解以及在实际项目中的应用能力。论题涵盖了以下几个核心内容: 首先ÿ…...
UE Python笔记
插件 官方 商城 Python Editorhttps://www.fab.com/listings/f4c99ba0-1a86-4f6a-b19d-2fd13f15961b GitHUB 好像只更新到了2020年4.2x的版本。可能有大佬改了5.x的版本。也希望分享给我一份。谢谢 https://github.com/20tab/UnrealEnginePython 学习笔记 网上教程一大堆。…...
使用django调用deepseek api,搭建ai网站
一、deepseek简介 DeepSeek是一家人工智能公司,专注于开发先进的人工智能模型和技术。以下是关于DeepSeek的一些详细介绍: 1.公司背景 DeepSeek由杭州深度求索人工智能基础技术研究有限公司开发,致力于通过创新的技术和算法,推…...
YOLOv12 ——基于卷积神经网络的快速推理速度与注意力机制带来的增强性能结合
概述 实时目标检测对于许多实际应用来说已经变得至关重要,而Ultralytics公司开发的YOLO(You Only Look Once,只看一次)系列一直是最先进的模型系列,在速度和准确性之间提供了稳健的平衡。注意力机制的低效阻碍了它们在…...
两台互通的服务器使用Docker部署一主两从MySQL8.0.35
文章目录 1. 使用Docker Overlay网络(需Swarm模式)在服务器1(172.25.0.19)上:在服务器2(172.25.0.20)上:创建 overlay 网络(172.25.0.19): 2. 部署…...
Java23种设计模式案例
目录 一、概述 二、创建型模式 (Creational Patterns) 单例模式 (Singleton Pattern) 工厂方法模式 (Factory Method Pattern) 抽象工厂模式 (Abstract Factory Pattern) 建造者模式 (Builder Pattern) 原型模式 (Prototype Pattern) 三、结构型模式 (Structu…...
stm32hal库寻迹+蓝牙智能车(STM32F103C8T6)
简介: 这个小车的芯片是STM32F103C8T6,其他的芯片也可以照猫画虎,基本配置差不多,要注意的就是,管脚复用,管脚的特殊功能,(这点不用担心,hal库每个管脚的功能都会给你罗列,很方便的.)由于我做的比较简单,只是用到了几个简单外设.主要是由带霍尔编码器电机的车模,电机…...
JavaScript知识点4
1.解释一下这段JavaScript代码 var fruits ["Apple", "Orange", "Apple", "Mango"]; var a fruits.indexOf("Apple",-1); console.log("index"a); 输出的a值为-1,indexOf的第二个参数是-1…...
形式化数学编程在AI医疗中的探索路径分析
一、引言 1.1 研究背景与意义 在数字化时代,形式化数学编程和 AI 形式化医疗作为前沿领域,正逐渐改变着我们的生活和医疗模式。形式化数学编程是一种运用数学逻辑和严格的形式化语言来描述和验证程序的技术,它通过数学的精确性和逻辑性,确保程序的正确性和可靠性。在软件…...
QT 引入Quazip和Zlib源码工程到项目中,无需编译成库,跨平台,加密压缩,带有压缩进度
前言 最近在做项目时遇到一个需求,需要将升级的文件压缩成zip,再进行传输; 通过网络调研,有许多方式可以实现,例如QT私有模块的ZipReader、QZipWriter;或者第三方库zlib或者libzip或者quazip等࿱…...
Ubuntu 安装 Nginx并配置反向代理
Ubuntu版本:Ubuntu 24.04.2 LTS 一、安装Nginx 更新系统软件包 安装前需确保系统处于最新状态,避免依赖冲突 sudo apt update && sudo apt upgrade -y 安装Nginx主程序 Ubuntu官方仓库已包含稳定版Nginx,直接安装即可 sudo…...
浏览器访问 AWS ECS 上部署的 Docker 容器(监听 80 端口)
✅ 一、ECS 服务配置 Dockerfile 确保监听 80 端口 EXPOSE 80 CMD ["nginx", "-g", "daemon off;"]或 EXPOSE 80 CMD ["python3", "-m", "http.server", "80"]任务定义(Task Definition&…...
第19节 Node.js Express 框架
Express 是一个为Node.js设计的web开发框架,它基于nodejs平台。 Express 简介 Express是一个简洁而灵活的node.js Web应用框架, 提供了一系列强大特性帮助你创建各种Web应用,和丰富的HTTP工具。 使用Express可以快速地搭建一个完整功能的网站。 Expre…...
Zustand 状态管理库:极简而强大的解决方案
Zustand 是一个轻量级、快速和可扩展的状态管理库,特别适合 React 应用。它以简洁的 API 和高效的性能解决了 Redux 等状态管理方案中的繁琐问题。 核心优势对比 基本使用指南 1. 创建 Store // store.js import create from zustandconst useStore create((set)…...
java 实现excel文件转pdf | 无水印 | 无限制
文章目录 目录 文章目录 前言 1.项目远程仓库配置 2.pom文件引入相关依赖 3.代码破解 二、Excel转PDF 1.代码实现 2.Aspose.License.xml 授权文件 总结 前言 java处理excel转pdf一直没找到什么好用的免费jar包工具,自己手写的难度,恐怕高级程序员花费一年的事件,也…...
MODBUS TCP转CANopen 技术赋能高效协同作业
在现代工业自动化领域,MODBUS TCP和CANopen两种通讯协议因其稳定性和高效性被广泛应用于各种设备和系统中。而随着科技的不断进步,这两种通讯协议也正在被逐步融合,形成了一种新型的通讯方式——开疆智能MODBUS TCP转CANopen网关KJ-TCPC-CANP…...
鱼香ros docker配置镜像报错:https://registry-1.docker.io/v2/
使用鱼香ros一件安装docker时的https://registry-1.docker.io/v2/问题 一键安装指令 wget http://fishros.com/install -O fishros && . fishros出现问题:docker pull 失败 网络不同,需要使用镜像源 按照如下步骤操作 sudo vi /etc/docker/dae…...
使用 SymPy 进行向量和矩阵的高级操作
在科学计算和工程领域,向量和矩阵操作是解决问题的核心技能之一。Python 的 SymPy 库提供了强大的符号计算功能,能够高效地处理向量和矩阵的各种操作。本文将深入探讨如何使用 SymPy 进行向量和矩阵的创建、合并以及维度拓展等操作,并通过具体…...
OPENCV形态学基础之二腐蚀
一.腐蚀的原理 (图1) 数学表达式:dst(x,y) erode(src(x,y)) min(x,y)src(xx,yy) 腐蚀也是图像形态学的基本功能之一,腐蚀跟膨胀属于反向操作,膨胀是把图像图像变大,而腐蚀就是把图像变小。腐蚀后的图像变小变暗淡。 腐蚀…...
Android第十三次面试总结(四大 组件基础)
Activity生命周期和四大启动模式详解 一、Activity 生命周期 Activity 的生命周期由一系列回调方法组成,用于管理其创建、可见性、焦点和销毁过程。以下是核心方法及其调用时机: onCreate() 调用时机:Activity 首次创建时调用。…...
Hive 存储格式深度解析:从 TextFile 到 ORC,如何选对数据存储方案?
在大数据处理领域,Hive 作为 Hadoop 生态中重要的数据仓库工具,其存储格式的选择直接影响数据存储成本、查询效率和计算资源消耗。面对 TextFile、SequenceFile、Parquet、RCFile、ORC 等多种存储格式,很多开发者常常陷入选择困境。本文将从底…...
