创建基于预测指标值的提醒政策

本文档介绍了如何使用 Google Cloud 控制台创建提醒政策,以便在政策预测在即将到来的预测时间范围内将超出阈值时发送通知。预测可预测时序是否会在预测期(即未来的一段时间)内违反阈值。预测时间范围可以介于 1 小时(3,600 秒)到 2.5 天(216,000 秒)之间。

此内容不适用于基于日志的提醒政策。如需了解基于日志的提醒政策(该政策在特定消息显示在日志中时通知您),请参阅监控日志

本文档未介绍以下内容:

预测条件简介

您可以在监控大多数指标时使用预测功能。不过,如果您监控受限资源(例如配额、磁盘空间或内存用量),预测条件可以在超出阈值之前通知您。这样一来,您便可以在违反阈值之前,有更多时间来响应受限资源的使用情况。

对于预测条件监控的每个时序,该条件都会实例化一个决策算法。该算法训练完毕后,每次评估条件时都会生成预测结果。每个预测都是对其时序在预测期内是否会超出阈值的预测。如果受监控的时序具有规律性的周期性,则该时序的决策算法会将周期性行为纳入其预测中。

当发生以下任一情况或两种情况时,系统会满足预测条件:

  • 特定重新测试时间范围内某个时序的所有值都违反了阈值。
  • 在重新测试时间段内针对特定时序做出的所有预测都预测该时序会在预测时间段内超出阈值。

决策算法的初始训练时间是预测期长度的两倍。例如,如果预测期为 1 小时,则需要 2 小时的训练时间。每个时序的决策算法都是单独训练的。在训练决策算法时,只有当时序的值违反指定的重新测试时间段的阈值时,其时序才会满足条件。

完成初始训练后,系统会使用长度最多为预测期长度 6 倍的数据,持续训练每个决策算法。例如,当预测期为 1 小时时,在持续训练期间,系统会使用最近 6 小时的数据。

如果您配置了预测条件,但超过 10 分钟没有收到数据,系统会停用预测功能,并将该条件作为指标阈值条件运行。

当预测预测某个时序会在预测时间范围内违反条件的阈值时,系统会创建突发事件。当预测预测时序在预测时间范围内不会超出阈值时,Monitoring 会自动关闭突发事件。

准备工作

  1. 如需获得使用 Google Cloud 控制台创建和修改提醒政策所需的权限,请让管理员向您授予项目的 Monitoring Editor (roles/monitoring.editor) IAM 角色。 如需详细了解如何授予角色,请参阅管理对项目、文件夹和组织的访问权限

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

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

  2. 确保您熟悉提醒政策的一般概念。如需了解这些主题,请参阅提醒概览

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

创建提醒政策

