创建和管理延迟提醒

本文档介绍了如何创建和管理闹钟提醒。延后功能可阻止 Cloud Monitoring 在特定时间段内创建突发事件并发出通知。每个延迟时间都指定了其适用的资源。

如需查看概念性概览,请参阅推迟通知和突发事件

如需创建和管理暂停时间,您可以使用 Google Cloud 控制台或 Cloud Monitoring API。

只有 Google Cloud 项目支持此功能。

准备工作

在存储提醒政策的 Google Cloud 项目中完成以下操作:

  1. 确保您拥有所需的权限:

    如需详细了解 Cloud Monitoring 角色,请参阅使用 Identity and Access Management 控制访问权限

  2. 如果您想使用本文档中的 Cloud Monitoring API 示例,请执行以下操作:

    1. 创建一个环境变量 PROJECT_ID 来存储 Google Cloud 项目的 ID:

      PROJECT_ID=PROJECT_ID
    2. 向 Google Cloud CLI 进行身份验证:

      gcloud auth login
    3. 设置默认的 Google Cloud 项目:

      gcloud config set project ${PROJECT_ID}
    4. 创建授权令牌:

      ACCESS_TOKEN=`gcloud auth print-access-token`

      您必须定期刷新访问令牌。如果命令突然报告您未通过身份验证,请重新发布此命令。

创建暂停

如需阻止提醒政策创建突发事件并发送通知,请创建延迟时间。

您可以使用 Google Cloud 控制台、gcloud CLI 或 Cloud Monitoring API 创建延迟通知。

控制台

在 Google Cloud 控制台中,您可以通过打开的突发事件或提醒页面创建延迟通知。

如需针对某个未解决的突发事件创建提醒,请执行以下操作:

  1. 在 Google Cloud 控制台中,转到 提醒页面:

    进入提醒

    如果您使用搜索栏查找此页面,请选择子标题为监控的结果。

  2. 在 Google Cloud 控制台的工具栏中,选择您的 Google Cloud 项目。
  3. 在“提醒”页面的突发事件窗格中,找到您的突发事件,然后点击其突发事件摘要
  4. 突发事件详情页面上,点击暂停,然后选择暂停时长。
  5. 可选:如需将延后操作应用于与同一提醒政策相关的其他突发事件,请前往标签部分,然后选择一个或多个资源标签。点击暂停后,系统也会暂停包含所选资源标签的所有事件。
  6. 点击延后

如需在提醒页面上创建延迟提醒,请执行以下操作:

  1. 在 Google Cloud 控制台中,转到 提醒页面:

    进入提醒

    如果您使用搜索栏查找此页面,请选择子标题为监控的结果。

  2. 在 Google Cloud 控制台的工具栏中,选择您的 Google Cloud 项目。
  3. 提醒页面上,点击创建延迟
  4. 为该延迟输入一个描述性名称。此名称会显示在提醒页面上。
  5. 选择开始时间。您可以输入具体时间,也可以在创建闹钟时立即开始闹钟。
  6. 输入时长。此字段的值决定了闹钟的闹钟暂停时长。
  7. 填写延后条件部分。您可以使用提醒政策菜单选择要应用此功能的提醒政策。

    您最多可以向一项延迟提醒添加 16 项提醒政策。

    延后创建后,其条件便无法修改。

    填写延后条件部分后,创建延后窗格会列出符合条件的过往突发事件。

  8. 点击创建

Cloud Monitoring API

如需创建暂停功能,请向 Snooze 端点发出 POST 请求,以调用 snoozes.create 方法。您必须提供 snooze 对象:

curl -d @my-snooze.json -H "Authorization: Bearer $ACCESS_TOKEN" \
-H 'Content-Type: application/json' \
-X POST https://monitoring.googleapis.com/v3/projects/${PROJECT_ID}/snoozes

在上一个表达式中,PROJECT_ID 是一个环境变量,用于存储您的项目 ID。

该方法会返回一个 snooze 对象。返回的对象与 my-snooze.json 内容之间的唯一区别在于 "name" 字段,其中包含由“监控”功能生成的暂停 ID:

{
  "name": "projects/my-project/snoozes/778899",
  "criteria": {
    "policies": [
      "projects/my-project/alertPolicies/001122"
    ]
  },
  "interval": {
    "startTime": "2022-11-12T19:00:20Z",
    "endTime": "2022-11-12T19:05:20Z"
  },
  "displayName": "Snooze2"
}

gcloud CLI

