Правила агрегации
Правило агрегации отличается от декларативного правила тем, где именно проверяется порог: в декларативном правиле порог сравнивается с числом событий, совпавших с условием, а в правиле агрегации — со значением агрегата, вычисленного по событиям окна, например суммой, средним или числом уникальных значений.
Корреляция
На вкладке Корреляция определите окно, в котором коррелятор собирает данные для агрегата:
- В поле
Предварительная фильтрацияопишите выражение на диалекте SML (RTC) — событие должно ему соответствовать, чтобы попасть в окно агрегации - Выберите
Поля группировки— чипы полей, по которым правило ведет отдельный агрегат: для каждого сочетания значений этих полей вычисляется собственный набор метрик и формируется отдельная сработка - Задайте
Временное окнодвумя полями —ДлительностьиЕдиница: интервал, за который коррелятор накапливает события для расчета метрик - При необходимости включите переключатель
Настройка подавленияи заполните открывшийся блокПодавлениеполямиДлительностьиЕдиница— так же, как в декларативном правиле (см. Декларативные правила): после сработки повторные сработки той же группы подавляются на заданный срок
Метрики
В блоке Метрики задайте один или несколько агрегатов, по значениям которых правило принимает решение о сработке:
- Нажмите кнопку
Метрика, чтобы добавить блок метрики - Заполните
Название— имя, под которым значение метрики становится доступно в полеУсловие срабатыванияи в документе сработки - Выберите
Функцию— список доступных функций приведен ниже - Укажите
Поле— поле события, по которому вычисляется функция.Поленеобязательно только для функцийcountиrate; если оно все же указано для них, в расчет попадают только события, где это поле присутствует - При необходимости заполните
Фильтр— собственное условие отбора событий именно для этой метрики, на диалекте SML (RTC). Если фильтр не задан, метрика считается по всем событиям, прошедшимПредварительную фильтрацию

Функции агрегации
Поле Функция предлагает функции в следующем порядке:
| Функция | Что вычисляет | Поле | Тип результата |
|---|---|---|---|
count | число событий в окне | не требуется | целое |
sum | сумму значений поля | обязательно | число |
min | наименьшее значение поля | обязательно | число |
max | наибольшее значение поля | обязательно | число |
avg | среднее значение поля | обязательно | число |
dc | число различных значений поля | обязательно | целое |
values | список различных значений поля | обязательно | список |
median | медиану значений поля | обязательно | число |
p95 | 95-й процентиль значений поля | обязательно | число |
p99 | 99-й процентиль значений поля | обязательно | число |
variance | дисперсию значений поля | обязательно | число |
stddev | среднеквадратичное отклонение значений поля | обязательно | число |
first | значение поля из первого события окна | обязательно | как в событии |
last | значение поля из последнего события окна | обязательно | как в событии |
earliest | наименьшее числовое значение поля — как правило, самую раннюю временную метку | обязательно | число |
latest | наибольшее числовое значение поля — как правило, самую позднюю временную метку | обязательно | число |
rate | среднюю частоту событий: число событий, деленное на длину окна в секундах | не требуется | число |
Различия, важные при выборе функции:
firstиlastберут значение поля как есть, в порядке поступления событий, и работают с любым типом.earliestиlatestсравнивают значения как числа и возвращают крайние из них, поэтому применимы к временным меткам и другим числовым полям, но не к строкамminиmaxдают тот же результат, чтоearliestиlatest; отдельные имена существуют ради читаемости правил над временными полями- события, в которых поле отсутствует или не приводится к числу, в расчет числовых функций не попадают
- число различных значений, которые отслеживают
dcиvaluesв одной группе, ограничено кластерной настройкойcorrelation.max_aggregation_set_per_group(по умолчанию100000) — см. Кластерные настройки. После достижения предела новые значения не учитываются
Условие срабатывания
В поле Условие срабатывания задайте выражение над именами метрик, например total >= 1000000000: оно вычисляется после того, как метрики окна посчитаны, и решает, формировать ли сработку.
Условие срабатывания вычисляется не над полями событий, а над именами, заданными в поле Название каждой метрики. Маппинг полей, описанный в статье Правила, на это условие не распространяется.