使用提醒政策监控 SQL 查询结果

本文档介绍了如何创建提醒政策,以监控您在 Observability Analytics 中运行的查询的结果。这些查询是用 SQL 编写的,并且必须查询名为 _AllSpans 的可观测性视图。当查询结果满足您指定的条件时,提醒政策会通知您。

您从 Observability Analytics 页面创建的提醒政策在 BigQuery 引擎上运行。因此,被查询的数据必须可 通过关联的 BigQuery 数据集访问。

如需了解有关 Observability Analytics 的一般信息,请参阅 使用 Observability Analytics 查询和分析跟踪记录

提醒政策的工作原理

提醒政策描述了您希望在哪些情况下收到提醒,以及通过什么方式获得有关突发事件的通知。当跟踪记录数据中出现内容或模式时,您可以使用几种不同的方法来接收通知:

  • 如需监控每月提取的 Cloud Trace span 数量、配额用量以及 span 提取率,请在 Cloud Monitoring 中创建提醒政策。如果您从未创建过提醒政策,请参阅 创建提醒政策 ,详细了解如何使用 Cloud Monitoring 控制台。

  • 如需查看或探索单个跟踪记录或 span,或查看附加到 span 的属性,请使用 Trace 探索器 页面。如需了解该页面的相关信息,请参阅查找和探索跟踪记录

  • 如需监控跟踪记录数据的汇总分析,请将 Observability Analytics 与提醒政策结合使用。在这种情况下,您可以使用 SQL 查询来查询名为 _Trace 的可观测性存储桶中的 _AllSpans 视图。最后,您需要创建提醒政策来监控 SQL 查询结果。这种类型的提醒政策称为基于 SQL 的提醒政策

    如需详细了解跟踪记录数据的存储方式,请参阅 存储概览

    本文档的其余部分介绍了如何使用基于 SQL 的提醒政策。

提醒政策组成部分

基于 SQL 的提醒政策包含条件和时间表:

  • 条件 包含查询(一个查询 数据的 SQL 查询)。该条件还定义了在查询结果导致 Monitoring 创建突发事件的情况下的情形。

  • 时间表 定义了提醒政策运行查询的频率。 该时间表还定义了回溯期的大小,这是一个过滤条件 ,仅选择自上次评估查询以来收到的数据 。例如,如果您将时间表设置为 60 分钟,则系统会每 60 分钟运行一次查询,并使用回溯期选择最近 60 分钟的数据。

提醒政策还包含 通知渠道列表。 当满足提醒政策的条件时,Cloud Monitoring 会创建突发事件,然后通过这些渠道发送有关突发事件的通知。 突发事件 是导致满足条件的数据的记录以及其他相关信息。此信息可帮助您排查导致突发事件的问题。 您可以使用 Google Cloud 控制台查看突发事件。

基于 SQL 的提醒政策的评估类型

监控 SQL 查询结果的条件支持两种类型的评估:

  • 行数阈值:当 查询结果中的行数大于、等于或小于 阈值时,满足条件。

  • 布尔值:当查询结果表中的特定布尔值列包含任何值为 true 的行时,满足条件。

监控 SQL 查询结果的提醒政策必须只有一个条件。

提醒政策和 BigQuery

如需让提醒政策查询跟踪记录数据,您必须配置 关联的 BigQuery 数据集。 通过关联的数据集,BigQuery 可以读取跟踪记录数据,并且您可以对 SQL 查询返回的数据执行 BigQuery 函数。

当提醒政策运行 SQL 查询时,该查询会在 定义提醒政策的 Google Cloud 项目中的 BigQuery 引擎上运行。默认情况下,在 BigQuery 引擎上运行的查询使用按需槽。按需槽和 预留槽均受 BigQuery 价格的约束

您还可以选择为项目配置专用 BigQuery 槽预留:

  1. 创建包含专用槽的预留,或确定 现有预留。
  2. 为项目创建预留分配

回溯期和突发事件传播时间

当提醒政策被安排评估其条件时,Observability Analytics 会将 SQL 查询执行延迟 5 分钟,以便 Cloud Logging 有时间将回溯期内收到的数据编入索引。 例如,如果提醒政策使用的是结束时间为下午 2:00 的回溯期,则 Observability Analytics 在下午 2:05 之前不会执行 SQL 查询。

如果在执行查询后满足提醒条件,则突发事件可能需要额外两分钟才能在系统中传播。

查询失败