如需创建延迟提醒,请运行 gcloud monitoring snoozes create 命令:

gcloud monitoring snoozes create --criteria-policies=LIST_OF_POLICIES --display-name=DISPLAY_NAME --start-time=START_TIME --end-time=END_TIME --project=PROJECT_ID

在运行上一个命令之前,请替换以下内容:

  • LIST_OF_POLICIES:延迟适用的政策。如果您指定多个项目,请使用英文逗号分隔项目。
  • PROJECT_ID:项目的标识符。
  • DISPLAY_NAME:要在 Google Cloud 控制台中显示的名称。
  • START_TIME:开始时间。
  • END_TIME:结束时间。此值必须晚于开始时间至少 1 分钟。

    对于开始时间和结束时间,您必须遵循 ISO 8601 格式规则。不过,您可以指定绝对时间或相对时间。以下示例指定了绝对时间。如需从当前时间开始推迟 30 分钟,请使用 --start-time="+PTM30M"

例如,以下命令会为 ID 为“12345”的提醒政策创建一项暂停设置。延迟时间范围为 2025 年 3 月 1 日至 2025 年 3 月 7 日。

gcloud monitoring snoozes create --display-name="Maintenance Week" \
    --criteria-policies="projects/my-project/alertPolicies/12345" \
    --start-time="2025-03-01T03:00:00.0-0500" \
    --end-time="2025-03-07T23:59:59.5-0500" \
    --project=PROJECT_ID

上一个示例会在 my-project 中创建以下闹钟:

{
  "name": "projects/my-project/snoozes/778899",
  "criteria": {
    "policies": [
      "projects/my-project/alertPolicies/12345"
    ]
  },
  "interval": {
    "startTime": "2025-03-01T03:00:00.0-0500",
    "endTime": "2025-03-07T23:59:59.5-0500"
  },
  "displayName": "Maintenance Week"
}

如果成功,对此命令的响应类似于以下内容:

Created snooze [projects/my-project/snoozes/778899]

Google Cloud 控制台中未显示提醒政策的名称。如需确定提醒政策的名称,请执行以下操作之一:

  • 运行 gcloud alpha monitoring policies list 命令。此命令的响应数据包含提醒政策的名称。
  • 查看提醒政策的 JSON 表示法。您可以使用政策详情页面上的选项将 JSON 表示形式下载到本地系统。

创建周期性延后

如需创建按重复间隔发生的暂停时间,您可以编写一个脚本,用于为提醒政策创建暂停时间。然后,使用作业调度程序(例如 cronCloud Scheduler)按所需的时间表运行脚本。

列出延后时间

创建延迟后,系统会将其添加到项目的延迟历史记录中。此记录会显示已过期、有效和即将到期的闹钟提醒。您无法从此记录中移除条目,也就是说,您无法删除已暂停的闹钟。不过,在此视图中,您可以显示有关延迟提醒的详细信息,还可以执行修改或复制延迟提醒等操作。

控制台

如需查看延迟提醒列表,请执行以下操作:

  1. 在 Google Cloud 控制台中,转到 提醒页面:

    进入提醒

    如果您使用搜索栏查找此页面,请选择子标题为监控的结果。

  2. 在 Google Cloud 控制台的工具栏中,选择您的 Google Cloud 项目。
  3. 点击延后窗格中的查看所有延后

    推迟页面会显示推迟列表和时间轴,其中以图形方式显示了过去、即将到来和正在进行的推迟。

    • 如需修改、复制、取消或结束延迟提醒,请使用相应延迟提醒的 更多选项菜单。闹钟的暂停状态决定了可用的选项。
    • 如需列出所有延后时间,请启用显示过去的延后时间。默认情况下,系统只会列出当前有效的和即将到期的延迟提醒。
    • 如需更改时间轴表的显示时间段,请使用时间范围菜单。默认情况下,此表格会显示下一小时的数据;不过,您可以修改此字段以指定过去或未来的时间范围。已过期的暂停时间会保留 13 个月。
    • 如需查看特定延迟提醒的详细信息,请点击查看详细信息
    • 如需查看有效的延迟提醒摘要,请将指针放在时间轴表格中有效行的阴影区域。提示会显示摘要信息。
    • 如需查看正在运行的延迟提醒的图形表示,请展开时间轴表的有效行。

Cloud Monitoring API

如需列出属于 Google Cloud 项目的所有延迟通知,请调用 snoozes.list 方法:

curl -H "Authorization: Bearer $ACCESS_TOKEN" \
https://monitoring.googleapis.com/v3/projects/${PROJECT_ID}/snoozes