如需创建根据预测发送通知的提醒政策,请执行以下操作:

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

    进入提醒

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

  2. 选择创建政策
  3. 选择要监控的时序:

    1. 点击选择指标,浏览菜单以选择资源类型和指标类型,然后点击应用

      选择指标菜单包含一些功能,可帮助您查找可用指标类型:

      • 如需查找特定指标类型,请使用 过滤栏。例如,如果您输入 util,则会限制菜单仅显示包含 util 的条目。当条目通过不区分大小写的“包含”测试时,系统会显示相应条目。
      • 如需显示所有指标类型(包括没有数据的指标),请点击 有效。默认情况下,菜单中仅显示有数据的指标类型。如需了解详情,请参阅菜单中未列出的指标

      您可以监控任何内置指标或任何用户定义的指标类型,前提是其值类型为 double 或 int64,是限制指标,并且不是 Amazon VM 实例的指标。

      如果您选择的指标类型导致监控的时序序列超过 64 个,则“监控”会针对值最接近阈值或已违反阈值的 64 个时序进行预测。对于其他时序,系统会将其值与阈值进行比较。

    2. 可选:如需监控与您在上一步中选择的指标和资源类型匹配的时序的一部分,请点击添加过滤条件。在过滤条件对话框中,依次选择过滤条件标签、比较运算符和过滤条件值。例如,过滤条件 zone =~ ^us.*.a$ 使用正则表达式匹配地区名称以 us 开头且以 a 结尾的所有时间序列数据。如需了解详情,请参阅过滤所选时序

    3. 可选:如需更改时序中的点的校准方式,请在转换数据部分中设置滚动窗口滚动窗口函数字段。

      如果您要监控基于日志的指标,我们建议将滚动时间范围菜单设置为至少 10 分钟。

      这些字段用于指定窗口中记录的点的组合方式。例如,假设窗口为 15 分钟,而窗口函数为 max。校准点是最近 15 分钟内所有点的最大值。如需了解详情,请参阅对准:系列内正则化

      您还可以将滚动窗口函数字段设为百分比变化,以监控指标值的变化率。如需了解详情,请参阅监控变化率

    4. 可选:如果您想减少由政策监控的时序数量,或者只想监控一组时序,请合并时序。例如,您可能希望计算可用区中所有虚拟机的 CPU 利用率平均值,而不是监控每个虚拟机实例的 CPU 利用率,然后监控该平均值。默认情况下,系统不会合并时序。如需了解一般信息,请参阅减少:组合时序

      如需组合所有时序,请执行以下操作:

      1. 跨时序部分中,点击 展开
      2. 时间序列聚合字段设置为 none 以外的值。例如,如需显示时序的平均值,请选择 mean
      3. 确保时间序列分组依据字段为空。

      如需按标签值合并或分组时序,请执行以下操作:

      1. 跨时序部分中,点击 展开
      2. 时间序列聚合字段设置为 none 以外的值。
      3. 时间序列分组依据字段中,选择要分组的标签。

      例如,如果您按 zone 标签进行分组,然后将聚合字段设置为值 mean,则图表会针对包含数据的每个可用区显示一个时序。为特定可用区显示的时序是该可用区所有时序的平均值。

    5. 点击下一步

  4. 配置条件触发器:

    1. 选择预测作为条件类型。

    2. 可选:更新提醒触发器菜单,其中包含以下值:

      • 任何时序违规:默认设置。如果任何时序在整个重新测试时间范围内违反了阈值或预计会违反阈值,则会导致满足该条件。

      • Percent of time series violates:在整个重新测试时间段内,必须有一定百分比的时序违反阈值或预测会违反阈值,此时条件才会满足。例如,当 50% 的受监时序在整个重新测试期限内违反阈值时,您可能会收到通知。

      • Number of time series violates:在整个重新测试时间范围内,必须有特定数量的时序违反阈值或预测会违反阈值,此条件才会满足。例如,当 32 个受监控的时序在整个重新测试期限内违反阈值时,您可能会收到通知。

      • 所有时序违反:所有时序都必须违反阈值,或者在整个重新测试时间范围内都预测会违反阈值,此时条件才会满足。

      如需了解 Google 跟踪工具用于对齐和衡量时序数据的时间间隔,请参阅校准时间段和重新测试时间段

    3. 预测期选择一个值。您选择的值是预测的未来时间。此值必须设置为至少 1 小时(3,600 秒),且不得超过 2.5 天(216,000 秒)。

    4. 使用阈值位置阈值字段输入所选指标的预测值何时违反阈值。例如,如果您将这些值设置为高于阈值10,则任何高于 10 的预测值都会违反阈值。

    5. 可选:展开高级选项,然后设置重新测试时段的值。此字段的默认值为不重新测试

      我们建议您将此字段设置为至少 10 分钟。

      例如,假设您配置预测条件,使任何时序都可能导致条件满足。此外,假设重新测试窗口设置为 15 分钟,预测窗口设置为 1 小时,并且当时时序的值高于设置为 10 的阈值时,就会发生违规。如果发生以下任一情况,则满足此条件:

      • 时序的所有值都高于 10,并且至少保持 15 分钟。
      • 在 15 分钟的时间间隔内,某个时序的每个预测都预测其值会在接下来一小时内的某个时间高于阈值 10。
    6. 可选:如需指定在数据停止传入时监控功能如何评估条件,请展开高级选项,然后使用评估缺失的数据菜单。

      重新测试时间的值为无重新测试时,缺少数据时评估菜单将处于停用状态。

      如果缺少的数据超过 10 分钟,预测条件会停止进行预测,而是使用评估缺失数据字段的值来确定如何管理突发事件。重新开始观察时,系统也会重新开始预测。

      Google Cloud 控制台
      “缺失数据的评估”字段
      摘要 详细信息
      缺少数据(为空) 未结突发事件会保持未结状态。
      不会打开新的突发事件。

      对于已满足的条件,即使数据停止传入,该条件仍会继续满足。如果系统针对此条件创建了突发事件,则该突发事件会保持打开状态。如果突发事件处于打开状态且没有收到任何数据,自动关闭计时器会在至少 15 分钟的延迟后开始计时。如果计时器到期,突发事件将会关闭。

      对于未满足的条件,当数据停止传入时,该条件仍会保持不满足状态。

      缺失的数据点被视为违反政策条件的值 未结突发事件会保持未结状态。
      可以打开新的突发事件。

      对于已满足的条件,即使数据停止传入,该条件仍会继续满足。如果系统针对此条件创建了突发事件,则该突发事件会保持打开状态。如果突发事件处于未结状态,并且在自动关闭时长加上 24 小时内没有收到任何数据,则系统会关闭突发事件。

      对于未满足的条件,此设置会导致指标阈值条件的行为类似于 metric-absence condition。如果数据未在重新测试期限指定的时间内到达,则系统会评估该条件是否已满足。对于包含一个条件的提醒政策,满足该条件会导致系统创建突发事件。

      缺失的数据点被视为不违反政策条件的值 未结突发事件已关闭。
      不会打开新的突发事件。

      对于已满足的条件,当数据停止传入时,该条件将不再满足。如果系统针对此条件创建了突发事件,则会关闭该突发事件。

      对于未满足的条件,当数据停止传入时,该条件仍不满足。

    7. 点击下一步

  5. 可选:创建包含多个条件的提醒政策。

    大多数政策会监控单个指标类型,例如,某项政策可能会监控写入虚拟机实例的字节数。如果您想监控多个指标类型,请创建包含多个条件的政策。每个条件都会监控一个指标类型。创建条件后,您可以指定条件的组合方式。如需了解详情,请参阅具有多个条件的政策

    如需创建包含多个条件的提醒政策,请执行以下操作:

    1. 对于每个其他条件,请点击添加提醒条件,然后配置该条件。
    2. 点击下一步,然后配置条件组合方式。
    3. 点击下一步,进入通知和文档设置。
  6. 配置通知:

    1. 展开通知和名称菜单,然后选择所需的通知渠道。为实现冗余,我们建议您向提醒政策添加多种类型的通知渠道。如需了解详情,请参阅管理通知渠道

    2. 可选:如需在突发事件关闭时收到通知,请选择突发事件关闭时通知。默认情况下,如果您使用 Google Cloud 控制台创建提醒政策,则只会在有突发事件创建时予以通知。

    3. 可选:如需更改在数据停止传入后,监控服务等待多长时间后关闭突发事件,请从突发事件自动关闭时长菜单中选择一个选项。默认情况下,当数据停止传入时,Monitoring 会等待 7 天再关闭未解决的突发事件。

    4. 政策严重程度菜单中选择一个选项。突发事件和通知会显示严重级别。

    5. 可选:如需向提醒政策添加自定义标签,请在政策用户标签部分中执行以下操作:

      1. 点击添加标签,然后在字段中输入标签的名称。标签名称必须以小写字母开头,可以包含小写字母、数字、下划线和短划线。例如,输入 severity
      2. 点击,然后为标签输入值。标签值可以包含小写字母、数字、下划线和短划线。例如,输入 critical

      如需了解如何使用政策标签来帮助您管理通知,请参阅使用标签为突发事件添加注释

  7. 可选:在文档部分中,输入您希望随通知一起提供的任何内容。

    如需设置文档格式,您可以使用纯文本、Markdown 和变量。您还可以添加链接来帮助用户调试问题,例如指向内部手册、Google Cloud 信息中心和外部网页的链接。例如,以下文档模板描述了 gce_instance 资源的 CPU 利用率问题,并包含多个变量来引用提醒政策和条件 REST 资源。然后,文档模板会将读者定向到外部页面,以帮助调试。

    创建通知后,Monitoring 会将文档变量替换为其值。这些值仅替换通知中的变量。预览窗格和 Google Cloud 控制台中的其他位置仅显示 Markdown 格式。

    预览

    ## CPU utilization exceeded
    
    ### Summary
    
    The ${metric.display_name} of the ${resource.type}
    ${resource.label.instance_id} in the project ${resource.project} has
    exceeded 90% for over 15 minutes.
    
    ### Additional resource information
    
    Condition resource name: ${condition.name}  
    Alerting policy resource name: ${policy.name}  
    
    ### Troubleshooting and Debug References
    
    Repository with debug scripts: example.com  
    Internal troubleshooting guide: example.com  
    ${resource.type} dashboard: example.com
    

    通知中的格式

    文档在通知中呈现方式示例。

    如需了解详情,请参阅使用用户定义的文档为通知添加注释使用渠道控制

  8. 点击提醒名称,然后输入提醒政策的名称。

  9. 点击创建政策

