вторник, 13 июня 2017 г.

Splunk. Post-Process Search. Инициализация токенов.

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

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





Не могу себя назвать хорошим критиком 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.                  Внимательный читатель заметит, что в таблице «Table в запросе событий указан токен - $new_token$. Значение в данный токен добавлено на этапе загрузки дашборда. Для этого сразу после тега «form» необходимо добавить код ниже:

<init>
<set token="new_token">rename count as "Количество"</set>
</init> 

На скриншотах ниже показано, как меняется запрос при переключении в radio:





Для примера привожу общий код дашборда. Всем удачного использования 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>

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

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