服务级别目标(SLO) - Amazon CloudWatch
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

服务级别目标(SLO)

Application Signals 目前为预览版。如果您对此功能有任何反馈,可以通过 app-signals-feedback@amazon.com 联系我们。

您可以使用 Application Signals 为关键业务运营的服务创建服务级别目标。创建这些服务的 SLO 后,您即可在 SLO 控制面板上对其进行跟踪,一目了然地了解自己最重要的运营。

除了创建快速视图供运营商查看关键运营的当前状态,您还可以使用 SLO 跟踪服务的长期性能,从而确保其符合您的预期。如果您与客户签订了服务级别协议,SLO 则是确保符合这些协议的绝佳工具。

使用 SLO 评估服务的运行状况,首先要根据关键性能指标(服务级别指标(SLI)))设定清晰且可衡量的目标。SLO 会根据您设置的阈值和目标跟踪 SLI 性能,并报告您的应用程序性能与阈值的差异。

Application Signals 帮助您设置关键性能指标的 SLO。Application Signals 自动收集其发现的各项服务和操作的 LatencyAvailability 指标,这些指标通常很适合用作 SLI。您可以通过 SLO 创建向导将这些指标用于 SLO。然后,您可以使用 Application Signals 控制面板跟踪所有 SLO 的状态。

您可以为您的服务调用或使用的特定操作设置 SLO。除了使用 LatencyAvailability 指标外,您还可以将任何 CloudWatch 指标或指标表达式用作 SLI。

创建 SLO 对于充分利用 CloudWatch Application Signals 至关重要。创建 SLO 后,您可以在 Application Signals 控制台中查看其状态,以快速查看哪些关键服务和操作运行正常或不正常。由 SLO 进行跟踪的主要好处如下:

  • 您的服务运营商可以更轻松地查看根据 SLI 衡量的关键服务的当前运行状况。然后即可快速对运行不正常的服务和操作进行分类和识别。

  • 您可以根据可衡量的业务目标,长期跟踪您的服务性能。

通过选择要设置 SLO 的对象,您可以确定重要内容的优先级。Application Signals 控制面板会自动显示有关您已确定优先级的信息。

在创建 SLO 时,您还可以选择通过同时创建 CloudWatch 警报来监控 SLO。您可以通过设置警报监控超出阈值的情况,也可以设置监控警告级别的警报。如果 SLO 指标超出所设阈值或接近警告阈值,这些警报可以自动通知您。例如,如果 SLO 接近警告阈值,您便可以得知,您的团队可能需要减慢应用程序的流失速度,以确保实现长期性能目标。

SLO 概念

SLO 包括以下组件:

  • 服务级别指标(SLI),即您指定的关键性能指标。代表了您的应用程序所需的性能水平。Application Signals 会自动收集其发现的各项服务和操作的关键指标 LatencyAvailability,这些指标通常很适合用作 SLI。

    您可以选择用于 SLI 的阈值。例如,延迟时间为 200 毫秒。

  • 目标达标率目标,即预计 SLI 在各个时间间隔内达到阈值的时间的百分比。时间间隔可以短至几小时,也可以长达一年。

    间隔可以是日历间隔,也可以是滚动间隔。

    • 日历间隔与日历一致,例如每月跟踪的 SLO。CloudWatch 会根据一个月的天数自动调整运行状况、预算和达标数量。日历间隔更适合用于按照日历进行衡量的业务目标。

    • 滚动间隔采用滚动计算。滚动间隔更适合用于跟踪应用程序的近期用户体验。

  • 周期是较短的时间长度,许多周期构成一个间隔。将应用程序在间隔内各个周期的性能与 SLI 进行比较。在各个周期确定应用程序已达到或未达到必要的性能水平。

例如,日历间隔为一天、周期为 1 分钟的 99% 目标,意味着应用程序必须在当日的所有 1 分钟周期中,有 99% 的周期达到或实现成功阈值。这样才能实现当日的 SLO。次日即为新的评估间隔,应用程序必须在次日有 99% 的 1 分钟周期达到或实现成功阈值才能实现次日的 SLO。

SLI 可以基于 Application Signals 收集的其中一项新标准应用程序指标。或者可以使用任何 CloudWatch 指标或指标表达式。可用于 SLI 的标准应用程序指标为 LatencyAvailabilityAvailability 表示成功响应除以请求总数的结果。计算方法为 (1 - 故障率)*100,其中故障响应为 5xx 错误。成功响应表示没有 5XX 错误的响应。4XX 响应视为成功响应。

注意

目前仅支持基于周期进行计算。未来版本计划支持基于数量或请求进行计算。

计算错误预算和达标率

在查看 SLO 相关信息时,您会看到其当前运行状况和错误预算。错误预算是在间隔内可以超出阈值但仍能达到 SLO 的时间长度。总错误预算是在整个间隔内容许的总超限时间。剩余错误预算是当前间隔内容许的剩余超限时间。这一数据为从总错误预算中扣除已发生超限时间的结果。

