RocketMQ 消息队列监控接入

更新时间:
复制 MD 格式

本文介绍如何将自建 RocketMQ 接入云监控 2.0。接入组件基于 aio-exporter 的 RocketMQ 适配,通过 remoting 管控接口采集 Broker 运行时、Topic / 消费组堆积、生产与消费 TPS、在线消费者客户端等指标,支持 RocketMQ 4.3.2+(推荐 4.9.x),支持 ACK 集群(CS)与 ECS(VPC) 两种部署环境。接入后自动生成 RocketMQ 实例实体与内置大盘。

说明

采集调度说明(v1.0-9d3c2c2+):Exporter 后台按 Task 独立调度 RPC 采集(默认开启),与 Prometheus 拉取 /metrics 解耦。表单中的 Metric 采集间隔 仅控制 Prometheus 抓取频率;各 Task 的采集周期、并发与削峰参数可单独配置,用于降低大集群对 Broker 的 CPU 冲击。

支持的中间件条件

接入前请确认目标实例满足以下条件,否则可能出现采集不到数据或指标缺失。

条件项

要求

版本

RocketMQ 4.3.2+(推荐 4.9.x);5.x 需运行在 remoting 模式(E2E 使用 5.3.1 验证)

部署形态

仅支持自建 RocketMQ。阿里云云消息队列 RocketMQ 版只开放 SDK 接入点、不开放 remoting 管控接口,请改用云产品插件 cloud-acs-rocketmq

采集方式

先连 NameServer(默认 9876)拉路由,再直连各 Broker remoting 端口(默认 10911);全部 Broker 节点均需可达

Broker 注册地址

Broker 以 brokerIP1 注册到 NameServer,必须是 Exporter 可路由的地址;容器 / NAT / 跨网段未配置时,只能采到 Topic 元数据,Broker 运行时指标为空

ACL

Broker 开启 aclEnable 时需填写 AccessKey / SecretKey,且账号具备管控权限;未开启 ACL 时留空

网络连通

CS 环境要求 NameServer 与全部 Broker 可在所选 ACK 集群网络内连通;ECS(VPC) 环境要求托管探针交换机网段可访问上述节点

前提条件

  • 已开通可观测监控Prometheus版。

  • 接入 CS 环境:目标 ACK 集群已接入云监控 2.0,且集群状态为运行中;目标 RocketMQ 服务可在该集群网络内连通。

  • 接入 ECS(VPC) 环境:已选定目标 RocketMQ 所在 ECS,并确保托管探针交换机网段可访问该 ECS。

费用说明

  • 根据产生的指标数据量,在 Prometheus产品中计费。无其他费用。

接入方法

步骤一:确认 ACL(如需)

Broker 未开启 ACL(aclEnable)时可跳过本步骤。若已开启 ACL,请准备具备管控权限的 AccessKey / SecretKey,并在接入表单中填写。

阿里云云消息队列 RocketMQ 版无法使用本插件,请安装 cloud-acs-rocketmq。

步骤二:选择接入环境

本插件支持 CS 与 ECS(VPC) 两种接入环境,工作原理不同,请按 RocketMQ 实际部署位置选择:

CS(容器服务)

  • 将 Exporter 安装到用户指定的目标 ACK 集群,并复用该集群已有的采集器进行指标采集。

  • 观测对象为 ACK 集群。

  • 网络要求:目标 RocketMQ 服务可在该集群网络内连通即可(例如集群内 Service,或集群能访问到的 VPC 内网地址)。

ECS(VPC)

  • 选择目标 RocketMQ 服务部署的 ECS 机器,系统根据该 ECS 的 VPC 信息部署全托管采集器。

  • 不会在 ECS 上安装任何进程。

  • 观测对象为 ECS 实例。

  • 网络要求:托管探针所在交换机网段需允许访问目标 ECS(安全组、ACL 等需放行)。

环境

Exporter 部署位置

是否在业务机上装进程

观测对象

网络通达要求

CS

用户指定的 ACK 集群

