2021 年の State of DevOps アンケートに回答して、ソフトウェア オペレーションの未来を形作り、ご自分の意見を伝えましょう。

通知ポリシーの作成

エラー バジェットのレートに関するアラート ポリシーは、SLO データの取得で説明されている時系列セレクタ select_slo_burn_rate に基づいて決まります。その他の時系列セレクタも、アラート ポリシーの基礎として使用できます。SLO ベースのアラート ポリシーの詳細については、バーンレートに関するアラートをご覧ください。

アラート ポリシーを作成するには、alertPolicies.create メソッドを使用します。このメソッドの一般的な使用方法は、アラート ポリシーの管理に記載されています。

SLO のアラート ポリシーは、その他の指標しきい値のアラート ポリシーに似ていますが、1 点だけ異なる点があります。それは、MetricThresholdfilter 条件の指定で指標のタイプとモニタリング対象リソースのタイプのペアではなく、時系列セレクタを使用することです。

SLO ベースのアラート ポリシーの条件

アラート ポリシーには少なくとも 1 つの条件が必要です。SLO ベースの状態の場合は、MetricThreshold 型の条件を使用します。

指標しきい値の条件には、filteraggregations の時系列構成のペアを 2 組含めることができます。SLO データは他の時系列データとは異なる方法で取得されるため、SLO の条件で使用される唯一のフィールドは filter フィールドだけです。

SLO の条件では、comparisonthresholdValueduration、および trigger フィールドが設定されます。

この例では、バーンレートが通常速度の 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 とルックバック期間という 2 つの値があります。詳細については、select_slo_burn_rate をご覧ください。

たとえば、次のフィルタは、1 時間のルックバック期間を持つターゲット SLO のバーンレートを取得します。

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

アラート ポリシーの残りの部分

アラート ポリシーを完了するには、残りのフィールドに値を指定します。

  • displayName: アラート ポリシーの説明。
  • combiner: 条件を組み合わせるロジックを記述します。このポリシーには条件が 1 つしかないため、ANDOR のいずれも正しく動作します。
  • 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