过滤所选时序

过滤条件可确保仅监控符合部分条件的时序。应用过滤条件后,图表中的数据线数量可能会减少,从而改善图表的性能。您还可以通过应用聚合来减少监控的数据量。过滤条件可确保仅使用符合部分条件的时间序列。应用过滤条件后,评估的时序会较少,从而可以提高提醒的性能。

过滤条件由标签、比较运算符和值组成。例如,若要匹配 zone 标签以 "us-central1" 开头的所有时序,您可以使用过滤条件 zone=~"us-central1.*",该过滤条件使用正则表达式执行比较。

按项目 ID 或资源容器过滤时,必须使用等于运算符 (=)。按其他标签进行过滤时,您可以使用任何受支持的比较运算符。通常,您可以按指标和资源标签以及资源组进行过滤。

如果您提供多个过滤条件,系统只会监控符合所有条件的时序。

如需添加过滤条件,请点击添加过滤条件,完成对话框,然后点击完成。在对话框中,您可以使用过滤条件字段选择过滤依据的条件,选择比较运算符,然后选择值。下表中的每一行都列出了一个比较运算符及其含义和示例:

运算符含义示例
= 相等 resource.labels.zone = "us-central1-a"
!= 不相等 resource.labels.zone != "us-central1-a"
=~ 正则表达式 2 等式 monitoring.regex.full_match("^us.*")
!=~ 正则表达式 2 不等式 monitoring.regex.full_match("^us.*")
starts_with 值开头为 resource.labels.zone = starts_with("us")
ends_with 值结尾为 resource.labels.zone = ends_with("b")
has_substring 值包含 resource.labels.zone = has_substring("east")
one_of 以下之一 resource.labels.zone = one_of("asia-east1-b", "europe-north1-a")
!starts_with 值开头不是 resource.labels.zone != starts_with("us")
!ends_with 值结尾不是 resource.labels.zone != ends_with("b")
!has_substring 值不包含 resource.labels.zone != has_substring("east")
!one_of 值不是以下项之一 resource.labels.zone != one_of("asia-east1-b", "europe-north1-a")