否(部署在集群内,不占用业务 Pod 宿主)

ACK 集群

RocketMQ 可在该集群网络内连通

ECS(VPC)

系统按 VPC 部署的全托管采集器

否,不在 ECS 上安装任何进程

ECS 实例

托管探针交换机网段可访问目标 ECS

步骤三:接入配置

  1. 登录云监控2.0控制台,选择目标工作空间后,在左侧导航栏单击 接入中心 ,单击 RocketMQ 开始接入。

  2. 选择接入环境(CS 或 ECS(VPC)),并在下拉列表中选择 观测对象 。

  3. 接入配置,配置完成后单击 确定 :

    基础配置

    配置项

    是否必填

    默认值

    说明

    RocketMQ NameServer 地址

    是

    -

    host:port 或 ip:port,多个用分号 ; 分隔

    云厂商 / 部署来源

    否

    self-hosted/rocketmq

    写入 provider 标签。选项中不含阿里云托管版

    AccessKey / SecretKey(ACL)

    否

    空

    仅 Broker 开启 ACL 时填写

    Metric 采集间隔(秒)

    是

    30

    Prometheus 拉取 /metrics 的间隔。开启「按 Task 独立调度采集」时不再作为后台 RPC 全量采集周期

    自定义标签

    否

    空

    注入到指标上的额外标签

    使用公网镜像地址

    否

    关闭

    无法访问内网镜像仓库时开启

    采集调度与并发(可选,推荐大集群按默认值使用)

    配置项

    是否必填

    默认值

    说明

    按 Task 独立调度采集

    否

    开启

    开启后按下方各 Task 独立调度后台采集;关闭则回退为单一 collect_interval(等于 Metric 采集间隔)

    Topic/消费组采集并发(workers)

    否

    1

    Topic / 消费组 RPC 并行度。大集群建议保持 1

    Broker 采集并发(broker_workers)

    否

    1

    Broker 维度(runtime / stats)并行度。大集群建议保持 1

    指标缓存 TTL(秒)

    否

    0

    0 表示自动(各 Task 间隔 × 2);填正整数则使用固定 TTL

    客户端指标并发(client_metric_workers)

    否

    10

    在线消费者客户端指标异步采集线程池大小

    客户端指标队列长度

    否

    5000

    客户端指标异步任务队列容量

    采集消费延迟(storetime)

    否

    开启

    是否采集 rocketmq_group_get_latency_by_storetime;大集群可关闭以减轻 RPC

    Topic 采集间隔(毫秒)

    否

    0

    每个 Topic 处理后的 sleep,用于削峰(如 50–200)

    消费组采集间隔(毫秒)

    否

    0

    每个消费组之间的 sleep

    Task 调度周期(仅「按 Task 独立调度采集」开启时生效)

    取值支持 Go duration(如 60s、15m)或 Spring cron;填 - 表示禁用该 Task。

    配置项

    默认值

    说明

    Task collect_topic_offset

    -(禁用)

    Topic 位点采集;默认禁用以降低 RPC

    Task collect_producer

    120s

    生产者指标

    Task collect_consumer_offset

    15m

    消费组堆积 / 位点(较重,大集群建议 ≥15m)

    Task collect_broker_stats_topic

    120s

    按 Topic 的 Broker stats(最重 Task,可配合 Topic 采集间隔削峰)

    Task collect_broker_stats

    120s

    Broker 汇总 stats

    Task collect_broker_runtime_stats

    60s

    Broker 运行时(线程池、TPS 等)

    说明

    大集群调参建议:保持 workers=1、broker_workers=1;优先拉长 collect_broker_stats_topic / collect_consumer_offset;若 Broker query 线程池队列持续上涨,可增大对应 Task 间隔或设置 topic_sleep_millis 为 50–200。

  4. 接入成功后,可在 实体探索 查看接入的实体及相关可观测数据。

数据使用说明

实体说明

接入后,云监控定期从 rocketmq_broker_tps 等指标的标签中发现 RocketMQ 实例,并生成中间件实体:

维度

说明

