应用场景
- 场景一:线上消息消费有异常,消息不能及时被处理,需要及时收到报警,并快速定位问题。
- 场景二:线上某些订单状态有异常,需要排查对应的消息链路环节是否正常发送消息。
- 场景三:需要分析消息流量变化趋势、流量分布特点或消息体量,进而进行业务趋势分析规划。
- 场景四:需要查看和分析应用上下游依赖拓扑情况,进行架构升级优化或改造。
相关概念
查看仪表盘指标前,您需要了解以下涉及消息堆积的指标概念。
如下图所示,表示指定主题的某一队列中各消息的状态
上图表示指定主题的某一队列中各消息的状态,分布式消息服务RocketMQ将处于不同处理阶段的消息数量和耗时进行统计,这些指标可直接反映队列中消息的处理速率和堆积情况,通过观察这些指标可初步判断业务的消费是否异常。具体的指标含义和计算公式如下:
分类 | 指标 | 定义 | 计算公式 |
---|---|---|---|
消息数量指标 | 处理中的消息(inflight messages) | 在消费者客户端正在处理,但客户端还未返回消费结果的消息。 | 最晚一条拉取消息的位点-最晚一条提交消息的位点 |
消息数量指标 | 已就绪的消息(ready messages) | 消息在云消息队列 RocketMQ 版服务端已就绪,对消费者可见可被消费的消息。 | 最大消息位点-最晚一条拉取消息的位点 |
消息数量指标 | 消息堆积量(consumer lag) | 所有未处理完成的消息量。 | 处理中消息量+已就绪消息量 |
消息耗时指标 | 已就绪消息的就绪时间(ready time) | 普通消息、顺序消息:消息存储到服务端的时间。 定时/延时消息:消息定时或延时结束的时间。* 事务消息:事务提交的时间。 | 不涉及 |
消息耗时指标 | 已就绪消息的排队时间(ready message queue time) | 最早一条就绪消息的就绪时间和当前时刻的时间差。该时间反映消费者拉取消息的及时性。 | 当前时间-最早一条就绪消息的就绪时间 |
消息耗时指标 | 消费处理滞后时间(comsumer lag time) | 最早一条未消费完成的消息的就绪时间和当前时刻的时间差。该时间反映消费者完成消息处理的及时性。 | 当前时间-最早一条未提交消息的就绪时间 |
生产者
指标项 | 说明 |
---|---|
消息生产速率 | 统计Topic的消息生产速率和消息生产时的API调用速率。单位:* 消息速率:条/秒* API调用速率:次/秒 |
累计生产消息量 | 统计指定实例下生产的消息总量。单位:条。 |
消费者
指标项 | 说明 |
---|---|
平均消费成功率 | 统计指定实例下所有消息的消费成功率。 |
堆积消息量(已就绪+处理中) | 统计指定实例下的消息堆积总量,包括已就绪的消息和处理中的消息。单位:条。 |
处理中消息量 | 统计在消费者客户端正在处理但客户端还未返回消费成功响应的消息的数量。单位:条。 |
已就绪消息量 | 统计在云消息队列 RocketMQ 版服务端已就绪,可以被消费者消费的消息数量。指标反映还未被消费者开始处理的消息规模。单位:条。 |
已就绪消息排队时间 | 统计最早一条就绪消息的就绪时间和当前时间差。该指标反映了还未被处理的消息的延迟时间大小,对于时间敏感的业务来说是非常重要的度量指标。总览中的指标值表示指定实例下的已就绪消息排队时间的平均值;具体图表中的指标值表示指定Group订阅指定某Topic下的已就绪消息排队时长。单位:毫秒。 |
消息消费速率 | 统计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。单位:条。 |
仪表盘常见问题
如何理解实例的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次/秒。