Skip to main content

管理集群 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 评估计算方式如下:

  1. RocketMQ Copilot 按照 SLI 探测周期产生探测数据,分为成功次数和失败次数。
  2. RocketMQ Copilot 支持按集群粒度配置健康阈值。例如,每个周期内成功率低于 95%即认为该周期指标异常。
  3. 基于上述阈值,可以得出各个探测周期是否健康,进而得到整个评估周期内的健康时间占比,即 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 探测开关的操作流程如下:

  1. 登录 RocketMQ Copilot 控制台,前往集群管理页面。
  2. 点击目标集群,查看详情,开启 SLI 探测开关。

SLI 探测功能默认使用和集群 ClusterName 同名的系统 Topic 作为探测收发消息使用。如果该 Topic 已经被用作其他业务,请选择一个和业务隔离的独立 Topic 用作 SLI 探测功能。

  1. 选择 SLI 探测 Topic 后,点击确认,完成开启操作。

查看 SLI 大盘

开启集群 SLI 探测后,即可查看当前集群的系统预设 SLI 大盘数据。操作步骤如下:

  1. 登录 RocketMQ Copilot 控制台,点击左侧菜单栏 SLI 度量按钮。
  2. 系统会安装 Tab 分组展示各集群相关的 SLI 数据。
  3. 用户可以任意选定时间范围,查看对应时间区间内的 SLI Metrics 数据。针对重要的集群和指标,用户可以将该 SLI 指标固定到 SLI 大盘页面顶部,方便实时观察。