域(domain)

middleware

实体类型

middleware.rocketmq

实体过滤条件

.entity with(domain='middleware', type='middleware.rocketmq')

观测对象(绑定实体)

CS 环境为 acs.ack.cluster;ECS(VPC) 环境为 acs.ecs.instance

实体字段来自采集标签,与安装次数无关:

字段

说明

instance_id

实例标识,通常取自 NameServer / 集群相关标签

provider

部署来源,如 self-hosted/rocketmq

region_id

地域

env_type

部署环境类型(CS / ECS)

cluster_id

所属集群标识

可在 实体探索 或 中间件洞察 应用中按上述字段检索实例。

在线消费者相关指标依赖消费者客户端在线上报,客户端全部离线时对应指标为空。

内置大盘

大盘名称

查看入口

说明

RocketMQ 概览(实例概览)

实体详情页 实例概览 页签

UModel 大盘,随实例上下文自动绑定变量

RocketMQ 概览 / RocketMQ Overview

Grafana 大盘列表

Grafana 大盘,提供中英文两套

核心指标

以下为实体数据集 middleware.metric.rocketmq 的完整指标清单(共 89 个),可在实体详情、大盘与告警中直接使用:

指标名

类型

单位

显示名

说明

rocketmq_group_diff

gauge

-

消费组堆积

消费组消息堆积量(Broker 最大位点与消费位点之差)。

rocketmq_group_retrydiff

gauge

-

消费组重试堆积

消费组重试 Topic 上的消息堆积量。

rocketmq_group_dlqdiff

gauge

-

消费组死信堆积

消费组死信队列(DLQ)上的消息堆积量。

rocketmq_group_count

gauge

-

消费组数量

消费组数量(或 exporter 上报的消费组相关计数)。

rocketmq_producer_count

gauge

-

生产者实例数

当前 Topic/Group 下已连接的生产者实例数。

rocketmq_producer_offset

gauge

-

生产位点

Broker 上当前 Topic 的生产(最大)位点。

rocketmq_topic_retry_offset

gauge

-

重试 Topic 位点

Topic 重试队列的当前位点。

rocketmq_topic_dlq_offset

gauge

-

死信 Topic 位点

Topic 死信队列的当前位点。

rocketmq_client_consume_fail_msg_count

gauge

-

客户端消费失败数

消费客户端消费失败的消息数量。

rocketmq_client_consume_fail_msg_tps

gauge

次/秒

客户端消费失败 TPS

消费客户端消费失败的 TPS。

rocketmq_client_consume_ok_msg_tps

gauge

次/秒

客户端消费成功 TPS

消费客户端消费成功的 TPS。

rocketmq_client_consume_rt

gauge

毫秒

客户端消费耗时

客户端消费响应时间(RT,毫秒)。

rocketmq_client_consumer_pull_rt

gauge

毫秒

客户端拉取耗时

客户端拉取消息的响应时间(RT,毫秒)。

rocketmq_client_consumer_pull_tps

gauge

次/秒

客户端拉取 TPS

客户端拉取消息的 TPS。

rocketmq_broker_tps

gauge

次/秒

Broker 生产 TPS

Broker 写入(生产)消息的 TPS。

rocketmq_broker_qps

gauge

次/秒

Broker 拉取 QPS

Broker 读取(消费拉取)消息的 QPS。

rocketmq_broker_commitlog_diff

gauge

-

Broker CommitLog 差异

Broker 级 CommitLog 位点差,用于观察主从同步落后情况。

rocketmq_brokeruntime_pmdt_0ms

gauge

-

写入耗时桶 0ms

消息写入耗时落在 0ms 桶的采样次数。

rocketmq_brokeruntime_pmdt_0to10ms

gauge

-

写入耗时桶 0–10ms

消息写入耗时落在 0–10ms 桶的采样次数。

rocketmq_brokeruntime_pmdt_10to50ms

gauge

-

写入耗时桶 10–50ms

消息写入耗时落在 10–50ms 桶的采样次数。

