监视器的架构和参考

概述

本页面描述了 Monitor 的架构,以及构造、表达式语法和语义的详细解释。

监视器的纲要

监视器指定监视器函数应运行的频率及其参数。

_type: "Monitor"
name: string
description?: string
function: string
arguments:
  <dependent on monitor function>
intervalSeconds: integer
remediationHint?: string
status?: "ENABLED" | "DISABLED"       # defaults to "DISABLED"
tags:
  <key>: <value>
identifier?: string
  • _type: SUSE® Observability 需要知道这是一个监视器,因此值始终需要为 Monitor

  • name:监视器的名称

  • description:监视器的说明。

  • function:对将用于执行监视器的监视器函数的引用。

  • intervalSeconds:监视器执行的间隔。对于常规实时指标,建议使用 30 秒。对于运行时间较长的分析指标查询,建议使用更大的间隔。

  • remediationHint:描述用户在监视器故障时可以采取的措施。格式为 markdown,可选择性地使用 handlebars变量根据时间序列或其他数据自定义提示(更多说明见下文)。

  • status:可以是 "DISABLED""ENABLED"。确定监视器是否会运行。

  • tags:为监视器添加标签,以帮助在您的 SUSE® Observability 实例的监视器概览中组织它们,http://your-instance/#/monitors

  • identifier:形式为 urn:stackpack:<stackpack-name>:monitor:…​. 的标识符,在更新其配置时唯一标识监视器。

监视器功能

阈值

当给定阈值超过指定指标查询时,触发健康状态。可以在特定资源上设置不同的阈值,借助注释

function: {{ get "urn:stackpack:common:monitor-function:threshold" }}
arguments:
  metric:
    query: string
    unit: string
    aliasTemplate: string
  comparator: GTE | GT | LTE | LT     # how to compare metric value to threshold
  threshold: double
  failureState: CRITICAL | DEVIATING | UNKNOWN
  urnTemplate: string
  titleTemplate: string
  • query:一个 PromQL 查询。使用您的SUSE® Observability实例的度量探索器,http://your-instance/#/metrics,并利用它构建感兴趣的度量查询。

  • unit:查询或查询返回的时间序列中值的单位,用于渲染图表的Y轴。请参阅支持的单元参考以获取所有单元。

  • aliasTemplate:度量图中时间序列的别名。这是一个模板,可以使用`${my_label}`占位符替换时间序列中的标签。

  • comparator:选择LTE/LT/GTE/GT中的一个,以将阈值与度量进行比较。对于`<metric> <comparator> <threshold>`为真的时间序列,将产生故障状态。

  • threshold:用于比较的数值阈值。

  • failureState:可以是"CRITICAL"或"DEVIATING"。"CRITICAL"在SUSE® Observability中显示为红色,而"DEVIATING"显示为橙色,以表示不同的严重性。

  • urnTemplate:构建监视器结果所绑定组件的 urn 的模板为绑定到

  • titleTemplate:监视器结果的标题。由于多个监视器结果可以绑定到同一组件,因此可以使用`${my_label}`占位符替换时间序列标签。

派生状态

根据组件依赖关系(组件健康状态基于观察)来推导其状态。它产生最高严重程度的状态,基于最上层的依赖关系。 有关详细信息,请参见派生状态监视器页面。

function: {{ get "urn:stackpack:common:monitor-function:derived-state-monitor" }}
arguments:
  componentTypes: string
  • componentTypes:对派生状态有贡献的组件类型。 指定为单个字符串的`,`(逗号)分隔值。

拓扑阈值

当给定阈值超过指定指标查询时,触发健康状态。度量查询可以引用拓扑查询返回的组件的名称、标签和属性。可以在特定资源上设置不同的阈值,借助注释

function: {{ get "urn:stackpack:common:monitor-function:topological-threshold"  }}
arguments:
  queries:
    topologyQuery: string
    promqlQuery: string
    aliasTemplate: string
    unit: string
  comparator: GTE | GT | LTE | LT     # how to compare metric value to threshold
  threshold: double
  failureState: CRITICAL | DEVIATING | UNKNOWN
  titleTemplate: string
  • queries:要执行的查询

    • topologyQuery:STQL 查询以选择组件

    • promqlQuery:PromQL 查询可以使用组件的标签和属性来选择时间序列

    • unit:查询或查询返回的时间序列中值的单位,用于渲染图表的Y轴。请参阅支持的单元参考以获取所有单元。

    • aliasTemplate:度量图中的时间序列别名。这是一个模板,可以使用`${my_label}`占位符替换时间序列中的标签。

  • comparator:选择LTE/LT/GTE/GT中的一个,以将阈值与度量进行比较。对于`<metric> <comparator> <threshold>`为真的时间序列,将产生故障状态。

  • threshold:用于比较的数值阈值。

  • failureState:可以是"CRITICAL"或"DEVIATING"。"CRITICAL"在SUSE® Observability中显示为红色,而"DEVIATING"显示为橙色,以表示不同的严重性。

  • titleTemplate:监视器结果的标题。由于多个监视器结果可以绑定到同一组件,因此可以使用`${my_label}`占位符替换时间序列标签。

动态阈值

当当前值超出预测基线区间时会发出警报,该区间是根据历史数据动态计算的,考虑了每周和每日的季节性模式。 此监视器函数仅在安装了自主异常检测堆栈包时可用。

有关详细信息,请参见动态阈值监视器页面。

function: {{ get "urn:stackpack:aad-v2:shared:monitor-function:dt" }}
arguments:
  telemetryQuery:
    query: string
    unit: string
    aliasTemplate: string
  topologyQuery: string
  falsePositiveRate: float
  checkWindowMinutes: integer
  historicWindowMinutes: integer
  historySizeWeeks: 1 | 2 | 3 (integer)
  includePreviousDay: boolean
  removeTrend: boolean
  • telemetryQuery: 用于评估的遥测

    • query:用于基线和异常检测的 PromQL 查询

    • unit:查询或查询返回的时间序列中值的单位,用于渲染图表的Y轴。请参阅支持的单元参考以获取所有单元。

    • aliasTemplate:度量图中的时间序列别名。这是一个模板,可以使用`${my_label}`占位符替换时间序列中的标签。

  • topologyQuery:STQL 查询以选择组件

  • falsePositiveRate: 表示 !!float 1e-8 - 监视器对偏离行为的敏感度。 较低的值会抑制更多(假)正例,但也可能导致假阴性(未被注意的异常)。

  • checkWindowMinutes: 表示 10 分钟 - 检查窗口需要在快速警报(小值)和正确识别异常(大值)之间取得平衡。 在实践中,少量数据点效果良好。

  • historicWindowMinutes: 表示 120(2小时) - 围绕当前时间取值,但可能取自一周前至一周后的数据,即从当前时间前1小时到后1小时。 检查窗口前的2小时也会被使用。 动态阈值监视器将这些历史数据的分布与检查窗口中的数据点进行比较。

  • historySizeWeeks: 表示 2 - 用于历史背景的数据所取的周数。 可以是 1, 23

  • removeTrend: 对于具有趋势行为的指标(例如,请求数量),由于其绝对值每周有所不同,因此可以考虑这一趋势(平均值)。

  • includePreviousDay: 通常 false - 对于没有每周模式而只有每日模式的指标,这允许使用更近期的数据。