アラートにラベルでアノテーションを付ける

このドキュメントでは、アラート ポリシーにユーザー定義のラベルを追加して、通知とインシデントを管理する方法について説明します。ユーザー定義のラベルは通知に含まれるため、インシデントの重大度を示すラベルを追加すると、通知に調査のためのアラートの優先順位付けに役立つ情報が含まれます。

ラベルについて

ラベルは、時系列、アラート ポリシー、インシデントに関連付けられた Key-Value ペアです。指標ラベル、リソースラベル、ユーザー定義のラベルがあります。指標ラベルとリソースラベルには、収集されている指標、または指標が書き込まれるリソースに関する具体的な情報が含まれます。これとは対照的に、ユーザー定義ラベルは作成したラベルであり、必要に応じて固有の情報を記録します。

時系列データが書き込まれるとき、ラベルがデータに付けられ、そのデータに関する情報を記録します。たとえば、時系列のラベルでは、仮想マシン(VM)、ゾーン、Google Cloud プロジェクト、デバイスタイプを識別できます。

アラート ポリシーとインシデントには、ユーザーラベルを追加できます。

通知のラベルを確認する

アラート ポリシーまたはインシデントのラベルは、インシデントの詳細ページアラート ポリシーの詳細ページ、および一部の通知で表示できます。

  • メール通知では、ポリシーに追加したラベルが [ポリシーラベル] セクションに一覧表示され、インシデントに追加したラベルが [指標ラベル] セクションに表示されます。

  • PagerDuty、Webhook、Pub/Sub の通知では、アラート ポリシーやインシデントに追加したラベルが JSON データに含まれます。 アラート ポリシーラベルは、JSON 構造の policy_user_labels フィールドにリストされます。

    "policy_user_labels": {
      "severity": "critical",
    }
    

    インシデント ラベルは、JSON 構造の metric フィールドに設定されます。

    "metric": {
      "type" : "compute.googleapis.com/instance/cpu/utilization"
      "displayName": "CPU Utilization",
      "labels": {
        "instance_name": "some_instance_name",
        "severity": "critical"
      },
    }
    

    前述のように、metric フィールドには、指標タイプ、指標の表示名、指標ラベル、インシデントに追加されたユーザー定義ラベルが列挙されます。

例: ラベルと MQL を使用して動的な重大度レベルを作成する

MQL を使用して、時系列データに基づいて値が動的に変更されるようにラベルを構成できます。たとえば、モニタリング対象の CPU 使用率指標の値に応じて値が変化する Criticality ラベルをインシデントに付けます。

fetch gce_instance
| metric 'compute.googleapis.com/instance/cpu/utilization'
| group_by sliding(5m), [value_utilization_mean: mean(value.utilization)]
| map
    add[
      Criticality:
        if(val() >= 90 '%', 'CRITICAL',
          if(val() >= 80 '%', 'WARNING',
            if(val() >= 70 '%', 'INFO', 'GOOD')))
    ]
| condition val() >= 70 '%'

次の図は、MQL クエリを使用するアラート ポリシーが、モニタリングする時系列データを処理する仕組みを示しています。

アラート ポリシーによってモニタリング対象時系列が処理される仕組みを示す図。

ポリシー ハンドラは、CPU 使用率データを処理し、条件がトリガーされるタイミングを示す時系列を出力します。前の例では、CPU 使用率が 70% 以上のときに条件がトリガーされます。ポリシー ハンドラは、入力時系列ごとに 4 つの時系列のいずれかを生成できます。

出力の時系列名 トリガーされる条件 説明
「Good」 × この時系列には、入力の時系列と同じラベルが付けられます。重大度ラベルはありません。
「Critical」 CPU 使用率が 90% 以上。出力時系列には、「Good」時系列と同じラベルと値「CRITICAL」の重大度ラベルがあります。
「Warning」 CPU 使用率が 80% 以上 90% 未満。出力時系列には、「Good」時系列と同じラベルと値「WARNING」の重大度ラベルがあります。
"INFO" CPU 使用率が 70% 以上 80% 未満。出力時系列には、「Good」時系列と同じラベルと値「INFO」の重大度ラベルがあります。

ポリシー ハンドラによって生成された時系列データは、インシデント マネージャーへの入力です。インシデント マネージャーは、インシデントが作成およびクローズされるタイミングを決定します。インシデントをクローズするタイミングを判断するために、インシデント マネージャーは、durationevaluationMissingData、および autoClose フィールドの値を使用します。

おすすめの方法

値が動的に設定されるラベルを作成する際、一度に最大 1 つのインシデントを開始させるには、次の操作を行います。

  • MetricThreshold オブジェクトで、次のフィールドのデフォルト値をオーバーライドします。

    • duration フィールド: ゼロ以外の値に設定します。
    • evaluationMissingData フィールド: データの受信が停止したときにインシデントがクローズされるように設定します。Cloud Monitoring API を使用する場合は、このフィールドを EVALUATION_MISSING_DATA_INACTIVE に設定します。Google Cloud コンソールを使用する場合は、フィールドを「条件に違反しない値として扱われる欠落しているデータポイント」に設定します。
  • AlertStrategy オブジェクトで、autoClose フィールドを最小値の 30 分に設定します。Cloud Monitoring API を使用する場合は、このフィールドを 30m に設定します。

詳細については、部分的な指標データをご覧ください。

インシデント フロー

アラート ポリシーを作成する際、CPU 使用率の測定値が 70% 未満だとします。次のシーケンスは、インシデントの開始と終了の仕組みを示しています。

  1. CPU 使用率の測定値は 70% 未満であるため、ポリシー ハンドラは「Good」の時系列を生成し、インシデントは開かれません。

  2. 次に、CPU 使用率が 93% まで上昇するとします。ポリシー ハンドラは、「Good」時系列データの生成を停止し、「Critical」時系列のデータの生成を開始します。

    インシデント マネージャーは、条件をトリガーする新しい時系列である「Critical」時系列を認識し、インシデントを作成します。通知には、値が CRITICAL の重大度ラベルが設定されます。

  3. CPU 使用率が 75% に低下したとします。ポリシー ハンドラは、「CRITICAL」時系列の生成を停止し、「INFO」時系列の生成を開始します。

    インシデント マネージャーは、条件をトリガーする新しい時系列である「Info」時系列を認識し、インシデントを開始します。通知には、値が INFO の重大度ラベルが設定されます。

    インシデント マネージャーは、「Critical」時系列のデータが届いていないこと、その時系列のインシデントが対応待ちであることを認識します。このポリシーは、データが到着しなくなったときにインシデントを閉じるように構成されているため、インシデント マネージャーは「Critical」時系列に関連付けられたインシデントを閉じます。したがって、重大度ラベルの値が INFO のインシデントのみが対応待ちのままになります。

  4. 最後に、CPU 使用率が 45% に低下するとします。この値はすべてのしきい値よりも小さいため、ポリシー ハンドラは「INFO」時系列の生成を停止し、「GOOD」時系列の生成を開始します。

    インシデント マネージャーは、「Info」時系列のデータが届いていないこと、その時系列のインシデントが対応待ちであることを認識します。ポリシーでは推奨設定が使用されているため、インシデントがクローズされます。

evaluationMissingData フィールドに推奨値を使用しない場合は、データの到着が停止しても対応待ちのインシデントは直ちにクローズされません。その結果、同じ入力時系列に複数の対応待ちのインシデントが表示されることがあります。詳細については、部分的な指標データをご覧ください。

次のステップ