вторник, 21 февраля 2017 г.

Splunk. Тренды в Single Value

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


Продолжая тему визуализации данных в Splunk, хотел бы поделиться опытом настройки новых возможностей визуального элемента «Single Value». Теперь его возможности позволяют создавать весьма полезные дашборды.




Задача данного поста:

Получить дашборд, содержащий информацию о полученных HTTP-запросах (GETPOSTHEAD) за определенный период времени. Дополнительно необходимо отразить тренды к увеличению или уменьшению количества запросов.


1.                  Пишем исходные запросы на SPL

sourcetype=Apache_access method="GET" | timechart span=4h count by method
sourcetype=Apache_access method="POST" | timechart span=4h count by method
sourcetype=Apache_access method="HEAD" | timechart span=4h count by method


Данные запросы возвращают количество HTTP-запросов, выполненных за 4-х часовые интервалы времени. Задание интервалов это обязательное условие для отображения трендов к увеличению или уменьшению.

Результат данных запросов ниже:



1.                  Добавление на дашборд необходимых фильтров

Нам необходимы 2 фильтра, один типа «Time» и один типа «DropDown». Фильтр «Time» необходим для задания временного диапазона поиска событий. Фильтр «DropDown» необходим для задания тренд-интервалов, т.е. значения в фильтре «DropDown» делят на части временной диапазон в фильтре «Time»
Оба фильтра будут передавать значения в SPL-запросы через соответствующие токены (time_tok, ptok).

XML код данных фильтров ниже:

 <input type="time" token="time_tok" searchWhenChanged="true">
      <label> Период времени событий </label>
      <default>
        <earliest>-24h@h</earliest>
        <latest>now</latest>
      </default>
</input>

<input type="dropdown" token="ptok">
      <label>Тренд интервал </label>
      <choice value="1h">1</choice>
      <choice value="4h">4</choice>
      <choice value="12h">12</choice>
      <choice value="24h">24</choice>
</input>

2.                  Добавление на дашборд визуальных элементов Single Value

Для каждого из SPL-запросов необходимо добавить по одному визуальному компоненту «Single Value», в который передаются значения из фильтров. Для примера приведу XML-код «Single Value», предназначенный для отображения количество GET-запросов.

<single>
        <search>
          <query>sourcetype=Apache_access method="GET" | timechart span=$ptok$ count by method</query>
          <earliest>$time_tok.earliest$</earliest>
          <latest>$time_tok.latest$</latest>
        </search>
        <option name="trendColorInterpretation">standard</option>
        <option name="trendDisplayMode">percent</option>
        <option name="trendInterval">-$ptok$</option>
        <option name="colorBy">trend</option>
        <option name="colorMode">block</option>
        <option name="numberPrecision">0</option>
        <option name="showTrendIndicator">1</option>
        <option name="showSparkline">1</option>
        <option name="useColors">1</option>
        <option name="useThousandSeparators">1</option>
        <option name="display.visualizations.singlevalueHeight">143</option>
        <option name="underLabel">4 hour dynamic</option>
        <option name="linkView">search</option>
        <option name="drilldown">none</option>
        <option name="beforeLabel">HTTP GET</option>
      </single>

Пояснение:

1)                  | timechart span=$ptok$ count by method  

Данный оператор (timechart) разделяет все отобранные события на интервалы длительностью, указанной в токене «ptok». Значения для данного токена заданы в фильтре типа «DropDown».

2)                  <earliest>$time_tok.earliest$</earliest>
              <latest>$time_tok.latest$</latest>

Данный XML-код указывает, что интервал поиска событий для Single Value задаётся с помощью фильтра типа Time, и предаётся через токен «time_tok».

3)                 <option name="trendInterval">-$ptok$</option>

Данный XML-код указывает, что для отображения тренда используется шаг с уменьшением на интервал, указанный в токене «ptok».


В итоге у вас получится следующий дашборд:



