借助于阿里云ARMS Prometheus监控服务和Grafana的指标存储和展示能力,云消息队列 RocketMQ 版提供可实时进行数据统计的仪表盘功能。该功能可帮助您一站式、全方位、多维度地统计和观测指标,进而快速了解业务的运行状态。本文介绍仪表盘的应用场景、计费说明、指标详情和使用方法。
应用场景
场景一:线上消息消费有异常,消息不能及时被处理,需要及时收到报警,并快速定位问题。
场景二:线上某些订单状态有异常,需要排查对应的消息链路环节是否正常发送消息。
场景三:需要分析消息流量变化趋势、流量分布特点或消息体量,进而进行业务趋势分析规划。
场景四:需要查看和分析应用上下游依赖拓扑情况,进行架构升级优化或改造。
前提条件
创建服务关联角色
角色名称:AliyunServiceRoleForOns
角色策略名称:AliyunServiceRolePolicyForOns
权限说明:允许云消息队列 RocketMQ 版使用该角色访问您的服务(云监控和ARMS服务)以完成监控报警和仪表盘相关功能。
具体文档说明:服务关联角色。
计费说明
云消息队列 RocketMQ 版的仪表盘指标在阿里云ARMS Prometheus监控服务中属于基础指标,基础指标不收取费用。因此,使用仪表盘功能不收取费用。
相关概念
查看仪表盘指标前,您需要了解以下涉及消息堆积的指标概念。
如下图所示,表示指定主题的某一队列中各消息的状态:
上图表示指定主题的某一队列中各消息的状态,云消息队列 RocketMQ 版将处于不同处理阶段的消息数量和耗时进行统计,这些指标可直接反映队列中消息的处理速率和堆积情况,通过观察这些指标可初步判断业务的消费是否异常。具体的指标含义和计算公式如下:
分类 | 指标 | 定义 | 计算公式 |
消息数量指标 | 处理中的消息(inflight messages) | 在消费者客户端正在处理,但客户端还未返回消费结果的消息。 | 最晚一条拉取消息的位点-最晚一条提交消息的位点 |
已就绪的消息(ready messages) | 消息在云消息队列 RocketMQ 版服务端已就绪,对消费者可见可被消费的消息。 | 最大消息位点-最晚一条拉取消息的位点 | |
消息堆积量(consumer lag) | 所有未处理完成的消息量。 | 处理中消息量+已就绪消息量 | |
消息耗时指标 | 已就绪消息的就绪时间(ready time) |
| 不涉及 |
已就绪消息的排队时间(ready message queue time) | 最早一条就绪消息的就绪时间和当前时刻的时间差。 该时间反映消费者拉取消息的及时性。 | 当前时间-最早一条就绪消息的就绪时间 | |
消费处理滞后时间(comsumer lag time) | 最早一条未消费完成的消息的就绪时间和当前时刻的时间差。 该时间反映消费者完成消息处理的及时性。 | 当前时间-最早一条未提交消息的就绪时间 |
指标详情
云消息队列 RocketMQ 版的仪表盘提供以下指标:
生产者:查看Topic的发送消息量、发送成功率和发送耗时等指标。
消费者:查看Group订阅指定Topic的消费量、消费成功率和消息堆积等相关指标。
实例 Top 20 概览:查看指定实例下部分指标数据值的Top 20及其所属的Topic或Group。
计费指标信息:查看指定实例下的消息收发TPS、API调用次数、消息平均大小等指标,可为实例计费项的估算提供参考。
所有指标项的采集周期均为1分钟,云消息队列 RocketMQ 版支持查询15天内的消息数据,查询的时间间隔最大为24小时。
生产者
指标项 | 说明 |
消息生产速率 | 统计Topic的消息生产速率和消息生产时的API调用速率。 单位:
|
消息生产速率峰值 | 统计消息生产速率的最大值。 单位:条/秒。 |
累计生产消息量 | 统计指定实例下生产的消息总量。 单位:条。 |
消息生产调用成功率 | 统计Topic消息生产的成功率。 |
消息生产调用耗时 | 统计Topic生产消息时的耗时。 单位:毫秒。 |
消费者
指标项 | 说明 |
平均消费成功率 | 统计指定实例下所有消息的消费成功率。 |
堆积消息量(已就绪+处理中) | 统计指定实例下的消息堆积总量,包括已就绪的消息和处理中的消息。 单位:条。 |
处理中消息量 | 统计在消费者客户端正在处理但客户端还未返回消费成功响应的消息的数量。 单位:条。 |
已就绪消息量 | 统计在云消息队列 RocketMQ 版服务端已就绪,可以被消费者消费的消息数量。 指标反映还未被消费者开始处理的消息规模。 单位:条。 |
已就绪消息排队时间 | 统计最早一条就绪消息的就绪时间和当前时间差。 该指标反映了还未被处理的消息的延迟时间大小,对于时间敏感的业务来说是非常重要的度量指标。 总览中的指标值表示指定实例下的已就绪消息排队时间的平均值;具体图表中的指标值表示指定Group订阅指定某Topic下的已就绪消息排队时长。 单位:毫秒。 |
消息消费速率 | 统计Group消费消息的速率。 单位:条/秒 |
消息消费速率峰值 | 统计消息消费速率的最大值。 单位:条/秒 |
累计消费消息量 | 统计指定实例下所有消费的消息总量。 单位:条。 |
消费堆积量 | 统计Group消费消息时的消息堆积量,包括已就绪消息和处理中消息。 单位:条。 |
消息消费处理耗时 | 统计Group消费消息时,消息从开始被消费到消费完成的处理耗时。 单位:毫秒。 |
消费者本地等待耗时 | 统计Group消费消息时,消息到达消费者客户端到开始被消费的耗时。 单位:毫秒。 |
消费成功率 | 统计消息消费的成功率。 |
消费者客户端访问协议占比 | 统计所有被消费的消息各协议类型消息量的占比。 |
实例Top 20概览
指标项 | 说明 |
消息生产速率 top20 Topics | 统计消息生产速率最快的前20个Topic。 单位:条/秒。 |
消息消费速率 top20 GroupIDs | 统计消息消费速率最快的前20个Group。 单位:条/秒。 |
已就绪消息量 top20 GroupIDs | 统计已就绪消息量最多的前20个Group。 单位:条。 |
已就绪消息排队时间 top20 GroupIDs | 统计已就绪消息排队时间最长的前20个Group。 单位:毫秒。 |
堆积消息量(已就绪消息+处理中消息)top20 GroupIDs | 统计堆积的消息量最多的前20个Group。 单位:条。 |
处理中消息量 top20 GroupIDs | 统计处理中的消息量最多的前20个Group。 单位:条。 |
消费处理耗时 top20 GroupIDs | 统计消费处理耗时最长的前20个Group。 单位:毫秒。 |
在消费者本地等待处理耗时 top20 GroupIDs | 统计消费者本地等待耗时最长的前20个Group。 单位:毫秒。 |
消息生产调用失败率 top20 Topics | 统计生产消息时失败率最高的前20个Topic。 |
消息消费失败率 top20 GroupIDs | 统计消费消息时失败率最高的前20个Group。 |
计费指标信息
以下各计费指标项的值均包含了大消息倍数和高级特性消息倍数的计算结果。
大消息倍数:以消息大小4 KB为计量单位。例如,发送一条16 KB的消息,API调用次数计算为16 KB/4 KB=4次。
高级特性消息倍数:高级特性消息(顺序消息、定时/延时消息、事务消息)的API调用次数在普通消息的基础上以5倍倍率计算。
指标项 | 说明 |
生产 TPS 峰值 | 统计消息生产TPS的最大值。该指标项可为估算实例计费项中的TPS峰值规格提供参考。 单位:次/秒。 |
消费 TPS 峰值 | 统计消息消费TPS的最大值。该指标项可为估算实例计费项中的TPS峰值规格提供参考。 单位:次/秒。 |
TPS 峰值 | 统计消息生产TPS和消息消费TPS之和的最大值。该指标项可为估算实例计费项中的TPS峰值规格提供参考。 单位:次/秒。 |
累计API调用次数 | 统计所有的API调用次数总和。该指标项可为估算实例计费项中的API调用次数提供参考。 单位:次。 |
平均消息大小 | 统计生产的所有消息的平均大小。 单位:字节。 |
生产消费 TPS | 统计消息生产TPS和消息消费TPS之和。 单位:次/秒。 |
每天 API 调用次数 | 按一天维度累计的生产消息API和消费消息API的调用次数之和。 单位:次。 |
查看仪表盘
- 登录云消息队列 RocketMQ 版控制台,在左侧导航栏单击实例列表。
- 在顶部菜单栏选择地域,如华东1(杭州),然后在实例列表中,单击目标实例名称。
选择以下任一方式查看仪表盘。
实例详情页面:在实例详情页单击仪表盘页签。
仪表盘页面:在左侧导航栏单击仪表盘。
Topic 详情页面:在左侧导航栏单击Topic 管理,在Topic列表中单击目标Topic名称,然后在Topic 详情页面单击仪表盘页签。
Group 详情页面:在左侧导航栏单击Group 管理,在Group列表中单击目标Group名称,然后在Group 详情页面单击仪表盘页签。
仪表盘常见问题
如何将仪表盘的指标数据接入自建Grafana?
云消息队列 RocketMQ 版的所有指标数据已保存到您的阿里云可观测监控 Prometheus 版中,您可以通过可观测监控 Prometheus 版提供的API将云消息队列 RocketMQ 版的仪表盘的指标数据接入到本地自建Grafana中。
具体操作,请参见将Prometheus的监控数据接入本地Grafana。
如何理解实例的TPS均值和TPS Max值?
TPS均值=1分钟内总的请求次数/60秒
TPS Max值:以1分钟为统计周期,每秒采样一次TPS值,统计结果取这60个采样值的最大值。
具体示例如下:
假设某实例在1分钟内生产60条消息(均为普通消息、每条4 KB大小),则实例的生产速率是 60 条/分钟。
实例TPS均值 = 60 次/ 60 秒 = 1 次/秒
实例TPS Max值计算如下:
如果这60条消息在第1秒发送完成,则该实例在这1分钟内每秒的TPS分别为60、0、0......0。
实例TPS Max值=60次/秒。
如果这60条消息在第1秒发送了40条,第2秒发送了20条,则该实例在这1分钟内每秒的TPS分别为40、20、0、0......0。
实例TPS Max值=40次/秒。