Статистика
Вычисляет статистику о действиях объекта за промежуток времени. Используется для обнаружения аномалий, таких как:
- число подключений к VPN за 20 минут, превысило стандартные показатели для пользователя
- пользователь отправил необычно большой объем писем за час.
Описание алгоритма
- К данным индексов источников применяется общий и временной фильтры.
- Данные разбиваются на интервалы
- Для поля или результата выполнения скрипта на каждом интервале вычисляется функция агрегации, указанная в настройках алгоритма. В целом получается массив чисел, где каждое число это результат функции агрегации для данных в интервале.
- Вычисляется статистика для массива, полученного на предыдущем шаге.
Входные параметры
- Фильтр - общий фильтр источников.
- Индекс для результатов - индекс в который записываются результаты выполнения.
- Интервал - величина промежутков времени на которые разделяются данные источников.
- Пропускать интервалы без данных - пустые интервалы не учитываются в расчете статистики.
- Функция - функция агрегации. Одна из функций:
- sum - сумма
- min - минимальное
- max - максимальное
- avg - среднее
- dc - количество уникальных значений
примечание
Если функция не указана, то будет считаться количество событий в интервале.
- Скрипт - painless-скрипт для вычисления числового значения аргумента функции.
- Поле - название числового поля источника данных, значение которого будет использоваться как аргумент функции.
Входные данные
Входные данные определяются индексами и временным интервалом в общих настройках.
Выходные данные
В результате выполнения алгоритма в индексе результатов появляется разнообразная статистика по всем интервалам.
_meta.calculation.id
- идентификатор настройки алгоритма в политике профилирования._meta.calculation.type
- тип алгоритма._meta.execution.start_time
- время запуска политики профилирования._meta.execution.id
- идентификатор запуска политики профилирования._meta.object.identity
- массив идентификаторов UBA объекта._meta.object.id
- технический идентификатор UBA объекта._calculation
- результат выполнения алгоритма._calculation.extended_stats
- расширенная статистика по всем интервалам._calculation.percentiles
- процентиль по всем интервалам._calculation.span
- величина интервала.
Пример json-объекта результата
{
"_index": "test-aggs-result",
"_id": "_pOmmI4BtwOJADfCzSjL",
"_score": 8.713484,
"_source": {
"_meta": {
"calculation": {
"id": "1phiQY4BEuHUnGrO6ufe",
"type": "aggregation"
},
"execution": {
"start_time": "2024-04-01T07:54:12.203Z",
"id": "-ZOmmI4BtwOJADfCzShr"
},
"object": {
"identity": [
"romanov.a@volgablob.ru",
"89166788776",
"romanov.a"
],
"id": "9186db972bafeafed6411ab644d0313bb1def204"
}
},
"_calculation": {
"extended_stats": {
"count": 2,
"min": 5,
"max": 5,
"avg": 5,
"sum": 10,
"sum_of_squares": 50,
"variance": 0,
"variance_population": 0,
"variance_sampling": 0,
"std_deviation": 0,
"std_deviation_population": 0,
"std_deviation_sampling": 0,
"std_deviation_bounds": {
"upper": 5,
"lower": 5,
"upper_population": 5,
"lower_population": 5,
"upper_sampling": 5,
"lower_sampling": 5
}
},
"percentiles": {
"values": {
"1.0": 5,
"5.0": 5,
"25.0": 5,
"50.0": 5,
"75.0": 5,
"95.0": 5,
"99.0": 5
}
},
"span": "1d"
}
}
}