在上一个表达式中,PROJECT_ID 是一个环境变量,用于存储您的项目 ID。

该方法会返回 snooze 对象的列表。例如,当项目有一个延迟时,对 snoozes.list 命令的响应如下所示:

{
  "name": "projects/my-project/snoozes/778899",
  "criteria": {
    "policies": [
      "projects/my-project/alertPolicies/12345"
    ]
  },
  "interval": {
    "startTime": "2025-03-01T03:00:00.0-0500",
    "endTime": "2025-03-07T23:59:59.5-0500"
  },
  "displayName": "Snooze2"
}

如需获取特定延迟通知的相关信息,请调用 snoozes.get 方法,并指定项目 ID 和延迟通知 ID。在上一个响应中,提醒 ID 为 2986663705844383744

curl -H "Authorization: Bearer $ACCESS_TOKEN" \
https://monitoring.googleapis.com/v3/projects/${PROJECT_ID}/snoozes/${SNOOZE_ID}

该方法会返回单个 snooze 对象:

{
  "name": "projects/my-project/snoozes/778899",
  "criteria": {
    "policies": [
      "projects/my-project/alertPolicies/12345"
    ]
  },
  "interval": {
    "startTime": "2025-03-01T03:00:00.0-0500",
    "endTime": "2025-03-07T23:59:59.5-0500"
  },
  "displayName": "Snooze2"
}

gcloud CLI

如需列出当前项目中的延迟通知,请运行 gcloud monitoring snoozes list 命令:

gcloud monitoring snoozes list OPTIONAL_FLAGS --project=PROJECT_ID

在运行上一个命令之前,请替换以下内容:

此命令的响应是项目中所有延迟通知的名称列表,采用 YAML 格式。例如,对于 ID 为 my-project 的 Google Cloud 项目,此命令的响应是一个条目:

criteria:
  policies:
  - projects/my-project/alertPolicies/12345
  - projects/my-project/alertPolicies/23451
displayName: Maintenance Week
interval:
  endTime: '2023-03-08T04:59:59Z'
  startTime: '2023-03-01T08:00:00Z'
name: projects/my-project/snoozes/778899

如需列出特定延迟提醒的详细信息,请运行 gcloud monitoring snoozes describe 命令:

gcloud monitoring snoozes describe NAME --project=PROJECT_ID

例如,如需显示名为 projects/my-project/snoozes/778899 的闹钟的详细信息,请运行以下命令:

gcloud monitoring snoozes describe projects/my-project/snoozes/778899 --project=PROJECT_ID

如果您向 describe 命令提供无效的 NAME,则响应将包含错误代码 500 和以下消息:

Internal error encountered. Please retry after a few seconds. If internal errors persist, contact support at https://cloud.google.com/support/docs.

修改延后时间

您可以修改即将到来的闹钟的名称和时长,也可以修改正在闹钟的名称和结束时间。例如,重新安排维护窗口时,您可能需要修改推迟时间。

您无法修改过去的延迟提醒或任何延迟提醒的条件。不过,如果您想将过去的延迟时间重新安排到未来某个时间段,请先复制该延迟时间,然后对副本进行更改,最后再选择创建

控制台

如需修改闹钟的暂停时间,请执行以下操作:

  1. 在 Google Cloud 控制台中,转到 提醒页面:

    进入提醒

    如果您使用搜索栏查找此页面,请选择子标题为监控的结果。

  2. 在 Google Cloud 控制台的工具栏中,选择您的 Google Cloud 项目。
  3. 点击延后窗格中的查看所有延后
  4. 在“延迟提醒”列表中,找到要修改的延迟提醒,然后在 更多选项菜单中选择修改延迟提醒
  5. 完成更改后,点击保存

Cloud Monitoring API

如需修改现有暂停时间,请向 Snooze 端点发出 PATCH 请求,以调用 snoozes.patch 方法。您必须提供经过修改的 snooze 对象,并添加用于标识要修改的字段的查询参数。使用 curl 时,必须对查询参数进行网址编码。

对于即将推迟的提醒,您可以修改名称和时长。对于正在运行的延迟播放,您可以修改名称和结束时间。您无法修改过往的暂停时间。

如需更新推迟的 displayName,请创建一个 JSON 文件 my-updated-snooze.json,用于描述推迟对象并更新显示名称。然后运行以下命令:

