gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 22:14:19 39 4
gpt4 key购买 nike

我正在为心跳编写 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 确实关闭并发送警报。

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

最佳答案

我建议你在这样做之前三思。

为了达到预期的效果:

  1. rule_typechange而不是频率

  2. 保持相同的时间范围。

  3. 监控状态,因为你想检查它是否down

  4. monitor 字段上设置过滤器。

  5. 设置alertPOST

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

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

这里最棘手的一点是你的配置说你想在 2 分钟的时间范围内找到一个域的 5 个停机时间

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

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

关于elasticsearch - Elastalert 在一个文件中简化了多个规则,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62431835/

39 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com