Приветствую, уважаемый читатель!
Сегодня хочу коснуться
темы оптимизации подачи информации на дашборды и заодно рассказать про
долгожданное нововведение в работе с токенами, а именно про инициализацию
токенов.
Не
могу себя назвать хорошим критиком SIEM-систем, т.к. не со многими работал, но дашбордов разных
SIEM
видел
много. Есть у них, на мой взгляд, общий недостаток: они или слишком «бедные» или наоборот перегружены
информацией и графиками. Для борьбы с перегрузкой на дашбордах в Splunk существует механизм динамического
собирания запросов из нескольких частей.
Работает
он следующим образом:
Необходимо создать
базовый запрос событий из индекса или sourcetype (global search), а далее при помощи «уточняющих» запросов менять условия
выборки событий для их визуализации. Естественно, SPL-операторы в уточняющем запросе
должны меняться в зависимости от действий пользователя. Связать базовый запрос
с уточняющим запросом, можно передав его в токене. Приступим.
1.
Создадим на дашборде базовый запрос,
получающий события из sourcetype.
Важно отметить, что данный запрос не будет привязан к каким-либо визуальным
элементам или фильтрам.
<search id="base_search">
<query>sourcetype=Apache_access | fields
clientip, method, uri</query>
<earliest>$time_tok.earliest$</earliest>
<latest>$time_tok.latest$</latest>
</search>
Примечание:
a.
У каждого поиска (search) есть свой id, по которому можно унаследовать
базовый поиск какому-либо компоненту.
b.
В базовом запросе при помощи fields необходимо указать все поля,
которые будут использоваться в уточняющем запросе. Если этого не сделать, то
ничего не взлетит J
c.
Для уточняющих запросов наследуется
временной диапазон базового запроса, т.е. нельзя указать в базовом запросе «искать события за месяц», а в
уточняющем «искать за неделю».
2.
Теперь добавим 2 фильтра: временной
фильтр (Time)
и переключатель значений (Radio)
для изменения значений уточняющего запроса.
<fieldset
submitButton="false" autoRun="true">
<input type="time"
token="time_tok">
<label></label>
<default>
<earliest>-30d</earliest>
<latest>now</latest>
</default>
</input>
<input type="radio"
token="radio_token">
<label>Запросы</label>
<choice value="stats count by
clientip">Clientip</choice>
<choice value="stats count by
method">Method</choice>
<choice value="stats values(uri)
as uri,count by clientip">URI</choice>
</input>
</fieldset>
Примечание:
a.
Фактически, при каждом изменении
значения в radio,
обновленная часть уточняющего запроса будет записываться в токен (radio_token).
3.
Теперь мы можем вывести базовый запрос и
уточняющую часть в какой-либо визуальный элемент (в данном примере это таблица).
Причем, никто не мешает вам использовать уточненный запрос в качестве базового,
и дополнительно его скорректировать тем же образом (так я и поступил в Table2). Главное не забывать присваивать
запросам уникальный id.
<row>
<panel>
<table
id="Table1">
<search base="base_search"
id="new_search">
<query>$radio_token$</query>
</search>
</table>
</panel>
<panel>
<table
id="Table2">
<search base="new_search">
<query>$new_token$</query>
</search>
<option
name="drilldown">none</option>
</table>
</panel>
</row>
Примечание:
a.
Уточняющий запрос необходимо прописывать
в теге «query». Естественно и базовая часть и уточняющая должны быть написаны
без ошибок с точки зрения SPL.
b.
Внимательный читатель заметит, что в таблице
«Table2»
в запросе событий указан токен - $new_token$.
Значение в данный токен добавлено на этапе загрузки дашборда. Для этого сразу
после тега «form»
необходимо добавить код ниже:
<init>
<set token="new_token">rename count as
"Количество"</set>
</init>
Для
примера привожу общий код дашборда. Всем удачного использования J
<form>
<label>Post_tokens</label>
<init>
<set
token="new_token">rename count as
"Количество"</set>
</init>
<search
id="base_search">
<query>sourcetype=Apache_access | fields clientip, method,
uri</query>
<earliest>$time_tok.earliest$</earliest>
<latest>$time_tok.latest$</latest>
</search>
<fieldset
submitButton="false" autoRun="true">
<input
type="time" token="time_tok">
<label></label>
<default>
<earliest>-30d</earliest>
<latest>now</latest>
</default>
</input>
<input
type="radio" token="radio_token">
<label>Запросы</label>
<choice
value="stats count by clientip">Clientip</choice>
<choice
value="stats count by method">Method</choice>
<choice
value="stats values(uri) as uri,count by
clientip">URI</choice>
</input>
</fieldset>
<row>
<panel>
<table
id="Table1">
<search base="base_search" id="new_search">
<query>$radio_token$</query>
</search>
</table>
</panel>
<panel>
<table
id="Table2">
<search base="new_search">
<query>$new_token$</query>
</search>
<option name="drilldown">none</option>
</table>
</panel>
</row>
</form>
Комментариев нет:
Отправить комментарий