本文档介绍了如何使用 Google Cloud 控制台配置通知渠道。Cloud Monitoring 使用这些渠道来通知您,
或您的待命团队。创建
提醒政策,您可以通过从电子邮件提醒中选择
已配置通知渠道的列表。例如,您可以配置用于监控 Compute Engine 实例的提醒政策,以发布 Pub/Sub 主题并通知值班团队的 Slack 频道。
如需了解详情,请参阅通知延迟时间 和
每个突发事件的通知数量 。
本文档介绍了如何使用 Google Cloud 控制台。如果您使用的是 Cloud Monitoring API,请参阅通过 API 创建和管理通知渠道 。
注意 :发送到频道收件人的数据可能包含敏感信息。在创建通知之前查看您的监管做法
。
准备工作
如需获取使用 Google Cloud 控制台查看和配置通知渠道所需的权限,
请让管理员授予您
项目的 Monitoring Editor (roles/monitoring.editor
) IAM 角色。
如需详细了解如何授予角色,请参阅管理对项目、文件夹和组织的访问权限 。
您也可以通过自定义角色 或其他预定义角色 来获取所需的权限。
如需详细了解 Cloud Monitoring 角色,
请参阅
使用 Identity and Access Management 控制访问权限 。
创建通知渠道
创建提醒政策时,您可以选择任何已配置的通知渠道,并将其添加到政策中。您可以预配置通知渠道,也可以在创建提醒政策的过程中配置它们。如需了解详情,请参阅按需创建渠道 。
注意 :为实现冗余,我们建议您创建多个通知渠道。我们将通知传递给该系统后,Google 无法控制这些传送系统。此外,一个
Google 服务支持 Cloud Mobile App、PagerDuty、Webhook 和 Slack。
如果您使用其中某种通知渠道,请将电子邮件、短信或 Pub/Sub 用作冗余渠道。
如需使用 Google Cloud 控制台创建通知渠道,请按照下表中包含的特定于渠道的说明操作:
电子邮件 如需添加电子邮件通知渠道,请执行以下操作:
在 Google Cloud 控制台中,转到 notifications 提醒 页面:
进入提醒
如果您使用搜索栏查找此页面,请选择子标题为监控 的结果。
点击修改通知渠道 。
在电子邮件 部分中,点击新增 。
输入单个电子邮件地址和说明。
点击保存 。
如果您使用群组电子邮件地址作为提醒政策的通知渠道,请将该群组配置为接受来自 alerting-noreply@google.com
的邮件。
您可以在创建提醒政策期间创建电子邮件渠道。如需了解详情,请参阅
创建点播频道 。
mobile-app 您可以使用 Google Cloud 控制台移动应用 随时随地监控 Google Cloud 控制台资源和 Monitoring 信息。Google Cloud 控制台移动应用通知会发送给特定设备或特定用户:
设备 表示通知仅发送到创建通知渠道的特定设备。对于设备范围的通知渠道,显示名 字段包含设备信息。
用户 表示通知将发送到安装了 Google Cloud 控制台移动应用的所有设备。
Cloud Monitoring 会在创建渠道时确定通知范围。您不能选择或更改范围。
如需为特定的特定服务配置 Google Cloud 控制台移动应用通知渠道,
Google Cloud 项目中,请执行以下操作:
从移动设备的应用商店安装 Google Cloud 控制台移动应用。
选择要在 Google Cloud 控制台移动应用中查看的项目。
选择项目后,应用与所选的 Google Cloud 项目之间会交换数据。当不存在通知渠道时,系统会创建一个通知渠道。几分钟后,该渠道会列在通知渠道 页面的移动设备 部分。
如需将您的移动设备添加为提醒政策的通知渠道,请在提醒通知 部分中选择 Google Cloud 控制台(移动设备) ,然后从列表中选择您的移动设备。
PagerDuty 支持双向同步
。因此,真实情况如下:
如果在 Monitoring 中创建了突发事件,则会在 PagerDuty 中打开一个突发事件。
您不能使用 PagerDuty 来结束 Monitoring 中的突发事件。
如果您在 PagerDuty 中解决了突发事件,而 Monitoring 中仍有该突发事件处于打开状态,则该突发事件会在 PagerDuty 中重新打开。
若要设置 PagerDuty 通知,请按以下步骤操作:
执行以下操作:
在 PagerDuty 账号中,在新服务中配置集成,或将集成添加到现有服务。
创建一个账号或登录现有账号。
前往服务 页面。
如需创建服务,请执行以下操作:
点击 + 新服务 。
输入服务名称和说明,然后点击
下一步 。
配置上报政策,然后点击下一步 。
如果您的 PagerDuty 账号支持提醒分组并
暂时性提醒,对其进行配置,然后点击下一步 。
在集成设置页面的 Search for an integration(s) (搜索集成)工具栏中,输入 Events API v1
,然后点击 Create Service (创建服务)。然后,您会返回到新服务的 Integrations (集成)面板。
如需修改现有服务,请执行以下操作:
从服务目录中选择一项服务。
在服务页面上,选择集成 面板。
点击 + 添加其他集成 ,前往集成设置页面。
在集成设置页面的搜索集成 工具栏中,输入 Events API v1
,然后点击添加 。然后,您会返回
Integrations (集成)面板。
在服务的集成 面板上,找到您的
新集成,展开其菜单,然后复制集成密钥。
在 Cloud Monitoring 中,添加 PagerDuty 通知渠道:
在 Google Cloud 控制台中,转到 notifications 提醒 页面:
进入提醒
如果您使用搜索栏查找此页面,请选择子标题为监控 的结果。
点击修改通知渠道 。
在 PagerDuty 部分,点击新增 。
输入显示名 。此名称应与您在第 1 步中配置新集成的 PagerDuty 服务的名称一致。
将您在第 1 步中复制的集成密钥粘贴到服务密钥 字段中。
点击保存 。
创建提醒政策时,请在 Notifications 部分选择 PagerDuty ,然后选择您的 PagerDuty 配置。
PagerDuty 的 JSON 数据包采用以下格式:
{
"description" : A s tr i n g o f various f ields i n t he i n cide nt ,
"details" : JSON payload wi t h schema versio n 1.2.
}
如需查看 details
字段的示例和架构,
请展开即可下部分。
JSON 示例
默认情况下,提醒后端会尝试生成版本 1.2 格式的 JSON 数据包。如需详细了解此格式,请参阅下一部分。
以下是此类数据包的示例:
{
"incident": {
"incident_id": "0.opqiw61fsv7p",
"scoping_project_id": "internal-project",
"scoping_project_number": 12345,
"url": "https://console.cloud.google.com/monitoring/alerting/incidents/0.lxfiw61fsv7p?project=internal-project",
"severity": "no severity",
"started_at": 1577840461,
"ended_at": 1577877071,
"state": "closed",
"resource_id": "11223344",
"resource_name": "internal-project gke-cluster-1-default-pool-e2df4cbd-dgp3",
"resource_display_name": "gke-cluster-1-default-pool-e2df4cbd-dgp3",
"resource_type_display_name": "VM Instance",
"resource": {
"type": "gce_instance",
"labels": {
"instance_id": "11223344",
"project_id": "internal-project",
"zone": "us-central1-c"
}
},
"metric": {
"type": "compute.googleapis.com/instance/cpu/utilization",
"displayName": "CPU utilization",
"labels": {
"instance_name": "the name of the VM instance"
}
},
"metadata": {
"system_labels": { "labelkey": "labelvalue" },
"user_labels": { "labelkey": "labelvalue" }
},
"policy_name": "Monitor-Project-Cluster",
"policy_user_labels" : {
"user-label-1" : "important label",
"user-label-2" : "another label"
},
"condition_name": "VM Instance - CPU utilization [MAX]",
"threshold_value": "0.9",
"observed_value": "0.835",
"condition": {
"name": "projects/internal-project/alertPolicies/1234567890123456789/conditions/1234567890123456789",
"displayName": "VM Instance - CPU utilization [MAX]",
"conditionThreshold": {
"filter": "metric.type=\"compute.googleapis.com/instance/cpu/utilization\" resource.type=\"gce_instance\" metadata.system_labels.\"state\"=\"ACTIVE\"",
"aggregations": [
{
"alignmentPeriod": "120s",
"perSeriesAligner": "ALIGN_MEAN"
}
],
"comparison": "COMPARISON_GT",
"thresholdValue": 0.9,
"duration": "0s",
"trigger": {
"count": 1
}
}
},
"documentation": {
"content": "TEST ALERT\n\npolicy.name=projects/internal-project/alertPolicies/1234567890123456789\n\npolicy.display_name=Monitored-Project-NO-GROUPBY\n\ncondition.name=projects/nternal-project/alertPolicies/1234567890123456789/conditions/1234567890123456789\n\ncondition.display_name=VM Instance - CPU utilization [MAX]\n\nproject=internal-project\n\nresrouce.project=internal-project \n\nDONE\n",
"mime_type": "text/markdown",
"subject": "ALERT - No severity",
"links": [
{
"displayName": "Playbook",
"url": "https://myownpersonaldomain.com/playbook?name=${resource.name}"
}
]
},
"summary": "CPU utilization for internal-project gke-cluster-1-16-default-pool-e2df4cbd-dgp3 with metric labels {instance_name=gke-cluster-1-default-pool-e2df4cbd-dgp3} and system labels {state=ACTIVE} returned to normal with a value of 0.835."
},
"version": "1.2"
}
架构结构 1.2 版
本部分介绍载荷架构 1.2 版。一些字段可能未出现在所有返回的数据包中,或者可能具有空值,具体取决于提醒政策的配置、突发事件状态或受监控的资源。一些字段采用嵌入式结构作为值;这些结构也会通过引用进行描述,因为它们的内容也可能会有所不同。
在返回的数据包中,字段可按任意顺序排列。在下面的说明中,会将它们整理到相关组中。
{
"version" : "1.2",
"incident" : {
突发事件相关信息。
"incident_id"
:字符串,代表为此突发事件生成的 ID。
"scoping_project_id"
:字符串,代表托管指标范围的项目 ID。
"scoping_project_number"
:数字,代表范围项目的项目编号。
"url"
:
字符串,此突发事件的 Google Cloud 控制台网址。
"started_at"
:数字,代表创建突发事件的时间(以 Unix 纪元秒数表示)。
"ended_at"
:数字,代表结束突发事件的时间(以 Unix 纪元秒数表示)。仅当 state
为 closed
时填充。
"state"
:字符串,代表突发事件 open
或 closed
的状态。如果为 open
,则 ended_at
为 null。
"summary"
:字符串,代表为突发事件生成的文本摘要。
"apigee_url"
:字符串,代表此突发事件的 Apigee 网址,仅适用于 Apigee 资源类型 Environment
和 Proxy*
。
"observed_value"
:字符串,代表观察到的触发/解决提醒的值,如果条件过期,则它可能为空。
为其创建突发事件的受监控资源的相关信息。
"resource" : {
"type"
:字符串,代表收到提醒的受监控资源类型的标识符,例如 gce_instance
;请参阅受监控资源列表 。
"labels"
:对象,代表与受监控资源关联的标签的键值对。
},
"resource_type_display_name"
:字符串,代表受监控资源类型的显示名。
"resource_id"
:字符串,代表受监控资源的实例 ID,与 resource.labels.instance_id
的值相同。
"resource_display_name"
:字符串,代表受监控资源的显示名。
"resource_name"
:字符串,代表为此受监控资源生成的名称;由其他字段的值组成。
时间序列数据指标类型的相关信息。
"metric" : {
"type"
:字符串,代表接收提醒的指标类型的标识符,例如 compute.googleapis.com/instance/cpu/utilization
;请参阅指标列表 。
"displayName"
:字符串,代表指标类型的显示名。
"labels"
:对象,代表与指标关联的标签的键值对。
},
"metadata" : {
"system_labels"
:对象,代表系统元数据标签的键值对。
"user_labels"
:对象,代表用户元数据标签的键值对。
},
未解决/已解决突发事件的提醒政策和条件的相关信息。
值来自相关的 AlertPolicy
对象。
"policy_name"
:字符串,代表提醒政策的显示名。
"policy_user_labels"
:对象,代表附加到政策的任何用户标签的键值对。
"documentation"
:对象,代表 Documentation
表单的嵌入式结构。
"condition"
:对象,代表 Condition
表单的嵌入式结构。
"condition_name"
:字符串,代表条件的显示名,值与 condition.displayName
相同。
"severity"
:
字符串和事件的严重级别
如果在创建提醒政策期间未定义此字段,
则 Cloud Monitoring 会将提醒政策严重性设置为 no severity
。
"threshold_value"
:字符串,代表此条件的阈值,如果此条件不是阈值条件,则它可能为空。
},
}
弃用政策
载荷架构需遵守 Google Cloud Platform 服务条款 第 1.4(d) 条所述的 Google Cloud 弃用政策。请注意,该架构不会控制生成的字段值的格式,这些格式可能会发生变化而不另行通知。例如,incident.summary
、incident.documentation.content
和 incident.url
旨在包含与其字段相关的数据,但该架构并不具备可保证准确解析这些字段的限制条件。您可以将该值作为一个整体进行使用,并希望它遵守弃用政策,但请勿凭借它来解析生成的字段。
短信 如需配置短信通知,请执行以下操作:
在 Google Cloud 控制台中,转到 notifications 提醒 页面:
进入提醒
如果您使用搜索栏查找此页面,请选择子标题为监控 的结果。
点击修改通知渠道 。
在短信 部分中,点击新增 。
完整填写对话框,然后点击保存 。
设置提醒政策时,请选择短信 通知类型,然后从列表中选择经过验证的电话号码。
Slack 注意 :如需完成这些步骤,您必须是
Slack Workspace Owner 或 Admin。如需了解详情,请参阅管理邀请请求 。
在发生新事件时,Monitoring Slack 集成允许您的提醒政策向 Slack 渠道发布通知。如需设置 Slack 通知,请执行以下操作:
在 Slack 中 :在 Slack 网站 上创建一个 Slack 工作区和渠道。请记录渠道网址。
在 Google Cloud 控制台中,转到 notifications 提醒 页面:
进入提醒
如果您使用搜索栏查找此页面,请选择子标题为监控 的结果。
点击修改通知渠道 。
在 Slack 部分中,点击新增 以打开 Slack 登录页面:
选择您的 Slack 工作区。
点击允许 以允许 Cloud Monitoring 访问您的 Slack 工作区。此操作会使您返回通知渠道的 Monitoring 配置页面。
在 Slack 渠道名称 字段中,输入您要用于通知的 Slack 渠道的名称。
在云提醒显示名称 字段,输入一个简短的
描述性陈述监控功能会在通知渠道 页面上显示此字段的值。
(可选)如需测试 Cloud Monitoring 与 Slack 工作区之间的连接,请点击发送测试通知 。如果连接成功,您会在指定的 Slack 通知渠道中看到消息 This is a test alert notification...
。请检查通知渠道以确认收到。
如果您要用于通知的 Slack 渠道是专用渠道,则必须手动邀请 Monitoring 应用加入该渠道:
打开 Slack。
转到您指定为 Monitoring 通知渠道的渠道。
通过在该渠道中输入并发送以下消息,邀请 Monitoring 应用加入该渠道:
/invite @Google Cloud Monitoring
务必邀请 Monitoring 应用加入您在 Monitoring 中创建通知渠道时指定的专用渠道。邀请 Monitoring 应用加入公共渠道是可选操作。
创建提醒政策时,请在 Notifications 部分选择 Slack ,然后选择您的 Slack 配置。
Webhook
注意 :网络钩子仅支持公共端点。
如果您需要将通知发送到非公开的端点,请创建一个 Pub/Sub 通知渠道,并配置对 Pub/Sub 主题的订阅。如需了解详情,请参阅为专用端点配置网络钩子通知时失败 。
如需配置网络钩子通知,请执行以下操作:
Webhook 处理程序 :确定从 Monitoring 接收 Webhook 数据的公共端点网址。
在 Google Cloud 控制台中,转到 notifications 提醒 页面:
进入提醒
如果您使用搜索栏查找此页面,请选择子标题为监控 的结果。
点击修改通知渠道 。
在网络钩子 部分中,点击新增 。
完整填写对话框。
点击测试连接 ,将测试载荷发送到网络钩子端点。您可以转到接收端点来验证递送。
点击保存 。
创建提醒政策时,选择 Webhook ,
通知 部分,然后选择您的网络钩子配置。
Error Reporting 发送的通知遵循
1.0 架构
而 Monitoring 发送的通知则跟随
1.2 架构:
JSON 示例
默认情况下,提醒后端会尝试生成版本 1.2 格式的 JSON 数据包。如需详细了解此格式,请参阅下一部分。
以下是此类数据包的示例:
{
"incident": {
"incident_id": "0.opqiw61fsv7p",
"scoping_project_id": "internal-project",
"scoping_project_number": 12345,
"url": "https://console.cloud.google.com/monitoring/alerting/incidents/0.lxfiw61fsv7p?project=internal-project",
"severity": "no severity",
"started_at": 1577840461,
"ended_at": 1577877071,
"state": "closed",
"resource_id": "11223344",
"resource_name": "internal-project gke-cluster-1-default-pool-e2df4cbd-dgp3",
"resource_display_name": "gke-cluster-1-default-pool-e2df4cbd-dgp3",
"resource_type_display_name": "VM Instance",
"resource": {
"type": "gce_instance",
"labels": {
"instance_id": "11223344",
"project_id": "internal-project",
"zone": "us-central1-c"
}
},
"metric": {
"type": "compute.googleapis.com/instance/cpu/utilization",
"displayName": "CPU utilization",
"labels": {
"instance_name": "the name of the VM instance"
}
},
"metadata": {
"system_labels": { "labelkey": "labelvalue" },
"user_labels": { "labelkey": "labelvalue" }
},
"policy_name": "Monitor-Project-Cluster",
"policy_user_labels" : {
"user-label-1" : "important label",
"user-label-2" : "another label"
},
"condition_name": "VM Instance - CPU utilization [MAX]",
"threshold_value": "0.9",
"observed_value": "0.835",
"condition": {
"name": "projects/internal-project/alertPolicies/1234567890123456789/conditions/1234567890123456789",
"displayName": "VM Instance - CPU utilization [MAX]",
"conditionThreshold": {
"filter": "metric.type=\"compute.googleapis.com/instance/cpu/utilization\" resource.type=\"gce_instance\" metadata.system_labels.\"state\"=\"ACTIVE\"",
"aggregations": [
{
"alignmentPeriod": "120s",
"perSeriesAligner": "ALIGN_MEAN"
}
],
"comparison": "COMPARISON_GT",
"thresholdValue": 0.9,
"duration": "0s",
"trigger": {
"count": 1
}
}
},
"documentation": {
"content": "TEST ALERT\n\npolicy.name=projects/internal-project/alertPolicies/1234567890123456789\n\npolicy.display_name=Monitored-Project-NO-GROUPBY\n\ncondition.name=projects/nternal-project/alertPolicies/1234567890123456789/conditions/1234567890123456789\n\ncondition.display_name=VM Instance - CPU utilization [MAX]\n\nproject=internal-project\n\nresrouce.project=internal-project \n\nDONE\n",
"mime_type": "text/markdown",
"subject": "ALERT - No severity",
"links": [
{
"displayName": "Playbook",
"url": "https://myownpersonaldomain.com/playbook?name=${resource.name}"
}
]
},
"summary": "CPU utilization for internal-project gke-cluster-1-16-default-pool-e2df4cbd-dgp3 with metric labels {instance_name=gke-cluster-1-default-pool-e2df4cbd-dgp3} and system labels {state=ACTIVE} returned to normal with a value of 0.835."
},
"version": "1.2"
}
架构结构 1.2 版
本部分介绍载荷架构 1.2 版。一些字段可能未出现在所有返回的数据包中,或者可能具有空值,具体取决于提醒政策的配置、突发事件状态或受监控的资源。一些字段采用嵌入式结构作为值;这些结构也会通过引用进行描述,因为它们的内容也可能会有所不同。
在返回的数据包中,字段可按任意顺序排列。在下面的说明中,会将它们整理到相关组中。
{
"version" : "1.2",
"incident" : {
突发事件相关信息。
"incident_id"
:字符串,代表为此突发事件生成的 ID。
"scoping_project_id"
:字符串,代表托管指标范围的项目 ID。
"scoping_project_number"
:数字,代表范围项目的项目编号。
"url"
:字符串,代表此突发事件的 Google Cloud 控制台网址。
"started_at"
:数字,代表创建突发事件的时间(以 Unix 纪元秒数表示)。
"ended_at"
:数字,代表结束突发事件的时间(以 Unix 纪元秒数表示)。仅当 state
为 closed
时填充。
"state"
:字符串,代表突发事件 open
或 closed
的状态。如果为 open
,则 ended_at
为 null。
"summary"
:字符串,代表为突发事件生成的文本摘要。
"apigee_url"
:字符串,代表此突发事件的 Apigee 网址,仅适用于 Apigee 资源类型 Environment
和 Proxy*
。
"observed_value"
:字符串,代表观察到的触发/解决提醒的值,如果条件过期,则它可能为空。
为其创建突发事件的受监控资源的相关信息。
"resource" : {
"type"
:字符串,代表收到提醒的受监控资源类型的标识符,例如 gce_instance
;请参阅受监控资源列表 。
"labels"
:对象,代表与受监控资源关联的标签的键值对。
},
"resource_type_display_name"
:字符串,代表受监控资源类型的显示名。
"resource_id"
:字符串,代表受监控资源的实例 ID,与 resource.labels.instance_id
的值相同。
"resource_display_name"
:字符串,代表受监控资源的显示名。
"resource_name"
:字符串,代表为此受监控资源生成的名称;由其他字段的值组成。
时间序列数据指标类型的相关信息。
"metric" : {
"type"
:字符串,代表接收提醒的指标类型的标识符,例如 compute.googleapis.com/instance/cpu/utilization
;请参阅指标列表 。
"displayName"
:字符串,代表指标类型的显示名。
"labels"
:对象,代表与指标关联的标签的键值对。
},
"metadata" : {
"system_labels"
:对象,代表系统元数据标签的键值对。
"user_labels"
:对象,代表用户元数据标签的键值对。
},
未解决/已解决突发事件的提醒政策和条件的相关信息。
值来自相关的 AlertPolicy
对象。
"policy_name"
:字符串,代表提醒政策的显示名。
"policy_user_labels"
:对象,代表附加到政策的任何用户标签的键值对。
"documentation"
:对象,代表 Documentation
表单的嵌入式结构。
"condition"
:对象,代表 Condition
表单的嵌入式结构。
"condition_name"
:字符串,代表条件的显示名,值与 condition.displayName
相同。
"severity"
:字符串,突发事件的严重程度。
如果在创建提醒政策期间未定义此字段,Cloud Monitoring 会将提醒政策严重程度设置为 no severity
。
"threshold_value"
:字符串,代表此条件的阈值,如果此条件不是阈值条件,则它可能为空。
},
}
基本身份验证
除了 Cloud Monitoring 发送的网络钩子请求之外,基本身份验证还会使用 HTTP 规范来指定用户名和密码。Cloud Monitoring 要求您的服务器返回具有正确 WWW-Authenticate
标头的 401 响应。如需了解有关基本身份验证的详情,请参阅以下内容:
令牌身份验证
令牌身份验证需要端点网址中的查询字符串参数和服务器希望在其自身和 Monitoring 之间保密的密钥。以下是包含令牌的示例网址:
https://www.myserver.com/stackdriver-hook?auth_token=1234-abcd
如果 Monitoring 将突发事件发布到端点网址,则您的服务器可以验证附加的参数。这种身份验证方法在与 SSL/TLS 结合使用以加密 HTTP 请求时最有效,可以防止窥探者学习令牌。
如需了解 Python 中的示例服务器,请参阅此示例服务器 。
弃用政策
载荷架构需遵守 Google Cloud Platform 服务条款 第 1.4(d) 条所述的 Google Cloud 弃用政策。请注意,该架构不会控制生成的字段值的格式,这些格式可能会发生变化而不另行通知。例如,incident.summary
、incident.documentation.content
和 incident.url
旨在包含与其字段相关的数据,但该架构并不具备可保证准确解析这些字段的限制条件。您可以
将该值作为一个整体使用,并期望它遵循弃用
政策,但不依赖于解析生成的字段。
Pub/Sub
本部分介绍如何配置 Pub/Sub 通知渠道。为实现冗余,我们建议您创建多个通知渠道。建议将 Pub/Sub 与 Google Cloud 控制台移动应用、PagerDuty、Webhooks 或 Slack 配对,因为 Pub/Sub 使用不同的传送机制。
要配置 Pub/Sub 通知渠道,请执行以下操作:
启用所需的 API 并创建主题
为主题配置通知渠道
向服务账号授权
在提醒政策中设置通知渠道
如需了解数据架构,请参阅
架构示例 。
如需接收提醒通知,您还必须创建以下某种订阅:拉取 、推送 或 BigQuery 。
如果订阅与主题位于不同的项目中,请在订阅方项目中创建一个服务账号,并向其授予 roles/pubsub.subscriber
角色。
准备工作
当您向某个 Google Cloud 项目添加第一个 Pub/Sub 通知渠道时,Cloud Monitoring 会为该项目创建一个服务账号。它还会向服务账号授予 Identity and Access Management 角色 Monitoring Notification Service Agent 。借助此服务账号,Monitoring 可向此项目中基于 Pub/Sub 的通知渠道发送通知。
该服务账号具有以下格式:
service-PROJECT_NUMBER @gcp-sa-monitoring-notification.iam.gserviceaccount.com
通知服务账号的名称包含唯一的 Google Cloud 项目编号 。您可以在 Google Cloud 控制台中该项目的信息中心找到项目名称、ID 和编号,也可以使用以下命令进行检索:
gcloud projects describe PROJECT_ID --format="value(project_number)"
您可以使用 Google Cloud 控制台或 Google Cloud CLI 查看和修改服务账号。
启用所需的 API 并创建主题
在您计划创建通知渠道和 Pub/Sub 主题的 Google Cloud 项目中,执行以下操作:
Sign in to your Google Cloud account. If you're new to
Google Cloud,
create an account to evaluate how our products perform in
real-world scenarios. New customers also get $300 in free credits to
run, test, and deploy workloads.
In the Google Cloud console, on the project selector page,
select or create a Google Cloud project.
Note : If you don't plan to keep the
resources that you create in this procedure, create a project instead of
selecting an existing project. After you finish these steps, you can
delete the project, removing all resources associated with the project.
Go to project selector
Make sure that billing is enabled for your Google Cloud project .
Enable the Pub/Sub and Cloud Monitoring APIs.
Enable the APIs
In the Google Cloud console, on the project selector page,
select or create a Google Cloud project.
Note : If you don't plan to keep the
resources that you create in this procedure, create a project instead of
selecting an existing project. After you finish these steps, you can
delete the project, removing all resources associated with the project.
Go to project selector
Make sure that billing is enabled for your Google Cloud project .
Enable the Pub/Sub and Cloud Monitoring APIs.
Enable the APIs
创建 Pub/Sub 主题。如需了解如何创建主题,请参阅创建主题 。
例如,要使用 Google Cloud CLI 创建名为 notificationTopic
的主题,请运行以下命令:
gcloud pubsub topics create notificationTopic
注意 :如果您打算创建通知渠道并
Pub/Sub 主题,那么请确保您
启用 Pub/Sub API 和 Monitoring API
在两个项目中均有计算。
接下来,配置 Pub/Sub 通知渠道。
为主题配置通知
如需创建 Pub/Sub 通知渠道,您可以使用 Monitoring API、Google Cloud CLI 或 Google Cloud 控制台。创建通知渠道后,请授权通知服务账号发布您用作通知渠道的每个主题。
如需了解如何使用 Monitoring API 或 Google Cloud CLI 创建通知渠道,请参阅创建渠道 。
如需使用 Google Cloud 控制台创建通知渠道,请执行以下操作:
执行以下操作:
在 Google Cloud 控制台中,转到 notifications 提醒 页面:
进入提醒
如果您使用搜索栏查找此页面,请选择子标题为监控 的结果。
选择包含
您创建的 Pub/Sub 主题。
点击修改通知渠道 。
在 Pub/Sub 部分中,点击新增 。
已创建 Pub/Sub 渠道 对话框显示 Monitoring 创建的服务账号的名称。
向服务账号授权。您的服务账号可以发布所有主题或特定主题:
输入渠道的显示名称和 Pub/Sub 主题名称。
(可选)如需验证渠道是否已正确配置,请点击发送测试通知 。
选择添加渠道 。
接下来,向服务账号授权。
向服务账号授权
注意 :请在创建通知渠道时完成此步骤
使用 API 或 Google Cloud CLI,若跳过了
授权步骤。
通过授权,通知服务账号可以发布用作通知渠道的每个 Pub/Sub 主题。本部分介绍如何执行以下操作:
为特定主题授权服务账号。
为所有主题授权服务账号。
为特定主题的服务账号授权
您可以使用 Google Cloud 控制台和 Google Cloud CLI 授权服务账号发布特定主题。本部分介绍了两种方法。
要使用“针对特定主题”为您的服务账号授权,请使用
Google Cloud 控制台,请执行以下操作:
在 Google Cloud 控制台中,前往主题 页面:
前往主题
如果您使用搜索栏查找此页面,请选择子标题为 Pub/Sub 的结果。
选择主题。
在权限 标签页中,选择添加主账号 。
在新建主账号 字段中,输入通知服务账号的名称。该服务账号具有以下命名惯例:
service-PROJECT_NUMBER @gcp-sa-monitoring-notification.iam.gserviceaccount.com
选择角色 Pub/Sub Publisher ,然后选择保存 。
如需使用 Google Cloud CLI 向您的特定主题的服务账号授权,请将该主题的 pubsub.publisher
IAM 角色授予该服务账号。例如,以下命令用于为 notificationTopic
主题配置 IAM 角色:
gcloud pubsub topics add-iam-policy-binding \
projects/PROJECT_NUMBER /topics/notificationTopic --role=roles/pubsub.publisher \
--member=serviceAccount:service-PROJECT_NUMBER @gcp-sa-monitoring-notification.iam.gserviceaccount.com
成功执行 add-iam-policy-binding
命令的响应如下所示:
Updated IAM policy for topic [notificationTopic].
bindings:
‐ members:
‐ serviceAccount:service-PROJECT_NUMBER @gcp-sa-monitoring-notification.iam.gserviceaccount.com
role: roles/pubsub.publisher
etag: BwWcDOIw1Pc=
version: 1
如需了解详情,请参阅pubsub topics add-iam-policy-binding
参考页面 。
为所有主题的服务账号授权。
如需向您所有主题的服务账号授权,请执行以下操作:
在 Google Cloud 控制台中,进入 IAM 页面:
前往 IAM
如果您使用搜索栏查找此页面,请选择子标题为 IAM 和管理 的结果。
选择包括 Google 提供的角色授予 ,如以下图片所示:
搜索具有以下格式的服务账号:
service-PROJECT_NUMBER @gcp-sa-monitoring-notification.iam.gserviceaccount.com
如果服务账号未列出,请重新加载页面。
为通知服务账户选择edit 修改 ,选择添加另一个角色 ,然后添加角色Pub/Sub 发布者 。
接下来,在提醒政策中设置通知渠道。
在提醒政策中设置通知渠道
要在提醒政策中使用 Pub/Sub 通知渠道,请选择 Pub/Sub 作为渠道类型,然后选择主题。
架构示例
如需查看示例 JSON 数据包和架构,请展开以下部分。
JSON 示例
默认情况下,提醒后端会尝试生成版本 1.2 格式的 JSON 数据包。如需详细了解此格式,请参阅下一部分。
以下是此类数据包的示例:
{
"incident": {
"incident_id": "0.opqiw61fsv7p",
"scoping_project_id": "internal-project",
"scoping_project_number": 12345,
"url": "https://console.cloud.google.com/monitoring/alerting/incidents/0.lxfiw61fsv7p?project=internal-project",
"severity": "no severity",
"started_at": 1577840461,
"ended_at": 1577877071,
"state": "closed",
"resource_id": "11223344",
"resource_name": "internal-project gke-cluster-1-default-pool-e2df4cbd-dgp3",
"resource_display_name": "gke-cluster-1-default-pool-e2df4cbd-dgp3",
"resource_type_display_name": "VM Instance",
"resource": {
"type": "gce_instance",
"labels": {
"instance_id": "11223344",
"project_id": "internal-project",
"zone": "us-central1-c"
}
},
"metric": {
"type": "compute.googleapis.com/instance/cpu/utilization",
"displayName": "CPU utilization",
"labels": {
"instance_name": "the name of the VM instance"
}
},
"metadata": {
"system_labels": { "labelkey": "labelvalue" },
"user_labels": { "labelkey": "labelvalue" }
},
"policy_name": "Monitor-Project-Cluster",
"policy_user_labels" : {
"user-label-1" : "important label",
"user-label-2" : "another label"
},
"condition_name": "VM Instance - CPU utilization [MAX]",
"threshold_value": "0.9",
"observed_value": "0.835",
"condition": {
"name": "projects/internal-project/alertPolicies/1234567890123456789/conditions/1234567890123456789",
"displayName": "VM Instance - CPU utilization [MAX]",
"conditionThreshold": {
"filter": "metric.type=\"compute.googleapis.com/instance/cpu/utilization\" resource.type=\"gce_instance\" metadata.system_labels.\"state\"=\"ACTIVE\"",
"aggregations": [
{
"alignmentPeriod": "120s",
"perSeriesAligner": "ALIGN_MEAN"
}
],
"comparison": "COMPARISON_GT",
"thresholdValue": 0.9,
"duration": "0s",
"trigger": {
"count": 1
}
}
},
"documentation": {
"content": "TEST ALERT\n\npolicy.name=projects/internal-project/alertPolicies/1234567890123456789\n\npolicy.display_name=Monitored-Project-NO-GROUPBY\n\ncondition.name=projects/nternal-project/alertPolicies/1234567890123456789/conditions/1234567890123456789\n\ncondition.display_name=VM Instance - CPU utilization [MAX]\n\nproject=internal-project\n\nresrouce.project=internal-project \n\nDONE\n",
"mime_type": "text/markdown",
"subject": "ALERT - No severity",
"links": [
{
"displayName": "Playbook",
"url": "https://myownpersonaldomain.com/playbook?name=${resource.name}"
}
]
},
"summary": "CPU utilization for internal-project gke-cluster-1-16-default-pool-e2df4cbd-dgp3 with metric labels {instance_name=gke-cluster-1-default-pool-e2df4cbd-dgp3} and system labels {state=ACTIVE} returned to normal with a value of 0.835."
},
"version": "1.2"
}
架构结构 1.2 版
本部分介绍载荷架构 1.2 版。一些字段可能未出现在所有返回的数据包中,或者可能具有空值,具体取决于提醒政策的配置、突发事件状态或受监控的资源。一些字段采用嵌入式结构作为值;这些结构也会通过引用进行描述,因为它们的内容也可能会有所不同。
在返回的数据包中,字段可按任意顺序排列。在下面的说明中,会将它们整理到相关组中。
{
"version" : "1.2",
"incident" : {
突发事件相关信息。
"incident_id"
:字符串,代表为此突发事件生成的 ID。
"scoping_project_id"
:字符串,代表托管指标范围的项目 ID。
"scoping_project_number"
:数字,代表范围项目的项目编号。
"url"
:字符串,代表此突发事件的 Google Cloud 控制台网址。
"started_at"
:数字,代表创建突发事件的时间(以 Unix 纪元秒数表示)。
"ended_at"
:数字,代表结束突发事件的时间(以 Unix 纪元秒数表示)。仅当 state
为 closed
时填充。
"state"
:字符串,代表突发事件 open
或 closed
的状态。如果为 open
,则 ended_at
为 null。
"summary"
:字符串,代表为突发事件生成的文本摘要。
"apigee_url"
:字符串,代表此突发事件的 Apigee 网址,仅适用于 Apigee 资源类型 Environment
和 Proxy*
。
"observed_value"
:字符串,代表观察到的触发/解决提醒的值,如果条件过期,则它可能为空。
为其创建突发事件的受监控资源的相关信息。
"resource" : {
"type"
:字符串,代表收到提醒的受监控资源类型的标识符,例如 gce_instance
;请参阅受监控资源列表 。
"labels"
:对象,代表与受监控资源关联的标签的键值对。
},
"resource_type_display_name"
:字符串,代表受监控资源类型的显示名。
"resource_id"
:字符串,代表受监控资源的实例 ID,与 resource.labels.instance_id
的值相同。
"resource_display_name"
:字符串,代表受监控资源的显示名。
"resource_name"
:字符串,代表为此受监控资源生成的名称;由其他字段的值组成。
时间序列数据指标类型的相关信息。
"metric" : {
"type"
:字符串,代表接收提醒的指标类型的标识符,例如 compute.googleapis.com/instance/cpu/utilization
;请参阅指标列表 。
"displayName"
:字符串,代表指标类型的显示名。
"labels"
:对象,代表与指标关联的标签的键值对。
},
"metadata" : {
"system_labels"
:对象,代表系统元数据标签的键值对。
"user_labels"
:对象,代表用户元数据标签的键值对。
},
未解决/已解决突发事件的提醒政策和条件的相关信息。
值来自相关的 AlertPolicy
对象。
"policy_name"
:字符串,代表提醒政策的显示名。
"policy_user_labels"
:对象,代表附加到政策的任何用户标签的键值对。
"documentation"
:对象,代表 Documentation
表单的嵌入式结构。
"condition"
:对象,代表 Condition
表单的嵌入式结构。
"condition_name"
:字符串,代表条件的显示名,值与 condition.displayName
相同。
"severity"
:
字符串和事件的严重级别
如果在创建提醒政策期间未定义此字段,Cloud Monitoring 会将提醒政策严重程度设置为 no severity
。
"threshold_value"
:
如果条件不是阈值条件,则此条件的阈值字符串可能为空。
},
}
弃用政策
载荷架构需遵守 Google Cloud Platform 服务条款 第 1.4(d) 条所述的 Google Cloud 弃用政策。请注意,该架构不会控制生成的字段值的格式,这些格式可能会发生变化而不另行通知。例如,incident.summary
、incident.documentation.content
和 incident.url
旨在包含与其字段相关的数据,但该架构并不具备可保证准确解析这些字段的限制条件。您可以将该值作为一个整体进行使用,并希望它遵守弃用政策,但请勿凭借它来解析生成的字段。
Google Chat
通过 Google Cloud Monitoring 应用,您的 Google Chat 聊天室可以接收通知。
准备工作
如果您位于某个组织中,那么要安装
Google 云端监控应用,您必须有权访问
Google Cloud Monitoring 应用。如果您没有访问权限,
请求 Google Workspace 管理员执行以下操作:
将应用添加到 Marketplace 中的应用许可名单,并为顶级组织部门启用访问权限 。
配置 Marketplace 应用用户安装设置,以便用户可以安装应用 。
安装 Google 云端监控应用
您必须使用以下过程来安装
Google Cloud Monitoring 应用。从
Google Workspace Marketplace 产品详情
不受支持。
如需安装该应用并将聊天室配置为通知渠道,请执行以下操作:
在 Google Chat 中,打开或创建您想接收通知的聊天室。
安装 Google Cloud Monitoring 应用:
选择您的聊天室名称,然后选择应用和集成 。
如果“应用”列表中未显示 Google 云端监控应用,
然后返回你所在的空间,输入“@Google Cloud Monitoring
”,然后
按 Enter 键。
点击添加到聊天室 。
将聊天室 ID 复制到剪贴板。
如果您安装了 Google Cloud Monitoring 应用,则 Chat 聊天室
ID 包含在安装确认信息中。否则,您可以在聊天室网址末尾的 space/
后面找到一串数字和字母,即聊天室 ID。
打开新的浏览器标签页,然后配置通知渠道:
在 Google Cloud 控制台中,转到 notifications 提醒 页面:
进入提醒
如果您使用搜索栏查找此页面,请选择子标题为监控 的结果。
点击修改通知渠道 。
转到 Google Chat 部分,然后点击新增 。
在 Chat 聊天室 ID 字段中输入您的聊天室 ID,然后点击
保存 。
注意 :您无法使用 Google Cloud Monitoring 应用查看或管理此类突发事件。如需确认突发事件或暂停相关提醒政策,请使用 Google Cloud 控制台、Google Cloud CLI 或 Cloud Monitoring API。
按需创建渠道
将通知渠道添加到提醒政策时,必须从列表中选择一个渠道。如需在创建提醒政策时更新选项列表,请按以下步骤操作:
在通知对话框中,点击管理通知渠道 。系统会将您转到新的浏览器标签页中的通知渠道 窗口。
要添加新的通知渠道,请找到渠道类型,点击新增 ,然后按照上表中包含的具体渠道说明进行操作:
返回原始标签页,然后在通知对话框中点击
refresh 刷新 。
从更新后的列表中选择通知渠道。
在不受支持的频道时收到通知
如果您的首选通知渠道不受支持,请考虑创建
一个依赖于向 Pub/Sub 发送通知的流水线。
如需查看使用 Flask 的 Python 示例,请参阅使用 Cloud Monitoring 和 Cloud Run 创建自定义通知 。如需查看其他示例,请参阅 cloud-alerting-notification-forwarding Git 代码库 。
测试通知渠道
Cloud Monitoring 不支持通知渠道的测试选项。
不过,您可以通过创建提醒政策并配置要满足的条件来验证通知渠道是否已正确配置。
如需手动测试通知渠道,您可以创建一个用于监控某个虚拟机 (VM) 实例 CPU 利用率的提醒政策:
可选:如果您的 Google Cloud 项目中还没有虚拟机,或者您想使用其他虚拟机进行测试,请创建一个虚拟机:
在 Google Cloud 控制台中,转到虚拟机实例 页面:
前往虚拟机实例
如果您使用搜索栏查找此页面,请选择子标题为 Compute Engine 的结果。
选择创建实例 ,然后配置虚拟机。有关
有关如何创建虚拟机的信息,请参阅
使用公共映像创建虚拟机实例 。
在 Google Cloud 控制台中,转到 notifications 提醒 页面:
进入提醒
如果您使用搜索栏查找此页面,请选择子标题为监控 的结果。
选择创建政策 。
使用选择指标 菜单选择 CPU 利用率 指标
虚拟机实例
点击添加过滤条件 ,然后为您的虚拟机添加过滤条件。
更新 Configure trigger (配置触发器)字段,如下所示:
为阈值位置 字段选择低于阈值 。
请选择大于
实例。例如,如果图表显示 CPU 利用率约为 5%,请将阈值设置为 10%。
这些设置用于配置当虚拟机实例的 CPU 利用率低于指定阈值时要满足的条件。由于您选择的阈值大于虚拟机实例的 CPU 利用率,因此满足了提醒政策的条件。
将通知渠道添加到您的政策中。
展开突发事件自动关闭时长 ,然后选择 30 分钟 。
输入政策名称,然后点击创建政策 。
满足条件后,验证您是否在
每个通知渠道
删除提醒政策。在自动关闭时长到期后,突发事件会自动关闭。
如果您为此测试创建了虚拟机实例,请将其删除。
如果您未收到预期的通知,则可以在 Logs Explorer 中搜索包含有关缺失通知的信息的日志条目。如需了解详情,请参阅未收到通知 。
修改和删除通知渠道
如需使用 Google Cloud 控制台修改或删除通知渠道,请执行以下操作:
在 Google Cloud 控制台中,转到 notifications 提醒 页面:
进入提醒
如果您使用搜索栏查找此页面,请选择子标题为监控 的结果。
点击修改通知渠道 。
通知渠道 信息中心包含每种类型的通知渠道的一部分。每个部分列出了该类型的所有配置:
如需修改条目,请点击 edit 修改 。更改完成后,点击保存 。
如需删除条目,请点击 delete 删除 。点击确认对话框中的删除 。
注意 : 您无法使用 Google Cloud 控制台删除通知渠道
当渠道与提醒政策关联时触发。
但是,您可以使用 Google Cloud CLI 或 Cloud Monitoring API 删除渠道。如需了解详情,请参阅
通过 API 创建和管理通知渠道 。
查看通知渠道日志
您可以使用日志浏览器查看通知渠道错误:
在 Google Cloud 控制台中,转到 Logs Explorer 页面。
前往 Logs Explorer
如果您使用搜索栏查找此页面,请选择子标题为 Logging 的结果。
输入并运行查询。对于
通知渠道错误,请参阅 Cloud Monitoring 查询 。
后续步骤
如需了解突发事件,请参阅以下文档: