バーンレートに関する警告

サービスレベル目標(SLO)にアラート ポリシーを作成して、SLO に違反する可能性があるかどうかを知らせることができます。モニタリングする SLO を選択し、条件に違反した場合にアラートをトリガーする条件を設定します。通常、条件は、違反を構成するしきい値と違反が許可される期間を選択することで表されます。許容される期間を超えて、しきい値を超過した場合、アラート ポリシーがトリガーされます。

このページでは、エラー バジェットのバーンレートについてのアラート ポリシーを設定する方法について説明します。ただし、アラート ポリシーの詳細は説明しません。条件と通知チャネルに関する基本的なコンセプトをすでに理解していることを前提としています。アラート ポリシーの概要と作成方法については、アラート ポリシーの使用をご覧ください。

エラー バジェットのバーンレート

コンプライアンス期間のエラー バジェットは、(1 - SLO 目標)×(コンプライアンス期間の有効イベント)です。SLO 目標が 95% の場合、SLO で測定されたイベントの 5% が失敗するまでは SLO の目標が達成と認められます。バーンレートは、エラー バジェットを消費する速度を示します。1 を超えるバーンレートは、現在測定されているエラーレートが今後のコンプライアンス期間にわたって続く場合、サービスはその期間は SLO の対象外となることを意味します。詳細については、エラー バジェットをご覧ください。

バーンレート指標は、時系列セレクタ select_slo_burn_rate によって取得されます。 バーンレートのアラート ポリシーは、アラートのコンプライアンス期間中の測定によって、定義されたしきい値よりも早くエラー バジェットが消費された場合に通知されます。時系列セレクタは他にもあります。SLO データの取得をご覧ください。他の時系列セレクタを使用するアラート ポリシーは作成できますが、Cloud Monitoring API を使用して作成する必要があります。

概要: SLO でのアラート ポリシーの作成

SLO のアラート ポリシーの作成方法は、その他の指標のアラート ポリシーとほぼ同じです。

このセクションでは、一般的な手順について説明します。詳細については、以降のセクションで説明します。

SLO のアラート ポリシーを作成する手順は次のとおりです。

  1. アラート ポリシーのベースとなる SLO を特定します。

  2. 選択した SLO を使用するアラート ポリシーの条件を作成します。条件は、時系列セレクタを使用して SLO のデータを取得する場所です。たとえば、時系列セレクタをバーンレートに使用すると、取得したデータに選択した SLO のエラー バジェットのバーンレートが反映されます。

    この条件でも、アラートをトリガーする前に SLO のしきい値と違反の存続期間を指定することになります。たとえば、アラートをトリガーする前に一定期間、バーンレートを一定の割合以上にするとします。「some amount over」の値は条件のしきい値、「some period」の値は条件の期間です。

  3. アラート ポリシーで使用する通知チャネルを特定または作成します。

  4. アラート ポリシーの原因をユーザーに説明するドキュメントを提供します。

  5. これらの要素を組み合わせて呼び出しを作り、アラート ポリシーを作成します。

アラート ポリシーの概要と作成方法については、アラート ポリシーの使用をご覧ください。

アラート ポリシーとルックバック期間

時系列セレクタを使用して SLO データを取得する場合は、SLO の識別子とルックバック期間を指定します。ルックバック期間は、過去のどの時点までのデータを取得できるかを示します。重要なのは、SLO のパフォーマンスとエラー バジェットを計算するためのコンプライアンス期間としても使用されることです。

技術的な理由から、現時点では、24 時間を超えるコンプライアンス期間を使用して、SLO のエラー バジェット消費率に基づいてアラートすることはできません。多くの場合、長期(たとえば、28 日または 30 日)のコンプライアンス期間を 24 時間未満にすると、サービス停止を検出して、それらに短期間で対応の操作をすることを促進する目的で十分に使用できます。

コンプライアンス期間を短くすると問題を迅速に検出できますが、1 日のなかのトラフィックとエラーレートの大きな変化により、トラフィックの少ない期間にアラートが発生しやすくなります。1 をかなり超えるバーンレートのしきい値を使用して、これらの時間帯にアラートの感度を下げることを検討してください。

エラー バジェットのアラートの種類

アラート ポリシーを設定してエラー バジェットをモニタリングする場合は、2 つの関連するアラート ポリシーを設定することをおすすめします。

  • 急な消費量の急激な変化を警告する急速バーンアラートは、修正をしないと間もなくしてエラー バジェットを使い果たしてしまいます。「このレートでは、1 か月のエラー バジェットが 2 日でなくなってしまう!」という状態です。

    このような条件の場合は、ルックバック期間を短くしてください。短い期間であっても、良くない状態が潜在的に現れた、または続いたときには通知を受けることができます。本当に良くない状態の場合は、長い時間通知を控える必要はありません。

    ここで通知する消費率のしきい値は、ルックバック期間の基準値よりもかなり高くなります。

  • 低速バーンアラートは、アラートを発生させないと、コンプライアンス期間の終了前にエラー バジェットを使い切る場合に、消費率についてのアラートを発生させます。低速バーン状態は、急速バーン状態よりも緊急性が低くなります。「今月の予定は少し上回っているが、今のところ大きな問題はない」という状態です。

    低速バーン状態では、短期間の消費量の変化を滑らかにするために、ルックバック期間がより長くなります。

    ここで通知する消費率のしきい値は、ルックバック期間の基準値よりも高くなりますが、大きな差異はありません。ルックバック期間が短く、しきい値が高いポリシーは、長期的な消費量が急増するとアラートが多量に発生してしまう可能性があります。しかし、消費量が長期的に高い値を維持した場合、最終的にすべてのエラー バジェットが消費されてしまいます。

SLO アラートの作成: API

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

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

SLO のアラート ポリシーは、その他のアラート ポリシーと同様に、ポリシーに metric-threshold 条件を指定してアラートを送信します。その他のアラート ポリシーとの 1 つの具体的な違いは、MetricThresholdfilter 条件の指定で一連の指標リソースとモニタリング対象リソースの代わりに時系列セレクタが使用される点です。

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

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

指標しきい値の条件には、filteraggregations、比率を構築する場合は denominatorFilterdenominatorAggregations のそれぞれ 2 つの時系列構成を含めることができます。SLO データは標準モニタリング フィルタでは取得されないため、SLO の条件で使用される唯一のフィールドとして filter フィールドを使用します。

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

この例では、バーンレートが通常速度の 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 とルックバック期間という 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
    

コンソールを使用した SLO ベースのアラート ポリシーの作成

Anthos Service Mesh での SLO ベースのアラート ポリシーの詳細については、Anthos Service Mesh のドキュメント: SLO のアラート ポリシーの作成をご覧ください。