正在加载

创建自定义阈值规则

注意

对于可观测性无服务器项目,需要编辑器角色或更高才能创建自定义阈值规则。要了解更多信息,请参阅分配用户角色和权限

创建自定义阈值规则,以便在 Elastic Observability Serverless 数据类型达到或超过给定值时触发警报。

  1. 要访问此页面,请从主导航中选择 警报
  2. 单击 管理规则 创建规则
  3. 选择规则类型 下,选择 自定义阈值
Rule details (custom threshold)

指定以下设置来定义规则应用的数据

  • 选择数据视图: 单击数据视图字段以搜索和选择指向您正在为其创建规则的索引或数据流的数据视图。您也可以通过单击 创建数据视图 来创建一个新的数据视图。有关创建数据视图的更多信息,请参阅 创建数据视图
  • 定义查询过滤器(可选): 使用查询过滤器来缩小规则应用的数据范围。例如,使用查询过滤器 host.name:host-1 将查询过滤器设置为特定主机名,以便仅将规则应用于该主机。

设置规则的条件,以使用聚合、公式和阈值来检测。

聚合汇总您的数据,使其更易于分析。设置以下任何聚合类型以收集数据来创建您的规则:AverageMaxMinCardinalityCountSum, PercentileRate。有关这些选项的更多信息,请参阅 聚合选项

例如,要收集日志级别为 warn 的日志文档总数

  1. 聚合 设置为 计数 ,并将 KQL 过滤器 设置为 log.level: "warn"
  2. 将阈值设置为 IS ABOVE 100,以便在日志级别为 warn 的日志文档数达到 100 时触发警报。

使用您的聚合设置公式。根据公式的结果,设置一个阈值以定义何时触发警报。公式使用基本数学或布尔逻辑。有关可能的用例,请参阅以下示例。

添加、减去、乘以或除以您的聚合,以定义警报的条件。

示例: 设置一个公式和阈值,以便在指标高于阈值时触发警报。对于此示例,我们将使用平均 CPU 使用率 - 除 idleIOWait 之外的状态中花费的 CPU 时间百分比,并按 CPU 核心数进行归一化 - 并在 CPU 使用率高于特定百分比时触发警报。为此,请设置以下聚合、公式和阈值

  1. 设置以下聚合

    • 聚合 A: 平均 system.cpu.user.pct
    • 聚合 B: 平均 system.cpu.system.pct
    • 聚合 C: 最大 system.cpu.cores
  2. 将公式设置为 (A + B) / C * 100

  3. 将阈值设置为 IS ABOVE 95,以便在 CPU 使用率高于 95% 时发出警报。

将条件运算符和比较运算符与您的聚合一起使用,以定义警报的条件。

示例: 设置一个公式和阈值,以便在有状态 Pod 的数量与所需 Pod 的数量不同时触发警报。对于此示例,我们将使用 kubernetes.statefulset.readykubernetes.statefulset.desired,并在它们的值不同时触发警报。为此,请设置以下聚合、公式和阈值

  1. 设置以下聚合

    • 聚合 A: 总和 kubernetes.statefulset.ready
    • 聚合 B: 总和 kubernetes.statefulset.desired
  2. 将公式设置为 A == B ? 1 : 0。如果 A 和 B 相等,则结果为 1。如果它们不相等,则结果为 0

  3. 将阈值设置为 IS BELOW 1,以便在结果为 0 且字段值不匹配时触发警报。

预览图表提供了与您的配置匹配的条目数量的可视化。阴影区域显示您设置的阈值。

如果您使用 按以下项对警报分组 选项,则最大条形图大小将为 3。它只会显示前 3 个字段。

为自定义阈值规则设置一个或多个 按以下项对警报分组 字段,以针对所选字段执行复合聚合。当这些组中的任何一个与所选规则条件匹配时,将按组触发警报。

当您选择多个分组时,组名称将以逗号分隔。

例如,如果您按 host.namehost.architecture 字段对警报进行分组,并且有两个主机 (Host AHost B) 和两个架构 (Architecture AArchitecture B),则复合聚合会形成多个组。

如果 Host A, Architecture A 组与规则条件匹配,但 Host B, Architecture B 组不匹配,则会为 Host A, Architecture A 触发一个警报。

如果您选择一个字段(例如 host.name),并且 Host A 匹配条件但 Host B 不匹配,则会为 Host A 触发一个警报。如果两个组都匹配条件,则会为两个组触发警报。

可以选择配置规则,以便在以下情况下触发警报

  • 没有数据,或者
  • 先前检测到的组停止报告数据。

为此,请选择 如果没有数据,则提醒我

警报的行为取决于是否指定了任何 按以下项对警报分组 字段

  • 没有“按以下项对警报分组”字段:(默认)如果在预期的时间段内条件未能报告数据,或者规则未能查询 Elasticsearch,则会触发“无数据”警报。此警报表示出现问题,并且没有足够的数据来评估相关的阈值。

  • 具有“按以下项对警报分组”字段:如果先前检测到的组停止报告数据,则会为缺少的组触发“无数据”警报。

    例如,考虑一个场景,其中 host.name 是 CPU 使用率高于 80% 的 按以下项对警报分组 字段。首次运行规则时,两个主机报告数据:host-1host-2。第二次运行规则时,host-1 未报告任何数据,因此为 host-1 触发“无数据”警报。当规则再次运行时,如果 host-1 再次开始报告数据,则会出现几种可能的场景

    • 如果 host-1 报告 CPU 使用率数据,并且它高于 80% 的阈值,则不会触发新警报。相反,现有警报会从“无数据”更改为违反阈值的触发警报。请记住,在这种情况下不会发送任何通知,因为仍然存在未解决的问题。
    • 如果 host-1 报告的 CPU 使用率低于 80% 的阈值,则警报状态将更改为已恢复。
注意

如何取消跟踪已停用的主机

如果主机(例如,host-1)已停用,您可能不再希望看到有关它的“无数据”警报。要将警报标记为未跟踪:转到“警报”表,单击 更多操作 图标以展开“更多操作”菜单,然后单击标记为未跟踪

您可以使用与第三方系统交互、写入日志或索引或发送用户通知的操作来扩展您的规则。您可以随时向规则添加操作。您可以创建不添加操作的规则,也可以为单个规则定义多个操作。

要向规则添加操作,您必须首先为该服务(例如,电子邮件或外部事件管理系统)创建一个连接器,然后您可以将其用于不同的规则,每个规则都有自己的操作频率。

© . All rights reserved.