@dostoevskiy54

Как лучше всего вызвать алерт при слишком большом потоке ивентов?

Дано: Сбор логов с nginx посредством syslog с отправкой на другой сервер через udp, стек logstash+elasticsearch, на каждый сайт (их порядка 500) по своему indice формата nginx-

Задача: При превышении заданного порога ивентов в секунду на отдельный сайт (indice) выполнять какое-то действие (условный HTTP GET)
Для контекста: Пытаюсь сделать уведомления о DDoS-атаках на сайты клиентов

Рассматривал варианты:
1) Использовать нативный watcher в elasticsearch, но, я так понимаю, придётся делать по 1 query на каждый indice, чтобы определить кол-во ивентов за последние условные 10с. Мне кажется это создаст большую нагрузку + будет иметь задержку срабатывания.
2) Написать свой сервис и организовать забор ивентов прямо из logstash, далее с помощью алгоритма leaky bucket считать превышение лимита и вызывать своё событие

Подскажите, может быть есть более простые и производительные способы это сделать? Или какие подводные камни могут быть у 2 способа, так как сейчас он мне кажется наиболее оптимальным.
  • Вопрос задан
  • 83 просмотра
Пригласить эксперта
Ответы на вопрос 1
@vitaly_il1
DevOps Consulting
Я бы пошел по первому пути. Или вообще использовал метрики (megabytes/sec), не логи.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы