建立快訊政策

錯誤預算消耗率的快訊政策會根據「擷取 SLO 資料」一文所述的時間序列選取器 select_slo_burn_rate 設定。還有其他時序選取器,您可以使用其中一些做為快訊政策的依據。如要進一步瞭解以 SLO 為基礎的快訊政策,請參閱「消耗率快訊」。

您可以使用 alertPolicies.create 方法建立快訊政策。如要瞭解這個方法的一般用法,請參閱「管理快訊政策」一文。

SLO 的快訊政策與其他指標門檻快訊政策類似,但有一個特定差異:條件 MetricThreshold 規格中的 filter 使用時序選取器,而非一組指標和監控資源類型。

以服務等級目標為準的快訊政策條件

警告政策至少須設有一個條件。如果是 SLO 條件,請使用 MetricThreshold 類型條件。

指標門檻條件可包含兩組時序設定:filteraggregations。由於 SLO 資料的擷取方式與其他時序資料不同,因此 SLO 條件中唯一使用的欄位是 filter 欄位。

服務等級目標的條件會設定 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,請參閱「列出服務等級目標」一文。

如要建立耗用率快訊,請使用時序選取器 select_slo_burn_rate。這個選取器會採用兩個值,即目標 SLO 和回溯期。詳情請參閱 select_slo_burn_rate 的說明。

舉例來說,下列篩選器會取得目標 SLO 的耗用率,回溯期為 1 小時:

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

快訊政策的其他部分

如要完成快訊政策,請指定其餘欄位的值:

  • displayName:快訊政策的說明。
  • combiner:說明結合條件的邏輯。這項政策只有一個條件,因此 ANDOR 都適用。
  • notificationChannels:觸發快訊政策時要使用的現有通知管道陣列。如要瞭解如何尋找及建立通知管道,請參閱「通知管道」。
  • documentation:在違反條件時傳送的資訊,協助收件者診斷問題。詳情請參閱 Documentation

建立快訊政策

以下範例會使用 API 建立耗用率快訊政策。如要瞭解如何列出、修改及刪除快訊政策,請參閱「由 API 管理快訊政策」。

通訊協定

如要使用 curl 建立快訊政策,請將 POST 訊息傳送至 https://monitoring.googleapis.com/v3/projects/${PROJECT_ID}/alertPolicies 端點,並在要求主體中提供快訊政策。要求主體中的 JSON 會說明警示政策,該政策會根據 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