Kaspersky Unified Monitoring and Analysis Platform

Переменные в корреляторах

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

Область применения переменных:

К переменным можно обращаться так же, как к полям события, предваряя их название символом $.

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

В этом разделе

Локальные переменные в группирующих и уникальных полях

Локальные переменные в селекторе

Локальные переменные в обогащении событий

Локальные переменные в обогащении активных листов

Свойства переменных

Требования к переменным

Функции переменных

Объявление переменных

В начало
[Topic 234114]

Локальные переменные в группирующих и уникальных полях

Вы можете использовать локальные переменных в разделах Группирующие поля и Уникальные поля правил корреляции типа standard. Для использования локальной переменной необходимо перед ее именем указывать символ "$".

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

В начало
[Topic 260640]

Локальные переменные в селекторе

Чтобы использовать локальную переменную в селекторе:

  1. Добавьте локальную переменную в правило.
  2. В окне Правила корреляции перейдите на вкладку Общие и добавьте созданную локальную переменную в раздел Группирующие поля. Перед именем локальной переменной укажите символ "$".
  3. В окне Правила корреляции перейдите на вкладку Селекторы, выберите существующий фильтр или создайте новый и нажмите на кнопку Добавить условие.
  4. В качестве операнда выберите поле события.
  5. В качестве значения поля события укажите локальную переменную и укажите символ "$" перед именем переменной.
  6. Укажите остальные параметры фильтра.
  7. Нажмите Сохранить.

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

В начало
[Topic 260641]

Локальные переменные в обогащении событий

Вы можете использовать правила корреляции типа standard и simple для обогащения событий с помощью локальных переменных.

Обогащение текстом и числами

Обогащение событий можно выполнять с помощью текста (строк). Для этого могут быть использованы функции, позволяющие модифицировать строки: to_lower, to_upper, str_join, append, prepend, substring, tr, replace, str_join.

Обогащение событий можно выполнять с помощью чисел. Для этого могут быть использованы функции: сложение (оператор "+"), вычитание (оператор "-"), умножение (оператор "*"), деление (оператор "/"), round, ceil, floor, abs, pow.

Также для работы с данными в локальных переменных могут быть использованы регулярные выражения.

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

Обогащение временных отметок

Обогащение событий можно выполнять с помощью временных отметок (даты и времени). Для этого могут быть использованы функции, позволяющие получать или модифицировать временные метки: now, extract_from_timestamp, parse_timestamp, format_timestamp, truncate_timestamp, time_diff.

Операции с активными списками и таблицами

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

Для обогащения событий данными из активного списка необходимо воспользоваться функциями active_list, active_list_dyn.

Для обогащения событий данными из таблицы необходимо воспользоваться функциями table_dict, dict.

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

Использование локальной переменной для обогащения событий

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

  1. Добавьте локальную переменную в правило.
  2. В окне Правила корреляции перейдите на вкладку Общие и добавьте созданную локальную переменную в раздел Группирующие поля. Перед именем локальной переменной укажите символ "$".
  3. В окне Правила корреляции перейдите на вкладку Действия и в группе параметров Обогащение в раскрывающемся списке Тип источника данных выберите событие.
  4. В раскрывающемся списке Целевое поле выберите поле события KUMA, в которое необходимо передать значение локальной переменной.
  5. В раскрывающемся списке Исходное поле выберите локальную переменную. Перед именем локальной переменной укажите символ "$".
  6. Укажите остальные параметры правила.
  7. Нажмите Сохранить.
В начало
[Topic 260642]

Локальные переменные в обогащении активных листов

Вы можете использовать локальные переменные для обогащения активных листов.

Чтобы выполнить обогащение активного списка при помощи локальной переменной:

  1. Добавьте локальную переменную в правило.
  2. В окне Правила корреляции перейдите на вкладку Общие и добавьте созданную локальную переменную в раздел Группирующие поля. Перед именем локальной переменной укажите символ "$".
  3. В окне Правила корреляции перейдите на вкладку Действия и в группе параметров Обновление активных листов добавьте локальную переменную в поле Ключевые поля. Перед именем локальной переменной укажите символ "$".
  4. В группе параметров Сопоставление укажите соответствие между полями события и полями активного списка.
  5. Нажмите на кнопку Сохранить.
