[英]Elastalert simplified multiple rules in one file
我正在為心跳編寫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
來實現這一點。
這是實現所需目標的更難的方法。 我認為沒有比維護單獨的文件更好的方法了。 這並不比這更難。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.