Выражения фильтра

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

Например, Таблица данных для события Вход в систему содержит поле Имя пользователя. Таким образом, при фильтрации для отбора событий Входа в систему вы можете использовать выражение фильтра, содержащее ссылку на данное поле, чтобы в дальнейшем настроить фильтр и обрабатывать только события входа в систему пользователя Joe.

Также возможно ссылаться на среду фильтрации и данные из различных контекстов SberMobile Server.

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

Использование ссылок внутри выражений фильтра

  • Вы можете включить ссылки в состав "таблицы данных по умолчанию" внутри выражения фильтра. Например, для таких ссылок как firstname, нет необходимости задавать определенный контекстный путь и имя переменной (типа users.admin:childInfo$firstname). SberMobile Server рассматривает Таблицу данных события в качестве Таблицы данных по умолчанию, и данные ссылки уже указаны в ней.

  • Вы также можете указать ссылки на переменные среды, например, env/level (уровень серьезности ошибки события, который не входит в Таблицу данных события, а является свойством события. Более подробную информацию о свойствах событий можно найти в статье События раздела "Внутренне устройство системы"). Полный список переменных среды, определяемых при фильтрации события, можно увидеть здесь.

Выражения фильтра в правилах фильтра

Каждая запись в таблице Правил фильтра может содержать собственное Выражение Фильтра. Это может показаться сложным, потому что таблица правил фильтра уже является фильтром сама по себе - она определяет маску, имя и уровень события, и отображаются только те события, которые подходят под данные категории. Но дополнительное выражение фильтра позволяет вам сделать фильтр более подробным и точным. Что, если у вас есть события, которые совпадают с маской, именем и уровнем события, но вам все-таки нужно выбрать некоторые из них? В таком случае выражение фильтра будет крайне полезным. Все же пока это может казаться не совсем ясным, но вы можете спуститься ниже и найти пример, чтобы стало более понятно.

Выражение фильтра должно выдавать результат в виде логического значения: TRUE или FALSE. Если значение FALSE, событие пропускается фильтром и не отображается в журнале событий. Если значение TRUE, событие фильтруется и показывается в журнале.

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

Если выражение фильтра не задано в правилах фильтра, будут отображаться все события, удовлетворяющие опциям Маска контекста, Имя события и Уровень данной записи.

Пример:

Предположим, что мы управляем входом пользователей в систему. В правилах фильтра мы имеем категорию со следующими настройками:

Поле

Значение

Описание

события входа в систему

Маска контекста

пользователи

Имя события

вход в систему

Включен

TRUE

Уровень

информационный

Выражения фильтра


Параметризован

FALSE

Цвет выделения

не задан

При двойном нажатии на любое событие входа в систему в журнале мы увидим его данные в Редакторе таблицы данных. Далее приведен скриншот из Редактора таблицы данных в SberMobile IIoT Platform Client:

Мы видим, что данные для события вход в систему имеют два поля: Имя пользователя (аутентифицированный пользователь) и Права доступа (текущее содержание его таблицы прав доступа).

Чтобы выражения фильтра могли ссылаться на данные поля, нам необходимо использовать имена полей вместо их описаний. Имена полей показываются во всплывающем окне при наведении мышки на поле описания:

В данном всплывающем окне мы видим, что имя первого поля - username. Это имя можно использовать для создания выражения фильтра, которое позволит нам выбирать только события входа в систему определенного пользователя.

К примеру, мы хотим фильтровать события входа в систему пользователя Чарли. Мы будем использовать следующие выражения фильтра:

{username} == 'charlie'

Когда данное выражение установлено, ссылка {username} относится к полю username в Таблице данных события. Это строковое поле, поэтому разрешение приводится в виде строкового значения. Данное значение сравнивается со строковым текстом charlie. Если они совпадают, событие фильтруется и отображается в журнале событий, в противном случае, оно пропускается. Если мы вводим данное значение в поле "Выражение фильтра" таблицы "Правила фильтра" и запускаем фильтрацию, в журнале событий будут отображаться входы в систему только пользователя Чарли.

Эффекта, показанного в этом примере, можно было бы также добиться, ограничив контекст фильтра до users.charlie, но этот пример служит просто для иллюстрации изучаемого вопроса. Более полезным, например, было бы отображение входов в систему нескольких пользователей, а не отдельно взятых.

Выражения фильтра в пользовательском цветовом выделении

Каждая запись в таблице пользовательского цветового выделения также может содержать Выражение Фильтра. Если такое выражение задано и оценивается как TRUE, к данному событию применяются правила цветового выделения.

Если выражение фильтра не задано в записи пользовательского цветового выделения, будут выделяться все события, удовлетворяющие опциям Маска контекста, Имя события и Уровень, определяемым данной записью.

Пример:

Некоторые события являются критическими для функционирования системы. Такие события имеют высокий уровень, такой как Ошибка или Критическая ошибка. Мы можем выделить оранжевым цветом события уровня "Ошибка". Уровень события указывается специальной иконкой в журнале событий, но правила цветового выделения могут помочь системным операторам легче заметить данные события.

Для выделения событий Device, нам нужно добавить новое правило в таблицу "Пользовательское цветовое выделение":

Поле

Значение

Маска контекста

users.*.deviceservers.*.devices.*

Имя события

событие

Уровень

не определен

Выражение фильтра


Цвет выделения

оранжевый

Чтобы выбрать события уровня Ошибка, мы можем использовать следующее выражение фильтра:

{env/level} == 4

В качестве варианта мы можем добавить правило для выделения событий уровня "Критическая ошибка" красным цветом. Оно будет содержать следующее Выражение Фильтра:

{env/level} == 5

Если мы просто хотим выделить все события, уровень которых выше, чем Ошибка (т.е. выше уровня 4), мы можем просто ввести "4" в поле Уровень пользовательской таблицы выделения события. То же самое можно проделать при помощи выражения {env/level} > 4.

Среда вычисления

В качестве исходного материала вы можете найти ниже сформулированную среду вычисления выражения фильтра.

Среда вычисления Выражения фильтра и Выделения выражения:

Контекст по умолчанию

Контекст события.

Таблица данных по умолчанию

Таблица данных, содержащая данные, относящиеся к событию.

Строка по умолчанию

0

Переменные среды

Имя переменной

Тип значения

Описание

id

длинное

уникальный идентификатор события

context

строка

Полный путь к контексту события.

event

строка

Имя события.

level

целое

Уровень события.

time

дата

Временная метка события.

acknowledgements

таблица данных

Таблица подтверждений события.

enrichments

таблица данных

Таблица обогащений события.