rocketmq_brokeruntime_pmdt_50to100ms

gauge

-

写入耗时桶 50–100ms

消息写入耗时落在 50–100ms 桶的采样次数。

rocketmq_brokeruntime_pmdt_100to200ms

gauge

-

写入耗时桶 100–200ms

消息写入耗时落在 100–200ms 桶的采样次数。

rocketmq_brokeruntime_pmdt_200to500ms

gauge

-

写入耗时桶 200–500ms

消息写入耗时落在 200–500ms 桶的采样次数。

rocketmq_brokeruntime_pmdt_500to1s

gauge

-

写入耗时桶 500ms–1s

消息写入耗时落在 500ms–1s 桶的采样次数。

rocketmq_brokeruntime_pmdt_1to2s

gauge

-

写入耗时桶 1–2s

消息写入耗时落在 1–2s 桶的采样次数。

rocketmq_brokeruntime_pmdt_2to3s

gauge

-

写入耗时桶 2–3s

消息写入耗时落在 2–3s 桶的采样次数。

rocketmq_brokeruntime_pmdt_3to4s

gauge

-

写入耗时桶 3–4s

消息写入耗时落在 3–4s 桶的采样次数。

rocketmq_brokeruntime_pmdt_4to5s

gauge

-

写入耗时桶 4–5s

消息写入耗时落在 4–5s 桶的采样次数。

rocketmq_brokeruntime_pmdt_5to10s

gauge

-

写入耗时桶 5–10s

消息写入耗时落在 5–10s 桶的采样次数。

rocketmq_brokeruntime_pmdt_10stomore

gauge

-

写入耗时桶 ≥10s

消息写入耗时落在 ≥10s 桶的采样次数。

rocketmq_consumer_tps

gauge

次/秒

消费 TPS

Broker 侧消费组拉取消息的 TPS。

rocketmq_group_consume_tps

gauge

次/秒

消费组消费 TPS

消费组消费吞吐量(TPS)。

rocketmq_consumer_offset

gauge

-

消费位点

消费组在 Broker 上的当前消费位点。

rocketmq_group_consume_total_offset

gauge

-

消费组累计消费位点

消费组累计消费位点。

rocketmq_consumer_message_size

gauge

字节

消费消息大小

已消费消息的大小(字节)。

rocketmq_send_back_nums

gauge

-

消息回退数

回退到 Broker 的消息数量(消费失败重试/回投)。

rocketmq_group_get_latency_by_storetime

gauge

毫秒

消费获取延迟

按存储时间戳计算的消费获取延迟(毫秒)。

rocketmq_producer_tps

gauge

次/秒

生产 TPS

Topic 生产(写入)消息的 TPS。

rocketmq_producer_message_size

gauge

字节

生产消息大小

已生产/写入消息的大小(字节)。

rocketmq_brokeruntime_msg_put_total_today_now

gauge

-

今日截至当前写入总数

今日截至当前已写入的消息总数。

rocketmq_brokeruntime_msg_gettotal_today_now

gauge

-

今日截至当前读取总数

今日截至当前已读取的消息总数。

rocketmq_brokeruntime_dispatch_behind_bytes

gauge

字节

派发落后字节数

派发尚未追上的落后字节数(CommitLog 到 ConsumeQueue)。

rocketmq_brokeruntime_put_message_size_total

gauge

字节

写入消息总大小

已写入消息的总大小(字节)。

rocketmq_brokeruntime_put_message_average_size

gauge

字节

写入消息平均大小

写入消息的平均大小(字节)。

rocketmq_brokeruntime_query_threadpool_queue_capacity

gauge

-

查询线程池队列容量

Broker 查询线程池队列容量。

rocketmq_brokeruntime_remain_transientstore_buffer_numbs

gauge

-

剩余 TransientStore 缓冲数

剩余 TransientStore 缓冲区数量。

rocketmq_brokeruntime_earliest_message_timestamp

gauge

时间

最早消息时间戳

Broker 上保留的最早消息时间戳。

rocketmq_brokeruntime_putmessage_entire_time_max

