Настройка конвейера для аудита коллектора
Данное руководство описывает процесс настройки конвейера для обнаружения отсутствия ожидаемых событий от точек входа конвейеров выбранного коллектора.
О настройке аудита точек входа коллектора
Чтобы настроить конвейер для мониторинга состояния источников, первоначально требуется создать и настроить конвейер в рамках коллектора, который содержит источники событий с необходимыми метриками для мониторинга. Данные, проходящие через такой конвейер, должны быть отфильтрованы и проанализированы на предмет отсутствия активности от заданных источников.
Для создания конвейера корреляции на отсутствие события, понадобятся следующие элементы:
-
Сбор метрик: обеспечивает непрерывный сбор метрик активности от выбранных элементов коллектора.
-
Нормализатор: приводит собранные метрики к единому формату для упрощения последующего анализа.
-
Коррелятор: проверяет поступление событий в заданные временные интервалы (настраиваемый параметр
ttl
). Если от элемента события не поступают, генерируется корреляционное событие об их отсутствии. Настройка коррелятора включает определение оптимальных значений дляttl
иcount
с учетом частоты и природы поступающих данных. -
Конечная точка: отправляет обработанные и коррелированные события в хранилища данных и внешние системы.
Таким образом, настройка конвейера для мониторинга источников событий включает следующие шаги:
Добавление конвейера
Конвейер — это упорядоченная последовательность взаимосвязанных элементов, выполняющих отдельные этапы обработки событий в системе.
Добавление и настройка конвейера обработки событий осуществляются в рамках коллектора, который содержит элементы с необходимыми метриками для мониторинга. |
Чтобы добавить конвейер:
-
Перейдите на вкладку Конвейеры в карточке выбранного коллектора. Система отобразит список конвейеров коллектора.
-
В нижней части окна нажмите на кнопку Добавить. На экране отобразится окно добавления конвейера.
-
Введите название конвейера.
-
При необходимости введите описание конвейера.
Установите флажок Открыть конфигурацию конвейера, чтобы сразу перейти в окно настроек конфигурации конвейера после его создания. -
Нажмите на кнопку Добавить. Система создаст конвейер и отобразит соответствующее уведомление. Новый конвейер появится в списке конвейеров на вкладке Конвейеры в карточке коллектора.
Настройка конфигурации конвейера
Перед настройкой конфигурации конвейера определите, метрики каких источников на конвейерах коллектора требуется отслеживать. |
При настройке конвейера необходимо создать его компоненты, сконфигурировать их, упорядочить и объединить в последовательность, соответствующую логике обработки данных.
Чтобы перейти к настройке конфигурации конвейера:
-
Откройте карточку конвейера по стрелке (
) в его строке и нажмите на кнопку Конфигурация конвейера в нижней части карточки.
-
В открытом окне конфигурации конвейера убедитесь, что в выпадающем списке Версия в правом верхнем углу окна выбран пункт Черновик.
Сбор метрик
Сбор метрик — это элемент конвейера, который собирает метрики по отдельным элементам конвейеров коллектора для их дальнейшей обработки и анализа.
С помощью сбора метрик можно отслеживать поступление событий от источника на конвейер и выявлять ситуации, когда точка входа перестает получать события.
При создании сбора метрик можно задать интервал между сборами метрик в секундах в поле Период сбора метрик.
Добавьте на конвейер сбор метрик. При создании выберите элементы для отслеживания и определите интервал между сборами метрик в поле Период сбора метрик. Для выбора доступны элементы всех конвейеров в рамках коллектора.
Нормализация данных
На этом этапе метрики, поступающие от различных элементов конвейера, приводятся к единому формату.
Нормализатор преобразовывает события с помощью установленных на нем правил нормализации. Этот элемент конвейера принимает на вход события, проводит их нормализацию и на выходе предоставляет нормализованные события.
Чтобы добавить нормализацию:
-
Добавьте на конвейер нормализатор. При создании элемента, используйте системное правило нормализации "Правило нормализации Мониторинг источников".
Пример 1. Правило нормализации "Мониторинг источников", схема RObjectid: "786d83cb-48e0-4d5a-b050-ebeea34455cd" name: "Правило нормализации Мониторинг источников" type: normalization_rule description: "Правило нормализации для событий сбора метрик" version: 0.0.5 author: R-Vision tags: - metrics filter: !vrl | true normalizer: !vrl | .dproduct = "metrics" . |= compact({ "dvendor": to_string(.raw.namespace) ?? "", "name": to_string(.raw.tags.component_id) ?? "", "cnt": to_string(.raw.counter.value) ?? "", "cat" : to_string(.raw.name) ?? "", }) tests: # Наименование теста. Должен быть уникальным для каждого теста в рамках правила - name: "testing" # Список тестовых событий events: - raw: {"counter":{"value":1751.0},"kind":"absolute","name":"component_received_event_bytes_total","namespace":"vector","tags":{"component_id":"56c8067a-7f1f-4e4c-8095-f8261ed8227d_WXAm_yVi0VM90-btxewDl","component_kind":"transform","component_type":"remap","host":"collector-bf157c1b-107d-4090-b137-65c89fa14933-795dbc6cff-mhckd"},"timestamp":"2024-05-29T10:26:42.688089484Z"} # Проверка для тестовых событий assertion: !vrl | assert_eq!(.[0].cat, "component_received_event_bytes_total") assert_eq!(.[0].cnt, "1751") assert_eq!(.[0].dvendor, "vector") assert_eq!(.[0].name, "56c8067a-7f1f-4e4c-8095-f8261ed8227d_WXAm_yVi0VM90-btxewDl")
Интерпретация
В блоке
normalizer
правила применяется VRL-функцияcompact
для создания упрощенной структуры данных. Она включает следующие поля:-
dvendor
: присваивает данному полю строковое представление значения поляnamespace
из исходного события. Если полеnamespace
отсутствует, присваивается пустая строка. -
name
: присваивает данному полю строковое представление значенияcomponent_id
, содержащегося в тегах исходного события. Если значениеcomponent_id
отсутствует, возвращается пустая строка. -
cnt
: задается строковое представление значения счетчикаcounter.value
из исходного события. Если значение счетчика отсутствует, возвращается пустая строка. -
cat
: строковое представление поля name из исходного события. Если поле name не определено, результатом будет пустая строка.Функция compact
автоматически удаляет из результата любые ключи, которым присвоены пустые строки или значенияnull
, тем самым создавая более простую для обработки структуру данных.
-
-
Выход элемента Сбор метрик соедините со входом элемента Нормализатор.
Корреляция данных
Чтобы события, поступающие на конвейер, коррелировались, необходимо добавить на конвейер коррелятор.
Коррелятор позволяет связывать различные события и создавать комплексные правила на их основе. На входе применяет правила корреляции к потоку событий. На выходе выдает корреляционные события.
Чтобы добавить коррелятор, необходимо установить в нем правило корреляции. Правила корреляции определяют, как коррелятор будет обрабатывать входящие данные и формировать на их основе корреляционные события.
-
Добавьте на конвейер коррелятор. При создании элемента, используйте системное правило корреляции "Правило корреляции Мониторинг источников".
Пример 2. Правило корреляции "Мониторинг источников", схема RObjectid: "6cd640a1-c065-40fc-9341-78067ccdefe6" name: "Правило корреляции Мониторинг источников" type: correlation_rule description: "Правило корреляции ориентировано на события с элемента Сбор метрик. При отсутствии событий с точки входа в течении заданного периода, будет создано корреляционное событие" author: R-Vision version: 0.0.16 known_false_positives: - "события приходят блоком данных с определенной периодичностью, которая выше ttl" severity: high tags: - metrics filter: !vrl | .dvendor == "vector" aliases: event_1: filter: !vrl | .cat == "component_received_events_total" && .cnt != "0" select: alias: event_1 group: - alias: event_1 by: - cnt - name count: 3 ttl: 60 on_correlate: !vrl | .dvendor = "vector" cs = [ encode_json(%event_1[0].raw), encode_json(%event_1[1].raw), encode_json(%event_1[2].raw)] .cs1 = join(cs, ", ") ?? "" .cs1Label = "Базовые события" .cnt = to_string(%event_1[0].cnt) ?? "-" name = to_string(%event_1[0].name) ?? "-" .name = name .message = "Перестали поступать события с источника {{name}}" tests: # Наименование теста. Должен быть уникальным для каждого теста в рамках правила - name: Test event # Список тестовых событий events: - {"id":"2f81df63-c2ea-429e-b16d-cdd1cc1d7a63","sourceIp":"","tenantId":"00000000-0000-0000-0000-000000000000","art":"2024-06-04T14:02:18.000+03:00","raw":"{\"counter\":{\"value\":13.0},\"kind\":\"absolute\",\"name\":\"component_received_events_total\",\"namespace\":\"vector\",\"tags\":{\"component_id\":\"56c8067a-7f1f-4e4c-8095-f8261ed8227d_WXAm_yVi0VM90-btxewDl\",\"component_kind\":\"transform\",\"component_type\":\"remap\",\"host\":\"collector-bf157c1b-107d-4090-b137-65c89fa14933-85c5cb5c6f-qnh97\"},\"timestamp\":\"2024-06-04T11:02:18.582264635Z\"}","collectorId":"bf157c1b-107d-4090-b137-65c89fa14933","timestamp":"2024-06-04T14:02:18.000+03:00","cnt":13,"type":"нормализованное событие","dvendor":"vector","dproduct":"metrics","name":"56c8067a-7f1f-4e4c-8095-f8261ed8227d_WXAm_yVi0VM90-btxewDl","cat":"component_received_events_total"} - {"id":"2f81df63-c2ea-429e-b16d-cdd1cc1d7a63","sourceIp":"","tenantId":"00000000-0000-0000-0000-000000000000","art":"2024-06-04T14:02:18.000+03:00","raw":"{\"counter\":{\"value\":13.0},\"kind\":\"absolute\",\"name\":\"component_received_events_total\",\"namespace\":\"vector\",\"tags\":{\"component_id\":\"56c8067a-7f1f-4e4c-8095-f8261ed8227d_WXAm_yVi0VM90-btxewDl\",\"component_kind\":\"transform\",\"component_type\":\"remap\",\"host\":\"collector-bf157c1b-107d-4090-b137-65c89fa14933-85c5cb5c6f-qnh97\"},\"timestamp\":\"2024-06-04T11:02:18.582264635Z\"}","collectorId":"bf157c1b-107d-4090-b137-65c89fa14933","timestamp":"2024-06-04T14:02:18.000+03:00","cnt":13,"type":"нормализованное событие","dvendor":"vector","dproduct":"metrics","name":"56c8067a-7f1f-4e4c-8095-f8261ed8227d_WXAm_yVi0VM90-btxewDl","cat":"component_received_events_total"} - {"id":"22daee10-9148-4284-be42-3c0e9c2b9f33","sourceIp":"","tenantId":"00000000-0000-0000-0000-000000000000","art":"2024-06-04T14:01:48.000+03:00","raw":"{\"counter\":{\"value\":13.0},\"kind\":\"absolute\",\"name\":\"component_received_events_total\",\"namespace\":\"vector\",\"tags\":{\"component_id\":\"56c8067a-7f1f-4e4c-8095-f8261ed8227d_WXAm_yVi0VM90-btxewDl\",\"component_kind\":\"transform\",\"component_type\":\"remap\",\"host\":\"collector-bf157c1b-107d-4090-b137-65c89fa14933-85c5cb5c6f-qnh97\"},\"timestamp\":\"2024-06-04T11:01:48.582435089Z\"}","collectorId":"bf157c1b-107d-4090-b137-65c89fa14933","timestamp":"2024-06-04T14:01:48.000+03:00","cnt":13,"type":"нормализованное событие","dvendor":"vector","dproduct":"metrics","name":"56c8067a-7f1f-4e4c-8095-f8261ed8227d_WXAm_yVi0VM90-btxewDl","cat":"component_received_events_total"} assertion: !vrl | assert_eq!(.[0].message, "Перестали поступать события с источника 56c8067a-7f1f-4e4c-8095-f8261ed8227d_WXAm_yVi0VM90-btxewDl") assert_eq!(.[0].cnt, "13") assert_eq!(.[0].dvendor, "vector") assert_eq!(.[0].severity, "high")
Интерпретация
Правило корреляции "Мониторинг источников" предназначено для отслеживания метрик конвейеров коллектора. Если события с точки входа не поступают в течение 1 минуты, коррелятор генерирует корреляционное событие.
Логика фильтрации (filter)
-
Основной фильтр —
.dvendor == "vector"
, выбирающий события, у которых значениеdvendor
равно "vector".
Логика фильтрации (aliases)
-
Псевдоним
event_1
: фильтр для событий с метрикой, гдеcat
равно "component_received_events_total" иcnt
не равно "0".
Соединение потоков событий (select и group)
-
select
: выбор псевдонима для дальнейшей обработки. В данном случае используетсяevent_1
. -
group
: группировка событий по полямcnt
иname
. Группировка применяется к псевдонимуevent_1
и формируется при накоплении 3 событий.
Срок хранения промежуточных данных корреляции (ttl)
-
ttl
на уровне правила задает общее максимальное время жизни промежуточных корреляционных данных — 60 секунд. Это время определяет, как долго промежуточные результаты будут храниться в памяти до их автоматического удаления.
Пост-корреляционная логика (on_correlate)
При срабатывании корреляции создается сообщение об отсутствии событий с указанного источника.
-
Формирование сообщения:
-
message
: формируется сообщение "Перестали поступать события с источника " + значениеname
, которое указывает на идентификатор элемента, из которого ожидались данные. -
dvendor
: поле устанавливается в значение "vector", что соответствует источнику данных. -
cnt
: выводится значение счетчика последнего события, что помогает определить объем данных до прекращения поступления. -
name
: содержит идентификаторы конвейера и элемента, которые породили событие. -
component_id
: отображает идентификатор элемента, предоставляющий конкретный источник данных.
-
-
-
Выход элемента Нормализатор соедините со входом элемента Коррелятор.
Конечная точка
Конечная точка, в зависимости от настроек, пересылает событие в хранилище событий или внешнюю систему. Имеет один вход и не имеет выходов.
-
Добавьте на конвейер конечную точку, в которой будут сохраняться события.
-
Выход элемента Коррелятор соедините со входом элемента Конечная точка.
Включение коллектора и установка конфигурации конвейера
Перед включением конвейера убедитесь, что связанный с ним коллектор уже включен. |
Чтобы метрики начали поступать на конвейер и обрабатываться:
-
Перейдите в карточку коллектора и включите его.
-
Откройте конфигурацию конвейера и установите текущую конфигурацию.
Рекомендации по настройке
Параметры ttl
, count
и период сбора метрик влияют на чувствительность и время реакции системы. Важно настроить их в соответствии с конкретными требованиями, чтобы обеспечить баланс между чувствительностью системы и устойчивостью к ложным срабатываниям.
Параметр ttl
ttl
(time-to-live) определяет максимальное время, в течение которого промежуточные результаты корреляционных операций сохраняются в памяти. Значение ttl
должно соответствовать максимальному времени между ожидаемыми событиями, с учетом допустимой погрешности для обработки возможных задержек.
Чем выше значение ttl
, тем более длительный период времени охватывает корреляционное окно, что может привести к более позднему обнаружению проблем. Напротив, более низкое значение ttl
может привести к частым ложным срабатываниям, особенно в периоды низкой активности или вариативности данных.
Конфигурация ttl
должна соответствовать максимальному времени между ожидаемыми событиями с учетом некоторой погрешности для обработки возможных задержек.
Формула для настройки ttl
:
ttl = максимальное время между событиями + допустимая погрешность при реагировании
Параметр count
count
определяет количество событий, необходимых для формирования группы в правилах корреляции. Значение count
должно быть выбрано на основе анализа частоты и объема поступающих данных.
Чем выше значение count
, тем больше событий требуется для срабатывания корреляции, что может уменьшить количество ложных срабатываний, но при этом привести к пропуску важных корреляций. Напротив, более низкое значение count
увеличивает чувствительность системы, но также может привести к частым ложным срабатываниям.
Период сбора метрик
При создании элемента сбора метрик можно задать интервал между сборами в секундах, что позволяет контролировать частоту мониторинга активности источников. Этот интервал настраивается в поле Период сбора метрик при добавлении сбора метрик на конвейер. Его необходимо адаптировать в соответствии с динамикой изменений в отслеживаемой среде.
При выборе интервала важно учитывать не только частоту изменений в данных, но и влияние этого интервала на производительность системы и ресурсы серверов.
Пример настройки параметров ttl
и count
-
Для событий, поступающих с периодичностью раз в час, значение
ttl
следует установить на 2 часа для некритичных событий и 1 час 2 минуты для критичных событий. -
Для событий, поступающих каждую секунду, значение
ttl
можно установить на 1 минуту.
Выбор значения параметра count
зависит от частоты событий:
-
Для редких событий значение
count
можно установить на 1, чтобы система реагировала на каждое событие. -
Для частых событий значение
count
можно установить на 5 или выше, чтобы уменьшить количество ложных срабатываний.