Приветствую,
уважаемый читатель!
Сегодня
продолжим расширять познания о способах визуализации событий в Splunk и рассмотрим, как наглядно можно
отразить на дашборде аномальную/повышенную активность.
Для
создания временных диаграмм и визуализации активности можно воспользоваться
специальным SPL-оператором
– timechart,
который обладает очень широкой функциональностью (почитать можно тут - https://unitybas.blogspot.ru/2016/11/splunk-spl-stats-eventstats-streamstats.html).
Сразу скажу, что все примеры будут выполняться над логом Apache.
Вбиваем
запрос:
sourcetype=Apache_access
|
timechart count
Перед
нами типичное распределение полученных событий по временной шкале, с видимыми
всплесками активности:
Чтобы
картина была более наглядна, необходимо посчитать и отразить на графике среднее
количество событий для заданного временного интервала.
sourcetype=Apache_access
| timechart count
| eventstats avg(count) as
average_value
После
выполнения данного запроса на графике будет отражено среднее количество событий
для всего заданного интервала времени. SPL-оператор eventstats позволяет
привязывать к событиям статистические подсчеты.
Способ
отображения среднего значения на графике можно слегка изменить на манер
потоковых подсчетов (streamstats),
т.е. средне значение будет пересчитываться для временного диапазона после
каждого полученного события или, наоборот, в случае отсутствия новых полученных
событий. Сложно, лучше покажу J
sourcetype=Apache_access
| timechart count
| streamstats avg(count) as
average_value
Какая
тут идея - мы получили новое событие и, соответственно, необходимо пересчитать
среднее значение для временного отрезка на диаграмме. В нашем примере отрезок
составляет 30 минут (на скриншоте ниже приведена динамика изменения среднего
значения на каждом отрезке), и его длительность можно редактировать в параметрах
оператора timechart
(span).
Итак,
что мы получили? Наглядное представление, что периодически возникают всплески,
которые значительно превышают среднее количество событий для выбранного sourcetype, т.е. какого-либо
объекта мониторинга.
Для
некоторых случаев такой визуализации хватит (например, если мы осуществляем
мониторинг возникающих критических событий безопасности, типа срабатывания
сигнатур IDS),
а вот если мы осуществляем мониторинг активности пользователей в информационной
системе, тут простой всплеск событий не является однозначно плохой ситуацией, и
нужно иметь возможность отразить активность каждого конечного пользователя или
группы пользователей. Одно допущение,
т.к. в тестовой среде Splunk
у меня не подключены информационные системы, в качестве имени пользователя
будет выступать IP-адрес
из лога Apache.
Если
попробовать просто изменить условие оператора timechart для отображения
информации по каждому IP,
то получим ужас из которого ничего непонятно J
sourcetype=Apache_access
| timechart count by
clientip
| eventstats avg(count) as
average
Пришлось
слегка подумать, и разделить запрос на 2 части:
1. Получение
единого среднего количества событий для всех пользователей.
2. Добавление
этого значения на график для всех пользователей.
sourcetype=Apache_access
| eval average =
[search sourcetype=Apache_access
| transaction clientip
| eventstats avg(eventcount)
as average_by_ip
| eval
average_by_ip=round(average_by_ip,0)
|
return $average_by_ip]
|
stats count by clientip,average
Теперь видно, что
3 пользователя проявляют повышенную активность, выходящую за средние рамки, и
можно поинтересоваться, что конкретно они делают J
Немного поясню
запрос:
|
transaction
clientip,
разделяем все события на блоки по полю – clientip (наш аналог имени
пользователя), и для каждого блока автоматически создается поле – eventcount, которое содержит
количество событий в блоке;
|
return $average_by_ip, передаем в основной запрос получившееся среднее значение
для всех пользователей системы;
Чтобы всё красиво
выглядело, нужно немного изменить настройки «Format Visualization» как на скриншоте ниже.
Собственно, задача
решена J
Комментариев нет:
Отправить комментарий