gauge

毫秒

写入全链路最大耗时

消息写入全链路最大耗时(毫秒)。

rocketmq_brokeruntime_start_accept_sendrequest_time

gauge

时间

开始接受发送请求时间

Broker 开始接受发送请求的时间戳。

rocketmq_brokeruntime_send_threadpool_queue_size

gauge

-

发送线程池队列长度

Broker 发送线程池队列当前长度。

rocketmq_brokeruntime_putmessage_times_total

gauge

-

写入消息总次数

消息写入操作总次数。

rocketmq_brokeruntime_getmessage_entire_time_max

gauge

毫秒

读取全链路最大耗时

消息读取全链路最大耗时(毫秒)。

rocketmq_brokeruntime_pagecache_lock_time_mills

gauge

毫秒

PageCache 加锁耗时

PageCache 加锁耗时(毫秒)。

rocketmq_brokeruntime_commitlog_disk_ratio

gauge

%

CommitLog 磁盘使用率

CommitLog 所在磁盘使用率。

rocketmq_brokeruntime_consumequeue_disk_ratio

gauge

%

ConsumeQueue 磁盘使用率

ConsumeQueue 所在磁盘使用率。

rocketmq_brokeruntime_getfound_tps600

gauge

次/秒

命中拉取 TPS(10 分钟)

约 600 秒窗口内命中(found)拉取的 TPS。

rocketmq_brokeruntime_getfound_tps60

gauge

次/秒

命中拉取 TPS(1 分钟)

约 60 秒窗口内命中(found)拉取的 TPS。

rocketmq_brokeruntime_getfound_tps10

gauge

次/秒

命中拉取 TPS(10 秒)

约 10 秒窗口内命中(found)拉取的 TPS。

rocketmq_brokeruntime_gettotal_tps600

gauge

次/秒

拉取总 TPS(10 分钟)

约 600 秒窗口内拉取总 TPS。

rocketmq_brokeruntime_gettotal_tps60

gauge

次/秒

拉取总 TPS(1 分钟)

约 60 秒窗口内拉取总 TPS。

rocketmq_brokeruntime_gettotal_tps10

gauge

次/秒

拉取总 TPS(10 秒)

约 10 秒窗口内拉取总 TPS。

rocketmq_brokeruntime_gettransfered_tps600

gauge

次/秒

传输拉取 TPS(10 分钟)

约 600 秒窗口内传输(transferred)拉取 TPS。

rocketmq_brokeruntime_gettransfered_tps60

gauge

次/秒

传输拉取 TPS(1 分钟)

约 60 秒窗口内传输(transferred)拉取 TPS。

rocketmq_brokeruntime_gettransfered_tps10

gauge

次/秒

传输拉取 TPS(10 秒)

约 10 秒窗口内传输(transferred)拉取 TPS。

rocketmq_brokeruntime_getmiss_tps600

gauge

次/秒

未命中拉取 TPS(10 分钟)

约 600 秒窗口内未命中(miss)拉取 TPS。

rocketmq_brokeruntime_getmiss_tps60

gauge

次/秒

未命中拉取 TPS(1 分钟)

约 60 秒窗口内未命中(miss)拉取 TPS。

rocketmq_brokeruntime_getmiss_tps10

gauge

次/秒

未命中拉取 TPS(10 秒)

约 10 秒窗口内未命中(miss)拉取 TPS。

rocketmq_brokeruntime_put_tps600

gauge

次/秒

写入 TPS(10 分钟)

约 600 秒窗口内写入 TPS。

rocketmq_brokeruntime_put_tps60

gauge

次/秒

写入 TPS(1 分钟)

约 60 秒窗口内写入 TPS。

rocketmq_brokeruntime_put_tps10

gauge

次/秒

写入 TPS(10 秒)

约 10 秒窗口内写入 TPS。

rocketmq_brokeruntime_put_latency_99

gauge

毫秒

写入延迟 P99

消息写入延迟的 P99(毫秒)。

rocketmq_brokeruntime_put_latency_999

