# Триггеры

Данное руководство описывает создание синтетических триггеров и управление ими.

Справка

Триггеры monq позволяют обрабатывать любые события, поступающие в систему мониторинга. Существует возможность создать триггер по шаблону или настроить с нуля, при помощи скриптов, составленных на языке Lua.

Расчет триггеров в monq происходит по следующей схеме:

Расчет СТ

Если вам нужно описание служебных методов и переменных, используемых в правилах СТ, перейдите в раздел Решения.

# Создание триггера

Для добавления нового объекта Триггер перейдите в соответствующий раздел основного меню и нажмите «Добавить». В открывшемся диалоговом окне заполните основную информацию: название, РГ-владельца, шаблон правила, описание, нажмите «Создать».

После создания, вы сможете изменить указанную информацию на вкладке Основной информации страницы триггера.

# Выбор шаблона

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

Однако, вместо конкретных значений, в выражении префильтра используются переменные. Для настройки переменных нажмите «Задать переменные запуска» и введите значения в поля. После создания, префильтр триггера сразу будет содержать нужные значения.

# Конфигурация префильтра

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

Справка

Префильтр является небольшим правилом, по которому первичные события отсеиваются для дальнейшей обработки Правилом триггера.

Представляет из себя логическое выражение, поддерживающее базовые логические операторы и функции языка Lua.

Оператор Описание Пример использования
and И _labels.type == 'Prometheus' and _stream.id == 10
or ИЛИ _stream.id == 10 or _stream.id == 11
not НЕ _stream.type == 'Prometheus' and not _stream.id == 10
== Эквивалентно _stream.type == 'Prometheus'
~= Не эквивалентно _stream.type ~= 'Prometheus'
> Больше _stream.id > 10
< Меньше _stream.id < 10
>= Больше равно _stream.id >= 10
<= Меньше равно _stream.id <= 10
in(field, {args}) В списке in(_stream.id, {10, 11, 15})
regexIsMatch(field, "(pattern)") Регулярное выражение regexIsMatch(source.@timestamp, "(\\d{4}-\\d{2}-\\d{2}T\\[0][0-9]:\\d{2}:\\d{2}\\.\\d+Z)") - возвращает true если время в @timestamp с 00 до 09 часов

Допускается группировка частей выражения с помощью ().

Операторы сравнения учитывают регистр символов.

Объекты типа string должны быть заключены в одинарные кавычки.

Экранирование происходит через символ \.

Для настройки префильтра, внесите его выражение в текстовое поле «Условия запуска», во вкладке «Настройка правила».

После внесения изменений в поле «Условия запуска», нажмите «Применить» для сохранения выражения.

# Конфигурация правила

Для настройки работы триггера при получении нужного первичного события или записи лога, настройте Правило синтетического триггера.

Справка

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

Правило запускается для каждого полученного в monq сообщения, прошедшего префильтр.

Для реализации поддерживаются только служебные методы и классы правил СТ, подробнее в разделе Решения.

Для настройки правила синтетического триггера перейдите во вкладку «Настройка правила» – под строкой префильтра находится редактор кода.

По умолчанию редактор заблокирован, для доступа к нему нажмите на «Версию скрипта» и выберите «Новая версия» или нажмите на соответствующую кнопку в левом нижнем углу экрана.

Вставьте в окно редактора готовый скрипт на языке Lua или реализуйте его самостоятельно. Далее вы можете проверить код на синтаксические ошибки – нажмите «Проверка кода». Лог результата проверки, содержащий ошибки или сообщение об успехе, будет находится под вкладкой «Проверка кода» в нижней части редактора кода. Если код корректен, нажмите «Сделать исполняемой» – созданная вами версия правила станет рабочей.

Если вы захотите вернуть более старую версию правила, снова нажмите на «Версию скрипта» – в выпадающем списке вы найдете все сохраненные версии.

# Отладка триггера

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

Для этого перейдите к окну «Отладка правила».

Выберите шаблон первичного события из доступных и нажмите «Заполнить шаблон» – в открывшемся редакторе укажите данные, которые должны пройти проверку префильтром.

Для использования "кастомного" шаблона выберите «Пользовательский шаблон» и заполните его новой моделью события с требуемыми данными.

Справка

Для использования "кастомного" шаблона скопируйте модель данных из детального просмотра Первичных данных.

Запустите отладку. Результат отобразится в «Терминале отладки» в нижней части редактора кода.

# Просмотр истории триггера

Вкладка «История триггера» позволяет просмотреть историю всех событий, касающихся синтетического триггера.

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

  • Имени
  • Времени формирования
  • Инициатору
    • Пользователь
    • Условие запуска
    • Планировщик событий
  • Типу изменения
    • Изменение статуса
    • Изменение поля основной информации
    • Изменения правила
    • Изменение списка связанных КЕ

Когда вы нашли нужное вам событие, нажмите «Подробнее» для просмотра детальной информации о событии триггера.

Если настроена глубина хранения событий в блоке "Хранение данных" потока данных - возможно отображение информации, что событие удалено.

# Управление триггером

Дополнительно, на вкладке «Управление триггером» вы можете:

  • Изменить статус триггера вручную – выберите статус из выпадающего списка и нажмите «Применить».
  • Клонировать триггер – нажмите «Клонировать», в диалоговом окне введите Основную информацию и выберите объекты, которые нужно сохранить для копии триггера.
  • Удалить триггер – нажмите «Удалить» и подтвердите действие в диалоговом окне.