Elastalert 在一个文件中简化了多个规则

Posted

技术标签:

【中文标题】Elastalert 在一个文件中简化了多个规则【英文标题】:Elastalert simplified multiple rules in one file 【发布时间】:2020-10-07 10:32:46 【问题描述】:

我正在编写Elastalart 心跳规则,即如果服务或机器停机,我应该得到通知。现在我可以为每个文件创建一个服务规则,如下所示。

name: My Alert
type: frequency
index: heartbeat-*
num_events: 5
timeframe:
    minutes: 2

filter:
- query:
    query_string:
      query: "url.domain: MY_LOCALHOST01.local AND monitor.status: down"

alert:
- "email"

email:
- "user@example.in"

有什么办法,我可以指定多个规则吗??...我可以指定多个过滤器,如下所示

...
filter:
- query: # Filter 1
    query_string:
      query: "url.domain: MY_LOCALHOST01.local AND monitor.status: down"

- query: # Filter 2
    query_string:
      query: "url.domain: MY_LOCALHOST02.local AND monitor.status: down"
...

但 Elatalert 在所有过滤器上都考虑num_events。例如,我不想提醒Filter 1 获得 3 次点击和 Filter 2 获得 2 次点击,即 3+2=5 等于 num_events

那么,num_events 有什么方法可以检查每个过滤器吗?就像如果Filter 1 获得 5 次点击,Filter 2 获得 3 次点击,那么我可以确认 MY_LOCALHOST01 真的 DOWN 并发送警报。

我不想要多个文件。很难管理/修改。

【问题讨论】:

您可以在单独索引的帮助下处理这个问题吗?如果没问题,我怀疑有一种方法。 我没听懂。独立索引是什么意思? 处理规则逻辑并检查是否发生足够的事件以触发警报的索引。 是的,当然。请建议:-) 您的filters 是否基于同一组字段? domain and status? 【参考方案1】:

我建议你在这样做之前考虑一下。

要达到预期的效果:

    rule_type 改为change,而不是frequency

    保持相同的时间范围。

    status 上监控你想检查它是否是down

    monitor 字段上设置过滤器。

    alert设置为POST

    您可以拥有自己的后端 API,您可以将其重定向到 - 您可以发送已更改的整个文档 - 通过它您可以确定哪个 domain 已关闭。后端 API 可以写入域已关闭的索引。键名是domain_name。你可以保留一个计数器类的东西来增加。我不确定我们是否可以直接发布太 ES。但文档说明了任何接受 JSON 的端点。

    现在您在新索引上设置了 frequencyrule。将您的过滤器设置为OR - domain1_down : 5 OR domain2_down:5。您可以使用相同的email 警报。但是您需要从key 中派生出哪个域,或者您可以在索引中再添加一个字段以供警报使用。

这里最棘手的一点是your config says you want to find 5 downtimes of a domain in 2 minutes of timeframe

通过上述步骤,您可以查看它是否下降了 5 次。但不是在 2 分钟的时间范围内。我想你可以通过在额外索引中保留一个字段 previous_down_time 来实现。

实现所需目标的难度更大。我认为没有比维护单独的文件更好的方法了。这并不比这更难。

【讨论】:

在我测试之前我无法接受答案。但是我为您的解决方法提供了赏金 请尝试让我知道。 我认为,github issue 中有类似的问题。 github.com/Yelp/elastalert/issues/2849你觉得,和这个有关系吗 我觉得和这个有关——elastalert.readthedocs.io/en/latest/ruletypes.html#query-key

以上是关于Elastalert 在一个文件中简化了多个规则的主要内容,如果未能解决你的问题,请参考以下文章

ELK日志报警插件ElastAlert

ELK日志报警插件ElastAlert

ElastAlert规则

配置elastalert

elastalert基本配置说明

elasticsearch5之Elastalert 安装使用 配置邮件报警和微信报警