🚀 RocketMQ 运维实践:监控体系详解
基于 RocketMQ Console + Prometheus + Grafana 的全方位监控方案
在生产环境中,完善的监控体系是保障 RocketMQ 高可用、高性能、可运维的核心能力。
通过实时掌握 消息吞吐、消费延迟、系统资源、错误告警 等关键指标,可以快速发现并定位问题,避免服务雪崩。
本文将系统化讲解如何构建 RocketMQ 的多层级监控体系,涵盖:
- 基础监控:RocketMQ Console
- 高级监控:Prometheus + Grafana
- 关键指标采集与告警策略
一、监控体系架构概览
+---------------------+
| RocketMQ 集群 |
| (Broker + NameServer)|
+----------+----------+
|
| 指标暴露
v
+----------+----------+
| Exporter (Prometheus) |
+----------+----------+
|
| 指标拉取
v
+----------+----------+
| Prometheus Server |
| (存储 + 报警) |
+----------+----------+
|
| 数据展示
v
+----------+----------+
| Grafana |
| (可视化仪表盘) |
+----------+----------+
↑
| 告警通知
+----------+----------+
| Alertmanager |
| (邮件/钉钉/企业微信) |
+---------------------+
二、1. 基础监控:RocketMQ Console
✅ 功能:
RocketMQ 官方提供的 Web 控制台,支持基础运维与监控。
🔧 部署方式:
git clone https://github.com/apache/rocketmq-externals
cd rocketmq-console
mvn clean package -Dmaven.test.skip=true
java -jar target/rocketmq-console-ng-*.jar --rocketmq.config.namesrvAddr=192.168.0.1:9876
✅ 支持功能:
| 功能 | 说明 |
|---|---|
| Topic 管理 | 查看、创建、删除 Topic |
| 消费者管理 | 查看 Consumer Group、订阅关系 |
| 消费进度 | 查看 consumerProgress(积压量) |
| 消息查询 | 通过 MsgId 或 Key 查询消息 |
| Broker 状态 | 查看 Broker 是否在线 |
| 发送测试消息 | 调试用 |
⚠️ 局限:
- 仅支持基础状态查看
- 无历史趋势图
- 无告警功能
- 性能较差(不适用于大规模集群)
✅ 适合:开发测试、简单运维。
三、2. 高级监控:Prometheus + Grafana(推荐)
✅ 为什么需要 Prometheus?
- 支持多维度指标采集
- 支持历史数据存储与查询
- 支持灵活告警规则
- 与 Grafana 深度集成,实现可视化大屏
(1)部署 Prometheus Exporter
RocketMQ 官方提供 Prometheus Exporter,用于暴露 Broker 和 NameServer 的指标。
🔧 部署方式:
# 下载 rocketmq-exporter
wget https://github.com/apache/rocketmq-exporter/releases/download/rocketmq-exporter-0.0.10/rocketmq-exporter-0.0.10.jar
# 启动 Exporter
java -jar rocketmq-exporter-0.0.10.jar \
--rocketmq.config.namesrvAddr=192.168.0.1:9876 \
--server.port=5557
📌 指标地址:
http://localhost:5557/metrics
(2)配置 Prometheus 抓取任务
在 prometheus.yml 中添加:
scrape_configs:
- job_name: 'rocketmq'
static_configs:
- targets: ['192.168.0.10:5557'] # Exporter 地址
metrics_path: '/metrics'
scrape_interval: 15s
重启 Prometheus 生效。
(3)部署 Grafana 并导入仪表盘
🔧 安装 Grafana
docker run -d -p 3000:3000 grafana/grafana
🔧 导入 RocketMQ 仪表盘
- 推荐使用官方或社区提供的 Dashboard ID:12345(示例)
- 或手动创建:
- 添加 Prometheus 数据源
- 导入 JSON 仪表盘(可在 GitHub 搜索
rocketmq-grafana-dashboard)
四、关键监控指标详解
1. 消息吞吐量(TPS/QPS)
| 指标 | 说明 |
|---|---|
rocketmq_producer_tps | 每秒发送消息数 |
rocketmq_consumer_tps | 每秒消费消息数 |
✅ 告警规则:TPS 突降 50% 持续 5 分钟 → 触发告警
2. 消费积压量(Lag)
| 指标 | 说明 |
|---|---|
rocketmq_consumer_lag | 消费者组的未消费消息总数(积压) |
✅ 告警规则:
consumer_lag > 10000→ 轻度告警consumer_lag > 100000→ 严重告警
3. 消费延迟(End-to-End Delay)
| 指标 | 说明 |
|---|---|
rocketmq_message_delay | 消息从生产到消费的时间差(ms) |
✅ 可通过消息轨迹计算:
delay = consumeTime - storeTime
4. Broker 系统资源
| 指标 | 说明 |
|---|---|
process_cpu_usage | CPU 使用率 |
jvm_memory_used_bytes | JVM 内存使用 |
system_disk_usage | 磁盘使用率(重点关注 diskMaxUsedSpaceRatio) |
rocketmq_commitlog_disk_ratio | CommitLog 磁盘占用比 |
✅ 告警规则:
- CPU > 80% 持续 10 分钟
- 磁盘 > 75% → 触发清理或扩容
5. NameServer 状态
| 指标 | 说明 |
|---|---|
rocketmq_namesrv_broker_count | 注册的 Broker 数量 |
rocketmq_namesrv_topic_count | Topic 数量 |
✅ 告警规则:
- Broker 数量突降 → 可能有节点宕机
6. 网络流量
| 指标 | 说明 |
|---|---|
rocketmq_network_in_bytes | 网络入流量(B/s) |
rocketmq_network_out_bytes | 网络出流量(B/s) |
✅ 监控带宽是否达到瓶颈(如 1Gbps 网卡)
7. 错误与异常日志
| 指标 | 说明 |
|---|---|
rocketmq_producer_send_failed | 发送失败次数 |
rocketmq_consumer_reconsume_times | 重试次数 |
rocketmq_rejected_execution | 线程池拒绝任务 |
✅ 建议结合 ELK 或 Loki 收集日志,监控关键词:
SEND_FAILEDCONSUME_LATEROFFSET_RESETDISPATCH_MAX_BUFFER
五、Grafana 仪表盘示例(关键视图)
| 仪表盘 | 内容 |
|---|---|
| 集群概览 | Broker 状态、TPS、积压、资源使用 |
| Topic 监控 | 各 Topic 的生产/消费 TPS、延迟 |
| Consumer Group 监控 | 每个 Group 的 Lag、消费 TPS |
| 系统资源 | CPU、内存、磁盘、网络 IO |
| 告警面板 | 显示当前触发的告警 |
六、告警策略建议(Alertmanager)
# alertmanager.yml
route:
receiver: 'dingtalk'
receivers:
- name: 'dingtalk'
webhook_configs:
- url: 'https://oapi.dingtalk.com/robot/send?access_token=xxx'
# 告警规则示例
groups:
- name: rocketmq
rules:
- alert: RocketMQConsumerLagHigh
expr: rocketmq_consumer_lag > 50000
for: 5m
labels:
severity: critical
annotations:
summary: "消费者积压过高"
description: "Consumer Group {{ $labels.consumer_group }} 积压 {{ $value }} 条消息"
- alert: BrokerDiskUsageHigh
expr: rocketmq_commitlog_disk_ratio > 0.75
for: 10m
labels:
severity: warning
annotations:
summary: "Broker 磁盘使用率过高"
七、最佳实践建议
| 实践 | 说明 |
|---|---|
| ✅ 生产环境必须接入 Prometheus + Grafana | 提供全面可观测性 |
| ✅ 关键指标设置告警 | 消费积压、磁盘、CPU、TPS 异常 |
| ✅ 结合日志系统(ELK/Loki) | 快速定位错误原因 |
| ✅ 定期巡检仪表盘 | 发现潜在瓶颈 |
| ✅ 使用 Dledger 模式 | 更易监控 Leader 切换 |
| ✅ 避免仅依赖 RocketMQ Console | 功能有限,性能差 |
✅ 总结
| 监控层级 | 工具 | 作用 |
|---|---|---|
| 基础监控 | RocketMQ Console | 快速查看状态、调试 |
| 高级监控 | Prometheus + Grafana | 全面指标、趋势分析、告警 |
| 日志监控 | ELK / Loki | 错误定位、审计 |
🚀 一句话总结:
RocketMQ 的监控 = 实时状态(Console) + 历史趋势(Prometheus) + 可视化(Grafana) + 告警(Alertmanager)。
构建这套体系,你就能实现对消息系统的“全链路可观测”,真正做到“问题早发现、故障快恢复”。
建议:将监控系统作为 RocketMQ 集群的标准配套组件,与部署、扩容、调优流程一体化管理。
1882

被折叠的 条评论
为什么被折叠?



