使用 MQL 的提醒政策

您可以创建条件包含 MQL 查询的 Monitoring 提醒政策。提醒条件的 MQL 查询与其他 MQL 查询类似,不同之处在于它们还包含 MQL 提醒运算。

本页面介绍了 MQL 提醒运算,并介绍了如何创建使用这些操作的提醒政策。如需了解 Monitoring 提醒政策的常规信息,请参阅提醒行为

MQL 提醒运算

您可以使用 MQL 创建阈值和缺失提醒政策。

通过在查询中使用以下某个 MQL 提醒运算来创建基于 MQL 的提醒政策:

您的查询必须以下述操作之一结束。如需了解详情,请参阅 MQL 参考中的提醒部分。

查询不得包含显式时间范围规范,即 within 操作。

使用 MQL 创建提醒政策时,您可以使用 fetchfiltergroup_by 等来构建 MQL 查询,以识别目标时间序列。查询的这一部分与用于检索图表的时间序列数据的查询相同。例如,以下查询将提取位于任何 US Central 地区的所有 Compute Engine 虚拟机实例的 CPU 使用率:

fetch gce_instance::compute.googleapis.com/instance/cpu/utilization
| filter zone =~ 'us-central.*'

此查询会生成一个输出表。如需创建提醒,您需要将输出表传输到提醒运算。提醒运算会计算在执行提醒运算之前由查询生成的输出表中数据值的布尔值。

提醒运算会指定一个表达式,用于评估输入表中的数据。对于阈值条件,该表达式会根据“值小于 0.5 吗?”等阈值测试每个点

Monitoring 提醒设备使用提醒运算结果来确定是否触发提醒政策以及触发时间。提醒配置介绍如何做出决策。

阈值提醒

对于阈值提醒,请使用 condition 运算。条件运算采用表达式以根据“值大于 15%”等阈值来评估值,然后返回布尔值。

condition 运算要求输入表与显式校准窗口一致。为此,您可以为 align 运算(例如 align delta(5m))指定一个校准窗口,或者使用 window 运算,如以下示例所示:

fetch gce_instance::compute.googleapis.com/instance/cpu/utilization
| filter zone =~ 'us-central.*'
| window 5m
| condition val() > .15 '10^2.%'

条件会测试一致输入表中的每个数据点,以确定使用率值是否超过阈值 15%。从 condition 运算符生成的表有两个值列,一个是记录阈值评估结果的布尔值列,另外一列包含输入表中的 utilization 值的副本。

CPU 利用率值存储为分数利用率;值的范围为 0.0 到 1.0。指标描述符将这些值的单位指定为 10^2.%,它们在图表中以百分比的形式显示。阈值的单位必须兼容,因此我们将阈值表示为 .15 '10^2.%

指标类型的单位列在指标类型的相关表中;对于指标类型 compute.googleapis.com/instance/cpu/utilization,请参阅 compute 表。

如需详细了解 MQL 中的单位,请参阅度量单位

缺失提醒

对于缺失提醒,请使用 absent_for 运算,该运算采用一个必须缺失数据的时长。例如,执行以下测试以查看 US Central 区域是否缺失数据长达 8 小时:

fetch gce_instance::compute.googleapis.com/instance/cpu/utilization
| filter zone =~ 'us-central.*'
| absent_for 8h

absent_for 运算仅采用一个时长参数,该参数表示数据必须缺失多长时间才能满足条件。

如果数据在最近 24 小时内出现,但持续时间未超过该时长(在本例中为最近 8 小时),则此示例视为缺失数据。

absent_for 查询使用默认对齐或使用 absent_for 运算后接 every 运算来创建具有校准值的输出表。

