サンプル ポリシー

このページでは、特定のアラート ポリシーに関するクックブックをご紹介します。このクックブックを独自のデザインのポリシーの設定に役立ててください。

JSON または YAML を作成する

アラート ポリシーは、JSON と YAML という 2 つのデータ形式で表現できます。Cloud SDK はどちらの形式も読み取りと書き込みが可能です。REST API は JSON 形式に対応しています。

既存のアラート ポリシーや通知チャネルを YAML(デフォルト)形式で生成するには、それぞれ gcloud alpha monitoring policies list および describe コマンド、または gcloud alpha monitoring channels list および describe コマンドを使用します。

たとえば、次のコマンドでは取得した 1 つのポリシーを test-policy.yaml ファイルに出力します。

gcloud alpha monitoring policies describe projects/a-gcp-project/alertPolicies/12669073143329903307 > test-policy.yaml

既存のアラート ポリシーと通知チャネルを JSON 形式で作成するには、次の方法があります。

  • gcloud コマンドで --format="json" フラグを指定する。
  • 各 API メソッドのリファレンス ページで API Explorer ウィジェットを使用する。

    詳細については、API Explorer をご覧ください。

既存のポリシーから新しいポリシーを作成する

バックアップ/リストアの例に示すように、保存されたポリシーを使用して、ポリシーの新しいコピーを作成できます。保存されているポリシーは、同様のポリシーを作成するための開始点として利用することもできます。

また、あるプロジェクトに保存されたポリシーを使用して、別のプロジェクトで新規または類似のポリシーを作成できます。ただし、保存したポリシーのコピーでは、最初に次の変更を行う必要があります。

  • 通知チャネルから次のフィールドを削除します。
    • name
    • verificationStatus
  • アラート ポリシーでチャネルを参照する前に通知チャネルを作成します(新しいチャネル ID が必要です)。
  • 再作成するアラート ポリシーから次のフィールドを削除します。
    • name
    • condition.name
    • creationRecord
    • mutationRecord

ポリシーのサンプル

ここで紹介するポリシーは、Stackdriver Monitoring Console で使用される用語と同じもの(「変化率ポリシー」など)を使用していますが、すべての分類の基礎になっている条件は、実際には次の 2 種類だけです。

  • しきい値条件。UI に記述されているほとんどのポリシータイプは、しきい値条件上のバリアントです。
  • 不在条件

ここで紹介するサンプルでは、これらは conditionThreshold 条件と conditionAbsent 条件となっています。詳細については、Condition のリファレンス ページをご覧ください。

指標しきい値ポリシー

指標しきい値ポリシーは、ある値が所定の境界を超えたことを検出するポリシーです。しきい値ポリシーによっていずれかの条件が重要なポイントに近づいていることが通知されるため、必要な対策を講じることができます。たとえば、使用可能なディスク領域が合計ディスク領域の 10 パーセント未満になると、システムのディスク領域が不足する可能性があります。

次のポリシーは、VM のグループの正常性の指標として平均 CPU 使用率を使用します。インスタンスとゾーンにおける VM グループの平均 CPU 使用率が 60 秒間隔で測定され、15 分(600 秒)にわたって 90 パーセントの使用率のしきい値を超えた場合にアラートが発生します。

{
    "displayName": "Very high CPU usage",
    "combiner": "OR",
    "conditions": [
        {
            "displayName": "CPU usage is extremely high",
            "conditionThreshold": {
                "aggregations": [
                    {
                        "alignmentPeriod": "60s",
                        "crossSeriesReducer": "REDUCE_MEAN",
                        "groupByFields": [
                            "project",
                            "resource.label.instance_id",
                            "resource.label.zone"
                        ],
                        "perSeriesAligner": "ALIGN_MAX"
                    }
                ],
                "comparison": "COMPARISON_GT",
                "duration": "900s",
                "filter": "metric.type=\"compute.googleapis.com/instance/cpu/utilization\"
                           AND resource.type=\"gce_instance\"",
                "thresholdValue": 0.9,
                "trigger": {
                    "count": 1
                }
            }
        }
    ],
}

別の使用例を指標しきい値で紹介しています。

指標の不在ポリシー

指標の不在ポリシーは、指定した期間に、指標にデータが書き込まれない場合にトリガーされます。