下图说明了间隔为 30 天、周期为 1 分钟、达标率目标为 99% 时的达标率和错误预算概念。30 天包括 43200 个 1 分钟周期。43200 的 99% 为 42768,因此当月必须有 42768 分钟处于运行正常状态才能达到 SLO。到目前为止,在当前间隔内,有 130 个运行不正常的 1 分钟周期。

确定每个周期是否成功

在每个周期内,SLI 数据会根据用于 SLI 的统计数据聚合到单个数据点中。此数据点表示周期的整个长度。将单个数据点与 SLI 阈值进行比较,以确定该周期运行是否正常。在控制面板上看到当前时间范围内运行不正常的周期后,您的服务运营商便得知需要对服务进行分类。

如果确定该周期运行不正常,则会根据错误预算将整个周期长度全部计为失败。您可以通过跟踪错误预算,了解服务是否长时间达到所需性能水平。

创建 SLO

我们建议您同时设置关键应用程序的延迟和可用性 SLO。Application Signals 收集的这些指标与共同业务目标一致。

您还可以根据任何 CloudWatch 指标或任何生成单个时间序列的指标数学表达式设置 SLO。

当您首次在账户中创建 SLO 时,CloudWatch 会自动在您的账户中创建 AWSServiceRoleForCloudWatchApplicationSignals 服务相关角色(如果该角色尚不存在)。此服务相关角色允许 CloudWatch 收集 CloudWatch Logs 数据、X-Ray 跟踪数据、CloudWatch 指标数据,以及您账户中应用程序的标记数据。有关 CloudWatch 服务相关角色的更多信息,请参阅 为 CloudWatch 使用服务相关角色

创建 SLO
  1. 通过 https://console.aws.amazon.com/cloudwatch/ 打开 CloudWatch 控制台。

  2. 在导航窗格中,选择服务级别目标(SLO)

  3. 请选择创建 SLO

  4. 输入 SLO 的名称。纳入服务或操作的名称以及适当的关键字(例如延迟或可用性)有助于您在分类期间快速识别 SLO 状态所表示的含义。

  5. 对于设置服务级别指标(SLI),执行以下任一操作:

    • 为任一标准应用程序指标 Latency 或者 Availability 设置 SLO:

      1. 选择服务操作

      2. 选择此 SLO 将监控的服务。

      3. 选择此 SLO 将监控的操作。

        选择服务选择操作下拉列表中填充了过去 24 小时处于活动状态的服务和操作。

      4. 选择可用性延迟,然后设置阈值。

    • 为任何 CloudWatch 指标或 CloudWatch 指标数学表达式设置 SLO:

      1. 选择 CloudWatch 指标

      2. 选择选择 CloudWatch 指标

        出现选择指标屏幕。使用浏览查询选项卡查找所需指标或创建指标数学表达式。

        选择所需指标后,选择图表化指标选项卡,然后选择要用于 SLO 的统计数据周期。然后选择 Select metric(选择指标)

        有关这些屏幕的信息,请参阅 绘制指标图表向 CloudWatch 图表中添加数学表达式

      3. 设置条件中,选择 SLO 的比较运算符和阈值作为成功指标。

  6. 如果您在步骤 5 中选择了服务操作,则可以选择其他设置,然后调整此 SLO 的周期长度。

  7. 设置 SLO 的间隔达标率目标。有关间隔和达标率目标以及二者如何协同工作的更多信息,请参阅 SLO 概念

  8. (可选)为 SLO 设置一个或多个 CloudWatch 警报或警告阈值。

    1. 如果根据应用程序的 SLI 性能判断其运行不正常,则 CloudWatch 警报可以使用 Amazon SNS 主动通知您。

      要创建警报,请选中任一警报复选框,然后输入或创建 Amazon SNS 主题,以便在警报进入 ALARM 状态时用于发送通知。有关 CloudWatch 警报的更多信息,请参阅 使用 Amazon CloudWatch 告警。创建警报会产生费用。有关 CloudWatch 定价的信息,请参阅 Amazon CloudWatch 定价

    2. 如果您设置了警告阈值,其将显示在 Application Signals 屏幕中,从而帮助您识别可能无法实现的 SLO(即使此类 SLO 当前运行正常)。

      要设置警告阈值,请在警告阈值中输入阈值。当 SLO 的错误预算低于警告阈值时,多个 Application Signals 屏幕中的 SLO 都会标有警告标记。警告阈值还会显示在错误预算图形中。您也可以创建基于警告阈值的 SLO 警告警报

  9. 要向此 SLO 添加标签,请选择标签选项卡,然后选择添加新标签。标签可帮助您管理、识别、组织、搜索和筛选资源。有关标记的更多信息,请参阅标记您的 Amazon 资源

    注意

    如果与此 SLO 相关的应用程序已在 Amazon Service Catalog AppRegistry 中注册,则可以使用 awsApplication 标签将此 SLO 与 AppRegistry 中的该应用程序关联。有关更多信息,请参阅 What is AppRegistry?

  10. 请选择创建 SLO。如果您还选择了创建一个或多个警报,为体现这一点,按钮名称会变更。

