本部分介绍服务等级指标 (SLI) 的概念、定义影响理想或有用 SLI 的因素,并提供所选服务的 SLI 实现示例。本页面适用于需要实现服务专属 SLI 的示例的用户。
SLI 简介
服务的可靠性是一个抽象概念;可靠性的含义取决于服务及其用户的需求。服务级别指标 (SLI) 是衡量该可靠性的指标,用于传达服务的可靠性和管理服务。
SLI 在时间范围内衡量。时间范围的大小通常取决于做出决策所使用的信息。例如,您可以按以下方式衡量单个 SLI:
- 最近一小时内,用于创建提醒政策。
- 数周时间内,用于做出战术决策。
- 数月时间内,用于做出战略决策。
衡量 SLI 时,建议您以 28 天为起点;此值可在战略和战术用例之间提供较好的平衡。
如需了解详情,请参阅 网站可靠性工程工作簿的以下部分:
理想 SLI 的属性
我们将“理想”SLI 视为满足以下条件的衡量:
SLI 是衡量用户满意度的理想指标。
理想的 SLI 与用户满意度密切相关。可以将 SLI 用作服务等级目标 (SLO),SLO 是根据 SLI 设置的阈值。您可以设置 SLO,这样一来,当 SLI 在定义的范围内时,大多数用户都感到满意。要保持这种关系,SLI 必须是衡量用户满意度的理想指标。
如果 SLI 是用户满意度的理想指标,则当存在影响用户满意度的事件时,SLI 会在某个方面发生变化。同样,如果没有影响用户满意度的事件,则 SLI 不会发生变化。
SLI 随客户满意度单调调节和线性调节。
理想的 SLI 可随客户满意度单调且线性调节。如果 SLI 提高,则用户满意度会提高。同样,如果 SLI 降低,则用户满意度会降低。理想 SLI 值的改进程度与用户满意度的改进程度相对应。
SLI 生成的衡量范围为 0% 到 100%。
理想的 SLI 的性能衡量范围是 0% 到 100%:此范围直观且易于使用。例如,SLI 性能为 100% 表示一切正常,SLI 性能为 0% 表示全部停止运行。
如果 SLI 的范围为 0% 到 100%,则为 SLI 设置 SLO 会较为容易且明确:分配一个百分比目标(例如 99.9%),并且 SLI 的性能必须等于或高于该目标,服务才能满足其 SLO。
承诺
实现具有以上属性的 SLI 的一个方法是从对用户所做的承诺方面考虑该 SLI。通过统计您在某一时间范围内做出和保留的承诺数,您可以得出一个范围为 0% 到 100% 之间的数字。此类 SLI 还会合理转化为错误预算:对于给定的 SLO,错误预算是指在一段时间范围内可能无法保留,但仍满足 SLO 的承诺数。
承诺示例包括:
- 将具有 HTTP
200
状态代码的响应返回到客户请求。 - 在 100 毫秒内响应 gRPC 请求。
- 成功完成“创建虚拟机”工作流。
- 传送过去 10 分钟内刷新的数据。
- 要在其开始时间后的一分钟内开始运行计划的批量作业。
SLI 规范和实现
SLI 规范是您要衡量的内容。该规范不包含有关如何衡量 SLI 的确切技术详情。例如,以下是 SLI 针对网页加载时间的规范:
- 100 毫秒内加载的首页请求所占的比例。
有多种方式可以衡量 SLI,每种方式都需权衡利弊。衡量 SLI 的方式是 SLI 实现。例如,您可以按以下形式之一实现网页加载规范:
- 应用服务器请求日志的延迟时间字段。
- 由应用服务器导出的指标。
- 由应用服务器前面的负载平衡器导出的指标。
- 黑盒监控服务,用于将人为请求发送到系统并计算接收有效响应所需的时间。
- 在客户浏览器中执行的应用专用代码,用于记录计时信息并将其发送回收集服务。
以上每个选项都需在以下特征之间进行权衡:
- 准确度:捕获用户体验的准确程度。
- 覆盖率:衡量用户互动所占比例。
- 费用:构建和维护解决方案所需的资金和工程时间。
在更接近用户衡量 SLI 时,针对用户体验的准确度通常会提高。例如,与用户或其他测量结果感知的延迟时间相比,在用户的浏览器中使用代码的实现可以更准确地测量延迟时间。
权衡在于基于浏览器的衡量结果还包括用户与您的服务的连接带来的任何延迟例如,在公共互联网上使用服务时,此延迟时间可能会因地理位置或网络条件而异。
因此,基于浏览器的信号是用户满意度的理想指标。但此信号可能无法提供可用于提高服务可靠性的实用信息。
如需了解如何平衡多个测量结果以权衡利弊,请参阅此 Telegraph 中的博文。
分桶
当您的服务为不同用户执行不同类型的工作,或执行具有不同潜在结果的特定任务时,则您可能需要为服务提供多个 SLI。
不同的任务
为不同类别的用户执行多种类型的工作的服务,其中每种类型的工作对用户满意度的影响不同,可以从多个 SLI 中受益。
例如,如果您的服务同时处理读取和写入请求,则执行这些任务的用户可能有不同的要求:
- 读取请求必须快速。
- 写入请求必须成功。
如需捕获这些不同的要求,您的 SLI 必须能够区分这两种情况。通常,SLI 指标具有一个标签,您可以使用该标签将值分类到某一存储桶中。
一个具有不同结果的任务
执行单个类型工作但用户预期因响应而异的服务可从多个 SLI 受益。
例如,如果您的服务仅提供数据的读取权限,则用户对延迟的容忍度可能不同,具体取决于请求结果:
- 用户可能容忍快速返回的错误,因为用户可以随后立即重试请求。
- 用户可能不太容忍需要很长时间的成功请求。
- 用户最不能容忍以下最坏情况:需要很长时间返回错误的请求。
在这种情况下,您的延迟时间 SLI 必须能够区分成功请求和失败请求。
后续步骤
如需了解如何使用 Google Cloud 指标为 Google Cloud 服务实现 SLI,请参阅以下内容:
如需了解如何实现应用专用 SLI,请参阅以下内容:
如需查看示例,了解如何为报告自定义指标的服务创建 SLI,请参阅设置 SLO:使用自定义指标的可观测性。