问题排查

本部分包含问题排查提示。

指标未列在可用指标菜单中

如需监控选择指标菜单中未列出的指标,请执行以下任一操作:

  • 如需创建用于监控 Google Cloud 指标的提醒政策,请展开选择指标菜单,然后点击 有效。停用后,该菜单会列出 Google Cloud 服务的所有指标,以及包含数据的所有指标。

  • 如需在自定义指标类型生成数据之前为其配置条件,您必须使用监控过滤条件指定指标类型:

    1. 选择 ?(在选择指标部分的标题中),然后选择提示中的直接过滤模式
    2. 输入 Monitoring 过滤条件或时序选择器。 如需了解语法,请参阅以下文档:

监控变化率

如需监控指标值的变化率,请将滚动窗口函数字段设置为百分比变化。在评估条件时,Monitoring 会将指标的变化率计算为百分比,然后将该百分比与条件的阈值进行比较。此比较过程分为两步:

  1. 如果时序具有 DELTACUMULATIVE 指标类型,则会转换为具有 GAUGE 指标类型的时序。如需了解转换,请参阅种类、类型和转换
  2. 监控功能会通过比较最近 10 分钟滑动窗口中的平均值与校准期开始前 10 分钟滑动窗口中的平均值来计算百分比变化。

您无法更改变化率提醒政策中用于比较的 10 分钟滑动窗口。但是,您在创建条件时需指定一致性期限。

限制

  • 您可以使用 Google Cloud 控制台的菜单驱动型界面或使用监控过滤条件来配置此条件。您无法使用 Monitoring Query Language 或 PromQL 配置该条件。
  • 支持所有值类型为 double 或 int64 的指标,但 Amazon VM 实例的指标除外。

后续步骤