このポリシーを検証する方法として、何も書き込まれないカスタム指標を作成する方法があります。このような種類のポリシーにはカスタム指標は不要ですが、デモ用として、実際に何も使用しないことを簡単に確認します。

以下はカスタム指標の記述子の例です(この指標は API Explorer を使用して作成できます)。

{
  "description": "Number of times the pipeline has run",
  "displayName": "Pipeline runs",
  "metricKind": "GAUGE",
  "type": "custom.googleapis.com/pipeline_runs",
  "labels": [
    {
      "description": "The name of the pipeline",
      "key": "pipeline_name",
      "valueType": "STRING"
    },
  ],
  "unit": "1",
  "valueType": "INT64"
}

詳細については、カスタム指標の使用をご覧ください。

この指標に約 1 時間データが書き込まれないと、次のアラート ポリシーがトリガーされます。つまり、1 時間ごとのパイプラインが実行できなかったということです。ここで使用される条件は conditionAbsent です。

{
    "displayName": "Data ingestion functioning",
    "combiner": "OR",
    "conditions": [
        {
            "displayName": "Hourly pipeline is up",
            "conditionAbsent": {
                "duration": "3900s",
                "filter": "resource.type=\"global\"
                           AND metric.type=\"custom.googleapis.com/pipeline_runs\"
                           AND metric.label.pipeline_name=\"hourly\"",
            }
        }
    ],
}

別の使用例を指標の不在で紹介しています。

変化率ポリシー

このポリシーは、CPU 使用率が急上昇するとアラートがトリガーされます。

{
  "displayName": "High CPU rate of change",
  "combiner": "OR",
  "conditions": [
    {
      "displayName": "CPU usage is increasing at a high rate",
      "conditionThreshold": {
         "aggregations": [
           {
             "alignmentPeriod": "900s",
             "perSeriesAligner": "ALIGN_PERCENT_CHANGE",
           }],
        "comparison": "COMPARISON_GT",
        "duration": "180s",
        "filter": "metric.type=\"compute.googleapis.com/instance/cpu/utilization\" AND resource.type=\"gce_instance\"",
        "thresholdValue": 0.5,
        "trigger": {
          "count": 1
         }
      }
    }
  ],
}

別の使用例を指標の変化率で紹介しています。

グループ集計ポリシー

このポリシーは、「G​K​E クラスタ」と呼ばれるリソース グループの平均 CPU 使用率がしきい値を越えたときにアラートがトリガーされます。

{
    "displayName": "CPU utilization across GKE cluster exceeds 10 percent",
    "combiner": "OR",
    "conditions": [
         {
            "displayName": "Group Aggregate Threshold across All Instances in Group GKE cluster",
            "conditionThreshold": {
                "filter": "group.id=\"3691870619975147604\" AND metric.type=\"compute.googleapis.com/instance/cpu/utilization\" AND resource.type=\"gce_instance\"",
                "comparison": "COMPARISON_GT",
                "thresholdValue": 0.1,
                "duration": "300s",
                "trigger": {
                    "count": 1
                },
                "aggregations": [
                    {
                        "alignmentPeriod": "60s",
                        "perSeriesAligner": "ALIGN_MEAN",
                        "crossSeriesReducer": "REDUCE_MEAN",
                        "groupByFields": [
                              "project",
                              "resource.label.instance_id",
                              "resource.label.zone"
                        ]
                    },
                    {
                        "alignmentPeriod": "60s",
                        "perSeriesAligner": "ALIGN_SUM",
                        "crossSeriesReducer": "REDUCE_MEAN"
                    }
                ]
            },
        }
    ],
}

このポリシーでは、次のグループの存在を前提としています。

{
    "name": "projects/a-gcp-project/groups/3691870619975147604",
    "displayName": "GKE cluster",
    "filter": "resource.metadata.name=starts_with(\"gke-kuber-cluster-default-pool-6fe301a0-\")"
}

別の例については、グループ集計しきい値をご覧ください。

稼働時間チェック ポリシー

稼働時間チェックのステータスは、Stackdriver Monitoring Console に表示されますが、稼働時間のチェックが失敗した場合は、アラート ポリシーを使用して直接通知できます。

