このページでは、独自のデザインのポリシーの設定に役立つアラート ポリシーのコレクションについて説明します。
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 ウィジェットを使用する。
アラート ポリシーについては、
alertPolicies.list
メソッドとalertPolicies.get
メソッドをご覧ください。通知チャネルについては、
notificationChannels.list
メソッドとnotificationChannels.get
メソッドをご覧ください。
詳細については、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 分(900 秒)にわたって 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
}
}
}
],
}
グループ集計ポリシー
このポリシーは、Google Kubernetes Engine クラスタ全体の平均 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-\")"
}
グループと同等のフィールドを識別するには、API Explorer を使用してグループの詳細を一覧表示します。詳しくは、project.groups.list のリファレンス ページをご覧ください。
稼働時間チェック ポリシー
稼働時間チェックのステータスは、Stackdriver Monitoring Console に表示されますが、稼働時間のチェックが失敗した場合は、アラート ポリシーを使用して直接通知できます。
たとえば、次の JSON では Google Cloud Platform サイトの稼働時間チェックを記述しています。5 分ごとに稼働状況をチェックします。
稼働時間チェックは、Stackdriver Monitoring Console で作成されたものです。この JSON 表現は、Monitoring API を使用してプロジェクトの稼働時間チェックの一覧を取得して作成しています(uptimeCheckConfigs.list
を参照)。Monitoring 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 には表示されません。Monitoring API を使用している場合は、uptimeCheckConfigs.create
メソッドが ID を返します。
この 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
}
}
}
],
}
アラート ポリシーのフィルタは、タイプとラベルでモニタリング対象の指標を指定します。指標タイプは monitoring.googleapis.com/uptime_check/check_passed
です。指標のラベルは、モニタリング対象の特定の稼働時間チェックを表します。この例では、ラベル フィールド check_id
に稼働時間チェック 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"
}
}
],
}
プロセスの状態に示した別の使用例もご覧ください。