管理集群 SLI
参考概述▸ ,针对 RocketMQ 集群的稳定性度量和治理,需要设计科学有效的 SLI 指标体系。本文介绍 AutoMQ Copilot for RocketMQ 面向 Apache RocketMQ 的 SLI 设计以及集群 SLI 管理的功能操作。
本文中提及的 RocketMQ Copilot 术语是 AutoMQ Copilot for RocketMQ 的简称,均特指安托盟丘(杭州)科技有限公司面向 Apache RocketMQ 设计实现的消息队列智能辅助运维系统。
RocketMQ SLI 介绍
设计原则
Apache RocketMQ 广泛应用于在线业务解耦,例如电商交易、金融支付等场景。在这一类业务场景下,集群调用往往伴随着高并发、海量消息的负载场景。对 RocketMQ 集群的 SLI 度量存在如下难点:
- 难以采集真实业务数据:在线交易链路高并发调用的场景,直接面向客户端、服务端采集全量的真实调用数据成本高、系统负载大,容易对核心链路造成影响。
- 单链路指标监控覆盖不完整:基于服务端的部分系统指标监控,只能覆盖单个逻辑模块,和真实应用端到端的真实视角不一致。
因此,RocketMQ Copilot采用了客户端视角定时 SLI 探测方式产生 SLI 数据,以应用的视角模拟一系列收发消息的功能场景,产生模拟调用数据。通过对模拟调用数据的分析推导集群各项 SLI 指标是否存在异常。
依据 Apache RocketMQ 的应用场景特征,RocketMQ 集群的稳定性度量区别于其他消息队列,不止包含成功率的探测,同时还包括业务关注的调用耗时、E2E 延迟等指标,用来满足低延迟消息应用场景的业务需求。
具体 SLI 评估计算方式如下:
- RocketMQ Copilot 按照 SLI 探测周期产生探测数据,分为成功次数和失败次数。
- RocketMQ Copilot 支持按集群粒度配置健康阈值。例如,每个周期内成功率低于 95%即认为该周期指标异常。
- 基于上述阈值,可以得出各个探测周期是否健康,进而得到整个评估周期内的健康时间占比,即 SLI 成功率。
举例:以上图为例,低于 95%健康阈值的异常时间持续 12 分钟,健康持续时间 108 分钟,因此得到 120 分钟周期内 SLI 成功率为 90%。
SLI 模板
基于上述分析,RocketMQ Copilot 面向 Apache RocketMQ 的应用场景设计实现了如下类型的 SLI 指标探测和数据分析功能:
SLI 名称 | 健康判断逻辑 | SLI 场景和指导意义 |
---|---|---|
普通消息生产调用成功率指标 | SuccessCount/TotalCount > 健康阈值 | - 指标:生产消息调用成功率指标代表了 RocketMQ 集群核心服务稳定性能力,如果生产成功率指标下跌,会阻塞所有消息相关的链路逻辑。 - 建议:所有集群都需要关注。 |
顺序消息生产调用成功率指标 | SuccessCount/TotalCount > 健康阈值 | - 指标:生产消息调用成功率指标代表了 RocketMQ 集群核心服务稳定性能力,如果生产成功率指标下跌,会阻塞所有消息相关的链路逻辑。 - 建议:所有集群都需要关注。 |
事务消息生产调用成功率指标 | SuccessCount/TotalCount > 健康阈值 | - 指标:生产消息调用成功率指标代表了 RocketMQ 集群核心服务稳定性能力,如果生产成功率指标下跌,会阻塞所有消息相关的链路逻辑。 - 建议:所有集群都需要关注。 |
定时消息生产调用成功率指标 | SuccessCount/TotalCount > 健康阈值 | - 指标:生产消息调用成功率指标代表了 RocketMQ 集群核心服务稳定性能力,如果生产成功率指标下跌,会阻塞所有消息相关的链路逻辑。 - 建议:所有集群都需要关注。 |
普通消息生产调用 RT 指标 | Avg(RT) \< 健康阈值 | - 指标:生产消息调用 RT 指标代表了 RocketMQ 集群核心服务性能能力,如果生产 RT指标下跌,会导致业务链路响应变慢,可能导致压力增大和崩溃。 - 建议:强实时、同步链路等对延迟敏感型业务集群需要关注。 |
顺序消息生产调用 RT 指标 | Avg(RT) \< 健康阈值 | - 指标:生产消息调用 RT 指标代表了 RocketMQ 集群核心服务性能能力,如果生产 RT指标下跌,会导致业务链路响应变慢,可能导致压力增大和崩溃。 - 建议:强实时、同步链路等对延迟敏感型业务集群需要关注。 |
事务消息生产调用 RT 指标 | Avg(RT) \< 健康阈值 | - 指标:生产消息调用 RT 指标代表了 RocketMQ 集群核心服务性能能力,如果生产 RT指标下跌,会导致业务链路响应变慢,可能导致压力增大和崩溃。 - 建议:强实时、同步链路等对延迟敏感型业务集群需要关注。 |
定时消息生产调用 RT 指标 | Avg(RT) \< 健康阈值 | - 指标:生产消息调用 RT 指标代表了 RocketMQ 集群核心服务性能能力,如果生产 RT指标下跌,会导致业务链路响应变慢,可能导致压力增大和崩溃。 - 建议:强实时、同步链路等对延迟敏感型业务集群需要关注。 |
并发消费消息E2E 延迟指标 | Avg(E2E RT)\< 健康阈值 | - 指标:消费消息E2E 延迟指标代表了 RocketMQ 集群服务性能能力,如果E2E 延迟指标下跌,代表可能由于RocketMQ 底层存储压力导致获取消息链路响应变慢,可能导致堆积和延迟。 - 建议:强实时、同步链路等对延迟敏感型业务集群需要关注。 |
顺序消费消息E2E 延迟指标 | Avg(E2E RT)\< 健康阈值 | - 指标:消费消息E2E 延迟指标代表了 RocketMQ 集群服务性能能力,如果E2E 延迟指标下跌,代表可能由于RocketMQ 底层存储压力导致获取消息链路响应变慢,可能导致堆积和延迟。 - 建议:强实时、同步链路等对延迟敏感型业务集群需要关注。 |
系统定时队列调度延迟指标 | Avg(Schedule Delay)\< 健康阈值 | - 指标:内部队列调用延迟指标代表了 RocketMQ 集群内部定时、重试队列调度实时性。该指标下跌,代表可能由于RocketMQ 底层存储异常导致定时消息和重试消息出队列变慢,导致堆积和延迟。 - 建议:强依赖定时消息、存在大量失败重试相关的业务集群需要关注。 |
系统重试队列调度延迟指标 | Avg(Schedule Delay)\< 健康阈值 | - 指标:内部队列调用延迟指标代表了 RocketMQ 集群内部定时、重试队列调度实时性。该指标下跌,代表可能由于RocketMQ 底层存储异常导致定时消息和重试消息出队列变慢,导致堆积和延迟。 - 建议:强依赖定时消息、存在大量失败重试相关的业务集群需要关注。 |
查看 SLI 数据
前置条件
RocketMQ Copilot SLI 探测会周期性模拟 RocketMQ 客户端生产和消费消息,对用户的 RocketMQ 集群产生少量读写请求。因此默认情况下,集群 SLI 探测开关处于关闭状态。查看集群 SLI 数据大盘,需要手工开启该集群的 SLI 探测开关。
开启 SLI 探测开关的操作流程如下:
- 登录 RocketMQ Copilot 控制台,前往集群管理页面。
- 点击目标集群,查看详情,开启 SLI 探测开关。
SLI 探测功能默认使用和集群 ClusterName 同名的系统 Topic 作为探测收发消息使用。如果该 Topic 已经被用作其他业务,请选择一个和业务隔离的独立 Topic 用作 SLI 探测功能。
- 选择 SLI 探测 Topic 后,点击确认,完成开启操作。
查看 SLI 大盘
开启集群 SLI 探测后,即可查看当前集群的系统预设 SLI 大盘数据。操作步骤如下:
- 登录 RocketMQ Copilot 控制台,点击左侧菜单栏 SLI 度量按钮。
- 系统会安装 Tab 分组展示各集群相关的 SLI 数据。
- 用户可以任意选定时间范围,查看对应时间区间内的 SLI Metrics 数据。针对重要的集群和指标,用户可以将该 SLI 指标固定到 SLI 大盘页面顶部,方便实时观察。