示例政策

本页面提供了一系列特定的提醒政策,可用于启发和引导您设计自己的政策。

以 JSON 或 YAML 格式表示政策

您可以用两种数据格式(JSON 和 YAML)表示提醒政策。Cloud SDK 对这两种格式都可以进行读写。REST API 可以读取 JSON。

要生成现有提醒政策和通知渠道的 YAML(该格式是默认格式)表示,请分别使用 gcloud alpha monitoring policies listdescribe 命令,或 gcloud alpha monitoring channels listdescribe 命令。

例如,此命令将检索单个政策并将输出捕获至 test-policy.yaml 文件:

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

要生成现有提醒政策和通知渠道的 JSON 表示,请执行以下操作:

复制政策

备份/还原示例中所示,您可以使用已保存的政策来创建这些政策的新副本。您也可以参照这些政策来创建类似政策。

您可以使用保存在一个项目中的政策,在另一个项目中创建新政策或类似政策。但是,您必须首先在已保存政策的副本中进行以下更改:

  • 从任何通知渠道中移除以下字段:
    • name
    • verificationStatus
  • 在引用提醒政策中的通知渠道之前先创建通知渠道(您需要新的渠道标识符)。
  • 从您正在重新创建的任何提醒政策中移除以下字段:
    • name
    • condition.name
    • creationRecord
    • mutationRecord

政策示例

此处的政策按照 Stackdriver Monitoring 控制台所用的术语整理,例如“变化率政策”,但实际上所有的分类都只基于两种类型的条件:

  • 阈值条件;界面中提到的几乎所有的政策类型都是阈值条件的变体
  • 缺失条件

在此处的示例中,这些内容由 conditionThresholdconditionAbsent 条件来表示。如需了解更多信息,请参阅 Condition 参考页面。

指标阈值政策

指标阈值政策是检测某个值超越预定边界的政策。阈值政策可通知您某些方面已临近关键点,以便您采取行动。例如,当可用磁盘空间低于总磁盘空间的 10%、系统可能会很快耗尽磁盘空间时。

以下政策使用平均 CPU 使用率作为一组虚拟机运行状况的指示因素。当某个实例和地区中的一组虚拟机的平均 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
                }
            }
        }
    ],
}

指标缺失政策

如果在指定的时间长度内没有数据写入指标,则会触发指标缺失政策。

要演示这种政策,可采用的一种方法是创建一个永远不会有数据写入的自定义指标。此类政策不需要使用自定义指标,但为了进行演示,这种方法比较容易确保它实际上不被使用。

以下是自定义指标的示例描述符。您可以使用 APIs 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"
}

如需了解详情,请参阅使用自定义指标

如果在大约一个小时内没有数据写入此指标,则触发以下提醒政策:换句话说,您的每小时管道未能运行。请注意,这里使用的条件是 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-\")"
}

要确定群组的等效字段,请使用 project.groups.list 参考页面上的 API Explorer 列出群组详细信息。

正常运行时间检查政策

正常运行时间检查的状态显示在 Stackdriver Monitoring 控制台上,但您可以使用提醒政策,在运行时间检查结果不合格时直接通知您。

例如,下面的 JSON 描述了 Google Cloud Platform 网站上的正常运行时间检查。它每 5 分钟检查一次可用性。

该正常运行时间检查是使用 Stackdriver Monitoring 控制台创建的。这里的 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 字段的最后一个组成部分,在界面中不可见。如果您使用的是 Monitoring API,则 uptimeCheckConfigs.create 方法会返回该 ID。

ID 来源于 displayName,在本示例中,它是在界面中设置的。可以通过列出正常运行时间检查并查看 name 值来验证 ID。

之前介绍的正常运行时间检查的 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\"

如需了解详情,请参阅监控过滤条件

进程运行状况政策

如果与某一模式匹配的进程数量超过阈值,则进程运行状况政策会向您发出通知。这可通知您关于进程的一些情况,例如某个进程已停止运行。

当与字符串 nginx 匹配的进程(以用户 www 的身份运行)在超过 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"
            }
        }
    ],
}

如需查看其他示例,请参阅进程运行状况

此页内容是否有用?请给出您的反馈和评价:

发送以下问题的反馈:

此网页
Stackdriver Monitoring
需要帮助?请访问我们的支持页面