curl -d @my-updated-snooze.json -H "Authorization: Bearer $ACCESS_TOKEN" \
-H 'Content-Type: application/json' \
-X PATCH https://monitoring.googleapis.com/v3/projects/${PROJECT_ID}/snoozes/${SNOOZE_ID}?updateMask=displayName

在上面的表达式中:

  • PROJECT_ID 是一个用于存储项目 ID 的环境变量。

  • SNOOZE_ID 是一个环境变量,用于存储闹钟的 ID。

该方法会返回一个 snooze 对象,该对象与文件 my-updated-snooze.json 的内容相同:

{
  "name": "projects/my-project/snoozes/778899",
  "criteria": {
    "policies": [
      "projects/my-project/alertPolicies/12345"
    ]
  },
  "interval": {
    "startTime": "2025-03-01T03:00:00.0-0500",
    "endTime": "2025-03-07T23:59:59.5-0500"
  },
  "displayName": "Snooze2"
}

gcloud CLI

如需修改暂停时间,请运行 gcloud monitoring snoozes update 命令。您可以更新显示名称、开始时间和结束时间:

gcloud monitoring snoozes update NAME OPTIONAL_FLAGS --project=PROJECT_ID

在运行上一个命令之前,请替换以下内容:

  • NAME:闹钟的名称。
  • PROJECT_ID:项目的标识符。
  • OPTIONAL_FLAGS:如需了解可选标志,请参阅 gcloud monitoring snoozes update 参考页面。

例如,如需更改名为 projects/my-project/snoozes/778899 的闹钟的显示名称,请运行以下命令:

gcloud monitoring snoozes update projects/my-project/snoozes/778899 --display-name="Maintenance Week" --project=PROJECT_ID

结束或取消延后

如果您想收到与当前延迟通知中指定的条件匹配的资源的通知,请结束延迟通知。例如,当计划的维护工作比预期更快完成时,您可能需要结束延迟。

如果您不想再使用即将到期的延迟提醒,请取消延迟提醒。 取消操作会将时长设置为零,并导致闹钟延迟转换为过去状态。

控制台

如需结束正在进行的暂停或取消即将暂停的闹钟,请执行以下操作:

  1. 在 Google Cloud 控制台中,转到 提醒页面:

    进入提醒

    如果您使用搜索栏查找此页面,请选择子标题为监控的结果。

  2. 在 Google Cloud 控制台的工具栏中,选择您的 Google Cloud 项目。
  3. 点击延后窗格中的查看所有延后
  4. 在“延迟提醒”列表中,找到要结束或取消的延迟提醒,然后执行以下操作之一:

    • 如需结束正在进行的延迟提醒,请在 更多选项菜单中选择立即结束
    • 如需取消即将暂停的闹钟,请在 更多选项菜单中选择取消暂停

Cloud Monitoring API

如需结束正在使用的暂停模式,请修改暂停模式,并将结束时间设为当前时间。如需了解详情,请参阅修改“稍后提醒”时间

如需取消即将到来的延后操作,请修改延后操作,并将结束时间设为延后操作的开始时间。开始时间必须是将来的时间。 如需了解详情,请参阅修改暂停时间

gcloud CLI

如需结束正在进行的暂停或取消即将到来的暂停,请运行 gcloud monitoring snoozes cancel 命令:

gcloud monitoring snoozes cancel NAME --project=PROJECT_ID

在运行上一个命令之前,请替换以下内容:

  • NAME:闹钟的名称。
  • PROJECT_ID:项目的标识符。

例如,如需取消名为 projects/my-project/snoozes/778899 的延迟提醒,请运行以下命令:

gcloud monitoring snoozes cancel projects/my-project/snoozes/778899 --project=PROJECT_ID

复制延后时间

如果您想将现有延迟提醒作为另一个延迟提醒的模板,请复制该提醒。复制延迟提醒后,系统会打开延迟提醒编辑器,其中所有字段(除了开始时间)都会设为原始延迟提醒中的值。您可以在点击创建之前修改所有字段。

如需使用控制台复制延迟提醒,请执行以下操作:

  1. 在 Google Cloud 控制台中,转到 提醒页面:

    进入提醒

    如果您使用搜索栏查找此页面,请选择子标题为监控的结果。

  2. 在 Google Cloud 控制台的工具栏中,选择您的 Google Cloud 项目。
  3. 点击延后窗格中的查看所有延后
  4. 在“延迟提醒”列表中,找到要修改的延迟提醒,然后在 更多选项菜单中选择复制延迟提醒
  5. 将修改应用于副本,然后点击创建

后续步骤