本文档提供了提醒政策示例。这些示例是 JSON 格式,并使用 Monitoring 过滤条件。您可以创建 JSON 或 YAML 格式的政策 (使用 Monitoring 过滤条件或 Monitoring Query Language (MQL))。 Google Cloud CLI 可以读取和写入 JSON 和 YAML,而 REST API 可以读取 JSON。
如需查看使用 MQL 的提醒政策示例,请参阅以下内容 文档:
如需了解如何配置提醒政策字段,请参阅以下内容:
为现有政策生成 YAML
要生成现有提醒政策的 YAML 表示法,请使用
gcloud alpha monitoring policies list
命令,
和gcloud alpha monitoring policies describe
命令来打印政策。
要生成现有通知渠道的 YAML 表示法,请使用
gcloud alpha monitoring channels list
命令,
频道和 gcloud alpha monitoring channels describe
命令来输出通道配置。
如果您未在 Google Cloud CLI 命令中添加 --format
标志,则这两个 gcloud ... describe
命令的格式均默认为 YAML。
例如,以下 gcloud alpha monitoring policies describe
命令会检索名为 projects/a-gcp-project/alertPolicies/12669073143329903307
的单个政策,并将重定向 (>
) 复制到 test-policy.yaml
文件:
gcloud alpha monitoring policies describe projects/a-gcp-project/alertPolicies/12669073143329903307 > test-policy.yaml
为现有政策生成 JSON
如需生成现有提醒政策和通知渠道的 JSON 表示,请执行以下任一操作:
将
--format="json"
标志添加到为现有政策生成 YAML中所述的gcloud
CLI 命令。例如,如需列出政策,请运行以下命令:gcloud alpha monitoring policies list --format=json
使用每个 API 方法的参考页面上的 API Explorer 微件:
有关提醒政策,请参阅
alertPolicies.list
和alertPolicies.get
方法。对于通知渠道,请参阅
notificationChannels.list
和notificationChannels.get
方法。
如需了解详情,请参阅 APIs Explorer。
政策示例
如备份/还原示例中所示,您可以使用已保存的政策来创建这些政策的新副本。
您可以使用保存在一个项目中的政策,在另一个项目中创建新政策或类似政策。但是,您必须首先在已保存政策的副本中进行以下更改:
- 从任何通知渠道中移除以下字段:
name
verificationStatus
- 在引用提醒政策中的通知渠道之前先创建通知渠道(您需要新的渠道标识符)。
- 从您正在重新创建的任何提醒政策中移除以下字段:
name
condition.name
creationRecord
mutationRecord
本文档中政策采用与 例如,Google Cloud 控制台中的监控功能会使用 “变化率政策”政策,并且存在两种类型的条件:
- 阈值条件;界面中提到的几乎所有的政策类型 是阈值条件的变体,
- 缺失条件
在以下示例中,这些条件对应于 conditionThreshold
和 conditionAbsent
。如需了解详情,请参阅 Condition
参考页面。
您可以使用 Google Cloud 控制台手动创建许多这些政策,但某些政策只能通过 Monitoring API 创建。有关 信息,请参阅创建提醒政策(界面)或 使用 API 创建提醒政策。
指标阈值政策
指标阈值政策用于检测某个值超越预定边界的情况。阈值政策可通知您某些方面已临近关键点,以便您采取行动。例如,满足指标阈值政策的条件 。
以下提醒政策使用平均 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"
],
"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
}
}
}
],
}
指标缺失政策
指标缺失条件
指定的时间范围内没有数据写入指标时满足条件
按 duration
字段指定。
如需演示这种政策,可采用的一种方法是创建自定义指标。
以下是自定义指标的示例描述符。您可以使用 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\"",
}
}
],
}
预测政策
发生以下情况时,满足预测条件:
- 在
duration
字段定义的时间范围内,时序的所有预测值都相同。 - Cloud Monitoring 预测时序将违反阈值 在预测范围内
预测条件是配置的指标阈值条件
使用预测功能如以下示例所示,这些条件包含一个 forecastOptions
字段,用于启用预测并指定预测时间范围。在以下示例中,预测时间范围设置为 1 小时,这是最小值:
{
"displayName": "NFS free bytes alert",
"combiner": "OR",
"conditions": [
{
"displayName": "Filestore Instance - Free disk space percent",
"conditionThreshold": {
"aggregations": [
{
"alignmentPeriod": "300s",
"perSeriesAligner": "ALIGN_MEAN"
}
],
"comparison": "COMPARISON_LT",
"duration": "900s",
"filter": "resource.type = \"filestore_instance\" AND metric.type = \"file.googleapis.com/nfs/server/free_bytes_percent\"",
"forecastOptions": {
"forecastHorizon": "3600s"
},
"thresholdValue": 20,
"trigger": {
"count": 1
}
}
}
],
}
变化率政策
当时间序列中的值至少增加或减少阈值指定的百分比时,就会满足变化率条件。当您创建这种类型的条件时,变化百分比计算 在与阈值进行比较之前应用于时序。
该条件会对过去 10 分钟的指标值计算平均值,然后将结果与校准时间段开始前测得的 10 分钟平均值进行比较。您无法在 变化率提醒政策但是,您在创建条件时需指定对齐周期。
以下提醒政策会监控 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
}
}
}
],
}
分组聚合政策
此提醒政策监控整个时间段内的平均 CPU 利用率 Google Kubernetes Engine 集群超出阈值:
{
"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"
]
},
{
"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 列出组详细信息。
正常运行时间检查政策
拨测的状态会显示在拨测页面上, 您可以配置提醒政策,以便 Cloud Monitoring 向您发送 在拨测失败时发出通知。
例如,以下 JSON 描述了 Google Cloud 网站上的 HTTPS 正常运行时间检查。提醒政策会每 5 分钟检查一次可用性。
该正常运行时间检查是通过 Google Cloud 控制台创建的。这里的 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",
"useSsl": true,
"port": 443,
"authInfo": {}
},
"period": "300s",
"timeout": "10s",
"contentMatchers": [
{}
]
}
要为正常运行时间检查创建提醒政策,请使用 UPTIME_CHECK_ID
引用正常运行时间检查。此 ID 是在创建检查时设置的;它显示为 name
字段的最后一个组成部分,位于界面的配置摘要中的 Check ID
。如果您使用的是 Monitoring API,则 uptimeCheckConfigs.create
方法会返回该 ID。
ID 来源于 displayName
,在本示例中,它是在界面中设置的。
可以通过列出正常运行时间检查并查看 name
值来验证 ID。
上述正常运行时间检查的 ID 是 uptime-check-for-google-cloud-site
。
如果拨测满足以下提醒政策的条件 或者如果 SSL Google Cloud 网站上的证书将在 15 天内过期。如果满足上述任一条件,Monitoring 会向指定的通知渠道发送通知:
{
"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
}
}
},
{
"displayName": "SSL Certificate for google-cloud-site expiring soon",
"conditionThreshold": {
"aggregations": [
{
"alignmentPeriod": "1200s",
"perSeriesAligner": "ALIGN_NEXT_OLDER",
"crossSeriesReducer": "REDUCE_MEAN",
"groupByFields": [ "resource.label.*" ]
}
],
"comparison": "COMPARISON_LT",
"duration": "600s",
"filter": "metric.type=\"monitoring.googleapis.com/uptime_check/time_until_ssl_cert_expires\"
AND metric.label.check_id=\"uptime-check-for-google-cloud-site\"
AND resource.type=\"uptime_url\"",
"thresholdValue": 15,
"trigger": {
"count": 1
}
}
}
],
}
条件中的过滤条件指定根据其类型和标签监控的指标。指标类型为 monitoring.googleapis.com/uptime_check/check_passed
和 monitoring.googleapis.com/uptime_check/time_until_ssl_cert_expires
。指标标签标识正受监控的特定正常运行时间检查。
在本示例中,标签字段 check_id
包含正常运行时间检查 ID。
AND metric.label.check_id=\"uptime-check-for-google-cloud-site\"
如需了解详情,请参阅监控过滤条件。
进程运行状况政策
如果与某一模式匹配的进程数量超过阈值,则进程运行状况政策会向您发出通知。这可通知您关于进程的一些情况,例如某个进程已停止运行。
当与字符串 nginx
匹配的进程(以用户 www
的身份运行)在超过 5 分钟的时间内一直不可用时,此提醒政策会导致 Monitoring 向指定的通知渠道发送通知:
{
"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"
}
}
],
}
如需了解详情,请参阅进程运行状况。
指标比率
我们建议您使用 Monitoring Query Language (MQL) 创建基于比率的提醒政策。虽然 Cloud Monitoring API 支持构建一些基于过滤条件的比率,但 MQL 提供了一种更灵活且更强大的解决方案:
- 如需查看基于 MQL 的比率政策的示例,请参阅 MQL 提醒政策示例。
- 如需了解如何使用 MQL 创建提醒政策, 请参阅使用 MQL 的提醒政策。
- 如需了解如何绘制或监控指标比率,请参阅指标比率。
本部分介绍基于过滤条件的比率。通过 API,您可以创建一项政策来计算两个相关指标的比率,并在该比率超过阈值时触发。您还可以查看政策。相关指标必须具有相同的 MetricKind
。例如,如果两个指标都是增量指标,您可以创建基于比率的提醒政策。要确定指标类型的 MetricKind
,请参阅指标列表。
比率条件是指标阈值条件的变体,比率政策中的条件使用两种过滤条件:常规 filter
(作为比率的分子)和 denominatorFilter
(作为比率的分母)。
两个过滤条件中的时间序列必须以相同的方式聚合,这样计算值的比率才是有意义的。当过滤条件的比率达到时,满足提醒政策的条件
在由
duration
字段。
下一部分将介绍如何配置提醒政策,以监控 HTTP 错误响应与所有 HTTP 响应的比率。
HTTP 错误比率
以下提醒政策具有基于 HTTP 错误响应数量与所有 HTTP 响应数量之比建立的阈值条件。
{
"displayName": "HTTP error count exceeds 50 percent for App Engine apps",
"combiner": "OR",
"conditions": [
{
"displayName": "Ratio: HTTP 500s error-response counts / All HTTP response counts",
"conditionThreshold": {
"filter": "metric.label.response_code>=\"500\" AND
metric.label.response_code<\"600\" AND
metric.type=\"appengine.googleapis.com/http/server/response_count\" AND
project=\"a-gcp-project\" AND
resource.type=\"gae_app\"",
"aggregations": [
{
"alignmentPeriod": "300s",
"crossSeriesReducer": "REDUCE_SUM",
"groupByFields": [
"project",
"resource.label.module_id",
"resource.label.version_id"
],
"perSeriesAligner": "ALIGN_DELTA"
}
],
"denominatorFilter": "metric.type=\"appengine.googleapis.com/http/server/response_count\" AND
project=\"a-gcp-project\" AND
resource.type=\"gae_app\"",
"denominatorAggregations": [
{
"alignmentPeriod": "300s",
"crossSeriesReducer": "REDUCE_SUM",
"groupByFields": [
"project",
"resource.label.module_id",
"resource.label.version_id"
],
"perSeriesAligner": "ALIGN_DELTA",
}
],
"comparison": "COMPARISON_GT",
"thresholdValue": 0.5,
"duration": "0s",
"trigger": {
"count": 1
}
}
}
]
}
指标和资源类型
此政策的指标类型是 appengine.googleapis.com/http/server/response_count
,它有两个标签:
response_code
是一个 64 位整数,表示请求的 HTTP 状态代码。此政策根据此标签过滤时间序列数据,因此它可以确定以下各项:- 收到的响应数量。
- 收到的错误响应数量。
- 错误响应与所有响应的比率。
loading
是一个布尔值,用于表明请求是否在加载。loading
标签与此提醒政策无关。
提醒政策评估来自 App Engine 应用的响应数据,
即,源自受监控资源类型 gae_app
的数据。此受监控的资源有三个标签:
project_id
是 Google Cloud 项目的 ID。module_id
是应用中的服务或模块的名称。version_id
是应用的版本。
如需了解这些指标和受监控的资源类型的参考信息,请参阅指标列表中的 App Engine 指标和受监控资源列表中的 gae_app
条目。
此政策的作用
此条件会计算错误响应与所有响应的比率。 如果在 5 分钟的校准时间段内比率超过 50%(即比率大于 0.5),则满足该条件。
此政策通过将这些标签的值按每个过滤条件中的时间序列进行分组来捕获违规的应用模块和版本。
- 条件中的过滤条件会查看来自 App Engine 应用的 HTTP 响应,并选择在错误范围 (5xx) 内的响应。这是比率中的分子。
- 条件中的分母过滤条件会查看来自 App Engine 应用的所有 HTTP 响应。
满足条件,且 Monitoring 针对
立即发生新突发事件;duration
字段允许的时间范围
是 0 秒。此条件使用的 trigger
计数为 1,即需要违反条件以导致突发事件的时间序列的数量。对于包含单项服务的 App Engine 应用,
trigger
计数为 1 也没关系。如果您有一个包含 20 项服务的应用,并且您希望在有 3 个或更多服务违反条件时触发突发事件,请使用 3 个 trigger
计数。
设置比率
分子和分母过滤条件完全相同,不同的是,分子中的条件过滤条件与错误范围内的响应代码匹配,分母中的条件过滤条件与所有响应代码匹配。以下子句仅出现在分子条件中:
metric.label.response_code>=\"500\" AND
metric.label.response_code<\"600\"
除此之外,分子过滤条件和分母过滤条件是相同的。
每个过滤条件选择的时间序列必须以相同的方式聚合,这样计算的比率才是有意义的。每个过滤条件可能会收集多个时间序列,因为标签的每个值组合都对应一个不同的时间序列。此政策根据指定的资源标签对这组时间序列进行分组,将这些时间序列划分成若干组。每个组中的某些时间序列与分子过滤条件匹配;其余的时间序列则与分母过滤条件匹配。
要计算比率,必须将匹配每个过滤条件的一组时间序列聚合为一个时间序列。这样,每个组将剩下两个时间序列,一个用于分子,一个用于分母。接下来,可以计算每组中分子和分母时间序列中各点的比率。
在此政策中,两个过滤条件的时间序列聚合如下:
每个过滤条件都会创建多个以 5 分钟为间隔进行校准的时间序列,其中值表示对该 5 分钟校准时间段内的值进行
ALIGN_DELTA
计算的结果。此校准器会将该校准周期内的匹配响应数作为 64 位整数返回。此外,每个过滤条件中的时间序列还会按模块和版本的资源标签值进行分组,因此每个组都包含两组校准的时间序列,即与分子过滤条件匹配的时间序列以及与分母过滤条件匹配的时间序列。
通过使用
REDUCER_SUM
跨序列缩减器对各时间序列中的值求和,将每个组中与分子或分母过滤条件匹配的时间序列聚合为一个时间序列。这样会生成分子和分子的时序。 分母,每个分母都报告所有匹配结果 时序。
然后,该政策针对代表每个组的分子和分母时间序列计算值的比率。发出提醒的条件 政策是否满足政策的要求。