SML (RTC)
Потоковый коррелятор использует для условий правил собственный диалект SML — SML (RTC). Выражение на этом диалекте вычисляется на каждом входящем событии и возвращает логическое значение: истину или ложь. SML (RTC) содержит большую часть функций стандартного SML и расширяет его своими функциями, применимыми в потоковой обработке событий.
Где применяется
Выражения на SML (RTC) задаются в следующих полях редактора правил и активных списков:
Условие срабатываниядекларативного правила — проверяется на каждом событии (см. Декларативные правила)Предварительная фильтрацияправила агрегации иФильтротдельной метрики (см. Правила агрегации)Условие срабатыванияправила агрегации — работает не над полями событий, а над именами метрикПредварительная фильтрацияимперативного правила,Условиестадии типаСобытиеиСобытие, которое отменяет инцидентстадии типаОтсутствие(см. Императивные правила)Фильтр потокаактивного списка — отбирает события для автозаполнения (см. Активные списки)
Все перечисленные поля, кроме Условия срабатывания правила агрегации, вычисляются над полями входящего события; в остальном поведение диалекта одинаково независимо от того, в каком из этих полей записано выражение.
Обращение к полям события
Поле события записывается путем через точку. Путь, начинающийся с @, пишется без кавычек. Если имя поля содержит пробел или другие символы вне обычного набора, его берут в одинарные кавычки:
event.code == "4625"
@timestamp != nil
'user name' == "admin"
'x-forwarded-for' != nil
Одинарные кавычки обозначают поле, двойные — строку. Имя в одинарных кавычках — это один цельный путь: точки внутри него на сегменты не разбираются.
Имя поля, совпадающее с именем функции, тоже нужно взять в одинарные кавычки — иначе выражение будет отвергнуто при сохранении. Это касается только первого сегмента пути: match.name допустимо, а одиночное now — нет, его надо записать как 'now'.
Логические имена полей, заданные Маппингом полей правила, используются в выражении наравне с физическими — см. Потоковые задачи.
Операторы
| Категория | Операторы |
|---|---|
| Логические | and, or, not и их эквиваленты &&, ||, ! |
| Сравнение | ==, !=, <, <=, >, >= |
| Арифметические | +, -, *, /, % |
| Группировка | круглые скобки |
Литералы
| Литерал | Запись |
|---|---|
| Строка | двойные кавычки: "4625" |
| Число | 4625, 3.5, -1 |
| Логическое | true, false |
| Отсутствие значения | null |
Функции языка условий
Справочник функций диалекта SML (RTC): таблица функций, совпадающих со стандартным SML, и подробное описание собственных функций коррелятора с синтаксисом и примерами.