管理基于 SQL 的提醒政策的突发事件

突发事件是满足提醒政策条件时生成的记录。通常,当满足提醒政策的条件时,Cloud Monitoring 会开启突发事件并发送通知。不过,在以下情况下,系统不会创建突发事件:

  • 政策已延后或停用。
  • 提醒政策或突发事件数量超出了现有的提醒方面的限制

对于每个突发事件,Monitoring 都会创建一个突发事件详细信息页面,以便您管理突发事件,并报告可帮助您排查失败问题的突发事件信息。例如,突发事件详细信息页面会显示 SQL 查询结果摘要和相关突发事件的列表。

本文档介绍如何查找您的突发事件。还介绍了如何使用突发事件详细信息页面管理基于 SQL 的提醒政策的突发事件,这些政策会评估针对来自一组日志条目的数据运行 SQL 查询的结果。

此功能仅适用于 Google Cloud 项目。对于 App Hub 配置,请选择 App Hub 宿主项目或管理项目。

准备工作

如需获得查看和管理突发事件所需的权限,请让您的管理员为您授予项目的以下 IAM 角色:

如需详细了解如何授予角色,请参阅管理对项目、文件夹和组织的访问权限

您也可以通过自定义角色或其他预定义角色来获取所需的权限。

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

查看突发事件

如需查看项目中的突发事件,请使用 Google Cloud 控制台、gcloud CLI(公开预览版)或 Monitoring API(公开预览版)。

Google Cloud 控制台

如需列出 Google Cloud 项目中的突发事件,请执行以下操作:

  1. 在 Google Cloud 控制台中,前往  提醒页面:

    进入提醒

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

  2. 在 Google Cloud 控制台的工具栏中,选择您的 Google Cloud 项目。对于 App Hub 配置,请选择 App Hub 宿主项目或管理项目。

    提醒页面会显示有关提醒政策、延后和突发事件的信息:

    • 摘要窗格列出了未结突发事件的数量。
    • 突发事件表会显示最近的未结突发事件。如需在表中列出近期的突发事件(包括已结突发事件),请点击显示已结突发事件
  3. 如需查看特定突发事件的详细信息,请在列表中选择相应突发事件。

    系统会打开突发事件详细信息页面。如需详细了解突发事件详细信息页面,请参阅本文档中的调查突发事件部分。

查找较早的突发事件

提醒页面上的突发事件表会显示最近的未结突发事件。如需查看较早的突发事件,请执行以下操作之一:

  • 如需分页浏览突发事件表中的条目,请点击 较新 较早

  • 如需打开一个可用于列出和过滤突发事件的页面,请点击查看所有突发事件。系统会打开突发事件页面。在该页面上,执行以下操作:

    • 显示所有突发事件,包括已关闭的突发事件。如需显示所有突发事件,请点击显示已关闭的突发事件
    • 过滤突发事件。如需了解如何添加过滤条件,请参阅过滤突发事件
    • 确认或关闭突发事件,或是延后其提醒政策。如需访问这些选项,请在突发事件行中点击 更多选项,然后从菜单中进行选择。如需了解详情,请参阅管理突发事件

过滤突发事件

如需限制表格中显示的突发事件,请添加过滤条件。如果您添加多个过滤条件,则表格只会显示满足所有过滤条件的突发事件。

要过滤突发事件表,请执行以下操作:

  1. 突发事件页面上,点击 过滤表,然后选择过滤条件属性。过滤条件属性包括以下内容:

    • 突发事件的状态
    • 提醒政策的名称
    • 突发事件打开或关闭的时间
  2. 从二级菜单中选择一个值,或在过滤条件栏中输入一个值。

    然后,突发事件表格会列出过滤条件。

gcloud

您可以使用 gcloud 获取突发事件和列出突发事件。

获取突发事件

在使用下面的命令数据之前,请先进行以下替换:

  • ALERT_NAME:提醒的资源名称。例如 projects/my-project/alerts/my-alert-id

执行 gcloud alpha monitoring alerts describe 命令:

Linux、macOS 或 Cloud Shell

gcloud alpha monitoring alerts describe ALERT_NAME

Windows (PowerShell)

gcloud alpha monitoring alerts describe ALERT_NAME

Windows (cmd.exe)

gcloud alpha monitoring alerts describe ALERT_NAME
该命令会返回包含提醒详细信息的响应,例如提醒状态、附加标签和来源提醒政策。 请注意,在预览期间,响应中的标签可能会发生变化。响应类似于以下内容:
{
  "name": "projects/my-project/alerts/my-alert-id",
  "state": "OPEN",
  "open_time": "2025-06-11T09:53:46Z",
  "resource": {
    "type": "sql_alert"
  },
  "policy": {
    "name": "projects/my-project/alertPolicies/POLICY_1",
    "displayName": "test-policy"
  },
  "summaryText": "The row count SQL Condition for \"test-policy\" is above the threshold of 1."
}

