创建提醒政策

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

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

SLO 的提醒政策与其他指标阈值提醒政策类似,但它们在某一特定方面有所不同:条件 MetricThreshold 规范中的 filter 使用时间序列选择器,而不是一对指标和受监控的资源类型。

基于 SLO 的提醒政策的条件

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

指标阈值条件可以包含两对时间序列配置:filteraggregations。由于 SLO 数据的检索方式与其他时间序列数据不同,因此 SLO 条件中使用的唯一字段是 filter 字段。

SLO 条件要设置 comparisonthresholdValuedurationtrigger 字段。

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

  "conditions": [
    {
      "displayName":"SLO burn rate alert for ${SLO_ID} exceeds 2",
      "conditionThreshold": {
        "filter": DATA_RETRIEVAL_FILTER_FOR_SLO,
        "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 acceptable 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