たとえば、次の JSON は、Google Cloud サイトでの稼働時間チェックを示しています。5 分ごとに稼働状況をチェックします。

稼働時間チェックは、Stackdriver Monitoring Console で作成されたものです。次の JSON 表現の稼働時間チェックは、API を使用してプロジェクト内の稼働時間チェックの一覧を取得するという方法で作成されたものです。詳細は uptimeCheckConfigs.list をご覧ください(API を使用して稼働時間チェックを作成することもできます)。

{
    "name": "projects/a-gcp-project/uptimeCheckConfigs/uptime-check-for-google-cloud-site",
    "displayName": "Uptime check for Google Cloud site",
    "monitoredResource": {
        "type": "uptime_url",
        "labels": {
            "host": "cloud.google.com"
      }
    },
    "httpCheck": {
        "path": "/index.html",
        "port": 80,
        "authInfo": {}
    },
    "period": "300s",
    "timeout": "10s",
    "contentMatchers": [
        {}
    ]
}

稼働時間チェックのアラート ポリシーを作成するには、UPTIME_CHECK_ID 別の稼働時間チェックを参照します。この ID は、チェックが作成されるときに設定され、name フィールドの最後のコンポーネントとして表示されます。これは UI には表示されません。API を使用している場合は、uptimeCheckConfigs.create メソッドで返されます。

この ID は displayName から派生します。これはこの場合 UI で設定されたものです。稼働時間のチェックをリストし、name 値を調べることによって、検証することができます。

この稼働時間チェックでは、ID は uptime-check-for-google-cloud-site です。

稼働時間チェックが失敗した場合、以下のアラート ポリシーがトリガーされ、指定された通知チャネルに通知が送信されます。

{
    "displayName": "Google Cloud site uptime failure",
    "combiner": "OR",
    "conditions": [
        {
            "displayName": "Failure of uptime check_id uptime-check-for-google-cloud-site",
            "conditionThreshold": {
                "aggregations": [
                    {
                        "alignmentPeriod": "1200s",
                        "perSeriesAligner": "ALIGN_NEXT_OLDER",
                        "crossSeriesReducer": "REDUCE_COUNT_FALSE",
                        "groupByFields": [ "resource.label.*" ]
                    }
                ],
                "comparison": "COMPARISON_GT",
                "duration": "600s",
                "filter": "metric.type=\"monitoring.googleapis.com/uptime_check/check_passed\"
                           AND metric.label.check_id=\"uptime-check-for-google-cloud-site\"
                           AND resource.type=\"uptime_url\"",
                "thresholdValue": 1,
                "trigger": {
                    "count": 1
                }
            }
        }
    ],
    "notificationChannels": [
        "projects/a-gcp-project/notificationChannels/2798987108321357979"
    ]
}

監視対象の稼働時間チェックの指定方法に注意してください。条件のフィルタでは、check_id 指標ラベルは、監視する UPTIME_CHECK_ID の値を指定します。

AND metric.label.check_id=\"uptime-check-for-google-cloud-site\"

詳細については、モニタリング フィルタをご覧ください。

別の使用例を稼働時間チェックの状態で紹介しています。

プロセスの状態ポリシー

あるパターンに一致するプロセスの数がしきい値を超えた場合、プロセスの状態ポリシーから通知を受け取ります。これは、たとえば、プロセスの実行が停止したことを伝えるのに使用できます。

このポリシーは、ユーザー www として実行している文字列 nginx に一致するプロセスが 5 分以上使用できなかった場合に、指定された通知チャネルに通知を送信します。

{
    "displayName": "Server health",
    "combiner": "OR",
    "conditions": [
        {
            "displayName": "Process 'nginx' is not running",
            "conditionThreshold": {
                "filter": "select_process_count(\"has_substring(\\\"nginx\\\")\", \"www\") AND resource.type=\"gce_instance\"",
                "comparison": "COMPARISON_LT",
                "thresholdValue": 1,
                "duration": "300s"
            }
        }
    ],
    "notificationChannels": [
        "projects/a-gcp-project/notificationChannels/16476255324959532809"
    ]
}

プロセスの状態に示した別の使用例もご覧ください。

このページは役立ちましたか?評価をお願いいたします。

フィードバックを送信...

ご不明な点がありましたら、Google のサポートページをご覧ください。