В начало
[Topic 260644]

Свойства переменных

Локальные и глобальные переменные

Свойства глобальных и локальных переменных различаются.

Глобальные переменные:

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

Локальные переменные:

  • Локальные переменные объявляются на уровне правила корреляции и действуют только в пределах этого правила.
  • В правилах корреляции типа standard областью действия локальной переменной является только тот селектор, в котором переменная была объявлена.
  • Локальные переменные можно объявлять в любых типах правил корреляции.
  • Невозможно переносить локальные переменные между правилами или селекторами.
  • Локальная переменная не может быть использована в качестве глобальной переменной.

Переменные в разных типах правил корреляции

  • В правилах корреляции типа operational на вкладке Действия можно указывать все доступные или объявленные в этом правиле переменные.
  • В правилах корреляции типа standard на вкладке Действия можно указывать только переменные, указанные в этих правилах на вкладке Общие в поле Группирующие поля.
  • В правилах корреляции типа simple на вкладке Действия можно указывать только переменные, указанные в этих правилах на вкладке Общие в поле Наследуемые поля.

В начало
[Topic 234737]

Требования к переменным

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

Требования к названиям функций:

  • Должно быть уникально в рамках коррелятора.
  • Должно содержать от 1 до 128 символов в кодировке Unicode.
  • Не может начинаться с символа $.
  • Должно быть написано в camelCase или CamelCase.

Особенности указания функций переменных:

  • Последовательность указания параметров имеет значение.
  • Параметры передаются через запятую: ,.
  • Строковые параметры передаются в одинарных кавычках: '.
  • Наименования полей событий и переменные указываются без кавычек.
  • При обращении к переменной как параметру перед ее названием необходимо добавлять символ $.
  • Ставить пробел между параметрами необязательно.
  • Во всех функциях, где в качестве параметров допускается использование переменной, допускается создавать вложенные функции.
В начало
[Topic 234739]

Функции переменных

Операции с активными листами и словарями

Функции "active_list" и "active_list_dyn"

Функции позволяют получать информацию из активного листа и динамически формировать имя поля активного листа и ключа.

Необходимо указать параметры в следующей последовательности:

  1. название активного листа;
  2. выражение, возвращающее название поля активного листа;
  3. одно или несколько выражений, из результатов которых будет составлен ключ.

    Пример использования

    Результат выполнения

    active_list('Test', to_lower('DeviceHostName'), to_lower(DeviceCustomString2), to_lower(DeviceCustomString1))

    Получение значения поля активного листа.

С помощью этих функций из переменной можно обратиться к активному листу общего тенанта. Для этого после названия активного листа необходимо добавить суффикс @Shared (регистр имеет значение). Например, active_list('exampleActiveList@Shared', 'score', SourceAddress,SourceUserName).

Функция "table_dict"

Получение информации о значении в указанном столбце словаря типа таблица.

Необходимо указать параметры в следующей последовательности:

  1. название словаря;
  2. название столбца словаря;
  3. одно или несколько выражений, из результатов которых будет составлен ключ строки словаря.

    Пример использования

    Результат выполнения

    table_dict('exampleTableDict', 'office', SourceUserName)

    Получение данных из словаря exampleTableDict из строки с ключом SourceUserName из столбца office.

    table_dict('exampleTableDict', 'office', SourceAddress, to_lower(SourceUserName))

    Получение данных из словаря exampleTableDict из строки с составным ключом из значения поля SourceAddress и значения поля SourceUserName в нижнем регистре из столбца office.

С помощью этой функции из переменной можно обратиться к словарю общего тенанта. Для этого после названия активного листа необходимо добавить суффикс @Shared (регистр имеет значение). Например, table_dict('exampleTableDict@Shared', 'office', SourceUserName).

