在elasticalert/ruletypes.py中定义的各种RuleType类构成了ElastAlert背后的主要逻辑。 在每个规则的内存中保存一个实例,通过使用给定的过滤器查询Elasticsearch返回的所有数据,并基于该数据生成匹配。

要选择规则类型,请将type选项设置为规则配置文件中规则类型的名称:

    type:


Any    

any:任何规则将匹配一切。 查询返回的每个命中将生成一个警报。


Change --- 改变

    有关使用此规则类型的示例配置文件,请查看example_rules / example_change.yaml。 

change:此规则将监视某个字段,并在该字段更改时进行匹配。 该领域必须改变具有相同query_key的最后一个事件。 

该规则需要三个附加选项:

    compare_key:要监视更改的字段的名称。 由于这是字符串列表,我们可以有多个键。 如果任何一个字段发生变化,将触发警报。

    ignore_null:如果为true,则没有compare_key字段的事件不会被计数为已更改。 目前这个检查compare_key中的所有字段

    query_key:此规则应用于每个query_key的基础上。 该字段必须出现在所有检查的事件中。

还有一个可选字段:

timeframe:更改之间的最长时间。 在这段时间之后,ElastAlert会忘记旧的价值compare_key字段。


Frequency --- 频率

对于使用此规则类型的示例配置文件,请查看example_rules / example_frequency.yaml。

frequency:当给定时间段内至少有一定数量的事件时,此规则匹配。 这可能

按每查询键计算。

此规则需要两个附加选项:

num_events:将触发警报的事件数量。 时间范围:num_events必须发生的时间。

timeframe:num_events必须发生的时间。

Spike

spike:在给定时间段内事件的体积比前一段时间大或小,这一规则匹配。它使用两个滑动窗口来比较事件的当前和参考频率。我们将这两个窗口称为“引用”和“当前”。

这个规则需要三个附加选项:

spike_height:事件的数量在过去的时间比之前的时间表,当将触发警报。

spike_type:“up”,“down”或“both”。“Up”指的是规则只会在事件的次数被spike_height乘以更高时匹配。“Down”指的是比当前数字高的spike_height。“都”将匹配。

timeframe:该规则将平均在这个时间段内发生的事件的比率。例如,小时:1表示“当前”窗口将从现在到一个小时之前,而“参考”窗口将从一个小时前到两个小时前。该规则将不处于活动状态,直到从第一个事件发生的时间至少为两个时间段。这是为了防止在确定基准率之前触发警报。这可以使用alert_on_new_data覆盖。


Flatline --- 扁平线

flatline:当事件的总数低于给定阈值一段时间时,此规则匹配。 此规则需要两个附加选项:

threshold:不触发警报的最小事件数量。

timeframe:必须包含小于阈值事件的时间段。


Cardinality --- 基数


cardinality:当某个时间范围内特定字段的唯一值总数高于或低于阈值时,此规则匹配。

这条规则要求:

timeframe:计算唯一值数量的时间段。

cardinality_field:用于计算基数的字段。

此规则需要以下两个选项之一:

max_cardinality:如果数据的基数大于这个数字,将会触发警报。 每个提高基数的新事件都会触发警报。

min_cardinality:如果数据的基数低于这个数字,将会触发警报。 在发送任何警报之前,必须从第一个事件开始已经过去了时间范围。 当一场比赛发生时,时间框架将被重置,并且必须在额外的警报之前再度过去。

可选的:

query_key:按此字段计算的组基数。 对于query_key字段的每个唯一值,基数将被分开计数。


Percentage Match ---百分比匹配

percentage_match:当计算窗口内的匹配桶中的文档百分比大于或小于阈值时,此规则匹配。 计算窗口默认为buffer_time。

这条规则要求:

match_bucket_filter:ES过滤DSL。 这为匹配桶定义了一个过滤器,它应该匹配主查询过滤器返回的文档的一个子集。

doc_type:指定要搜索的文档的_type。

此规则还需要以下两个选项中的至少一个:

min_percentage:如果匹配文件的百分比小于这个数字,就会触发警报。

max_percentage:如果匹配文档的百分比大于这个数字,将会触发警报。