Как вы видите, количество HTTP GET-запросов равно 37 (это количество запросов, выполненных за 4 часа) с трендом к увеличению на 236%. Это значит, что за прошедшие 4 часа HTTP GET-запросов выполнено на 236% больше, чем за интервал от 8 до 4 часов назад. На линии тренда (sparkline) жирным выделением показан отрезок времени, по которому рассчитан процент для тренда.

Если открыть запрос визуального элемента «Single Value» в табличном виде, то вы увидите:



С 03.00 до 07.00 выполнено 11 запросов, а с 07.00 до 11.00 выполнено 37 запросов, соответственно рост на 236%.


Полный код дашборда приведен ниже:

<form>
  <label>Тренд</label>
  <fieldset submitButton="false">
    <input type="time" token="time_tok" searchWhenChanged="true">
      <label>Период времени событий</label>
      <default>
        <earliest>-24h@h</earliest>
        <latest>now</latest>
      </default>
    </input>
    <input type="dropdown" token="ptok">
      <label>Тренд интервал</label>
      <choice value="1h">1</choice>
      <choice value="4h">4</choice>
      <choice value="12h">12</choice>
      <choice value="24h">24</choice>
    </input>
  </fieldset>
  <row>
    <panel>
      <single>
        <search>
          <query>sourcetype=Apache_access method="GET" | timechart span=$ptok$ count by method</query>
          <earliest>$time_tok.earliest$</earliest>
          <latest>$time_tok.latest$</latest>
        </search>
        <option name="trendColorInterpretation">standard</option>
        <option name="trendDisplayMode">percent</option>
        <option name="trendInterval">-$ptok$</option>
        <option name="colorBy">trend</option>
        <option name="colorMode">block</option>
        <option name="numberPrecision">0</option>
        <option name="showTrendIndicator">1</option>
        <option name="showSparkline">1</option>
        <option name="useColors">1</option>
        <option name="useThousandSeparators">1</option>
        <option name="display.visualizations.singlevalueHeight">143</option>
        <option name="underLabel">4 hour dynamic</option>
        <option name="linkView">search</option>
        <option name="drilldown">none</option>
        <option name="beforeLabel">HTTP GET</option>
      </single>
    </panel>
    <panel>
      <single>
        <search>
          <query>sourcetype=Apache_access method="POST" | timechart span=$ptok$ count by method</query>
          <earliest>$time_tok.earliest$</earliest>
          <latest>$time_tok.latest$</latest>
        </search>
        <option name="trendColorInterpretation">standard</option>
        <option name="trendDisplayMode">percent</option>
        <option name="trendInterval">-$ptok$</option>
        <option name="colorBy">trend</option>
        <option name="colorMode">block</option>
        <option name="numberPrecision">0</option>
        <option name="showTrendIndicator">1</option>
        <option name="showSparkline">1</option>
        <option name="useColors">1</option>
        <option name="useThousandSeparators">1</option>
        <option name="display.visualizations.singlevalueHeight">143</option>
        <option name="underLabel">4 hour dynamic</option>
        <option name="linkView">search</option>
        <option name="drilldown">none</option>
        <option name="beforeLabel">HTTP POST</option>
      </single>
    </panel>
    <panel>
      <single>
        <search>
          <query>sourcetype=Apache_access method="HEAD" | timechart span=$ptok$ count by method</query>
          <earliest>$time_tok.earliest$</earliest>
          <latest>$time_tok.latest$</latest>
        </search>
        <option name="trendColorInterpretation">standard</option>
        <option name="trendDisplayMode">percent</option>
        <option name="trendInterval">-$ptok$</option>
        <option name="colorBy">trend</option>
        <option name="colorMode">block</option>
        <option name="numberPrecision">0</option>
        <option name="showTrendIndicator">1</option>
        <option name="showSparkline">1</option>
        <option name="useColors">1</option>
        <option name="useThousandSeparators">1</option>
        <option name="display.visualizations.singlevalueHeight">143</option>
        <option name="underLabel">4 hour dynamic</option>
        <option name="linkView">search</option>
        <option name="drilldown">none</option>
        <option name="beforeLabel">HTTP HEAD</option>
      </single>
    </panel>
  </row>
</form>



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

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