Функция "dict"

Получение информации о значении в указанном столбце словаря типа словарь.

Необходимо указать параметры в следующей последовательности:

  1. название словаря;
  2. одно или несколько выражений, из результатов которых будет составлен ключ строки словаря.

    Пример использования

    Результат выполнения

    dict('exampleDictionary', SourceAddress)

    Получение данных из словаря exampleDictionary из строки с ключом SourceAddress.

    dict('exampleDictionary', SourceAddress, to_lower(SourceUserName))

    Получение данных из словаря exampleDictionary из строки с составным ключом из значения поля SourceAddress и значения поля SourceUserName в нижнем регистре.

С помощью этой функции из переменной можно обратиться к словарю общего тенанта. Для этого после названия активного листа необходимо добавить суффикс @Shared (регистр имеет значение). Например, dict('exampleDictionary@Shared', SourceAddress).

Операции с контекстными таблицами

Функция "context_table"

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

Необходимо указать параметры в следующей последовательности:

  1. Название контекстной таблицы. Название не должно быть пустым.
  2. Выражение, возвращающее название поля контекстной таблицы.
  3. Выражение, возвращающее название ключевого поля 1 контекстной таблицы.
  4. Выражение, возвращающее значение ключевого поля 1 контекстной таблицы.

Функция должна содержать минимум 4 параметра.

Пример использования

Результат выполнения

context_table('tbl1', 'list_field1', 'key1', 'key1_val')

Получение значения указанного поля. В случае отсутствия контекстной таблицы или поля контекстной таблицы будет получена пустая строка.

Функция "len"

Возвращает длину строки и массива.

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

  • массив целых чисел;
  • массив чисел с плавающей точкой;
  • массив строк;
  • массив логических типов.

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

Примеры использования

len(context_table('tbl1', 'list_field1', 'key1', 'key1_val'))

len(DeviceCustomString1)

Функция "distinct_items"

Возвращает список уникальных элементов массива.

Функция возвращает список уникальных элементов массива, если переданный массив соответствует следующему типу:

  • массив целых чисел;
  • массив чисел с плавающей точкой;
  • массив строк;
  • массив логических типов.

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

Примеры использования

distinct_items(context_table('tbl1', 'list_field1', 'key1', 'key1_val'))

distinct_items(DeviceCustomString1)

Функция "sort_items"

Возвращает отсортированный список элементов массива.

Необходимо указать параметры в следующей последовательности:

  1. выражение, возвращающее объект сортировки;
  2. направление сортировки. Возможные значения: asc, desc. Если параметр не указан, значение по умолчанию – asc.

Функция возвращает отсортированный список элементов массива, если переданный массив соответствует следующему типу:

  • массив целых чисел;
  • массив чисел с плавающей точкой;
  • массив строк.

Функция возвращает список элементов массива в исходном порядке, если был передан массив логических типов.

Если передан массив другого типа, данные массива приводятся к строковому типу, и функция возвращает строку отсортированных символов.

Примеры использования

sort_items(context_table('tbl1', 'list_field1', 'key1', 'key1_val'), 'asc')

sort_items(DeviceCustomString1)

Функция "item"

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

Необходимо указать параметры в следующей последовательности:

  1. выражение, возвращающее объект индексирования;
  2. выражение, возвращающее индекс элемента или символа.

Функция должна содержать минимум 2 параметра.

Функция возвращает элемент массива с указанным индексом или символ строки с указанным индексом,если индекс находится в диапазоне массива и переданный массив соответствует следующему типу:

  • массив целых чисел;
  • массив чисел с плавающей точкой;
  • массив строк;
  • массив логических типов.

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

Примеры использования

item(context_table('tbl1', 'list_field1', 'key1', 'key1_val'), 1)

item(DeviceCustomString1, 0)

Операции со строками

Функция "len"

Возвращает число символов в строке. Поддерживается для стандартных полей и полей расширенной схемы событий типа "строка".

Строку можно передать строкой, названием поля или переменной.

Примеры использования

len('SomeText')

len(Message)

len($otherVariable)

Функция "to_lower"

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

Строку можно передать строкой, названием поля или переменной.

Примеры использования

to_lower(SourceUserName)

to_lower('SomeText')

to_lower($otherVariable)

Функция "to_upper"

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

Примеры использования

to_upper(SourceUserName)

to_upper('SomeText')

to_upper($otherVariable)

Функция "append"

Добавление символов в конец строки. Поддерживается для стандартных полей и полей расширенной схемы событий типа "строка".

Необходимо указать параметры в следующей последовательности:

  1. исходная строка;
  2. добавляемая строка.

Строки можно передать строкой, названием поля или переменной.

Примеры использования

Результат использования

append(Message, '123')

Строка из поля Message, в конце которой добавлена строка 123.

append($otherVariable, 'text')

Строка из переменной otherVariable, в конце которой добавлена строка text.

append(Message, $otherVariable)

Строка из поля Message, в конце которой добавлена строка из переменной otherVariable.

Функция "prepend"

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

Необходимо указать параметры в следующей последовательности:

  1. исходная строка;
  2. добавляемая строка.

Строки можно передать строкой, названием поля или переменной.

Примеры использования

Результат использования

prepend(Message, '123')

Строка из поля Message, в начало которой добавлена строка 123.

prepend($otherVariable, 'text')

Строка из переменной otherVariable, в начало которой добавлена строка text.

prepend(Message, $otherVariable)

Строка из поля Message, в начало которой добавлена строка из переменной otherVariable.

Функция "substring"

Возвращает подстроку из строки. Поддерживается для стандартных полей и полей расширенной схемы событий типа "строка".

Необходимо указать параметры в следующей последовательности:

  1. исходная строка;
  2. позиция начала подстроки (натуральное число или 0);
  3. (необязательно) позиция конца подстроки.

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

Примеры использования

Результат использования

substring(Message, 2)

Возвращает часть строки из поля Message: от 3 символа до конца.

substring($otherVariable, 2, 5)

Возвращает часть строки из переменной otherVariable: от 3 до 6 символа.

substring(Message, 0, len(Message) - 1)

Возвращает всю строку из поля Message, кроме последнего символа.

Функция "index_of"

Функция "index_of" возвращает байтовое смещение символа или подстроки в строке, расчет индекса начинается с 0. Если в результате работы функции подстрока не была найдена, функция вернёт отрицательное значение.

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

Доступны следующие параметры функции:

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

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

  1. Символ или подстрока, позиция которой будет найдена.
  2. Строка, по которой будет осуществлён поиск.

Примеры использования

Результат использования

index_of('@', SourceUserName)

Выполняется поиск символа "@" в поле SourceUserName. Поле SourceUserName содержит строчку "user@example.com".

Результат = 4

Функция возвращает индекс первой позиции искомого символа в строке. Расчет индекса начинается с 0.

index_of('m', SourceUserName)

Выполняется поиск символа "m" в поле SourceUserName. Поле SourceUserName содержит строчку "user@example.com".

Результат = 8

Функция возвращает индекс первой позиции искомого символа в строке. Расчет индекса начинается с 0.

Функция "last_index_of"

Функция "last_index_of" возвращает последнюю позицию символа или подстроки в строке, расчет индекса начинается с 0. Если в результате работы функции подстрока не была найдена, функция вернёт значение -9223372036854775808.

Доступны следующие параметры функции:

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

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

  1. Символ или подстрока, позиция которой будет найдена.
  2. Строка, по которой будет осуществлён поиск.

Примеры использования

Результат использования

last_index_of('m', SourceUserName)

Выполняется поиск символа "m" в поле SourceUserName. Поле SourceUserName содержит строчку "user@example.com".

Результат = 15

Функция возвращает индекс последней позиции искомого символа в строке. Расчет индекса начинается с 0.

Функция "tr"

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

Необходимо указать параметры в следующей последовательности:

  1. исходная строка;
  2. (необязательно) строка, которую следует удалить из начала и конца исходной строки.

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

Примеры использования

Результат использования

tr(Message)

В начале и в конце строки из поля Message удалены пробелы.

tr($otherVariable, '_')

Если переменной otherVariable соответствует значение _test_, будет возвращена строка test.

tr(Message, '@example.com')

Если в поле события Message находится строка user@example.com, будет возвращена строка user.

Функция "replace"

Замена в строке всех вхождений последовательности символов А на последовательность символов B. Поддерживается для стандартных полей и полей расширенной схемы событий типа "строка".

Необходимо указать параметры в следующей последовательности:

  1. исходная строка;
  2. строка поиска: последовательность символов, подлежащая замене;
  3. строка замены: последовательность символов, на которую необходимо заменить строку поиска.

Строки можно передать выражением.

Примеры использования

Результат использования

replace(Name, 'UserA', 'UserB')

Возвращается строка из поля события Name, в которой все вхождения UserA заменены на UserB.

replace($otherVariable, ' text ', '_text_')

Возвращается строка из переменной otherVariable, в которой все вхождения ' text ' заменены на '_text_'.

Функция "regexp_replace"

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

Необходимо указать параметры в следующей последовательности:

  1. исходная строка;
  2. строка поиска: регулярное выражение;
  3. строка замены: последовательность символов, на которую необходимо заменить строку поиска, и идентификаторы групп захвата регулярного выражения. Строку можно передать выражением.

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

В регулярных выражениях, используемых в функциях переменных, каждый символ обратной косой черты необходимо дополнительно экранировать. Например, вместо регулярного выражения ^example\\ необходимо указывать выражение ^example\\\\.

Примеры использования

Результат использования

regexp_replace(SourceAddress, '([0-9]{1,3}).([0-9]{1,3}).([0-9]{1,3}).([0-9]{1,3})', 'newIP: $1.$2.$3.10')

Возвращается строка из поля события SourceAddress, в которой перед IP-адресами вставлен текст newIP. Также последние цифры адреса заменены на 10.

Функция "regexp_capture"

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

Необходимо указать параметры в следующей последовательности:

  1. исходная строка;
  2. строка поиска: регулярное выражение.

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

В регулярных выражениях, используемых в функциях переменных, каждый символ обратной косой черты необходимо дополнительно экранировать. Например, вместо регулярного выражения ^example\\ необходимо указывать выражение ^example\\\\.

Примеры использования

Примеры значений

Результат использования

regexp_capture(Message, '(\\\\d{1,3}\\\\.\\\\d{1,3}\\\\.\\\\d{1,3}\\\\.\\\\d{1,3})')

Message = 'Access from 192.168.1.1 session 1'

Message = 'Access from 45.45.45.45 translated address 192.168.1.1 session 1'

'192.168.1.1'

'45.45.45.45'

Операции с метками времени

Функция now

Получение временной метки в формате epoch. Запускается без аргументов.

Примеры использования

now()

Функция "extract_from_timestamp"

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

Параметры необходимо указать в следующей последовательности:

  1. Поле события, имеющего тип timestamp, или переменная.
  2. Обозначение атомарного представления времени. Параметр регистрозависимый.

    Возможные варианты обозначения атомарного времени:

    • y – год в виде числа.
    • M – месяц, числовое обозначение.
    • d – число месяца.
    • wd – день недели: Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday.
    • h – часы в 24-часовом формате.
    • m – минуты.
    • s – секунды.
  3. (необязательно) Обозначение часового пояса. Если параметр не указан, время высчитывается в формате UTC.

    Примеры использования

    extract_from_timestamp(Timestamp, 'wd')

    extract_from_timestamp(Timestamp, 'h')

    extract_from_timestamp($otherVariable, 'h')

    extract_from_timestamp(Timestamp, 'h', 'Europe/Moscow')

Функция "parse_timestamp"