列出突发事件

您可以使用 gcloud CLI 列出项目中的突发事件并过滤结果。

在使用下面的命令数据之前,请先进行以下替换:

  • PROJECT_ID:项目的标识符。

执行 gcloud alpha monitoring alerts list 命令:

Linux、macOS 或 Cloud Shell

gcloud alpha monitoring alerts list

Windows (PowerShell)

gcloud alpha monitoring alerts list

Windows (cmd.exe)

gcloud alpha monitoring alerts list
该命令会返回包含提醒详细信息的响应,例如提醒状态、附加标签和来源提醒政策。 请注意,在预览期间,响应中的标签可能会发生变化。响应类似于以下内容:
{
  "alerts": [
    {
      "name": "projects/my-project/alerts/my-alert-id",
      "state": "OPEN",
      "open_time": "2025-06-11T09:53:46Z",
      "resource": {
        "type": "sql_alert"
      },
      "policy": {
        "name": "projects/my-project/alertPolicies/POLICY_1",
        "displayName": "test-policy"
      },
      "summaryText": "The row count SQL Condition for \"test-policy\" is above the threshold of 1."
    }
  ]
}
您还可以使用以下可选标志来过滤、排序或修改输出:
  • --filter:提供过滤表达式,按时间或标签过滤提醒。例如,使用 --filter='close_time>="2025-09-10T00:00:00Z"' 按时间过滤,或使用 --filter='resource.labels.key="value"' 按标签过滤。

  • --sort-by:用于对输出进行排序的字段的英文逗号分隔列表。例如 --sort-by=open_time

  • --uri:命令输出资源 URI 列表,而不是默认输出。

  • --limit:将此标志设置为 2 或更大的值,以限制返回的提醒数量。请勿将此标志与 --filter 标志结合使用。

Monitoring API

您可以使用 Monitoring API 获取突发事件和列出突发事件。

获取突发事件

如需使用 Monitoring API 获取单个突发事件的详细信息,请使用 alerts.get 方法。

在使用任何请求数据之前,请先进行以下替换:

  • PROJECT_ID:项目的标识符。
  • ALERT_ID:提醒的 ID。

HTTP 方法和网址:

GET https://monitoring.googleapis.com/v3/projects/PROJECT_ID/alerts/ALERT_ID

如需发送您的请求,请展开以下选项之一:

该命令会返回包含提醒详细信息的响应,例如提醒状态、附加的标签和来源提醒政策。请注意,在预览期间,响应中的标签可能会发生变化。响应类似于以下内容:
{
  "name": "projects/my-project/alerts/my-alert-id",
  "state": "OPEN",
  "open_time": "2025-06-11T09:53:46Z",
  "resource": {
    "type": "sql_alert"
  },
  "policy": {
    "name": "projects/my-project/alertPolicies/POLICY_1",
    "displayName": "test-policy"
  },
  "summaryText": "The row count SQL Condition for \"test-policy\" is above the threshold of 1."
}

列出突发事件

如需使用 Monitoring API 列出项目中的突发事件并过滤结果,请使用 alerts.list 方法。

在使用任何请求数据之前,请先进行以下替换:

  • PROJECT_ID:项目的标识符。

HTTP 方法和网址:

GET https://monitoring.googleapis.com/v3/projects/PROJECT_ID/alerts

如需发送您的请求,请展开以下选项之一:

该命令会返回包含提醒详细信息的响应,例如提醒状态、附加的标签和来源提醒政策。请注意,在预览期间,响应中的标签可能会发生变化。响应类似于以下内容:
{
  "alerts": [
    {
      "name": "projects/my-project/alerts/my-alert-id",
      "state": "OPEN",
      "open_time": "2025-06-11T09:53:46Z",
      "resource": {
        "type": "sql_alert"
      },
      "policy": {
        "name": "projects/my-project/alertPolicies/POLICY_1",
        "displayName": "test-policy"
      },
      "summaryText": "The row count SQL Condition for \"test-policy\" is above the threshold of 1."
    }
  ]
}
Curl 用户可以添加 --data-urlencode 标志,后跟过滤表达式,按时间或标签过滤提醒。请参见以下示例:

列出过去 1 小时内打开的提醒:

--data-urlencode "filter=(open_time>=\"`date -u -d "1 hour ago" +"%Y-%m-%dT%H:%M:%SZ"`\")"

列出并过滤过去 1 天内未解决的提醒:

--data-urlencode "filter=(open_time>=\"`date -u -d "1 DAY ago" +"%Y-%m-%dT%H:%M:%SZ"`\" AND state=open)"

列出并过滤在两个时间段内打开的提醒:

--data-urlencode "filter=(open_time>=\"`date -u -d "2 DAY ago" +"%Y-%m-%dT%H:%M:%SZ"`\" AND open_time<=\"`date -u -d "1 DAY ago" +"%Y-%m-%dT%H:%M:%SZ"`\")"

