суббота, 16 марта 2019 г.

graylog - потоки и оповещения



После небольшого обзора graylog в прошлый раз перейдем к рассмотрению практических задач.
И начнем с простого, задача на сегодня - это выявлять попытки подбора паролей по ssh.









Первым делом создадим новый stream.
Для этого нужно перейти в Streams и нажать "Create Stream".
К слову, можно заметить, что по дефолту уже создан поток, который собирает все входящие сообщения.

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




Graylog использует для хранения данных индексы Elasticsearch.
Такие индексы - это что-то наподобие баз данных в классических реляционных СУБД.
И соответственно graylog позволяет управлять этими индексами, задавать когда производить ротацию и как их хранить.
Ротация может происходить по достижению определенного количества сообщений, после занятия места на диске или по указанному времени.

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

Сам по себе поток бесполезен, нужно создать правила, которые будут отбирать интересующие сообщения, поэтому нажимаем кнопку "Manage Rules".
Сразу попадаем в раздел где можно добавлять новые правила и сразу же тестировать их на произвольных сообщениях.
Это очень удобная фича и она будет прослеживаться и в других разделах graylog.
В свежесозданном потоке нет никаких правил поэтому нажимаем кнопку "Add stream rule".
Выплывает новое окно где нужно заполнить название поля (по которому будет работать правило), тип (чаще всего это будет match regular expression) и собственно значение - регулярное выражение, которое будет отбирать из общего потока входящих сообщений только те что нужны.




Напомню, что точка - это любой символ в регулярных выражениях,  а "+" в данном случае говорит что любых символов может быть любое количество.

Понятно, что правил может быть много, и поведение здесь возможно в двух вариантах - сообщение должно подпасть под все правила, либо хотя бы под одно правило. И только тогда сообщение попадет в поток.

Теперь, можно сразу же никуда не уходя проверить работу правил. Для этого нужно указать id сообщения и в каком индексе оно находится, и затем нажать кнопку "Load message".








И здесь мы наблюдаем, что сообщение успешно подпадает под созданное правило.
Стоит помнить, что уже сохраненные сообщения в свежесозданный поток не попадут, вся наша работа нацелена на сообщения которые будут приходить в будущем.

После того как создание правил закончено можно нажимать кнопку  "I'm done!" и тем самым мы возвращаемся в список всех созданных потоков.

Теперь можно заняться настройкой уведомлений и алертов.
Можно либо перейти в основной раздел "Alerts", там создавать условия и уведомления, а потом подключить их к потоку, либо же просто нажать кнопку "Manage Alerts" раз уж мы и так находимся в разделе потоков.
Нажав эту кнопку мы попадаем в раздел где наблюдаем все нерешенные алерты, условия и уведомления по выбранному потоку.
По дефолту конечно же везде будет пусто.
Начнем с создания условий, кнопка "Add new condition".
Тут всё очень просто, поток уже выбран, нужно выбрать только тип условия - а их всего три.
Условие по количеству сообщений - это условие сработает, когда  поток получит больше чем Х сообщений за последние Y минут.
Таким образом можно создать потоки под каждое сообщение с ошибкой и всегда быть в курсе если что-то пойдет не так.
Второй вариант - это условие агрегации поля, оно срабатывает каждый раз, когда результат статистического вычисления числового поля сообщения выше или ниже заданного порогового значения.
Это условие хорошо подойдет для мониторинга проблем с производительностью.
И последний вариант - это условие по содержимому поля сообщения. Такое условие сработает, когда поток получит хотя бы одно сообщение в котором поле будет иметь заданное значение. Не рекомендуется использовать его для анализа таких полей как message или full_message, потому что можно легко получить неожиданные  результаты и неожиданные алерты.
Так же, нужно помнить, что при срабатывании условия возникает только одно оповещение (во время интервала оповещения, который задается в конфиге опцией alert_check_interval) даже если изменений было множество.

Для нашего примера будет достаточно самого простого условия "Message Count Alert Condition".
При нажатии кнопки "Add alert condition" всплывает окно с настройками условия.
Как минимум нужно указать название и пороговое значение - threshold.




После создания условия появится кнопка "Test", с помощью которой можно проверить выполняется ли в данный момент условие.

Далее, в самом низу раздела Alerting overview, можно создать и непосредственно само уведомление нажав на кнопку "Add new notification".
В опенсорсной версии graylog будет всего два типа уведомлений - отправка на почту и http callback.
Для того чтобы письмо смогло дойти предварительно нужно прописать все необходимые параметры (http://docs.graylog.org/en/3.0/pages/configuration/server.conf.html#email-config) в основном конфиге graylog.

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

И если условия выполнятся, то мы получим соответствующее оповещение:




Выбрав его, можно будет сразу же увидеть и содержимое сообщений, которые вызвали срабатывание условий оповещения.


Комментариев нет:

Отправить комментарий