gauge

毫秒

写入延迟 P999

消息写入延迟的 P999(毫秒)。

rocketmq_brokeruntime_dispatch_maxbuffer

gauge

字节

派发最大缓冲

派发最大缓冲区大小(字节)。

rocketmq_brokeruntime_pull_threadpoolqueue_capacity

gauge

-

拉取线程池队列容量

Broker 拉取线程池队列容量。

rocketmq_brokeruntime_send_threadpoolqueue_capacity

gauge

-

发送线程池队列容量

Broker 发送线程池队列容量。

rocketmq_brokeruntime_pull_threadpoolqueue_size

gauge

-

拉取线程池队列长度

Broker 拉取线程池队列当前长度。

rocketmq_brokeruntime_query_threadpoolqueue_size

gauge

-

查询线程池队列长度

Broker 查询线程池队列当前长度。

rocketmq_brokeruntime_pull_threadpoolqueue_headwait_timemills

gauge

毫秒

拉取队列队首等待时间

拉取线程池队列队首等待时间(毫秒)。

rocketmq_brokeruntime_query_threadpoolqueue_headwait_timemills

gauge

毫秒

查询队列队首等待时间

查询线程池队列队首等待时间(毫秒)。

rocketmq_brokeruntime_send_threadpoolqueue_headwait_timemills

gauge

毫秒

发送队列队首等待时间

发送线程池队列队首等待时间(毫秒)。

rocketmq_brokeruntime_msg_gettotal_yesterdaymorning

gauge

-

昨日早上读取累计

截至昨日早上的读取消息累计总数。

rocketmq_brokeruntime_msg_puttotal_yesterdaymorning

gauge

-

昨日早上写入累计

截至昨日早上的写入消息累计总数。

rocketmq_brokeruntime_msg_gettotal_todaymorning

gauge

-

今日早上读取累计

截至今日早上的读取消息累计总数。

rocketmq_brokeruntime_msg_puttotal_todaymorning

gauge

-

今日早上写入累计

截至今日早上的写入消息累计总数。

rocketmq_brokeruntime_commitlogdir_capacity_free

gauge

字节

CommitLog 目录剩余容量

CommitLog 目录剩余可用容量(字节)。

rocketmq_brokeruntime_commitlogdir_capacity_total

gauge

字节

CommitLog 目录总容量

CommitLog 目录总容量(字节)。

rocketmq_brokeruntime_commitlog_maxoffset

gauge

-

CommitLog 最大位点

Broker 上 CommitLog 最大位点。

rocketmq_brokeruntime_commitlog_minoffset

gauge

-

CommitLog 最小位点

Broker 上 CommitLog 最小位点。

rocketmq_brokeruntime_remain_howmanydata_toflush

gauge

字节

待刷盘数据量

仍待刷盘的数据量(字节)。

除上述 MetricSet 聚合指标外,Exporter 采集的原始指标(rocketmq_*)均写入 Prometheus 存储,可直接用 PromQL 查询。

常用查询示例

# 消费组堆积
rocketmq_group_diff

# Broker 生产 TPS
rocketmq_broker_tps

# CommitLog 磁盘使用率
rocketmq_brokeruntime_commitlog_disk_ratio

告警模板

本接入组件暂未内置告警规则。可在 告警中心 基于上述指标自行配置,例如对 rocketmq_broker_tps 存活指标不等于 1、连接数 / 堆积量超阈值等场景设置告警。

存储策略说明

接入 RocketMQ 后,云监控会创建对应的存储实例用于存储可观测数据。

数据类型

默认存储位置

备注

指标

Prometheus 实例:RegionShare:{{workspaceName}}:{{regionId}}

关联数据集 middleware.metric.rocketmq

卸载或修改接入策略

如果期望取消或修改 RocketMQ 的接入,可以在 接入中心 的 接入管理 页,找到对应的接入策略,进行 编辑 或 删除 。删除接入策略后,Exporter 与采集配置一并移除,已写入的历史指标按存储的生命周期策略保留。