Правила обработки событий

Таблица правил обработки событий определяет:

  • какие события будут отклонены без обработки, маршрутизации или хранения;
  • как система обнаруживает дубликаты событий и агрегирует их, уменьшая общее количество событий;
  • как долго хранимые события будут оставаться в истории событий.

Формат таблицы правил обработки событий:

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

Каждая запись в таблице определяет правила обработки события в каждом контексте, соответствующем данной маске. Например, если мы устанавливаем время хранения 1 месяц для события "login" (в столбце событие) и устанавливаем маску контекстов в значение "users.admin" (соответствует контексту пользователь администратора), информация о логинах системного администратора будет храниться в течение одного месяца. Если маска контекстов установлена в значение "users.*", успешные логины всех пользователей будут храниться в течение выбранного периода.

Если маска не задана, (т.е. NULL), правило применимо к событиям во всех контекстах.

Событие

Имя события, чьи правила обработки определяются этой записью.

Префильтр

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

При заданном выражении префильтра, события будут отклонены, если выражение возвращает FALSE.

Среда выполнения выражения префильтра:

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

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

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

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

Ряд по умолчанию

0

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

Только стандартные переменные.

Выражение идентификатора дедупликации

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

  • Число дубликатов предыдушего события увеличится на 1.
  • Время создания предыдущего события будет обновлено до соответствия времени создания дубликата. Таким образом, сохраняется время создания самого последнего дубликата.
  • Событие будет отправлено слушателям только при включенном параметре диспетчеризация дубликатов.

Количество событий для хранения в оперативной памяти

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

Диспетчеризация дубликатов

Определяет, будет ли событие с обнаруженными в оперативной памяти дубликатами в дальнейшем маршрутизировано и доставлено подписчикам (слушателям).

Время хранения

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

Заметим, что на практике события могут сохраняться в истории немного дольше определенного этими настройками срока, потому что процесс очистки (удаления событий с истекшим сроком хранения) запускается с интервалом в несколько минут.

Заданное время хранения, равное нулю, блокирует хранение событий, определенных правилом.

Обогащения

Таблица, определяющая, какие обогащения добавляются к событиям, определенным правилом. Таблица содержит два столбца:

  • имя обогащения
  • выражение значения обогащения

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

Среда выполнения выражения обогащения:

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

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

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

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

Ряд по умолчанию

0

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

Только стандартные переменные.

При возникновении события SberMobile Server обрабатывает таблицу правил обработки события от первой до последней записи. Если контекст, в котором произошло событие, соответствует маске, определенной записью, сервер применяет определяемые этой записью параметры для хранения события и прекращает поиск по списку, т.е. применяется первое соответствие, даже если маски в строках ниже также соответствуют контексту. Таким образом, правила с более узкими масками контекста должны предшествовать правилам c более широкими масками.

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

Пример: допустим, имеется следующая таблица правил обработки событий:

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

Событие

Время хранения

users.admin

login

1000 часов

users.*

login

200 часов

Согласно этой таблице, SberMobile Server будет хранить логины пользователя "admin" в течение 1000 часов, логины всех других пользователей будут храниться 200 часов.

Пример: допустим, имеется следующее правило обработки событий:

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

Собы-тие

Префильтр

Выражение идентификатора дедупликации

Количество событий для хранения в оперативной памяти

Время хранения

users.admin.devices.virtual1

event1

{int} < 10

{int}

10

3 месяца

Согласно этой таблице, SberMobile Server будет обрабатывать событие event1, поступившее с определенного виртуального устройства через путь контекста users.admin.devices.virtual1. Это событие имеет в том числе целочисленное int поле. Упомянутое правило будет работать следующим образом:

  • Все события, имеющие значение поля int большее или равное 10, будут отклонены;
  • Для остальных событий, будет рассчитан идентификатор дедупликации. Этот идентификатор будет соответствовать значению поля int.
  • Согласно правилу выше, события с одинаковым значением поля int будут отфильтровываться как дубликаты первого события с таким значением поля int.
  • Как только количество событий в памяти превысит 10, самые старые события удалятся и больше не будут участвовать в поиске дубликатов. При этом копии этих событий, хранящиеся в базе данных (и сохраняющие информацию о дубликатах), останутся нетронутыми.