среда, 27 июля 2016 г.

Splunk. Dashboards. Добавляем динамики

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

Хотел бы продолжить тему разработки дашбордов в Splunk для визуализации событий. При определенных усилиях дашборды в Splunk можно превратить в очень мощный и динамичный инструмент для проведения аналитики. Сегодня мы исследуем возможности визуального элемента Statistic Table, а именно научимся совершать из таблицы переходы на внешние ресурсы и передавать токены из таблицы в произвольный элемент и т.д.




Итак, как я уже говорил ранее, дашборд в Splunk – это особенным способом оформленный XML-файл, в котором описаны параметры каждого визуального элемента. Эти параметры могут настраиваться как в GUI каждого компонента, так и дописываться ручками в теле самого XML-файла. 

Для экспериментов воспользуемся запросом из поста, посвященного контролю usb-носителей и создадим на его основании дашборд. 

sourcetype=usb Hostname=Host CollectTime="2016-02-05 13:39:54"
| join type=inner USBVendor USBProduct [| inputcsv Device.csv | eval USBVendor = upper(USBVendorId) | eval USBProduct = upper(USBDeviceId) | table USBVendor,USBVendorName,USBProduct,USBDeviceName]
| table CollectTime, Hostname, USBVendor, USBProduct, USBVendorName, USBDeviceName

Данный запрос получает из типа данных «usb» все записи о подключенных USB-носителях для компьютера с именем «Host» и собранные 5 февраля.


Как создать новый дашборд написано в этом посте.

Если вы откроете текст данного дашборда в формате XML (в правой верхней части окна EditEdit Source), будет примерно следующая картина:


Таблица состоит из следующих обязательных и опциональных тегов (теги row и panel пока не рассматриваем, т.к. они служат для группировки визуальных элементов):

<table> - собственно тип визуального элемента;
<title> - заголовок;
<search> - самый важный тег, содержащий всё, что связано с запросом для данного элемента;
<search><query> - текст запроса;         
<search><earliest> - временной диапазон для событий (начало);
<search><latest> - временной диапазон для событий (конец);
<option> - дополнительные параметры для компонента.

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

Теперь непосредственно к добавлению динамики нашим дашбордам. Я буду писать куски текста на XML и попутно объяснять.

Создание ссылки на внешний ресурс

<drilldown>
          <condition field="USBVendorName">
            <link target="_blank">https://yandex.ru/search/?text=$click.value2$</link>
          </condition>
 </drilldown>

Тут всё достаточно просто, после закрывающего тега </search> и до начала тегов <option>, впишите код приведенный выше.

Тег <drilldown>  сообщает Splunk, что выбранная таблица может содержать динамические опции. 
Тег <condition> предназначен для явного указания имени поля в таблице, для которого включается динамика.
Тег <link target="_blank"> указывает, что при нажатии на значении ячейки необходимо перейти по ссылке на адрес, указанной после тега.

Теперь внимание, как вы успели заметить, в тексте ссылки присутствует переменная - $click.value2$. В переменной $click.value2$ содержится значение текущей ячейки, по которой вы кликнули. Таким образом в запрос на Яндексе подставится значение ячейки.

Сохранение значения выбранной (произвольной) ячейки в токен

        <drilldown>
          <condition field="USBVendor">
            <set token="dr_usbvendor">$click.value2$</set>
            <set token="dr_usbdevice">$row.USBProduct$</set>
          </condition>
        </drilldown>

В данном примере добавился новый тег <set token>. Как понятно из его имени, он предназначен для сохранения значения поля таблицы в токен. В дальнейшем этот токен можно использовать в любых запросах на дашборде.

Примечание: одному из токенов значение присвоено с использованием переменной $row.USBProduct$. Переменная $row$ содержит значения всех полей таблицы в выбранной строке. Обращение к нужному происходит через точку.

 Удаление сохраненного значения из токена

        <drilldown>
          <condition field="USBVendorName">
            <unset token=" dr_usbvendor"></unset>
          </condition>
        </drilldown>

В данном примере появился тег <unset token>, как понятно из имени, он удаляет значение из токена.
  

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

Какие на дашбордах доступны переменные для сохранения в токен?
$сlick.value$ – значение самого левого элемента (обычно время события);
$сlick.value2$ – значение выбранной ячейки в строке;
$click.name$ – имя самой левой колонки;
$click.name2$ – имя колонки, в которой вы кликнули.

Что можно сохранить в токен?
В токен можно сохранить произвольное количество переменных значений, что часто спасает при отладке дашбордов.

<set token="test_token">$click.value$ + $click.value2$ + $row.USBProduct$</set>

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


Всем удачного использования J

4 комментария:

  1. Этот комментарий был удален автором.

    ОтветитьУдалить
  2. добрый день! Интересная статья. Возник вопрос - возможно ли по подобной схеме работать с другими источниками визуализации? Можно примеры?

    ОтветитьУдалить
  3. Артем, добрый день! Да, конечно, можно и с другими визуальными компонентами работать по подобной схеме. Какие интересуют?

    ОтветитьУдалить
  4. Была бы интересна информация или статья по передаче параметров из одного дашборда в другой для поиска событий

    ОтветитьУдалить