Представление времени из формата RFC3339 (например, "2022-05-24 00:00:00", "2022-05-24 00:00:00+0300) в формат epoch.

Примеры использования

parse_timestamp(Message)

parse_timestamp($otherVariable)

Функция "format_timestamp"

Представление времени из формата epoch в формат RFC3339.

Параметры необходимо указать в следующей последовательности:

  1. Поле события, имеющего тип timestamp, или переменная.
  2. Обозначение формата времени: RFC3339.
  3. (необязательно) Обозначение часового пояса. Если параметр не указан, время высчитывается в формате UTC.

    Примеры использования

    format_timestamp(Timestamp, 'RFC3339')

    format_timestamp($otherVariable, 'RFC3339')

    format_timestamp(Timestamp, 'RFC3339', 'Europe/Moscow')

Функция "truncate_timestamp"

Округление времени в формате epoch. После округления время возвращается в формате epoch. Время округляется в меньшую сторону.

Параметры необходимо указать в следующей последовательности:

  1. Поле события, имеющего тип timestamp, или переменная.
  2. Параметр округления:
    • 1s – округление до секунд;
    • 1m – округление до минут;
    • 1h – округление до часов;
    • 24h – округление до суток.
  3. (необязательно) Обозначение часового пояса. Если параметр не указан, время высчитывается в формате UTC.

    Примеры использования

    Примеры округляемых значений

    Результат использования

    truncate_timestamp(Timestamp, '1m')

    1654631774175 (7 June 2022 г., 19:56:14.175)

    1654631760000 (7 June 2022 г., 19:56:00)

    truncate_timestamp($otherVariable, '1h')

    1654631774175 (7 June 2022 г., 19:56:14.175)

    1654628400000 (7 June 2022 г., 19:00:00)

    truncate_timestamp(Timestamp, '24h', 'Europe/Moscow')

    1654631774175 (7 June 2022 г., 19:56:14.175)

    1654560000000 (7 June 2022 г., 0:00:00)

Функция "time_diff"

Получение интервала времени между двумя метками времени в формате epoch.

Параметры необходимо указать в следующей последовательности:

  1. Время конца отрезка. Поле события, имеющего тип timestamp, или переменная.
  2. Время начала отрезка. Поле события, имеющего тип timestamp, или переменная.
  3. Представление временного интервала:
    • ms – в миллисекундах;
    • s – в секундах;
    • m – в минутах;
    • h – в часах;
    • d – в днях.

    Примеры использования

    time_diff(EndTime, StartTime, 's')  

    time_diff($otherVariable, Timestamp, 'h')

    time_diff(Timestamp, DeviceReceiptTime, 'd')

Математические операции

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

Простейшие математические операции

Поддерживаются для полей расширенной схемы событий с типом "целое число" и "число с плавающей точкой".

Операции:

  • сложение;
  • вычитание;
  • умножение;
  • деление;
  • деление по модулю.

Использование круглых скобок определяет последовательность действий

Доступные аргументы:

  • числовые поля события;
  • числовые переменные;
  • вещественные числа.

    При делении по модулю в качестве аргументов можно использовать только натуральные числа.

Ограничения использования:

  • деление на ноль возвращает ноль;
  • математические операции между числами и строками возвращают число в неизменном виде. Например, 1 + abc вернет 1;
  • целые числа, полученные в результате операций, возвращаются без точки.

    Примеры использования

    (Type=3; otherVariable=2; Message=text)

    Результат использования

    Type + 1

    4

    $otherVariable - Type

    -1

    2 * 2.5

    5

    2 / 0

    0

    Type * Message

    0

    (Type + 2) * 2

    10

    Type % $otherVariable

    1

Функция "round"

Округление чисел. Поддерживается для полей расширенной схемы событий с типом "целое число" и "число с плавающей точкой".

Доступные аргументы:

  • числовые поля события;
  • числовые переменные;
  • числовые константы.

    Примеры использования

    (DeviceCustomFloatingPoint1=7.75; DeviceCustomFloatingPoint2=7.5 otherVariable=7.2)

    Результат использования

    round(DeviceCustomFloatingPoint1)

    8

    round(DeviceCustomFloatingPoint2)

    8

    round($otherVariable)

    7

Функция "ceil"

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

Доступные аргументы:

  • числовые поля события;
  • числовые переменные;
  • числовые константы.

    Примеры использования

    (DeviceCustomFloatingPoint1=7.15; otherVariable=8.2)

    Результат использования

    ceil(DeviceCustomFloatingPoint1)

    8

    ceil($otherVariable)

    9

Функция "floor"

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

Доступные аргументы:

  • числовые поля события;
  • числовые переменные;
  • числовые константы.

    Примеры использования

    (DeviceCustomFloatingPoint1=7.15; otherVariable=8.2)

    Результат использования

    floor(DeviceCustomFloatingPoint1)

    7

    floor($otherVariable)

    8

Функция "abs"

Получение числа по модулю. Поддерживается для полей расширенной схемы событий с типом "целое число" и "число с плавающей точкой".

Доступные аргументы:

  • числовые поля события;
  • числовые переменные;
  • числовые константы.

    Примеры использования

    (DeviceCustomNumber1=-7; otherVariable=-2)

    Результат использования

    abs(DeviceCustomFloatingPoint1)

    7

    abs($otherVariable)

    2

Функция "pow"

Возведение числа в степень. Поддерживается для полей расширенной схемы событий с типом "целое число" и "число с плавающей точкой".

Параметры необходимо указать в следующей последовательности:

  1. База – вещественные числа.
  2. Степень – натуральные числа или вещественнные числа.

Доступные аргументы:

  • числовые поля события;
  • числовые переменные;
  • числовые константы.

    Примеры использования

    pow(DeviceCustomNumber1, DeviceCustomNumber2)

    pow($otherVariable, DeviceCustomNumber1)

Функция "str_join"

Позволяет объединить несколько строк в одну с использованием разделителя. Поддерживается для полей расширенной схемы событий с типом "целое число" и "число с плавающей точкой".

Параметры необходимо указать в следующей последовательности:

  1. Разделитель. Строка.
  2. Строка1, строка2, строкаN. Минимум 2 выражения.

    Примеры использования

    Результат использования

    str_join('|', to_lower(Name), to_upper(Name), Name)

    Строка.

Функция "conditional"

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

Параметры необходимо указать в следующей последовательности:

  1. Условие. Строка. Синтаксис аналогичен условиям в SQL Where. В условии можно использовать функции переменных KUMA и ссылаться на другие переменные.
  2. Значение при выполнении условия. Выражение.
  3. Значение при невыполнении условия. Выражение.

Поддерживаемые операторы:

  • AND
  • OR
  • NOT
  • =
  • !=
  • <
  • <=
  • >
  • >=
  • LIKE (передается регулярное выражение RE2, а не SQL-выражение)
  • ILIKE (передается регулярное выражение RE2, а не SQL-выражение)
  • BETWEEN
  • IN
  • IS NULL (проверка на пустое значение, например 0 или пустую строку)

    Примеры использования (значение зависит от аргументов 2 и 3)

    conditional('SourceUserName = \\'root\\' AND DestinationUserName = SourceUserName', 'match', 'no match')

    conditional(`DestinationUserName ILIKE 'svc_.*'`, 'match', 'no match')

    conditional(`DestinationUserName NOT LIKE 'svc_.*'`, 'match', 'no match')

Операции для полей расширенной схемы событий

Для полей расширенной схемы событий типа «строка» поддерживаются следующие виды операций:

  • Функция «len»
  • Функция «to_lower»
  • Функция «to_upper»
  • Функция «append»
  • Функция «prepend»
  • Функция «substring»
  • Функция «tr»
  • Функция «replace»
  • Функция «regexp_replace»
  • Функция «regexp_capture»

Для полей расширенной схемы событий с типом «целое число» или «число с плавающей точкой» поддерживаются следующие виды операций:

  • Простые математические операции:
  • Функция «round»
  • Функция «ceil»
  • Функция «floor»
  • Функция «abs»
  • Функция «pow»
  • Функция «str_join»
  • Функция «conditional»

KUMA поддерживает для полей расширенной схемы событий с типом «массив целых чисел», «массив чисел с плавающей точкой» и «массив строк» следующие виды функций:

  • получение i-го элемента массива. Пример: item(<type>.someStringArray).
  • получение массива значений. Пример: <type>.someStringArray. Вернет ["string1", "string2", "string3"].
  • получение количества элементов в массиве. Пример: len(<type>.someStringArray). Вернет ["string1", "string2"].
  • получение уникальных записей из массива. Пример: distinct_items(<type>.someStringArray).
  • формирование строки с элементами массива в формате TSV. Пример: to_string(<type>.someStringArray).
  • сортировка элементов массива. Пример: sort_items(<type>.someStringArray).

    В примерах вместо <type> необходимо указать тип массива: NA для массива целых чисел, FA для массива чисел с плавающей точкой, SA для массива строк.

Для полей с типом «массив целых чисел» и «массив чисел с плавающей точкой» поддерживаются следующие функции:

  • math_min - возвращает минимальный элемент массива. Пример: math_min(NA.NumberArray), math_min(FA.FloatArray)
  • math_max - возвращает максимальный элемент массива. Пример: math_max(NA.NumberArray), math_max(FA.FloatArray)
  • math_avg - возвращает среднее значение массива. Пример: math_avg(NA.NumberArray), math_avg(FA.FloatArray)
В начало
[Topic 234740]

Объявление переменных

Для объявления переменных их необходимо добавить в коррелятор или правило корреляции.

Чтобы добавить глобальную переменную в существующий коррелятор:

  1. В веб-интерфейсе KUMA в разделе РесурсыКорреляторы выберите набор ресурсов нужного коррелятора.

    Откроется мастер установки коррелятора.

  2. Выберите шаг мастера установки Глобальные переменные.
  3. Нажмите на кнопку Добавить переменную и укажите следующие параметры:
    • В окне Переменная введите название переменной.

      Требования к наименованию переменных

      • Должно быть уникально в рамках коррелятора.
      • Должно содержать от 1 до 128 символов в кодировке Unicode.
      • Не может начинаться с символа $.
      • Должно быть написано в camelCase или CamelCase.
    • В окне Значение введите функцию переменной.

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

      Для вызова списка всех подсказок в поле ввода используйте комбинацию клавиш Ctrl + Space. Для выбора нужной функции из списка используйте клавишу Enter. Для перехода к следующему аргументу в списке аргументов выбранной функции используйте клавишу Tab.

      Описание функций переменных.

    Переменных можно добавить несколько. Добавленные переменные можно изменить или удалить с помощью значка X..

  4. Выберите шаг мастера установки Проверка параметров и нажмите Сохранить.

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

Чтобы добавить локальную переменную в существующее правило корреляции:

  1. В веб-интерфейсе KUMA в разделе РесурсыПравила корреляции выберите нужное правило корреляции.

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

  2. Откройте вкладку Селекторы.
  3. В селекторе откройте вкладку Локальные переменные, нажмите на кнопку Добавить переменную и укажите следующие параметры:
    • В окне Переменная введите название переменной.

      Требования к наименованию переменных

      • Должно быть уникально в рамках коррелятора.
      • Должно содержать от 1 до 128 символов в кодировке Unicode.
      • Не может начинаться с символа $.
      • Должно быть написано в camelCase или CamelCase.
    • В окне Значение введите функцию переменной.

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

      Для вызова списка всех подсказок в поле ввода используйте комбинацию клавиш Ctrl + Space. Для выбора нужной функции из списка используйте клавишу Enter. Для перехода к следующему аргументу в списке аргументов выбранной функции используйте клавишу Tab.

      Описание функций переменных.

    Переменных можно добавить несколько. Добавленные переменные можно изменить или удалить с помощью значка X..

    Для правил корреляции типа standard повторите этот шаг для каждого селектора, в которым вы хотите объявить переменные.

  4. Нажмите Сохранить.

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

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

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

В начало
[Topic 234738]