输出表包含两列。

  • 第一列是 active 列,用于记录数据缺失的布尔值结果。true 值表示过去 24 小时内存在输入点,但在该时段内没有输入点。

  • 第二列是 signal 列。如果输入表包含值列,则 signal 列包含最近输入点的第一个值列中的值。如果输入表不含值列,则 signal 列包含自记录最后一个输入点以来的分钟数。如以下示例所示,您可以轻松强制执行这种情况:

    fetch gce_instance::compute.googleapis.com/instance/cpu/utilization
    | filter zone =~ 'us-central.*'
    | value []
    | absent_for 8h
    

    在前面的示例中,value [] 运算会从其输入表中移除值列,因此由 absent_for 运算创建的表中的 signal 列包含自记录最后一个输入点以来的分钟数。

提醒配置

除了 MQL 查询之外,提醒政策条件还包括两个其他值:

  • 必须满足条件的输入时间序列数量。此值可以是以下任一值:
    • 一个时间序列。
    • 特定的时间序列数量。
    • 时间序列百分比。
    • 所有时间序列。
  • 提醒状态的时长,即提醒条件必须持续评估为 true 的时长。

如果某个特定时间序列的提醒查询在指定的时间段内持续评估为 true 求值,则该时间序列会被视为活跃。当指定数量的时间序列处于活跃状态时,便会触发提醒政策,并为每个活跃时间序列生成提醒。如需详细了解如何评估提醒政策,请参阅提醒行为

如果在某个条件中使用 MQL,则该条件必须是政策中的唯一条件。您无法在基于 MQL 的提醒政策中使用多个条件。

创建 MQL 提醒政策(控制台)

如需通过 Google Cloud Console 创建基于 MQL 的提醒政策,请按照管理提醒政策中所述的创建政策的常规步骤操作。在创建提醒政策的条件时,请使用查询编辑器,而不是基于表单的指标选择器。

基于 MQL 的提醒政策的条件编辑器。

请按以下所示填写条件:

  1. Untitled Condition 字段中输入值以为条件命名。保存后,系统会为条件分配一个数字标识符。该可选显示名可提供更有意义的说明。

  2. 如需启动提醒条件,请在查询编辑器中输入查询以选择您要监控的数据。以下查询会提取时间序列并在 5 分钟内进行校准。

    fetch gce_instance::compute.googleapis.com/instance/cpu/utilization
    | window 5m
    

    此时如果点击运行查询,您会看到一个图表。对于一个项目,此查询生成了以下结果:

    指定提醒之前来自提醒条件的图表。

  3. 使用以下运算之一,向查询添加一个提醒子句:

    • condition 运算符,适用于阈值提醒。
    • absent_for 运算符,适用于缺失提醒。

    如需详细了解这些提醒运算,请参阅 MQL 参考中的提醒

    以下示例使用 condition 运算指定阈值:

    fetch gce_instance::compute.googleapis.com/instance/cpu/utilization
    | window 5m
    | condition val() > .15
    

    此时如果点击运行查询,则该图表会为条件添加一条阈值线,如以下屏幕截图所示:

    指定提醒之后来自提醒条件的图表。

  4. 如果还没有运行查询,请点击运行查询

  5. 配置窗格中,指定应在何时触发提醒政策。您可以指定以下两个值:

    • 该条件的触发条件可用于指定查询返回的时间序列必须满足多少次提醒运算才能触发提醒政策。您可以指定以下条件:

      • 一个时间序列。
      • 特定的时间序列数量。
      • 时间序列的百分比。
      • 所有时间序列。
    • 持续时间 - 您可以指定必须满足条件多长时间才能触发提醒政策。这与 MQL 查询中使用的校准窗口不同。如需详细了解这些值之间的关系,请参阅校准时间段和时长

  6. 点击添加以保存条件。您会看到一个对话框,通知您在保存时提醒条件已转换为严格形式。点击保存以保存查询,或点击取消继续修改。

  7. 继续设置提醒政策的剩余部分。

创建 MQL 提醒政策 (API)

如果您使用的是 API,请在设置政策时创建 MonitoringQueryLanguageCondition 类型的条件。然后照常将政策传递给 alertPolicies.create。如需了解详情,请参阅提醒政策中的条件