按用户标签列出和过滤提醒。在此示例中,按名称为 app、值为 my-gke-app 的用户标签进行过滤:

--data-urlencode "filter=(policy.user_labels.app=\"my-gke-app\")"
Powershell 用户可以使用以下示例向请求网址添加基于时间的过滤条件:
$baseUrl = "https://monitoring.googleapis.com/v3/projects/my-project/alerts"
$filterValue = (Get-Date).AddHours(-1).ToString("yyyy-MM-ddTHH:mm:ssZ")
$filter = 'open_time >= "' + $filterValue + '"'
$encodedFilter = [System.Uri]::EscapeDataString($filter)
$url = $baseUrl + "?filter=" + $encodedFilter

调查突发事件

突发事件详细信息页面包含的信息可能会帮助您找出突发事件的原因。

探索查询结果

每天使用的总槽时间窗格显示在过去 24 小时内,您的预留 BigQuery 槽为运行用于提醒政策的 SQL 查询所花费的时间量。

SQL 查询结果窗格会显示每次 Log Analytics 通过提醒政策条件运行 SQL 查询时生成的查询结果摘要的列表。默认情况下,系统会过滤该列表,以便仅显示与提醒政策条件匹配的查询。

  • 如需查看查询以及 Log Analytics 运行查询的特定时间的查询结果表,请点击查询运行时间列中的某个值。
  • 如需在仅显示与提醒政策条件匹配的查询结果与 Log Analytics 通过提醒政策运行的所有查询之间切换,请点击仅显示与提醒条件匹配的查询

查看补充信息

文档部分显示您在创建提醒政策时提供的通知的文档模板。此信息可能包括对提醒政策监控内容的说明,以及关于应对措施的提示。如需了解详情,请参阅使用用户定义的文档为通知添加注解

如果您没有为提醒政策配置文档,则文档窗格会显示“未配置任何文档”。

如需帮助您发现应用中的潜在问题,您可以探索与其他提醒政策条件相关的突发事件。

相关突发事件部分会显示在满足提醒政策的条件时创建的其他突发事件的列表。

管理突发事件

突发事件具有以下状态之一:

  • 未结:已满足基于 SQL 的提醒政策的条件,并且突发事件仍处于未结状态。如果再次满足相同条件,并且已存在未结突发事件,则不会开启新的突发事件。

  • 已确认:该突发事件为未结状态,并被标记为已确认。 通常,此状态表示正在调查突发事件。

  • 已关闭:您已手动关闭突发事件,或突发事件已在自动关闭期限到期后自动关闭。

确认突发事件

我们建议您在开始调查突发事件的原因时将突发事件标记为已确认。

如需将突发事件标记为已确认,请执行以下操作:

  1. 提醒页面的突发事件表中,点击查看所有突发事件
  2. 突发事件页面上,找到要确认的突发事件,然后执行以下操作之一:

    • 点击  更多选项,然后选择确认
    • 打开突发事件的详细信息页面,然后点击确认突发事件

延后提醒政策

如需防止 Monitoring 在特定时间段内创建突发事件并发送通知,请延后相关提醒政策。当您延后提醒政策时,与提醒政策相关的突发事件会保持未结状态,但不会触发进一步的通知。突发事件会根据提醒政策的自动关闭时长来关闭。

如需为您正在查看的突发事件创建延后,请执行以下操作:

  1. 突发事件详细信息页面上,点击延后政策

  2. 选择延后时长。选择延后时长后,延后会立即开始。

您也可以在突发事件页面上延后提醒政策,方法是找到要延后的突发事件,点击 更多选项,然后选择延后。您可以在服务中断期间延后提醒政策,以避免在问题排查过程中收到进一步的通知。

关闭突发事件

您可以让 Monitoring 为您结束突发事件,或者您自己结束突发事件。

当提醒政策的自动关闭时长到期后,Monitoring 会自动结束突发事件。默认情况下,自动关闭时长为 7 天。自动关闭时长下限为 30 分钟。

自动关闭时长指定在突发事件关闭之前,必须经过的时间(在此期间,突发事件的原因不会重复发生)。因此,当突发事件处于未结状态且导致该突发事件的原因再次发生时,该突发事件未结状态的持续时间可能会超过自动关闭时长。

如需结束突发事件,请执行以下操作:

  1. 提醒页面的突发事件表中,点击查看所有突发事件
  2. 突发事件页面上,找到要结束的突发事件,然后执行以下操作之一:

    • 点击 查看更多,然后选择关闭突发事件
    • 打开该突发事件的突发事件详细信息页面,然后点击关闭突发事件

如果您看到 Unable to close incident 消息,请过几分钟后重试。您无法立即关闭新突发事件,因为导致突发事件的条件仍被提醒系统视为有效。

数据保留和限制

如需了解突发事件的限制和保留期限,请参阅提醒方面的限制

后续步骤