创建预测指标值提醒政策

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

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

本文档未介绍以下内容:

只有 Google Cloud 项目支持此功能。对于 App Hub 配置,请选择 App Hub 宿主项目或已启用应用的文件夹的管理项目。

预测条件简介

您可以在监控大多数指标时使用预测功能。但是,监控受限资源(例如配额、磁盘可用空间或内存用量)时,预测条件可以在违反阈值之前向您发送通知。该功能可让您在违反阈值之前,有更多时间来响应受限资源的使用情况。

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

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

  • 在特定重新测试窗口中,时序的所有值均违反阈值。
  • 在重新测试窗口中针对特定时序做出的所有预测都预测时序会在预测窗口内违反阈值。

决策算法的初始训练时间是预测窗口长度的两倍。例如,如果预测窗口为 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. 在 Google Cloud 控制台的工具栏中,选择您的 Google Cloud 项目。 对于 App Hub 配置,请选择 App Hub 宿主项目或已启用应用的文件夹的管理项目。
  3. 选择创建政策
  4. 选择要监控的时序:

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

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

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

      您可以监控任何内置指标或任何用户定义的指标类型,只要其值类型为 double 或 int64,即限制条件指标,并且不是 Amazon 虚拟机实例的指标即可。

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

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

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

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

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

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

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

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

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

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

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

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

    5. 点击下一步

  5. 配置条件触发器:

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

    2. 可选:更新 Alert trigger 菜单,其中包含以下值:

      • 任何时序违反:默认设置。在整个重新测试窗口内,任何违反阈值或预计会违反阈值的时序都会满足条件。

      • 时序违反百分比:在整个重新测试窗口内,必须有一定百分比的时序违反阈值或预计会违反阈值,才能满足条件。例如,在整个重新测试窗口内,如果有 50% 的受监控的时序违反阈值,您可能会收到通知。

      • 时序违反数量:在整个重新测试窗口内,必须有特定数量的时序违反阈值或预计会违反阈值,才能满足条件。例如,在整个重新测试窗口内,如果有 32 个受监控的时序违反阈值,您可能会收到通知。

      • 所有时序违反:在整个重新测试窗口内,所有时序都必须违反阈值或预计会违反阈值,才能满足条件。

      如需了解 Monitoring 用于校准和衡量时序数据的时间间隔,请参阅校准时间段和重新测试窗口

    3. 预测窗口选择一个值。您选择的值是预测的未来时间。您必须将此值设置为至少 1 小时(3,600 秒),最多 2.5 天(216,000 秒)。

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

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

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

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

      • 时序的所有值都高于 10 且至少保持 15 分钟。
      • 在 15 分钟的时间间隔内,一个时序的每个预测结果都预测其值将在下一个小时内某个时间点上升到高于 10 的阈值。
    6. 可选:如需指定 Monitoring 在数据停止到达时如何评估条件,请展开高级选项,然后使用 Evaluation missing data 菜单。

      如果重新测试窗口的值为不重新测试,则 Evaluation missing data 菜单处于停用状态。

      如果数据缺失时间超过 10 分钟,预测条件会停止进行预测,而是使用 Evaluation missing data 字段的值来确定如何管理突发事件。当观测重启时,预测也会重启。

      Google Cloud 控制台
      “Evaluation of missing data”字段
      摘要 详情
      缺失数据留空 未结突发事件保持未结状态。
      未开启新的突发事件。

      对于已满足的条件,当数据停止到达时,条件仍会继续满足。如果针对此条件开启突发事件,则该突发事件会保持未结状态。如果突发事件处于未结状态,并且没有数据到达,则自动关闭计时器会在至少 15 分钟的延迟后开始计时。如果计时器到期,则突发事件会关闭。

      对于不满足的条件,当数据停止到达时,该条件仍不满足。

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

      对于已满足的条件,当数据停止到达时,条件仍会继续满足。如果针对此条件开启突发事件,则该突发事件会保持未结状态。如果突发事件处于未结状态,并且在自动关闭时长到期后 24 小时内没有任何数据到达,则该突发事件会关闭。

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

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

      对于已满足的条件,当数据停止到达时,条件将不再满足。如果针对此条件开启突发事件,则该突发事件会关闭。

      对于不满足的条件,当数据停止到达时,该条件仍不满足。

    7. 点击下一步

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

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

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

    1. 对于每个其他条件,请点击添加提醒条件,然后配置该条件。
    2. 点击下一步,然后配置条件组合方式。
    3. 点击下一步,前往通知和文档设置。
  7. 配置通知并添加用户标签:

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

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

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

    4. 可选:如需将提醒政策与 App Hub 应用相关联,请在应用标签部分中选择应用以及服务或工作负载。突发事件和通知会显示这些标签。

    5. 可选:从 Policy severity level 菜单中选择一个选项。突发事件和通知会显示严重级别。

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

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

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

  8. 可选:在文档部分中,输入您希望通知中包含的任何内容。

    如需设置文档格式,您可以使用纯文本、Markdown 和变量。您还可以添加链接,以帮助用户调试突发事件,例如指向内部 playbook、 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
    

    通知中的格式

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

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

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

  10. 点击创建政策

过滤所选的时序

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

过滤条件由标签、比较条件和值组成。例如,如需匹配其 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 服务的所有指标以及包含数据的所有指标。

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

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

监控变化率

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

  1. 如果时序具有 DELTACUMULATIVE 指标种类,则时序会转换为具有 GAUGE 指标种类的时序。如需了解转换,请参阅种类、类型和转换
  2. Monitoring 会通过将最近 10 分钟滑动窗口中的平均值与校准时间段开始前的 10 分钟滑动窗口中的平均值进行比较来计算更改后的百分比。

您无法更改在变化率提醒政策中用于比较的 10 分钟滑动窗口。但是,您需要在创建条件时指定校准时间段。

限制

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

后续步骤