Google Cloud 架构框架中的本文档介绍如何为您的服务选择适当的服务等级指标 (SLI)。本文档以 SLO 的组成部分中定义的概念为基础。
您需要使用指标来确定是否达到服务等级目标 (SLO)。您可以将这些指标定义为 SLI。每个 SLI 衡量服务的一个特定方面,例如响应时间、可用性或成功率。
SLO 包括一个或多个 SLI,理想情况下基于关键用户历程 (CUJ)。CUJ 是指用户在网站上为实现其目标而采用的一组特定的用户交互或路径。假设客户正在通过电子商务服务购物。客户登录、搜索产品、将商品添加到购物车、转到结账页面并结账。CUJ 可以确定帮助用户尽快完成任务的不同方法。
选择 SLI 时,您需要考虑适合您的服务的指标、您可以使用的各种指标类型、指标的质量以及所需的正确指标数量。
为您的服务类型选择适当的 SLI
服务类型有很多种。下表列出了常见的服务类型,并提供了每种类型的 SLI 示例。某些 SLI 适用于多种服务类型。如果某个 SLI 在表中多次出现,则只有第一个 SLI 实例提供定义。回想一下,SLI 通常由指标中“9”的个数表示。
服务类型 | 典型 SLI |
---|---|
投放系统 |
|
数据处理系统 |
|
存储系统 |
|
请求驱动系统 |
|
预定执行系统 |
|
评估不同的指标类型
除了为您的服务选择适当的 SLI,您还需要确定要用于 SLI 的指标类型。上一部分中列出的 SLI 往往是以下类型之一:
- 计数器:此类指标会增加,但不会减少。例如,在给定衡量点发生的错误数。
- 衡量标准:此类指标会增加也会减少。例如,系统的可衡量部分的实际值(例如队列长度)。
- 分布(直方图):在给定时间段内位于特定测量区间内的事件数。例如,测量多少个请求需要 0-10 毫秒才能完成,多少个请求需要 11-30 毫秒才能完成,多少个请求需要 31-100 毫秒才能完成。结果是每个时间段的计数,例如 [0-10: 50]、[11-30: 220] 和 [31-100: 1103]。
如需详细了解这些类型,请参阅 Prometheus 项目文档以及 Cloud Monitoring 中的值类型和指标种类。
考虑指标的质量
并不是每一个指标都有用。除了是衡量成功事件数与事件总数的比率之外,您还需要确定指标是否是适合您需求的良好 SLI。为帮助您判断,请考虑良好指标的以下特征:
指标与用户满意度直接相关。如果服务未按预期运行(例如服务运行缓慢、不准确或完全失败),用户会不满意。通过将 SLI 与其他用户满意度信号进行比较,验证基于这些指标的任何 SLO。这种比较包括客户投诉工单数、支持服务电话数量和社交媒体情绪等数据。(如需了解详情,请参阅 SLO 目标的持续改进)。
如果您的指标与用户满意度的其他指标不一致,则可能不是良好的 SLI。
指标恶化与服务中断相关。任何在服务中断期间报告良好服务结果的指标显然都不是 SLI 的正确指标。相反,正常运营期间看起来不佳的指标也存在问题。
指标提供良好的信噪比。忽略任何导致大量假负例或假正例的指标。
指标随客户满意度单调、线性扩缩。简而言之,随着指标改善,客户满意度也会提高。
选择正确的指标数量
单个服务可以有多个 SLI,特别是在服务执行不同类型的工作或向不同类型的用户提供服务时。最好为每种类型选择适当的指标。
而某些服务执行相似类型的工作,可以直接进行比较。例如,用户浏览您网站上的不同网页(如首页、子类别和前 10 名列表)。不要为其中每项操作开发单独的 SLI,而应将它们组合成单个 SLI 类别,例如浏览服务。
在相似类别的操作中,用户期望不会有很大的变化。通过回答以下问题,可以量化用户满意度:“我是否很快看到整页的商品?”
使用尽可能少的 SLI 来准确表示服务容忍度。一般来说,使用 2 至 6 个 SLI。如果 SLI 太少,您可能会错过有价值的信号。如果 SLI 太多,则您的支持团队会有太多数据,但却没有多少助益。您的 SLI 应简化您对生产运行状况的理解,并提供覆盖率,而不是让您的负担过重(或过轻)。