建立快訊政策

錯誤預算消耗率的快訊政策是以時間序列選取器 select_slo_burn_rate 為依據,詳情請參閱「擷取服務等級目標資料」。還有其他時間序列選取器,您可以將其中一些做為快訊政策的依據。如要瞭解以 SLO 為基礎的快訊政策,請參閱「根據消耗率發出快訊」。

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

SLO 的快訊政策與其他指標閾值快訊政策類似,但有一項特定差異:條件的 MetricThreshold 規格中的 filter 會使用時間序列選取器,而不是指標和受監控資源類型配對。

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

快訊政策至少須設有一個條件。如果是以 SLO 為依據的條件,請使用 MetricThreshold 類型的條件。

指標門檻條件可以包含兩組時間序列設定:filteraggregations。由於系統擷取服務水準目標資料的方式與其他時間序列資料不同,因此服務水準目標條件中只會使用 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}。如要瞭解如何找出服務等級目標 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