Elastalert упростил несколько правил в одном файле - PullRequest
3 голосов
/ 17 июня 2020

Я пишу 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 Ответ

0 голосов
/ 27 июня 2020

Я бы посоветовал вам подумать, прежде чем делать это.

Для достижения ожидаемого результата:

  1. Имейте rule_type как вместо frequency

  2. Сохраните те же временные рамки.

  3. Включите status, чтобы проверить, соответствует ли он down

  4. Установить фильтр для поля monitor.

  5. Установить alert как POST

  6. У вас может быть свой собственный серверный API, на который вы можете перенаправить - вы можете отправить весь документ, который был изменен - ​​через который вы можете определить, какой domain не работает. Backend 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 в дополнительном индексе.

Это более сложный способ добиться того, что необходимо. Я не думаю, что нет другого лучшего способа, чем хранить отдельные файлы. Это не сложнее, чем это.

...