Уведомление по электронной почте с помощью Logstash

Я настроил стек лося (Logstash, Elastic search и kibana), и у нас есть собственный файл журнала, как показано ниже.

05 / август / 2015: 16: 55: 10: www. ****. Com: statuscode = 200: время загрузки в секундах = 0,734 05 / август / 2015: 16: 55: 11: ****. My : statuscode = 403: Время загрузки в секундах = 0,340 05 / Август / 2015: 17: 00: 01: www. ****. mx: statuscode = 200: время загрузки в секундах = 2.282 05 / август / 2015: 17: 00: 03: www. ****. my: statuscode = 200: время загрузки в секундах = 2,663 05 / август / 2015: 17: 00: 06: www. ****. co.id: statuscode = 200: время загрузки в секундах = 1,455 05 / август / 2015: 17: 00: 08: ****. ****. my: statuscode = 200: время загрузки в секундах = 1,684

Я успешно настроил этот журнал в logstash, и он правильно отображается в Kibana. Теперь я хочу настроить оповещение по электронной почте, если какой-либо из вышеуказанных веб-сайтов в журналах постоянно показывает код состояния 504 или 403 для более чем 5 отсчетов. Я знаю, что мне нужно добавить фильтр, соответствующий шаблону файла журнала. Но поскольку это настраиваемый журнал, я не могу этого сделать.


person Manoj J    schedule 05.08.2015    source источник


Ответы (4)


Лучше всего написать собственный скрипт, я сделал это на Python.

Необходимо следующее:

  • Скрипт будет запланирован и будет искать результат в Elasticsearch.
  • Как только результат будет найден, вы вызовете реакцию.
  • Если у вас есть система мониторинга, вы можете отправить в эту систему триггер, чтобы иметь один централизованный интерфейс.
  • Если вам просто нужно электронное письмо, вы можете использовать python для отправки электронного письма с результатом, включая количество обнаруженных ошибок, имя сервера и любую другую информацию, которая поможет вам отладить проблему.
  • Если вы запускаете скрипт каждые 10 минут, он должен искать в базе данных Elasticsearch события за последние 10 минут, если вы запускаете его один раз в час, он должен искать данные за последний час.
  • Вы можете использовать cron для планирования сценария, но вам нужно будет найти способ отслеживать его в случае сбоя, я использую для этого rundeck, и он отправляет мне электронное письмо, если одно из моих заданий не удается.

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

Другой вариант может заключаться в том, чтобы дождаться плагина наблюдателя от Elastic, из сообщения на своем сайте они планируют добавить к нему графический интерфейс, как только выйдет официальная версия GA, я не знаю, когда это произойдет, но это может будет лучшим решением, даже если оно будет более ограниченным, чем работа с python.

person Tom Kregenbild    schedule 09.08.2015

Другой проект - elastalert.

Это открытый исходный код. Вы также можете найти вводные сообщения в блоге: http://engineeringblog.yelp.com/2015/10/elastalert-alerting-at-scale-with-elasticsearch.html http://engineeringblog.yelp.com/2016/03/elastalert-part-two.html

Особенно полезно преобразование правил Kibana.

person Christian    schedule 27.05.2016

Поскольку ваше состояние довольно сложное (количество различных кодов ответа с течением времени), я бы отговорил от этого с помощью logstash.

Однако это именно то, для чего предназначен плагин elasticsearch Watcher. Вы можете использовать Watcher для поиска определенных кодов ответов и укажите условия (например, подсчитайте больше 5) и расписания для отправки электронной почты.

Я бы порекомендовал вам взглянуть на введение в elastic. Я почти уверен, что это подойдет для вашей цели.

person hurb    schedule 05.08.2015
comment
И если вы не в состоянии платить за поддержку, чтобы получить наблюдателя, написать свой собственный опрос тоже очень легко. - person Alain Collins; 06.08.2015

Вы можете использовать такой сервис, как Logz.io, который поможет вам в этом. Если вы доставляете до 1 ГБ в день (30 ГБ в месяц), это бесплатно.

person Tomer Levy    schedule 08.08.2015