среда, 6 апреля 2016 г.

Splunk. Немного о Dashboard

Приветствую, уважаемый читатель!


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


Начнем с простого, для чего могут быть необходимы дашборды в SIEM? Я выделяю две основные идеи, во-первых, конечно, для наглядной визуализации событий, в которых мы по каким-то критериям производим фильтрацию (объекты сетевой инфраструктуры, типы событий, сенсоры их породившие и т.д.), во-вторых дашборды в splunk хранят конкретные запросы к данным, и у нас нет необходимости постоянно помнить синтаксис кучи запросов.


Очень грубо можно назвать дашборд контейнером для запросов, которому мы средствами XML, CSS, JS, HTML придаём нужный вид. Начнем J




Для перехода в раздел дашбордов можно перейти по ссылке <ip_splunk_server:8000>/en-US/app/search/dashboards или нажать на кнопку "Dashboards" в приложении "Search&Reporting". Для создания нового, нажмите на кнопку "Create new dashboard" и в появившемся окне заполните предложенные поля (ID и название дашборда).



Обобщенно, все элементы на дашбордах в splunk можно разделить на два типа:

Панели (Panel), которые предназначены для собственно визуализации событий, полученных в результате выполнения запроса.
Селекторы (Input), которые предназначены для фильтрации и выборки событий.

Для добавления любого компонента на дашборд необходимо нажать на кнопку "Edit - Edit Panels", дашборд перейдет в режим редактирования и появится панель выбора компонентов.



Для примера создадим дашборд, отображающий события из журнала веб-сервера Apache. В качестве параметра будем передавать IP-адрес запросившего ту или иную страницу.

1) Первое – необходим запрос для получения событий из журнала:

sourcetype=Apache_access
| table _time,clientip,uri,referer,useragent





2) Пишем запрос для получения нескольких IP-адресов, с которых были обращения к web-серверу:

sourcetype=Apache_access
| stats count by clientip
| head 4 | fields – count





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

3) Нажмите на кнопку «Add Panel» и в разделе «New» выберите элемент Statistics Table. И в разделе «Search String» вбейте запрос из пункта 1. После этого нажмите на кнопку «Add to Dashboard». В рабочей области дашборда появится панель с результатами запроса.





4) Нажмите на кнопку «Add Input» и выберите элемент – Dropdown.  На дашборде появится новый селектор.

5) Нажмите на кнопку в виде карандаша у добавленного селектора и введите значения как на скрине ниже (имя селектора и имя токена):



Дополнительно в разделе Static Option необходимо внести 4 IP-адреса, которые получены на шаге 2.




6) Теперь, когда у нас есть панель для отображения результатов запроса и селектор, который может использоваться для выбора значения IP-адреса источника, настало время их связать друг с другом. Механизм связывания называется – токены (объяснение принципа работы в конце поста).

На дашборде нажмите «Edit - Edit Panels» и далее в панели для результатов запроса нажмите на кнопку в виде лупы и выберите «Edit Search String». 




7) В открывшемся окне добавить к запросу clientip=$ip_tok$. Далее кнопку «Save» - «Done».

sourcetype=Apache_access clientip=$ip_tok$
| table _time,clientip,uri,referer,useragent

  
Результат должен быть как на скрине ниже.




Всё, простейший дашборд готов. Как это работает: при изменении значения в элементе Dropdown, выбранное значение попадает в токен – ip_tok, который фигурирует в запросе на получение результатов. Как только splunk увидел, что значение токена обновилось, автоматически пересчитываются запросы в которых этот токен фигурирует. Пересчитываются все запросы на дашборде.


Надеюсь немного ясности внёс.




Лирические отступления

Что такое токен? Фактически это переменная, в которую можно записать какое-либо значение. В отличие от языков программирования, где вы может объявить переменную в любом месте, на дашбордах все токены привязаны к действиям пользователя или к выполнению конкретного запроса. 


Какие виды дашбордов бывают? В принципе, можно выделить 2 вида дашбордов: real-time дашборды и статистические дашборды. Как понятно из названия, первые предназначены для постоянного отображения и обновления данных в виджетах. Проще говоря, запрос поставляющий данные для виджета с определенным интервалом будет постоянно выполняться и полученные события прилетят в виджет. В статистических дашбордах наборы данных меняются только при изменении значения какого-либо селектора (или при помощи особой xml-магии J). Причем есть особенность, на одном дашборде могут быть как real-time компоненты, так и статистические, но я не сторонник этого.


Где хранятся дашборды? Как уже говорилось ранее, дашборды в splunk – это XML-файлы. У каждого приложения могут быть свои дашборды, которые физически хранятся в директории - /opt/splunk/etc/apps/«имя приложения»/local/data/ui/views.


Виды запросов для элементов? Я думаю, вы заметили, что у каждого селектора есть 2 раздела «Static Options» и «Dynamic Options», их основное отличие следующее: в первом случае значения для селектора вбиваются вручную, во втором случае – они получаются в результате запроса. Важный момент – необходимо соблюсти условие уникальности элементов селектора. Про динамическое вычисление элементов селектора я планирую написать отдельно.



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

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