基于 SQL 的提醒政策发出的查询可能会因各种原因而失败,包括以下原因:

  • Monitoring 服务账号已不存在或不再具有读取所查询跟踪记录数据的必要权限。

  • 查询执行时间超过五分钟。

  • 发生内部错误。

失败的查询会生成包含提醒政策 ID 和错误状态的日志条目。您可以使用基于日志的提醒政策在记录错误时创建提醒。

准备工作

本部分假设您有一个关联的 BigQuery 数据集用于存储跟踪记录数据

在创建基于 SQL 的提醒政策之前,请完成以下步骤:

  1. 如需获得查询跟踪记录数据和创建基于 SQL 的提醒政策所需的权限,请让您的管理员为您授予项目的以下 IAM 角色:

  2. 验证 Monitoring 服务账号 是否存在,以及是否具有以下角色:

    1. 针对项目的 Monitoring Service Agent (roles/monitoring.notificationServiceAgent)
    2. 针对关联的数据集的 BigQuery Data Viewer (roles/bigquery.dataViewer)

    如果 Monitoring 服务账号不存在,请参阅 问题排查:没有 Monitoring 服务账号

  3. 配置您要用于接收任何突发事件通知的通知渠道。为实现冗余,我们建议您创建多种类型的通知渠道。如需了解详情,请参阅创建和管理通知渠道

创建基于 SQL 的提醒政策

如需创建基于 SQL 的提醒政策,请执行以下操作:

控制台

  1. 在 Google Cloud 控制台中,前往 Observability Analytics 页面:

    前往 Observability Analytics

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

  2. Observability Analytics 页面的查询编辑器中,输入查询跟踪记录数据的 SQL 查询。

  3. 在工具栏上,点击在 BigQuery 上运行

    Observability Analytics 会在 BigQuery 引擎上运行查询,并在结果 表中显示结果。

    如果未显示在 BigQuery 上运行 ,请依次点击 选择查询引擎BigQuery运行查询 按钮会更改为在 BigQuery 上运行

  4. Observability Analytics 页面的结果 表中,点击  创建提醒

    Observability Analytics 页面会显示创建 SQL 提醒政策 窗口,该窗口会在 SQL 查询 部分下显示您的查询。

  5. 提醒条件 部分中,配置提醒政策的条件和时间表。

  6. 配置提醒政策的提醒详细信息。

    1. 添加通知渠道 并配置通知内容,例如自定义主题行。

    2. 可选:添加提醒政策标签文档

    3. 点击下一步

  7. 查看提醒政策,然后点击保存 以创建该政策。

Terraform

  1. 为您的项目 安装和配置 Terraform。对于 App Hub 配置,请选择 App Hub 宿主项目或管理项目。

  2. 在 Cloud Shell 中,前往包含 Terraform 配置的目录。

  3. 在 Terraform 配置中,配置 google_monitoring_alert_policy资源的实例, 包括 condition_sql

  4. 在 Cloud Shell 中,输入 terraform apply

如需修改提醒政策,请进行修改,然后重新应用 Terraform 配置。如需了解详情,请参阅 使用 Terraform 管理提醒政策

如需了解有关将 Google Cloud 与 Terraform 搭配使用的一般信息,请参阅 将 Terraform 与 Google Cloud搭配使用。

REST

使用 alertPolicies.create 方法以编程方式创建提醒政策。提醒政策的 Condition 类型必须是 MonitoringQueryLanguageCondition,它是 SqlCondition的实例。 此条件类型允许使用 SQL 定义提醒政策的条件。

如需定义时间表,请为 minuteshoursdays 字段之一设置 periodicity 值。例如,如果您希望查询每 12 小时运行一次,请将 hours 字段的周期设置为 12。

如需定义条件,请使用以下字段:

  • boolean_test:配置提醒政策,以便当查询结果表中的布尔值列的某一行包含 true 值时,满足提醒政策的条件。
  • row_count_test:配置提醒政策,以便当查询结果表中的行数满足特定阈值时,满足提醒政策的条件。

如需查看字段和定义的完整列表,请参阅 SqlCondition Cloud Monitoring API 文档。

如需详细了解用于提醒政策的 Monitoring API, 请参阅 使用 API 管理提醒政策

限制

  • 每个基于 SQL 的提醒政策只能有一个条件。
  • 当基于 SQL 的提醒政策发出的查询的执行时间超过 5 分钟时,查询会失败。

  • 在预定查询到创建突发事件之间,最多有 7 分钟的延迟,加上查询执行时间。

如需查看与提醒政策相关的限制的完整列表,请参阅 Monitoring 限制

后续步骤