elasticsearch - Elastalert 在一个文件中简化了多个规则
问题描述
我正在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 并发送警报。
我不想要多个文件。很难管理/修改。
解决方案
我建议你在这样做之前考虑一下。
为了达到预期的效果:
改成零钱
rule_type
_ _frequency
保持相同的时间范围。
根据您的需要进行监控
status
以检查它是否down
monitor
在字段上设置过滤器。设置
alert
为POST您可以拥有自己的后端 API,您可以将其重定向到 - 您可以发送已更改的整个文档 - 通过它您可以确定哪个
domain
已关闭。后端 API 可以写入域已关闭的索引。键名是domain_name
. 你可以保留一个计数器类的东西来增加。我不确定我们是否可以直接发布太 ES。但是文档说任何接受 JSON 的端点。现在您已经
frequency
在新索引上设置了规则。将您的过滤器设置为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
在额外索引中保留一个字段来实现这一点。
这是实现所需目标的更难的方法。我认为没有比维护单独的文件更好的方法了。这并不比这更难。
推荐阅读
- excel - VBA用excel公式评估
- android - 使用节点时,数组名称不显示在 json 输出中
- r - 在 Rstudio 中设置 Git
- vba - VBA宏数据粘贴多张表
- electron - 如何在电子应用程序中显示电子环境的版本?
- php - 在没有 JS 的 PHP (laravel) 上生成服务器端图表。现在实际情况如何?
- javascript - 由于调试器,Jquery 事件(例如单击)触发了两次
- environment-variables - 从 configmap 中编写环境变量
- javascript - AngularJS ng-if 指令使用不返回值的函数
- java - 如何在Java中并行调用多个rest api?