簡體   English   中英

Elastalert 在一個文件中簡化了多個規則

[英]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 並發送警報。

我不想要多個文件。 很難管理/修改。

我建議你在這樣做之前考慮一下。

為了達到預期的效果:

  1. rule_type作為更改而不是frequency

  2. 保持相同的時間范圍。

  3. 監視status ,以檢查它是否已down

  4. monitor字段上設置過濾器。

  5. alert設置為POST

  6. 您可以擁有自己的后端 API,您可以將其重定向到 - 您可以發送已更改的整個文檔 - 通過它您可以確定哪個domain已關閉。 后端 API 可以寫入域已關閉的索引。 鍵名是domain_name 你可以保留一個計數器類的東西來增加。 我不確定我們是否可以直接發布太 ES。 但是文檔說任何接受 JSON 的端點。

  7. 現在您在新索引上設置了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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM