消耗率提醒

您可以针对服务等级目标 (SLO) 创建提醒政策,以让您了解自己是否面临违反 SLO 的危险。您可以选择要监控的 SLO,然后设置一则条件,该条件会在被违反时触发提醒。通常情况下,该条件通过选择构成违规的阈值以及允许违规的时间段来表示。如果阈值超过允许的时间段,则会触发提醒政策。

本页介绍了如何针对错误预算的消耗率设置提醒政策。其中未详细介绍提醒政策;并假定您已经了解条件和通知渠道的基本概念。如需了解有关提醒政策以及如何创建提醒政策的常规信息,请参阅使用提醒政策

错误预算的消耗率

合规期错误预算为 100% - SLO%。如果您的 SLO 目标是 95%,则您的错误预算便是性能的 5%。消耗率可以让您知道您消耗错误预算的速度有多快。如需了解详情,请参阅错误预算

消耗率指标由时间序列选择器 select_slo_burn_rate 检索。当错误预算的消耗速度比平时快时,消耗率提醒政策会向您发送通知。

如需详细了解其他时间序列选择器,请参阅检索 SLO 数据。您可以创建使用某些其他时间序列选择器的提醒策略,但您必须使用 Cloud Monitoring API 来创建提醒策略。

概览:在 SLO 上创建提醒政策

为 SLO 创建提醒政策与为任何其他指标创建提醒政策十分类似。

本部分介绍了常规步骤,下面的部分对这些步骤进行了更详细的说明。

要为 SLO 创建提醒政策,请按以下步骤操作:

  1. 确定作为提醒政策创建基础的 SLO。

  2. 为使用所选 SLO 的提醒政策构建条件。在该条件下,您可以使用时间序列选择器检索 SLO 数据。例如,如果您使用时间序列选择器检索消耗率,则检索的数据将反映所选 SLO 的错误预算的消耗率。

    在该条件下,您还可以在触发提醒之前指定 SLO 的违规阈值和持续时间。例如,您希望在触发警报之前的一段时间内,消耗率高于期望的速率。在这种情况下,“高出部分”的值是条件的阈值,“一段时间”的值是条件的持续时间。

  3. 确定或创建要在提醒政策中使用的通知渠道。

  4. 提供向用户说明触发提醒政策原因的文档

  5. 将这些片段整合到调用中,以创建提醒政策。

如需了解有关提醒政策以及如何创建提醒政策的常规信息,请参阅使用提醒政策

提醒政策和回溯期

当您使用时间序列选择器检索 SLO 数据时,可以指定 SLO 标识符和回溯期。回溯期决定了检索数据的时间要追溯至什么时候。回溯期用于确定该时期内的正常情况。

如果您想针对错误预算的每日消耗量发出提醒,请选择 24 小时的回溯期。要针对每小时消耗量发出提醒,请选择 1 小时的回溯期。

错误预算提醒的类型

在设置提醒政策以监控错误预算时,建议您设置两项相关的提醒政策:

  • 快速消耗提醒,用于提醒您突发的重大消耗量变化,如果不纠正,很快就会用尽错误预算。“按照这个速度,我们将在两天后用掉整个月的错误预算!(At this rate, we'll burn through the whole month'serror budget in two days!)”

    这种情况适合较短的回溯期。您希望了解某个潜在的灾难性状况是否已经出现并持续存在(即使这种状况短暂存在过)。如果确实是灾难性状况,您肯定想尽快注意到它。

    您在此处设置的消耗率阈值提醒远远高于回溯期的理想基准值。

  • 慢速消耗提醒,用于提醒消耗率,如果消耗率未出现变动,则会在合规期结束前耗尽错误预算。这种情况的紧急程度不如快速消耗。“我们现在略微超出了本月的预期目标,但目前还没有什么大麻烦。(We are slightly exceeding where we'd like to be at this point in the month, but we aren't in big trouble yet.)”

    慢速消耗状况适合较长的回溯期,可以消除短时消耗的变化。

    您在此处设置的消耗率阈值提醒高于回溯期的理想基准值,但无显著差异。如果消耗量长期趋于平稳,则基于较短回溯期(具有高阈值)的政策可能会生成过多提醒。但如果消耗量长时间保持稍高的水平,最终会消耗完所有错误预算。

创建 SLO 提醒:API

系统会基于检索 SLO 数据中说明的时间序列选择器 select_slo_burn_rate 发出有关错误预算消耗率的提醒政策。还有其他时间序列选择器,您可以将其中一些用作提醒政策的基础。

您可以使用 alertPolicies.create 方法创建提醒政策。管理提醒政策中介绍了此方法的一般用法。

