扩展4-rocketmq_exporter使用
prometheus 监控 RocketMQ
一、原理说明
1.1、RocketMQ 监控基础
RocketMQ 本身提供了内置的监控指标暴露能力(基于 JMX/HTTP),核心依赖其org.apache.rocketmq.tools模块的监控工具,以及 Prometheus 的Exporter机制实现指标采集:
- 指标来源:RocketMQ 的 Broker、NameServer、Producer/Consumer 均会暴露运行时指标(如消息生产 / 消费 TPS、消息堆积、磁盘使用率、连接数等);
- 采集方式:通过 RocketMQ Exporter(官方 / 社区版)将 RocketMQ 的原生指标转换为 Prometheus 可识别的
/metrics格式; - 核心流程:RocketMQ 节点产生指标 → Exporter 拉取并转换指标 → Prometheus 定时抓取 Exporter 指标 → Grafana 可视化 / AlertManager 告警。
1.2、核心监控指标分类
| 组件 | 核心监控指标 | 指标类型 | 监控意义 |
|---|---|---|---|
| Broker | 消息生产 TPS、消费 TPS、消息堆积数 | Counter/Gauge | 核心业务吞吐、堆积风险 |
| Broker | 磁盘使用率、文件句柄数、JVM 内存 / GC | Gauge | 服务器资源与 JVM 健康状态 |
| NameServer | 心跳数、Broker 注册数、请求响应时间 | Counter/Gauge | 注册中心可用性 |
| Consumer | 消费堆积、消费失败数、重试次数 | Gauge/Counter | 消费端健康度 |
| Producer | 生产失败数、发送延迟 | Counter/Gauge | 生产端稳定性 |
二、环境准备
-
基础依赖, 附上安装部署
服务名 说明 RocketMQ 4.9.7 Prometheus 3.5.0 Grafana 12.2.1 RocketMQ Exporter 社区维护版 jdk 1.8+ -
配置修改
-
conf/broker.conf
# broker.conf 关键配置, 添加下面四个, 安装看上面rocketmq链接 # ========== 基础网络配置(监控必须) ========== # 1. Broker 对外暴露的IP(核心!Exporter通过这个IP拉取监控指标) # 单机:填本机内网IP(如 192.168.1.10),不要用 127.0.0.1(集群下其他节点访问不到) # 集群:填Broker节点的真实内网IP brokerIP1=192.168.1.10 # 2. Broker 监听端口(默认10911,无需修改,确保端口未被占用) listenPort=10911 # ========== 监控相关配置 ========== # 3. 开启属性过滤(非必须,但部分监控指标依赖) enablePropertyFilter=true # 4. 监控数据采集间隔(单位:秒,默认60,建议改小提升实时性) monitorInterval=30 -
下面两个是可选参数
采集方式 依赖端口 采集内容 是否必须 HTTP / 默认方式 9876(NameServer)、10911(Broker) RocketMQ 业务指标(TPS、消息堆积、Broker 状态等) ✅ 必须 JMX 方式 10999(Broker)、10998(NameServer) JVM 底层指标(内存、GC、线程) ❌ 可选 -
bin/runbroker.sh
# ========== JMX监控配置(可选,但建议开) ========== # JMX是Java自带的监控协议,Exporter可通过JMX拉取更细粒度的JVM指标(内存/GC/线程) # 以下参数是添加到 Broker 的启动脚本中(不是直接写在broker.conf里!) # 步骤:编辑 RocketMQ 启动脚本 `$ROCKETMQ_HOME/bin/runbroker.sh` # 在脚本开头的 JAVA_OPT 部分添加如下内容: # 在一堆JAVA_OPT下面加,如果配置没动的话,就在94行下面 # 开启JMX JAVA_OPT="${JAVA_OPT} -Dcom.sun.management.jmxremote" # JMX端口(自定义,如10999) JAVA_OPT="${JAVA_OPT} -Dcom.sun.management.jmxremote.port=10999" # 关闭SSL(测试/内网环境) JAVA_OPT="${JAVA_OPT} -Dcom.sun.management.jmxremote.ssl=false" # 关闭认证(内网环境) JAVA_OPT="${JAVA_OPT} -Dcom.sun.management.jmxremote.authenticate=false" # JMX绑定的IP(和brokerIP1一致) JAVA_OPT="${JAVA_OPT} -Djava.rmi.server.hostname=10.4.50.165" -
bin/runserver.sh
# 如果默认没动的话,加到最后的脚本倒数第一行上 JAVA_OPT="${JAVA_OPT} -Dcom.sun.management.jmxremote" JAVA_OPT="${JAVA_OPT} -Dcom.sun.management.jmxremote.port=10998" JAVA_OPT="${JAVA_OPT} -Dcom.sun.management.jmxremote.ssl=false" JAVA_OPT="${JAVA_OPT} -Dcom.sun.management.jmxremote.authenticate=false" JAVA_OPT="${JAVA_OPT} -Djava.rmi.server.hostname=10.4.50.165" $JAVA ${JAVA_OPT} $@ # <--这行上面 -
10999/10998 只用于补充采集 JVM 指标,如果不配置,Exporter 依然能采集到 RocketMQ 核心业务指标,但会缺失部分 JVM 细粒度指标;
-
10999/10998 的使用场景
场景 是否需要 10999/10998 Exporter 启动方式 仅监控 RocketMQ 业务指标(TPS、堆积等) ❌ 不需要 用默认命令(仅指定 namesrvAddr 和 port) 监控业务指标 + JVM 底层指标 ✅ 需要 启动时添加 --rocketmq.config.jmxPort/jmxIp 集群环境监控多节点 JVM ✅ 需要 每个 Broker 节点部署一个 Exporter,分别指定对应 JMX 端口
-
-
2.1、单机部署
-
准备阶段
-
编译rocketmq-exporter
git clone https://github.com/apache/rocketmq-exporter.git cd rocketmq-exporter mvn clean package -DskipTests # 如果出现了 [ERROR] Failed to execute goal org.apache.maven.plugins:maven-checkstyle-plugin:2.17:check (verify) on project rocketmq-exporter: Failed during checkstyle execution: There is 1 error reported by Checkstyle 6.11.2 with style/rmq_checkstyle.xml ruleset. -> [Help 1] # 修复checkstyle报错 mvn clean package -DskipTests -e <--之后在重新编译 # 编译完成之后 rocketmq-exporter-master\target 下会生成 rocketmq-exporter-0.0.3-SNAPSHOT.jar # 我这本地编译的放到服务器上 mkdir /data/rocketmq-export/log -p 将 rocketmq-exporter-0.0.3-SNAPSHOT-exec.jar 放到 /data/rocketmq-export 目录
-
-
原理说明: NameServer 用 10998、Broker 用 10999,Exporter 是否需要为 Broker 单独起进程?
-
核心逻辑:Exporter 的自动发现机制
RocketMQ Exporter 的核心设计是:通过连接 NameServer(9876 端口)自动发现集群中所有 Broker 节点,无需为每个 Broker/NameServer 单独部署 Exporter。
- 采集业务指标:Exporter 通过 NameServer 获取所有 Broker 列表,直接从 Broker 的 10911 端口拉取 TPS、堆积等业务指标;
- 采集 JVM 指标:只需告诉 Exporter「Broker 的 JMX 端口规则」(比如所有 Broker 的 JMX 端口都是 10999,NameServer 是 10998),Exporter 会自动匹配节点 IP+JMX 端口采集 JVM 指标。
-
单 Exporter 采集 NameServer+Broker(含 JVM)的配置步骤
-
环境说明
- NameServer:127.0.0.1:9876(JMX 端口 10998);
- Broker:127.0.0.1:10911(JMX 端口 10999);
- 目标:一个 Exporter 进程采集两者的业务 + JVM 指标。
-
启动 Exporter(单进程,同时采集 NameServer+Broker)
nohup java -jar target/rocketmq-exporter-0.0.1-SNAPSHOT.jar \ --rocketmq.config.namesrvAddr=127.0.0.1:9876 \ # 连接NameServer自动发现Broker --rocketmq.config.brokerJmxPort=10999 \ # 指定所有Broker的JMX端口 --rocketmq.config.namesrvJmxPort=10998 \ # 指定所有NameServer的JMX端口 --server.port=5557 & # Exporter端口参数 作用 brokerJmxPort统一指定集群中所有 Broker 的 JMX 端口(无需为每个 Broker 单独配置) namesrvJmxPort统一指定集群中所有 NameServer 的 JMX 端口 namesrvAddrExporter 通过这个地址获取 Broker 列表,是自动发现的核心
-
-
-
添加自启 <-- 集群跟单机用的是同一个脚本
cat > /usr/lib/systemd/system/rocketmq-exporter.service << EOF [Unit] Description=RocketMQ Exporter for Prometheus After=network.target rocketmq-broker.service rocketmq-namesrv.service Documentation=https://github.com/apache/rocketmq-exporter [Service] User=root Group=root # 工作目录(确保已创建) WorkingDirectory=/data/rocketmq-export # 启动命令(替换为真实Java路径!) ExecStart=/data/jdk1.8/bin/java -jar /data/rocketmq-export/rocketmq-exporter-0.0.3-SNAPSHOT-exec.jar \ --rocketmq.config.namesrvAddr=10.4.50.165:9876 \ --rocketmq.config.brokerJmxPort=10999 \ --rocketmq.config.namesrvJmxPort=10998 \ --server.port=5557 # 重启策略 Restart=on-failure RestartSec=5 # 日志输出(systemd正确格式:file:路径,自动追加) StandardOutput=file:/data/rocketmq-export/log/rocketmq-exporter.log StandardError=file:/data/rocketmq-export/log/rocketmq-exporter.err # 允许日志文件自动创建 PermissionsStartOnly=true [Install] WantedBy=multi-user.target EOF-
参数说明与路径替换
配置项 需替换的内容 WorkingDirectory Exporter 的根目录 ExecStart 中的 JAR 路径 java绝对路径 namesrvAddr 若为集群,替换为 192.168.1.10:9876;192.168.1.11:9876(多个 NameServer 用分号分隔) -
创建日志
# 创建日志文件 touch /data/rocketmq-export/log/rocketmq-exporter.log touch /data/rocketmq-export/log/rocketmq-exporter.err -
单机用集群配置会有性能损耗吗?
完全不会。Exporter 的「自动发现」逻辑在单机场景下仅扫描 1 个 NameServer 和 1 个 Broker,资源消耗和纯单机配置几乎一致。
-
Prometheus 的集群配置需要改吗?
不需要。Prometheus 中配置的
targets依然是 Exporter 的本地地址(localhost:5557),和单机配置完全相同。
-
-
服务启动
systemctl daemon-reload systemctl status rocketmq-exporter systemctl restart rocketmq-exporter systemctl stop rocketmq-exporter # 启动完后之后检查 [root@localhost rocketmq-export]# ss -tnlp|grep 555 LISTEN *:5557 users:(("java",pid=6721,fd=62)) LISTEN *:5559 users:(("java",pid=6721,fd=52)) [root@localhost rocketmq-export]# tail -f /data/rocketmq-export/log/rocketmq-exporter.log [2025-12-09 11:04:26.193] INFO init RMQMetricsService add opentelemetry collector... [2025-12-09 11:04:26.703] INFO grpc server start successfully at 5559 [2025-12-09 11:04:26.969] INFO MetricsCollectTask init starting.... [2025-12-09 11:04:27.230] INFO cluster name= DefaultCluster, broker name = [broker-a] broker name = broker-a, master broker address= 10.4.50.165:10911 [2025-12-09 11:04:27.230] INFO MetricsCollectTask init finished....cost:260 [2025-12-09 11:04:27.662] INFO Starting ProtocolHandler ["http-nio-5557"] [2025-12-09 11:04:27.683] INFO Tomcat started on port(s): 5557 (http) with context path '' [2025-12-09 11:04:27.708] INFO Started RocketMQExporterApplication in 3.7 seconds (JVM running for 4.453) -
访问:
http://ip:5557/metrics
2.1.1、配置prometheus
-
编辑 Prometheus 配置文件
prometheus.ymlglobal: scrape_interval: 15s # 抓取间隔 evaluation_interval: 15s scrape_configs: # RocketMQ监控(单机) - job_name: "rocketmq-single" static_configs: - targets: ["刚刚的ip:5557"] # Exporter地址 metrics_path: /metrics scrape_interval: 5s # 缩短抓取间隔,提升实时性 # 实际用的时候需要把后面的注释删掉,不然可能会有莫名其妙的问题 -
检查配置
prometheus]# ./promtool check config prometheus.yml Checking prometheus.yml SUCCESS: 3 rule files found SUCCESS: prometheus.yml is valid prometheus config file syntax prometheus]# systemctl restart prometheus- 在 Prometheus UI(
http://localhost:9090)→Targets中,确认rocketmq-singlejob 状态为UP。
- 在 Prometheus UI(
2.1.2、Grafana 可视化
- Grafana 官网搜索 RocketMQ 模板(推荐 ID:10477) -->官方推荐的社区模板
- 配置数据源:Grafana → 配置 → 数据源 → 添加 Prometheus,填写 Prometheus 地址(如
http://localhost:9090); - 导入json: 仪表板–> 新建 --> 导入 --> 10477_rev3.json --> 导名为 rocket_single_dashbo
- 查看面板:可看到 Broker TPS、消息堆积、JVM 内存、磁盘使用率等核心指标。
2.2、集群部署
-
配置修改,三台都需要改一下,三台都要监听10998、10999
-
集群模式启动 Exporter
-
集群中任意一台部署exporter
-
rocketmq-exporter.service <-- 再次提示,集群内只需要部署一台,超过50台在部署多个
cat > /usr/lib/systemd/system/rocketmq-exporter.service << EOF [Unit] Description=RocketMQ Exporter for Prometheus After=network.target rocketmq-broker.service rocketmq-namesrv.service Documentation=https://github.com/apache/rocketmq-exporter [Service] User=root Group=root # 工作目录(确保已创建) WorkingDirectory=/data/rocketmq-export # 启动命令(替换为真实Java路径!) ExecStart=/data/jdk1.8/bin/java -jar /data/rocketmq-export/rocketmq-exporter-0.0.3-SNAPSHOT-exec.jar \ --rocketmq.config.namesrvAddr=10.4.50.130:9876;10.4.50.139:9876;10.4.50.167:9876 \ --rocketmq.config.brokerJmxPort=10999 \ --rocketmq.config.namesrvJmxPort=10998 \ --server.port=5557 # 重启策略 Restart=on-failure RestartSec=5 # 日志输出(systemd正确格式:file:路径,自动追加) StandardOutput=file:/data/rocketmq-export/log/rocketmq-exporter.log StandardError=file:/data/rocketmq-export/log/rocketmq-exporter.err # 允许日志文件自动创建 PermissionsStartOnly=true [Install] WantedBy=multi-user.target EOF -
启动
systemctl daemon-reload systemctl status rocketmq-exporter systemctl restart rocketmq-exporter systemctl stop rocketmq-exporter # 启动完后之后检查 [root@localhost rocketmq-export]# ss -tnlp|grep 555 LISTEN *:5557 users:(("java",pid=6721,fd=62)) LISTEN *:5559 users:(("java",pid=6721,fd=52))
-
2.1.1、配置Prometheus
-
配置文件说明
[root@node1 prometheus]# vim prometheus.yml scrape_configs: - job_name: "rocketmq-cluster" static_configs: - targets: ["10.4.50.130:5557"] labels: cluster: "rocketmq-prod" scrape_interval: 5s # 如果有多台, ai提示是50台以上集群用多个, 示例 - job_name: "rocketmq-cluster" static_configs: - targets: - "192.168.1.20:5557" # Broker1主节点Exporter - "192.168.1.22:5557" # Broker2主节点Exporter scrape_interval: 5s # 加完之后检查一下配置 [root@node1 prometheus]# ./promtool check config prometheus.yml Checking prometheus.yml SUCCESS: 3 rule files found SUCCESS: prometheus.yml is valid prometheus config file syntax [root@node1 prometheus]# systemctl restart prometheus-
在 Prometheus UI(
http://localhost:9090)→Targets中,确认rocketmq-clusterjob 状态为UP。 -
当我们查看指标时,会发现只有 master这一台机器的监控信息.
# 当我们当167 stop之后,会切到139或者130, 但监控信息只会一台 rocketmq_brokeruntime_pmdt_500to1s{cluster="MyRocketMQCluster",brokerIP="10.4.50.167:10911",brokerHost="",des="V4_9_7",boottime="1765261725150",broker_version="407",} 0.0 rocketmq_brokeruntime_pmdt_1to2s{cluster="MyRocketMQCluster",brokerIP="10.4.50.167:10911",brokerHost="",des="V4_9_7",boottime="1765261725150",broker_version="407",} 0.0- RocketMQ 集群的主从机制决定了「Slave 无法承接生产 / 消费业务」,最终体现为指标层面只有 Master 相关(停服后指标归零)。下面拆解背后的逻辑,并验证集群监听状态是否正常, 先说结论:停止 Master 后仅显示 Master 指标是正常的
- RocketMQ 主从集群中,Slave 不具备 “主备切换” 的自动承接能力(除非手动配置 Dledger/RAFT 模式),停止 Master 后:
- 业务层面:所有生产 / 消费请求直接失败,集群无业务流量→所有业务类指标(TPS、生产延迟、偏移量)归零;
- 指标采集层面:
- Exporter 仍在监听 Slave(如
10.4.50.167:10911),但 Slave 本身不处理业务,且 Master 停服后 Slave 的存储同步也会中断; - 你看到的 “仅监听 Master”,实际是 Master 停服前的指标残留,或 Slave 无业务指标导致 “看似只有 Master”;
- Exporter 仍在监听 Slave(如
- 存储层面:Slave 的磁盘使用率(
commitlog_disk_ratio=0.06)等指标仍有值,说明 Exporter 确实采集到了 Slave,只是业务指标无数据。
- RocketMQ 主从集群中,Slave 不具备 “主备切换” 的自动承接能力(除非手动配置 Dledger/RAFT 模式),停止 Master 后:
- RocketMQ 集群的主从机制决定了「Slave 无法承接生产 / 消费业务」,最终体现为指标层面只有 Master 相关(停服后指标归零)。下面拆解背后的逻辑,并验证集群监听状态是否正常, 先说结论:停止 Master 后仅显示 Master 指标是正常的
-
2.1.2、预警配置
-
alert_rules.yml
groups: - name: rocketmq-alerts rules: # Broker宕机告警 - alert: RocketMQBrokerDown expr: up{job="rocketmq-cluster"} == 0 for: 1m labels: severity: critical annotations: summary: "RocketMQ Broker {{ $labels.brokerName }} 宕机" description: "Broker {{ $labels.brokerName }} 已下线超过1分钟,请检查" # 消息堆积告警 - alert: RocketMQMessageBacklog expr: rocketmq_topic_consume_offset_diff > 10000 for: 5m labels: severity: warning annotations: summary: "Topic {{ $labels.topic }} 消息堆积" description: "Topic {{ $labels.topic }} 堆积数:{{ $value }},超过阈值10000" # 磁盘使用率告警 - alert: RocketMQBrokerDiskHighUsage expr: rocketmq_broker_disk_usage > 85 for: 5m labels: severity: warning annotations: summary: "Broker {{ $labels.brokerName }} 磁盘使用率过高" description: "磁盘使用率:{{ $value }}%,超过阈值85%" -
prometheus.yml
rule_files: - "alert_rules.yml" alerting: alertmanagers: - static_configs: - targets: ["localhost:9093"] # AlertManager地址
三、prometheus指标
3.1、核心业务指标
-
TPS生产指标
指标名 含义 监控意义 阈值 / 关注点 rocketmq_producer_tps{topic="TopicTest"}指定 Topic 的生产 TPS(每秒生产消息数) 核心业务生产吞吐,反映生产端流量 波动异常(突增 / 突降)需告警 rocketmq_broker_tps{broker="broker-a"}Broker 的总 TPS(生产 + 消费) Broker 整体处理能力,集群负载核心指标 单 Broker TPS 接近硬件上限需扩容 rocketmq_producer_message_size{topic="TopicTest"}指定 Topic 生产消息的平均大小(字节) 评估消息体积,影响网络 / 磁盘 IO 突然增大可能导致 IO 瓶颈 rocketmq_brokeruntime_msg_put_total_today_nowBroker 今日累计生产消息数 业务消息总量统计,核对业务量 与历史同期对比,异常波动需排查 rocketmq_brokeruntime_put_tps60Broker 近 60 秒平均生产 TPS 短期生产吞吐趋势,比实时 TPS 更稳定 持续低于基线需排查生产端问题 rocketmq_brokeruntime_gettotal_tps60Broker 近 60 秒平均消费 TPS 消费端吞吐,反映消费能力 生产 TPS > 消费 TPS 时会堆积 rocketmq_brokeruntime_put_latency_99生产消息 99 分位延迟(ms) 生产延迟,反映 Broker 写入性能 99 分位 > 50ms 需关注,>100ms 需告警 rocketmq_brokeruntime_put_latency_999生产消息 99.9 分位延迟(ms) 极端场景生产延迟,核心稳定性指标 99.9 分位 > 200ms 需紧急排查 -
线程池 / 队列指标(中优先级)
指标名 含义 监控意义 阈值 / 关注点 rocketmq_brokeruntime_send_threadpool_queue_size发送线程池队列长度 生产请求排队数,反映 Broker 处理压力 >0 持续增长需扩容线程池 / 硬件 rocketmq_brokeruntime_pull_threadpoolqueue_size拉取线程池队列长度 消费请求排队数,反映消费处理压力 >0 持续增长需排查消费端 rocketmq_brokeruntime_query_threadpoolqueue_size查询线程池队列长度 管理类请求排队数,辅助监控 >0 需关注 Broker 负载 rocketmq_brokeruntime_send_threadpoolqueue_capacity发送线程池队列容量 队列最大可容纳请求数 无阈值,辅助计算队列使用率 -
偏移量 / 积压相关(中优先级)
指标名 含义 监控意义 阈值 / 关注点 rocketmq_producer_offset{topic="TopicTest"}指定 Topic 的生产偏移量 生产进度,辅助计算消息堆积 与消费偏移量差值 > 10000 需告警 rocketmq_topic_retry_offset重试 Topic 的偏移量 消费重试消息数,反映消费失败率 持续增长需排查消费端异常 rocketmq_brokeruntime_earliest_message_timestampBroker 中最早消息的时间戳 消息留存时间,评估消息清理策略 <0 表示无消息,正常;非 0 需确认是否有旧消息堆积 -
生产延迟消息数
指标名 含义 监控意义 阈值 / 关注点 rocketmq_brokeruntime_pmdt_0ms生产延迟 0ms 的消息数 无延迟消息占比,反映 Broker 写入效率 占比越低,写入性能越差 rocketmq_brokeruntime_pmdt_0to10ms生产延迟 0-10ms 的消息数 低延迟消息占比,核心性能指标 占比 < 90% 需关注 rocketmq_brokeruntime_pmdt_10to50ms生产延迟 10-50ms 的消息数 中延迟消息数 数量突增需排查 Broker 负载 rocketmq_brokeruntime_pmdt_50to100ms+生产延迟 > 50ms 的消息数 高延迟消息数,异常指标 非 0 即需关注,>10 需告警 -
辅助 / 统计类指标(低优先级)
指标名 含义 监控意义 备注 rocketmq_producer_count生产者数量 生产端连接数,辅助排查连接泄露 无阈值,关注异常增长 rocketmq_brokeruntime_putmessage_entire_time_max生产消息最大耗时(ms) 极端生产耗时,偶发高值可忽略 持续 > 500ms 需告警 rocketmq_brokeruntime_getmessage_entire_time_max消费消息最大耗时(ms) 极端消费耗时,偶发高值可忽略 持续 > 500ms 需告警 rocketmq_brokeruntime_putmessage_times_total生产消息总次数 累计生产次数,业务量统计 无阈值,用于报表统计 rocketmq_brokeruntime_remain_transientstore_buffer_numbs瞬时存储缓冲区剩余数量 RocketMQ 存储层缓冲区,辅助监控 接近 0 需关注磁盘写入性能 rocketmq_brokeruntime_pagecache_lock_time_mills页缓存锁等待时间(ms) 磁盘 IO 锁竞争时间,反映存储性能 >0 需关注磁盘 IO -
其它
指标名 含义 监控意义 备注 broker_version="407"/des="V4_9_7"Broker 版本 确认集群版本,排查版本兼容问题 无阈值,运维备查 boottime="1765183441818"Broker 启动时间戳 确认 Broker 是否重启过 异常重启需排查原因 cluster="MyRocketMQCluster"集群名称 区分多集群环境 无阈值,Grafana 筛选用
3.2、存储 / 磁盘指标
| 指标名 | 含义 | 监控意义 | 阈值 / 关注点 |
|---|---|---|---|
rocketmq_brokeruntime_commitlog_disk_ratio | CommitLog 磁盘使用率 | Broker 核心存储分区使用率,最关键磁盘指标 | >80% 预警,>85% 告警,>90% 紧急处理 |
rocketmq_brokeruntime_consumequeue_disk_ratio | ConsumeQueue 磁盘使用率 | 消费队列磁盘使用率,辅助存储指标 | >80% 预警 |
rocketmq_brokeruntime_commitlogdir_capacity_free | CommitLog 目录剩余磁盘空间(字节) | 剩余磁盘绝对量,避免磁盘耗尽 | 剩余 < 100GB 告警 |
rocketmq_brokeruntime_commitlogdir_capacity_total | CommitLog 目录总磁盘空间(字节) | 磁盘总容量,用于计算使用率 | 无阈值,辅助分析 |
rocketmq_brokeruntime_commitlog_maxoffset | CommitLog 最大偏移量 | 存储数据量增长趋势,评估磁盘消耗速度 | 无阈值,关注增长速率 |
rocketmq_broker_commitlog_diff | 主从 Broker CommitLog 偏移量差值 | 主从数据同步延迟,反映集群同步状态 | 差值 > 10000 需告警(同步异常) |
-
rocketmq_broker_commitlog_diff : 仅 Slave 会统计该指标,Master 本身不会统计(因为 Master 是同步基准,无 “差值” 可言)

四、其它补充
-
常见问题排查
- Exporter 抓取不到指标:检查 NameServer 地址是否正确、RocketMQ 端口是否开放、Exporter 与 RocketMQ 版本兼容(推荐 Exporter 与 RocketMQ 同版本);
- 指标缺失:部分指标需开启 RocketMQ 扩展监控(如
broker.conf中monitorInterval=5); - Grafana 面板无数据:检查 Prometheus 数据源是否正确、指标名称是否匹配(不同 Exporter 版本指标名可能差异)。
-
性能优化
-
抓取间隔:生产环境建议抓取间隔 5-10s,避免过短导致 Prometheus 压力过大;
-
Exporter 资源限制:为 Exporter 配置 JVM 参数(如
-Xms256m -Xmx512m),避免内存溢出; -
指标过滤:通过 Prometheus
metric_relabel_configs: - source_labels: [__name__] regex: "rocketmq_.*" # 只保留rocketmq前缀的指标 action: keep
-
否开放、Exporter 与 RocketMQ 版本兼容(推荐 Exporter 与 RocketMQ 同版本);
- 指标缺失:部分指标需开启 RocketMQ 扩展监控(如
broker.conf中monitorInterval=5); - Grafana 面板无数据:检查 Prometheus 数据源是否正确、指标名称是否匹配(不同 Exporter 版本指标名可能差异)。
-
性能优化
-
抓取间隔:生产环境建议抓取间隔 5-10s,避免过短导致 Prometheus 压力过大;
-
Exporter 资源限制:为 Exporter 配置 JVM 参数(如
-Xms256m -Xmx512m),避免内存溢出; -
指标过滤:通过 Prometheus
metric_relabel_configs: - source_labels: [__name__] regex: "rocketmq_.*" # 只保留rocketmq前缀的指标 action: keep
-
更多推荐
所有评论(0)