Link Search Menu Expand Document Documentation Menu

anomaly_detector

异常检测器处理器接收结构化数据,并对其中可配置的字段运行异常检测算法。为了使异常检测算法能够检测到异常,数据必须是整数或实数。在异常检测器处理器之前在管道中部署聚合处理器有助于获得最佳结果,因为聚合处理器会自动按键聚合事件并将它们保留在同一主机上。例如,如果您正在搜索来自特定 IP 地址的延迟异常,并且所有事件都发送到同一主机,则该主机将拥有这些事件的更多数据。这些额外的数据会更好地训练机器学习 (ML) 算法,从而实现更好的异常检测。

配置

您可以通过指定键和所选模式的选项来配置异常检测器处理器。您可以使用以下选项配置异常检测器处理器。

名称 必需 描述
keys 一个无序的 List<String>,用作 ML 算法的输入,用于检测列表中键值的异常。至少需要一个键。
mode 用于检测异常的机器学习算法(或模型)。您必须提供一个模式。请参阅random_cut_forest 模式
identification_keys 如果提供,将在该键的每个唯一实例中检测异常。例如,如果提供 ip 字段,则将为每个唯一的 IP 地址单独检测异常。
cardinality_limit 如果使用 identification_keys 设置,将为每个基数程度创建一个新的 ML 模型。这可能会导致大量内存使用,因此设置模型数量的限制会有所帮助。默认限制为 5000。
verbose RCF 将尝试自动学习并减少检测到的异常数量。例如,如果延迟始终在 50 到 100 之间,然后突然跳到 1000 左右,则只会检测到转换后的前一两个数据点(除非有其他峰值/异常)。同样,对于重复到相同水平的峰值,RCF 可能会在最初几次峰值之后消除许多峰值。这是因为默认设置是最小化检测到的警报数量。将 verbose 设置为 true 将导致 RCF 持续检测这些重复情况,这对于检测持续较长时间的异常行为可能很有用。

异常检测器处理器中使用的键存在于输入事件中。例如,如果输入事件是 {"key1":value1, "key2":value2, "key3":value3},则该输入事件中的任何键(例如 key1key2key3)都可以用作异常检测器键,只要其值(例如 value1value2value3)是整数或实数。

random_cut_forest 模式

随机割林 (RCF) 机器学习算法是一种无监督算法,用于检测数据集中异常数据点。为了检测异常,异常检测器处理器使用 random_cut_forest 模式。

名称 描述
random_cut_forest 使用 RCF 机器学习算法处理事件以检测异常。

RCF 是一种无监督机器学习算法,用于检测数据集中的异常数据点。OpenSearch Data Prepper 通过将配置键的值传递给 RCF 来使用 RCF 检测数据中的异常。例如,当发送延迟值为 11.5 的事件时,会生成以下异常事件

  { "latency": 11.5, "deviation_from_expected":[10.469302736820003],"grade":1.0}

在此示例中,deviation_from_expected 是每个键与其对应预期值之间偏差的列表,而 grade 是指示异常严重性的异常等级。

您可以使用以下选项配置 random_cut_forest 模式。

名称 默认值 范围 描述
瓦片大小 4 1–60 ML 算法中使用的瓦片大小。
sample_size 256 100–2500 ML 算法中使用的样本大小。
时间衰减 0.1 0–1.0 ML 算法中使用的时间衰减值。在 ML 算法中用作数学表达式 timeDecay 除以 SampleSize
type metrics 不适用 发送到算法的数据类型。
output_after 32 不适用 指定在输出任何检测到的异常之前要处理的事件数。
version 1.0 不适用 算法版本号。

用法

要开始使用,请创建以下 pipeline.yaml 文件。您可以使用以下管道配置来查找传递给处理器的事件中 latency 字段的异常。然后,您可以使用以下 YAML 配置文件 random_cut_forest 模式来检测异常

ad-pipeline:
  source:
    ...
  ....  
  processor:
    - anomaly_detector:
        keys: ["latency"]
        mode: 
            random_cut_forest:

当您运行异常检测器处理器时,处理器会提取 latency 键的值,然后将该值传递给 RCF ML 算法。您可以将任何包含整数或实数作为值的键配置为异常检测器的键。在以下示例中,您可以将 byteslatency 配置为异常检测器的键。

{"ip":"1.2.3.4", "bytes":234234, "latency":0.2}

剩余 350 字符

有问题?

想贡献?