SLO 的提醒政策在许多方面都与其他提醒政策类似:它们都使用指标阈值条件来提醒政策。而 SLO 的提醒政策区别于其他提醒政策的一个独特之处是:filter(位于条件的 MetricThreshold 规范中)使用时间序列选择器,而不使用一对指标和受监控的资源类型。

基于 SLO 的提醒政策的条件

一项提醒策略必须至少包含一个条件。对于基于 SLO 的条件,请使用 [MetricThreshold] 类型的条件。

指标阈值条件可以包含两对时间序列配置:filteraggregations,而构建比率包含 denominatorFilterdenominatorAggregations。由于未使用标准监控过滤器检索 SLO 数据,因此 SLO 条件唯一使用的字段是 filter

SLO 条件要设置 comparisonthresholdValuedurationtrigger 字段。

此示例创建了一则条件,当消耗率超过正常比率 2 倍时会违反该条件。该结构如下所示:

      "conditions": [
        {
          "displayName":"SLO burn rate alert for ${SLO_ID} exceeds 2",
          "conditionThreshold": {
            "filter": [TO_BE_DETERMINED],
            "comparison":"COMPARISON_GT",
            "thresholdValue": 2,
            "duration": {
              "seconds":"0",
            },
          },
        }
      ],
    

要设置 filter 字段,您需要特定 SLO 的资源名称。该值的格式为 projects/${PROJECT}/services/${SERVICE_ID}/serviceLevelObjectives/${SLO_ID}。如需了解查找 SLO ID 的信息,请参阅列出 SLO

要针对消耗率创建提醒,请使用时间序列选择器 select_slo_burn_rate。此选择器采用两个值:目标 SLO 和回溯期。如需了解详情,请参阅 select_slo_burn_rate

例如,以下过滤器可获取回溯期为 1 小时的目标 SLO 的消耗率:

"filter":"select_slo_burn_rate(\"projects/${PROJECT}/services/${SERVICE_ID}/serviceLevelObjectives/${SLO_ID}\", \"60m\")"

提醒政策的其余部分

要完成提醒政策,请为其余字段指定值:

  • displayName:提醒政策的说明。
  • combiner:描述组合条件的逻辑。此政策只有一个条件,因此要么使用 AND,要么使用 OR
  • notificationChannels:触发提醒政策时要使用的一系列现有通知渠道。如需了解如何查找和创建通知渠道,请参阅通知渠道
  • documentation:违反条件时发送的信息,帮助收件人诊断问题。如需了解详情,请参阅 Documentation

创建提醒政策

以下示例使用 API 创建了一个消耗率提醒政策。如需了解如何列出、修改和删除提醒政策,请参阅通过 API 管理提醒政策

协议

要使用 curl 创建提醒政策,请将 POST 消息发送到 https://monitoring.googleapis.com/v3/projects/${PROJECT_ID}/alertPolicies 端点,并在请求正文中提供提醒政策。请求正文中的 JSON 描述了一个提醒政策,该政策使用的阈值条件以回溯期为 1 小时的 select_slo_burn_rate 时间序列选择器为基础。

  1. 创建一个变量以保存请求正文:

    CREATE_ALERT_POST_BODY=$(cat <<EOF
        {
          "displayName":"SLO burn-rate alert for ${SLO_ID} with a threshold of 2",
          "combiner":"AND",
          "conditions": [
            {
              "displayName":"SLO burn rate alert for ${SLO_ID} exceeds 2",
              "conditionThreshold": {
                "filter":"select_slo_burn_rate(\"projects/${PROJECT}/services/${SERVICE_ID}/serviceLevelObjectives/${SLO_ID}\", \"60m\")",
                "comparison":"COMPARISON_GT",
                "thresholdValue": 2,
                "duration": {
                  "seconds":"0",
                },
              },
            }
          ],
          "notificationChannels": ["${NOTIFICATION_CHANNEL}", ],
          "documentation": {
             "content": "SLO burn for the past 60m exceeded twice the normal budget burn rate.",
             "mime_type": "text/markdown",
          },
        }
        EOF
        )
        
  2. 将请求发布到端点:

    curl  --http1.1 --header "Authorization: Bearer ${ACCESS_TOKEN}" --header "Content-Type: application/json" -X POST -d "${CREATE_ALERT_POST_BODY}}" https://monitoring.googleapis.com/v3/projects/${PROJECT_ID}/alertPolicies
        

使用控制台创建基于 SLO 的提醒政策

如需了解 Anthos 服务网格中基于 SLO 的提醒政策,请参阅 Anthos 服务网格文档:为 SLO 创建提醒政策