阈值模式

阈值规则是由阈值模式定义的。该规则将在某个时间间隔内收集一组选定的事件,并在 接收到每个事件后确定是否已符合阈值条件。该规则为全状态规则。

概述

在符合阈值之前,阈值模式将在某个时间段内一直收集 事件。时间段由必需的时间窗口指示,该窗口使用规则语言中的 <timeWindow> 元素定义。

阈值模式将为阈值类型提供以下三个选项:
事件计数阈值
使用该类型的阈值,可定义某个时间段内必须符合事件选择条件的事件的数量。定义 的阈值将与已接受的事件数量进行比较。当事件计数与时间窗口中定义的限制相等时,将符合 该阈值。

该类型的阈值可用于极为简单的事件计数检查。例如,可用于回答以下问题:“是 否在 1 分钟内发生了 5 次登录失败事件?”

该阈值由 <eventCountThreshold> 元素定义。<eventCountThreshold> 元素还指定时间窗口的以下两个可能的时间间隔方式 之一:
固定时间间隔
固定时间间隔在接收到第一个符合事件选择条件的事件时开始, 在发生以下某种情况时结束:
  • 规则在指定的持续时间内符合其阈值。
  • 指定的持续时间已过。
滑动时间间隔
滑动时间间隔在接收到第一个符合事件选 择条件的事件时开始。然而,当规则尚未符合其阈值且指定的持续时间已过时,时间窗口将把开始 时间调整(滑动)为新的“第一个”事件的接收时间,通常情况下为接受的下一个事件。 在发生以下某种情况之前,滑动时间间隔将继续以该方式进行调整:
  • 规则在指定的持续时间内符合其阈值。
  • 在接收到启动时间窗口的事件后,指定的持续时间内未接收到后续事件。
启动时间窗口的事件(成为新的“第一个”事件)为具有符合以下条件的 接收时间的事件:接收时间加上规则的时间间隔持续时间大于当前时间。以下 为公式形式的条件:
事件接收时间 + 规则的时间间隔持续时间 > 当前时间
当不存在此类事件时,滑动时间间隔将无法再调整时间,时间间隔将结束。
计算的阈值
使用该类型的阈值,可编写代码(或者使用他人编写的代码),该代码将对每个已接受事件执 行计算,并将返回计算的阈值(保存在先前定义的变量中)。该计算的阈值将随后与定义的阈值进 行比较,以确定是否符合阈值。

因此,可将复杂计算应用于创建(或更新)计算的阈值(可 能使用从先前事件保存的数据),且规则编写者可以独立于用于计算“计算的阈值”的逻辑来设 置“定义的阈值”。

该类型的阈值可用于将某个值聚集并与定义的阈值进行比较。例如, 可用于计算在某个时间段内对某个客户的销售总额,并将该总额与定义的阈值进行比较。

该阈值由 <computedThreshold> 元素定义。

布尔阈值
使用该类型的阈值,可编写代码(或者使用他人编写的代码),该代码对每个已接受事件返 回值 truefalse。如果值为 true, 则已符合阈值。如果值为 false,则阈值规则将在该时间段结束或接受其他事件之前继续处理。

该类型的阈值可用于检查某个范围的值。例如,如果 CPU 使用率 必须始终介于 30% 和 80% 之间,则该阈值可经常验证使用率是否保持在该范围内。

该阈 值由 <booleanThreshold> 元素定义。

规则响应的运行条件

对于阈值模式,规则响应将在以下时间 运行:
  • 当已符合阈值时,如 <onDetection> 元素定义。
  • 在时间窗口中接受了一个或多个事件但未符合阈值时,如 <onTimeOut> 元素定义。

此规则模式的示例用法

带有事件计数阈值的阈值模式的示例 用法是某个执行以下操作的规则:
如果在 30 秒的滑动时间间隔内,从相同子网发生的 Server unreachable 事件超过 4 次,则该规则将运行操作以检查路由器的状态。
相关参考
阈值规则摘要