查看 SLO 状态并对其进行分类

您可以使用 CloudWatch 控制台中的服务级别目标服务选项快速查看 SLO 的运行状况。服务视图提供运行不正常的服务比率的概览视图,该比率根据您设置的 SLO 计算得出。有关使用服务选项的更多信息,请参阅 使用 Application Signals 监控应用程序的运行状况

服务级别目标视图提供了您的组织的宏观视图。您可以整体查看已实现和未实现的 SLO。这有助于您了解,根据所选 SLI,有多少服务和操作的性能长期达到您的预期。

使用服务级别目标视图查看所有 SLO
  1. 通过 https://console.aws.amazon.com/cloudwatch/ 打开 CloudWatch 控制台。

  2. 在导航窗格中,选择服务级别目标(SLO)

    随即显示服务级别目标(SLO)列表。

    您可以在 SLI 状态列中快速查看 SLO 的当前状态。要对 SLI 进行排序,以便将所有运行不正常的 SLI 位于列表顶部,请选择 SLI 状态列,直到运行不正常的 SLI 均位于顶部。

    SLO 表格默认包含以下各列。您可以通过选择列表上方的齿轮图标调整显示列。有关目标、SLI、达标率和间隔的更多信息,请参阅 SLO 概念

    • SLO 的名称。

    • 目标列显示各个间隔内必须成功达到 SLI 阈值才能达到 SLO 目标的周期百分比。此列还会显示 SLO 的间隔长度。

    • SLI 状态显示应用程序的当前运行状态是否正常。如果 SLO 在当前选定时间范围内的任何时段运行不正常,SLI 状态则显示为运行不正常

    • 最终达标率是指截至选定时间范围结束达到的达标水平。按此列排序,查看最有可能无法达到的 SLO。

    • 达标率增量是选定时间范围开始和结束时达标水平的差值。增量为负意味着该指标呈下降趋势。按此列排序,查看 SLO 的最新变化趋势。

    • 最终误差预算(%)是该时段内可能有运行不正常的周期但仍能成功实现 SLO 的总时间百分比。如果您将其设为 5%,并且 SLI 在该间隔剩余周期的 5% 或更短的时间内处于运行不正常状态,仍能成功实现 SLO。

    • 误差预算增量是选定时间范围的开始和结束的误差预算差值。增量为负意味着该指标呈衰退趋势。

    • 结束误差预算(时间)是间隔内可能运行不正常但仍能成功实现 SLO 的实际时间。例如,假设为 14 分钟,则如果在剩余间隔内 SLI 运行不正常的时间少于 14 分钟,则仍能成功实现 SLO。

    • 服务操作类型列显示设置此 SLO 的服务和操作的信息。

  3. 要查看 SLO 的达标率和错误预算图形,请选择 SLO 名称旁边的单选按钮。

    页面顶部的图形显示 SLO 达标率错误预算状态。此外还显示与此 SLO 关联的 SLI 指标的图形。

  4. 要对未达到其目标的 SLO 进行进一步分类,请选择该 SLO 的关联服务名称或操作名称。您将进入详细信息页面,您可以在此进行进一步分类。有关更多信息,请参阅 通过服务详细信息页面查看详细的服务活动和运行状况

  5. 要更改页面所示图表和表格的时间范围,请在屏幕顶部附近选择新的时间范围。

编辑现有 SLO

按照以下步骤编辑现有 SLO。编辑 SLO 时,只能更改阈值、间隔、达标率目标和标签。要更改服务、操作或指标等其他方面,请创建新的 SLO,而非编辑现有 SLO。

更改部分 SLO 核心配置(例如周期或阈值)后,之前有关达标率和运行状况的所有数据点和评估均会失效。可通过这一操作有效删除并重新创建 SLO。

注意

如果您编辑 SLO,则该 SLO 的关联警报不会自动更新。您可能需要更新警报以使其与 SLO 保持同步。

编辑现有 SLO
  1. 通过 https://console.aws.amazon.com/cloudwatch/ 打开 CloudWatch 控制台。

  2. 在导航窗格中,选择服务级别目标(SLO)

  3. 选择要编辑的 SLO 旁边的单选按钮,然后选择操作编辑 SLO

  4. 进行更改,然后选择保存更改

删除 SLO

按照以下步骤删除现有 SLO。

注意

如果您删除 SLO,则该 SLO 的关联警报不会自动删除。您需要自行将其删除。有关更多信息,请参阅 管理警报

删除 SLO
  1. 通过 https://console.aws.amazon.com/cloudwatch/ 打开 CloudWatch 控制台。

  2. 在导航窗格中,选择服务级别目标(SLO)

  3. 选择要编辑的 SLO 旁边的单选按钮,然后选择操作删除 SLO

  4. 选择确认