Lookup Manager
Справочник (lookup) - это статическая таблица данных, которая используется для обогащения или преобразования данных
во время
поиска.
Модуль Lookup Manager отвечает за создание, просмотр, редактирование и удаление справочников, а также за управление значениями, содержащимися в них. Он обеспечивает централизованное управление справочными данными, используемыми в системе.
Структура конфигурации
| Название | Поле в индексе | Синтаксис | Описание | Пример данных |
|---|---|---|---|---|
| Название справочника | name | <string> | Название справочника | lookup_name |
| Название индекса | idx | <string> | Название индекса, соответствующее справочнику | index_name |
| Поля | fields | <array> | Перечень полей справочника, которые используются для обогащения | field1, field2 |
| Количество строк для отображения | size | <int> | Количество строк для отображения данных справочника | 1000 |
| Чувствительность к регистру | case_sensitive | <array> | Перечень полей из справочника, которые чувствительны к регистру при совпадении | field1, field2 |
| Wildcard | wildcards | <array> | Перечень полей из справочника, выступающих в роли Wildcard, по которым производится совпадение | field1, field2 |
| Cidrmatch | cidrmatch | <array> | Перечень полей из справочника, выступающих в роли CidrMatch, по которым производится совпадение | field1, field2 |
| Условие | condition | <string> | условие фильтрации, применяемое перед сопоставлением записей справочника | status != "Уволен" |
| Лимит | limit | <int> | Ограничение размера справочных данных перед сопоставлением | 1000 |
| Максимальное количество соответствий | max_match | <int> | Максимальное количество совпадений из справочника на один результат поиска при выполнении команды lookup | 100 |
Создание справочника
Мы рекомендуем присваивать названия индексов для справочников в соответствии с названием lookup.
Для создания справочника необходимо:
-
Перейти в
Список справочников(Навигационное меню-Lookup Manager-Список справочников):
-
Нажать на конпку
Создать. Появится окно с параметрами справочника:
В данном окне необходимо заполнить поля конфигурации.
-
Нажать на кнопку
Сохранить. После нажатия, созданный справочник отобразится в общем списке
Перед созданием справочника можно заранее создать индекс с данными через Консоль разработчика, где названия полей будут соответствовать названиям столбцов, а их значение - значениям в конкретной строке. Далее следует выполнить вышеперечисленные действия, указав в поле Название индекса в конфигурации справочника имя созданного индекса.
Поиск
Поиск поддерживает сопоставление по правилу wildcard. Условия совпадения, которые указываются при создании справочника, не влияют на результат поиска. Все нижеперечисленные примеры будут рассматриваться на следующем справочнике:

Простое условие
Поиск в справочнике можно осуществлять простым условием по:
- Конкретному полю. Например:

- Значению, которое может находиться в любом поле. Например:

Составное условие
Поиск в справочнике можно осуществлять составным условием по:
- Конкретным полям. Например:

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

Добавление новой строки
Если справочник пуст, то для добавления новой строки необходимо:
-
Нажать на кнопку
Добавить новую строчку. После нажатия появится новая строка с пустыми полями -
Заполнить поля новой строки значениями
-
Нажать на кнопку
Сохранить. После нажатия изменения вступят в силу
Для добавления новой строки в заполненном справочнике необходимо:
-
Нажать на существующую строчку
Правой кнопкой мыши. После нажатия появится контекстное меню:
В данном меню необходимо выбрать поле
Вставить строку снизуилиВставить строку сверху. После нажатия появится новая строка с пустыми полями. -
В созданной строке заполнить поля значениями
-
Нажать на кнопку
Сохранить. После нажатия изменения вступят в силу
Добавление нового столбца
Для добавления нового столбца в уже заполненном справочнике необходимо:
-
Нажать на уже существующую строчку или название столбца
Правой кнопкой мыши. После нажатия появится контекстное меню:
В данном меню необходимо выбрать поле
Вставить столбец слеваилиВставить столбец справа. После нажатия появится модальное окно: -
В модальном окне необходимо ввести название столбца
-
Нажать на кнопку
Сохранитьв модальном окне. После нажатия в справочнике появится новый столбец -
Нажать на кнопку
Сохранить
Добавление данных
Добавление данных можно осуществлять несколькими способами:
-
Создание и заполнение полей значениями новой строки вручную. Добавление новой строки описывалось в соответствующем разделе добавление новой строки
-
Для дополнения справочника существующими данными воспользуйтесь командой outputlookup
Обратите внимание!Данный способ может перезаписывать поля, при этом прошлые данные будут удалены. Такое поведение характерно, когда параметр append команды
outputlookupимеет значениеfalse. В противном случае к существующим данным в справочнике добавятся новые. -
Импортировать CSV-файл в справочник. Для импорта данных из CSV-файла необходимо перейти на страницу справочника и нажать кнопку
Импорт. После нажатия появится модальное окно:
В данном окне необходимо выбрать CSV-файл, нажав на поле
Выберите .csv файл. После выбора к существующим данным будут добавлены новые. -
Дополнить индекс справочника новыми данными через
Консоль разработчика. После добавления новых записей изменения автоматически сохранятся
Примеры сопоставления полей
Все нижеперечисленные примеры используют команду lookup для дополнения исходных событий данными из справочника.
Общие правила
В данном подразделе будут рассмотрены сопоставления без специальных правил, когда значение из поля полностью совпадает с значением соответствующего поля из события. Все примеры будут проводиться на следующем справочнике:

Пример сопоставления одной строки справочника
Если под сопоставление попадает одна строка справочника, то исходное событие дополняется ее данными. Например:
При выполнении следующего запроса:
| makeresults
| fields - @timestamp
| eval agent.version="8.9.2"
| lookup agents_info agent.version OUTPUT agent.id, agent.name, host.os
Результат выполнения будет следующим:

Событие было дополнено полями agent.id, agent.name и host.os с соответствующими значениями строки из справочника.
Пример сопоставления нескольких строк справочника
Если под сопоставление попадает несколько строк справочника, то результирующие поля преобразуются в массив значений их данных. Например:
При выполнении следующего запроса:
| makeresults
| fields - @timestamp
| eval agent.version="8.9.0"
| lookup agents_info agent.version OUTPUT agent.id, agent.name, host.os
Результат выполнения будет следующим:

Событие было дополнено полями agent.id, agent.name и host.os с массивом значений из соответствующих строк.
Пример отсутствия сопоставления в справочнике
При отсутствии сопоставления с полями справочника, событие не подвергается обогащению данными. Например:
При выполнении следующего запроса:
| makeresults
| fields - @timestamp
| eval agent.version="7.5.5"
| lookup agents_info agent.version OUTPUT agent.id, agent.name, host.os
Результат выполнения будет следующим:
Событие не было дополнено полями agent.id, agent.name и host.os, так как в справочнике отсутствует поле agent.version с необходимым значением.
Пример сопоставления нескольких полей из справочника
Команда inputlookup позволяет проводить сопоставление по нескольким полям, что позволит конкретизировать события, которые необходимо дополнить данными. Например:
При выполнении следующего запроса:
| makeresults
| fields - @timestamp
| eval agent.version="8.9.0", agent.name="winlogbeat_6"
| lookup agents_info agent.version, agent.name OUTPUT agent.id, host.os
Результат выполнения будет следующим:

Исходя из примера сопоставления нескольких строк, поиск только по agent.version дополняет событие данными из множества строк. В данном случае, так как совпадение происходит по agent.version и agent.name, событие дополняется только данными конкретной строки - winlogbeat_6.
Использование чувствительного к регистру поля
При создании справочника имеется возможность указывать поля, которые будут чувствительны к регистру. Демонстрация работоспособности будет проводится на справочнике, который указан в разделе общие правила, где поле agent.name чувствительно к регистру.
При выполнении следующего запроса:
| makeresults
| fields - @timestamp
| eval agent.name="WinLogBeat_1"
| lookup agents_info agent.name OUTPUT agent.id, agent.version, host.os
Результат выполнения будет следующим:
В событии не добавились данные из справочника, где agent.name имеет значение winlogbeat_1.
Если бы поле agent.name не было чувствительно к регистру, то результат был следующим:

Событие дополнилось данными из справочника, где agent.name имеет значение winlogbeat_1.
Wildcard
При создании справочника имеется возможность указывать поля, которые будут сопоставляться по правилу Wildcard.
Данные, которые находятся в указанном поле, должны иметь wildcard-значения.
- Пример №1
- Пример №2
- Пример №3
Справочник для первого примера:

Поле agent.version сопоставляется по принципу wildcard.
При выполнении следующего запроса:
| makeresults
| fields - @timestamp
| eval agent.version="4.6.5"
| lookup agents_info agent.version OUTPUT agent.id, agent.name, host.os
Результат выполнения будет следующим:

Событие было дополнено полями agent.id, agent.name и host.os с соответствующими значениями строки из справочника.
Справочник для второго примера:

Поле agent.name сопоставляется по принципу wildcard.
При выполнении следующего запроса:
| makeresults
| fields - @timestamp
| eval agent.name="filebeat_1"
| lookup agents_info agent.name OUTPUT host.os, agent.version, agent.id
Результат выполнения будет следующим:

Событие было дополнено полями host.os, agent.version и agent.id с массивом значений из соответствующих строк.
Справочник для третьего примера:

Поле agent.version сопоставляется по принципу wildcard.
При выполнении следующего запроса:
| makeresults
| fields - @timestamp
| eval agent.version="9.6.0"
| lookup agents_info agent.version OUTPUT agent.id, agent.name, host.os
Результат выполнения будет следующим:
Событие не было дополнено полями agent.id, agent.name и host.os, так как в справочнике отсутствует поле agent.version с необходимым wildcard-значением.
Cidrmatch
При создании справочника имеется возможность указывать поля, которые будут сопоставляться по правилу Cidrmatch.
Данные, которые находятся в указанном поле, должны иметь cidrmatch-значения.
Все примеры будут проводиться на следующем справочнике:

Поле host.netmask сопоставляется по принципу cidrmatch.
- Пример №1
- Пример №2
- Пример №3
При выполнении следующего запроса:
| makeresults
| fields - @timestamp
| eval host.ip="25.22.8.3"
| lookup agents_info host.netmask AS host.ip OUTPUT agent.id, agent.name, host.os, agent.version, host.netmask
Результат выполнения будет следующим:

Событие было дополнено полями agent.id, agent.name, host.os, agent.version и host.netmask с соответствующими значениями строки из справочника.
При выполнении следующего запроса:
| makeresults
| fields - @timestamp
| eval host.ip="192.168.16.8"
| lookup agents_info host.netmask AS host.ip OUTPUT agent.id, agent.name, host.os, agent.version, host.netmask
Результат выполнения будет следующим:

Событие было дополнено полями agent.id, agent.name, host.os, agent.version и host.netmask с массивом значений из соответствующих строк.
При выполнении следующего запроса:
| makeresults
| fields - @timestamp
| eval host.ip="32.16.8.5"
| lookup agents_info host.netmask AS host.ip OUTPUT agent.id, agent.name, host.os, agent.version, host.netmask
Результат выполнения будет следующим:
Событие не было дополнено полями agent.id, agent.name, host.os, agent.version и host.netmask, так как в справочнике отсутствует поле host.netmask с необходимым cidrmatch-значением.
Условия
При создании справочника имеется возможность указать условия, которые будут использоваться для сопоставления. Демонстрация работоспособности будет проводиться на справочнике, который указан в разделе общие правила.
- Пример №1
- Пример №2
- Пример №3
Укажем следующее условие при создании справочника:
В случае обращения к строке, где agent.name имеет значение winlogbeat_7. Исходное событие не будет обогащено данными.
При выполнении следующего запроса:
| makeresults
| fields - @timestamp
| eval agent.name="winlogbeat_7"
| lookup agents_info agent.name OUTPUT agent.id, host.os, agent.version
Результат выполнения будет следующим:
Событие не было дополнено полями agent.id, host.os и agent.version, так как происходит поиск строки, где agent.name имеет значение winlogbeat_7, что противоречит условию, которое указано в справочнике.
При создании справочника укажем условие из прошлого примера.
При выполнении следующего запроса:
| makeresults
| fields - @timestamp
| eval agent.version="8.9.0"
| lookup agents_info agent.version OUTPUT agent.id, agent.name, host.os, agent.version
Результат выполнения будет следующим:

Событие не было дополнено полями agent.id, agent.name, host.os и agent.version, где agent.name не является winlogbeat_7.
Укажем следующее условие при создании справочника:
При выполнении следующего запроса:
source logs
| lookup agents_info agent.version OUTPUT agent.id, agent.name, host.os
Результат выполнения будет следующим:

Событие было дополнено полями agent.id, agent.name и host.os, так как оно попадает под условие справочника, а именно agent.version имеет значение 8.9.0 и host.os соответственно Windows.

Событие не было дополнено полями agent.id, agent.name и host.os, так как host.os имеет значение Linux, что противоречит условию, которое указано в справочнике.
Взаимодействие
Справочник предоставляет расширенный набор возможностей для работы с данными:
- выделение отдельных ячеек и диапазонов перетягиванием курсора при зажатии левой кнопки мыши
- копирование выделенных элементов в буфер обмена и вставка содержимого в таблицу
- очистка значений выделенных ячеек
- отмена выполненных операций с помощью горячих клавиш
Вставка из буфера обмена
Для вставки данных из буфера обмена выполните следующие действия:
- Скопируйте в TSV-формате необходимый диапазон сочетанием
Ctrl + C/Cmd + C - В таблице выделите одну или несколько ячеек, в которые хотите вставить данные
- Нажмите
Ctrl + V/Cmd + V
Данные будут автоматически вставлены в выделенную область. При необходимости таблица расширится (добавятся новые строки), а имена столбцов останутся уникальными.

При работе с таблицей выбранные ячейки получают визуальное оформление.
Как работает вставка из буфера
Вставка от опорной ячейки
Применяется, если выделенная область в таблице меньше размеров буфера обмена.
- вставка начинается с этой «якорной» ячейки (ячейка в верхнем левом углу выделенной области) идет вправо и вниз
- если буфер заканчивается, значения повторяются циклично
Диапазонная вставка
Применяется, когда область выделения совпадает с данными в буфере обмена.
- каждое значение из буфера попадает в ячейку выделения в том же относительном положении
Быстрые клавиши
| Операция | Сочетание клавиш | Описание | |
|---|---|---|---|
| Windows | Mac | ||
| Выделение всех | Ctrl + A | Cmd + A | Выделяет все заголовки и ячейки данных |
| Копирование | Ctrl + C | Cmd + C | Копирует выделенные ячейки (включая заголовки) в формате TSV |
| Вставка | Ctrl + V | Cmd + V | Вставляет содержимое буфера обмена в текущий диапазон |
| Очистка | Delete | Удаляет содержимое выделенных ячеек | |
| Отмена действия | Ctrl + Z | Cmd + Z | Отменяет последнее изменение |
| Повтор действия | Ctrl + Y | Cmd + Shift + Z | Повторяет последнее отмененное действие |