本文档介绍了如何使用 Cloud Monitoring API 以编程方式创建、修改、删除、列出和获取基于指标的提醒政策。这些示例展示了如何使用 Google Cloud CLI 和客户端库。 此内容不适用于基于日志的提醒政策。如需了解基于日志的提醒政策,请参阅监控日志。
您也可以使用 Google Cloud 控制台执行这些任务;如需了解详情,请参阅以下文档:
关于提醒政策
提醒政策由 AlertPolicy
对象表示,该对象描述一组指示系统可能存在非正常状况的条件。提醒政策会引用通知渠道,您可通过后者指定在提醒政策被触发时获取通知的方式。
每个提醒政策都属于指标范围限定项目。每个项目最多可以包含 500 个政策。对于 API 调用,您必须提供“项目 ID”;使用指标范围限定项目的 ID 作为值。在这些示例中,指标范围限定项目的 ID 为 a-gcp-project
。
AlertPolicy
资源支持 5 种操作:
- 创建新政策
- 删除现有政策
- 检索特定政策
- 检索所有政策
- 修改现有政策
提醒政策可用 JSON 或 YAML 格式,它允许您以文件的形式记录政策,并使用文件来备份和恢复政策。 通过 Google Cloud CLI,您可以使用上述两种格式的文件中的任意一种来创建政策。通过 REST API,您可以从 JSON 文件创建政策。 请参阅 示例政策,查看 JSON 格式的提醒政策的精选示例。
以下示例使用 gcloud
界面和 API 来演示说明这些基本使用场景。此处的 API 示例摘录自一个示例程序,该程序通过 API 实现用于提醒政策的备份和恢复系统。示例:备份和恢复 中显示了更完整的示例。
准备工作
在针对该 API 编写代码之前,您应该满足以下条件:
- 熟悉提醒政策的一般概念和所用术语;详情可参阅提醒概览。
- 确保已启用 Cloud Monitoring API;如需了解详情,请参阅启用 API。
- 如果您打算使用客户端库,请安装要使用的语言的库;详情请参阅客户端库。目前,此 API 仅支持针对 C#、Go、Java、Node.js 和 Python 的提醒。
如果您计划使用 Google Cloud CLI,请安装该工具。不过,如果您使用 Cloud Shell,则 Google Cloud CLI 已安装。
此处还提供了使用
gcloud
界面的示例。 请注意,gcloud
示例都假设当前项目已被设置为目标 (gcloud config set project [PROJECT_ID]
),因此调用中省略了显式--project
标志。示例中当前项目的 ID 为a-gcp-project
。
-
如需获得使用 Cloud Monitoring API 创建和修改提醒政策所需的权限,请让管理员向您授予项目的 Monitoring AlertPolicy Editor (
roles/monitoring.alertPolicyEditor
) IAM 角色。 如需详细了解如何授予角色,请参阅管理对项目、文件夹和组织的访问权限。如需详细了解 Monitoring 的 IAM 角色,请参阅使用身份和访问权限管理控制访问权限。
将应用设计为使用单线程 Cloud Monitoring API 调用来修改 Google Cloud 项目中提醒政策的状态。例如,用于创建、更新或删除提醒政策的单线程 API 调用。
创建提醒政策
如需在项目中创建提醒政策,请使用 alertPolicies.create
方法。如需了解如何调用此方法、其参数和响应数据,请参阅参考页面 alertPolicies.create
。
您可以利用 JSON 或 YAML 文件创建政策。
Google Cloud CLI 接受这些文件作为参数,而且您可以通过编程方式读取 JSON 文件,将其转换为 AlertPolicy
对象,然后使用 alertPolicies.create
方法根据这些对象创建政策。如果您有包含提醒规则的 Prometheus JSON 或 YAML 配置文件,则 gcloud CLI 可以将其迁移为包含 PromQL 条件的 Cloud Monitoring 提醒政策。如需了解详情,请参阅从 Prometheus 迁移提醒规则和接收器。
以下示例演示说明了创建提醒政策的过程,但未说明如何创建用于描述提醒政策的 JSON 或 YAML 文件。相反,这些示例假定存在 JSON 格式的文件,并说明了如何发出 API 调用。如需查看 JSON 文件示例,请参阅示例政策。如需了解有关监控指标比率的一般信息,请参阅指标比率。
gcloud
要在项目中创建提醒政策,请使用 gcloud alpha monitoring
policies create
命令。以下示例利用 rising-cpu-usage.json
文件在 a-gcp-project
中创建了提醒政策:
gcloud alpha monitoring policies create --policy-from-file="rising-cpu-usage.json"
如果成功,则该命令将返回新政策的名称,例如:
Created alert policy [projects/a-gcp-project/alertPolicies/12669073143329903307].
该 rising-cpu-usage.json
文件包含了显示名称为“High CPU rate of change”的政策的 JSON 代码。如需详细了解此政策,请参阅变化率政策。
如需了解详情,请查看 gcloud alpha monitoring policies create
参考。
C#
如需向 Monitoring 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
Go
如需向 Monitoring 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
Java
如需向 Monitoring 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
Node.js
如需向 Monitoring 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
PHP
如需向 Monitoring 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
Python
如需向 Monitoring 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
创建的 AlertPolicy
对象将具有其他字段。
该政策本身有 name
、creationRecord
和 mutationRecord
字段。此外,政策中的每个条件也都有一个 name
。
这些字段不能在外部修改,因此不必在创建政策时设置这些字段。 创建政策的 JSON 示例里都不包含这些字段,但如果有人在示例创建政策后检索这些政策,则这些字段将出现。
列出和获取提醒政策
要检索项目中的政策列表,请使用 alertPolicies.list
方法。使用此方法可检索政策,并可以对检索到的政策应用一些操作,例如备份这些政策。 此方法还支持使用 filter
和 orderBy
选项对结果进行限制和排序;具体请参阅排序和过滤。
如果您要查找特定政策且知道其名称,则可使用 alertPolicies.get
方法仅检索该政策。政策的名称是 name
字段的值,而不是 AlertPolicy
对象中的 displayName
。政策名称的格式为 projects/[PROJECT_ID]/alertPolicies/[POLICY_ID]
,例如:
projects/a-gcp-project/alertPolicies/12669073143329903307
gcloud
要列出项目中的所有提醒政策,请使用 gcloud alpha monitoring
policies list
命令:
gcloud alpha monitoring policies list
如果成功,list
命令将以 YAML 格式列出指定项目中的所有政策。例如,a-gcp-project
项目中显示名称为“High CPU rate of change” 的政策按下述形式显示在政策列表中:
---
combiner: OR
conditions:
- 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
displayName: CPU usage is increasing at a high rate
name: projects/a-gcp-project/alertPolicies/12669073143329903307/conditions/12669073143329903008
creationRecord:
mutateTime: '2018-03-26T18:52:39.363601689Z'
mutatedBy: [USER@DOMAIN]
displayName: High CPU rate of change
enabled: true
mutationRecord:
mutateTime: '2018-03-26T18:52:39.363601689Z'
mutatedBy: [USER@DOMAIN]
name: projects/a-gcp-project/alertPolicies/12669073143329903307
---
要列出单个提醒政策,请改用 gcloud alpha monitoring policies
describe
,并指定政策的名称。例如,此命令仅返回上面所列出的政策:
gcloud alpha monitoring policies describe projects/a-gcp-project/alertPolicies/12669073143329903307
如需了解详情,请参阅 gcloud alpha monitoring policies list
和 describe
参考。describe
命令对应于 API 中的 alertPolicies.get
方法。
C#
如需向 Monitoring 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
Go
如需向 Monitoring 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
Java
如需向 Monitoring 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
Node.js
如需向 Monitoring 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
PHP
如需向 Monitoring 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
Python
如需向 Monitoring 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
删除提醒政策
要从项目中删除政策,请使用 alertPolicies.delete
方法,并提供要删除的提醒政策的名称。
gcloud
要删除提醒政策,请使用 gcloud alpha monitoring policies
delete
并指定要删除的政策的名称。例如,以下命令会删除显示名称为“High CPU rate of change”的政策:
gcloud alpha monitoring policies delete projects/a-gcp-project/alertPolicies/12669073143329903307
如需了解详情,请参阅 gcloud alpha monitoring policies delete
参考文档。
修改提醒政策
要修改提醒政策,请使用 REST API 中的 alertPolicies.patch
方法。其他 API 实现和 gcloud
界面称之为 update
,而不是 patch
。
更新操作可以完全替换现有的政策,也可以修改其中一部分字段。要进行更新,您需要使用新的 AlertPolicy
对象并根据情况使用 字段掩码。
如果指定了一个字段掩码,则字段掩码中列出的所有字段将更新为提供的政策中的值。如果提供的政策中不包括字段掩码中提到的某个字段,则该字段将被清空并设置为默认值。掩码中未列出的任何字段将保留其先前的值。
如果未指定字段掩码,则现有政策将被替换为提供的政策,但沿用原有名称 (projects/[PROJECT_ID]/alertPolicies/[POLICY_ID]
)。新政策中的任何条件,若有 name
值,且该值中含有 CONDITION_ID
,则该条件的名称保留不变。若新政策中的条件不符合上述情形,则将创建新的条件名称和政策名称。
使用 gcloud
命令行更新政策时,指定需要更新的字段是通过使用命令行标志来实现的,而不是使用字段掩码。如需了解详情,请参阅 gcloud alpha monitoring policies update
。
启用或停用提醒政策
要启用或停用政策,请更改 AlertPolicy
对象中 enabled
字段的布尔值。请注意,在您启用某项政策后,之前在该政策处于停用状态时收集的数据此时仍可能触发提醒。
gcloud
要停用提醒政策,请使用 gcloud alpha monitoring policies update
命令并提供 --no-enabled
标志。以下命令将停用 a-gcp-project
项目中的“High CPU rate of change”提醒政策:
gcloud alpha monitoring policies update projects/a-gcp-project/alertPolicies/12669073143329903307 --no-enabled
要启用该政策,请使用同一命令并提供 --enabled
标志。
如需了解详情,请查看 gcloud alpha monitoring policies update
参考。 update
命令与 REST API 中的 alertPolicies.patch
方法相对应。
C#
如需向 Monitoring 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
Go
如需向 Monitoring 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
Java
如需向 Monitoring 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
Node.js
如需向 Monitoring 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
PHP
如需向 Monitoring 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
Python
如需向 Monitoring 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
更新提醒政策中的通知渠道
您还可以更新提醒政策引用的通知渠道。 提醒政策按名称引用通知渠道。 提醒政策只能使用已存在的渠道。
您可以通过使用 NotificationChannel
和 NotificationChannelDescriptors
资源以编程方式创建和管理通知渠道。本部分中的这些示例假设这些渠道已经存在,并且程序示例中也展示了这些 API 的使用。
如需查看关于通知渠道对象的更多讨论,请参阅使用 API 创建和管理通知渠道。
gcloud
要修改提醒政策中的通知渠道,请使用 gcloud alpha monitoring policies update
命令。与通知渠道相关的标志有几种,您可以使用这些标志删除通知渠道、替换通知渠道、以及添加新的通知渠道。
例如,在项目 a-gcp-project 中创建显示名为 High CPU rate of change 的政策时,没有为该政策创建通知渠道。
要向此政策添加通知渠道,请使用 gcloud alpha monitoring
policies update
命令,并指定要添加 --add-notification-channels
标志的渠道:
gcloud alpha monitoring policies update projects/a-gcp-project/alertPolicies/12669073143329903307 \
--add-notification-channels="projects/a-gcp-project/notificationChannels/1355376463305411567"
如需了解详情,请查看 gcloud alpha monitoring policies update
参考。update
命令与 REST API 中的 alertPolicies.patch
方法相对应。
此处添加的通知渠道必须已经存在;详情请参阅创建通知渠道。
C#
如需向 Monitoring 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
Go
如需向 Monitoring 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
Java
如需向 Monitoring 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
Node.js
如需向 Monitoring 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
PHP
如需向 Monitoring 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
Python
如需向 Monitoring 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
修改提醒政策中的文档
政策中可以包括与政策关联的事件和通知中附带的文档。使用此字段添加信息,以协助响应人员理解和处理提醒政策所指示的问题。某些类型的通知允许附带文档发送,例如电子邮件通知;而另一些类型的渠道可能会省略文档。
gcloud
如需为政策添加文档或替换现有文档,请使用gcloud alpha monitoring policies update
命令并提供 --documentation-format="text/markdown"
标志(唯一支持的格式),以及 --documentation
标志(从命令行输入值)或 --documentation-from-file
标志(从文件中读取值)。
例如,在项目 a-gcp-project 中创建显示名为 High CPU rate of change 的政策时,没有为该政策添加文档。
以下命令将指定政策中的 documentation
字段设置为 cpu-usage-doc.md
文件中的内容:
gcloud alpha monitoring policies update projects/a-gcp-project/alertPolicies/12669073143329903307 \
--documentation-format="text/markdown" \
--documentation-from-file="cpu-usage-doc.md"
如需了解详情,请查看 gcloud alpha monitoring policies update
参考。update
命令与 REST API 中的 alertPolicies.patch
方法相对应。
向信息中心添加提醒政策
如需在自定义信息中心上显示单条件提醒政策的摘要,请向信息中心添加 AlertChart
微件。您可以使用 dashboards.create
方法创建新信息中心,使用 dashboards.patch
方法处理现有信息中心。
如果指定多条件提醒政策,则 AlertChart
微件不会显示数据。
如需详细了解如何使用这些 API 方法,请参阅通过 API 创建和管理信息中心。
示例:备份和恢复
此处显示的所有 API 示例都是从一个较大的应用中提取的,该应用可以将项目中的提醒政策备份到文件,并可以恢复政策(可能是恢复到另一个项目)。如果用于备份和恢复的项目不是同一个,该应用可以有效地将政策从一个项目导出并导入到另一个项目。
本部分提供的备份和恢复代码附有上下文,而非只摘录一小部分孤立的代码段。
备份政策
备份操作非常简单直接:收集每个项目中的提醒政策和通知渠道,以 JSON 格式保存到外部存储空间。
C#
如需向 Monitoring 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
Go
如需向 Monitoring 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
Java
如需向 Monitoring 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
Node.js
如需向 Monitoring 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
PHP
如需向 Monitoring 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
Python
如需向 Monitoring 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
恢复已备份的政策
恢复过程比原始备份复杂。您可以恢复到最初备份的项目;也可以恢复到其他项目,即提供提醒政策的导入。
如果恢复到同一项目,并且该项目中仍存在备份中的政策或渠道,则这些政策或渠道将全部更新。如果现有项目中已不存在备份中的政策或渠道,则备份将在现有项目中重新创建这些政策或渠道。 在重新创建策略和通知之前,还原过程将清除备份政策中的只读字段,如创建和突变记录。
您可以使用保存在一个项目中的政策,在另一个项目中创建新政策或类似政策。但是,您必须首先在已保存政策的副本中进行以下更改:
- 从任何通知渠道中移除以下字段:
name
verificationStatus
- 在引用提醒政策中的通知渠道之前先创建通知渠道(您需要新的渠道标识符)。
- 从您正在重新创建的任何提醒政策中移除以下字段:
name
condition.name
creationRecord
mutationRecord
如果在新项目中重新创建政策,则备份政策中任何条件的名称以及创建和突变记录也会一并清除。
此外,在另一个项目中重新创建通知渠道时,该渠道将被赋予不同的名称,因此恢复过程必须将已备份提醒政策中的渠道名称映射到新名称,并用新名称替换旧名称。
除了通知渠道的名称之外,verificationStatus
字段的值也无法在创建或更新渠道时设置,因此会使用 sentinel 值 unspecified
。渠道恢复到新项目后,必须明确对其进行验证。
C#
如需向 Monitoring 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
Go
如需向 Monitoring 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
Java
如需向 Monitoring 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
Node.js
如需向 Monitoring 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
PHP
如需向 Monitoring 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
Python
如需向 Monitoring 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
提醒和 Google Cloud CLI
在 Google Cloud CLI 中,用于管理提醒政策和通知渠道的命令组是 monitoring
(现为 Alpha 版)。monitoring
组在 alpha
组件中提供。
也就是说,这些命令均以如下内容开头:
gcloud alpha monitoring
要检查您是否安装了 alpha
组件,请运行以下命令:
gcloud components list
如果您没有安装 alpha
组件,请运行以下命令进行安装:
gcloud components install alpha
如果您已安装了 alpha
组件,请通过运行以下命令来检查是否包含 monitoring
组:
gcloud alpha monitoring --help
如果未包含 monitoring
组,Google Cloud CLI 将提示您进行添加:
You do not currently have this command group installed.
[...]
Do you want to continue (Y/n)? y