Перейти к основному содержимому
Версия: 4.6.X

Фильтрация событий на коллекторах и Normalize-коллектор

Фильтрация событий на коллекторах

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

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


Поток событий в интеграционной шине

Фильтрация включена на коллекторе

Когда фильтрация включена, коллектор самостоятельно применяет фильтры и направляет события по двум потокам:

  1. EVENTS — коллектор передает события в komrad-processor, который записывает их в базу данных. Далее komrad-server использует БД для поиска и отображения событий.
  2. FILTERS — коллектор передает отфильтрованные события в komrad-correlator для корреляции.

Фильтрация выключена на коллекторе

Когда фильтрация на коллекторе выключена, события направляются через промежуточный фильтрующий сервис:

  1. Коллектор отправляет события в поток UNFILTERED.
  2. Фильтрующий сервис (Normalize-коллектор) вычитывает события из UNFILTERED, применяет фильтры и распределяет их:
    • EVENTS — далее в komrad-processor и БД.
    • FILTERS — далее в komrad-correlator.

Normalize-коллектор как фильтрующий сервис

Фильтрующий сервис реализован в виде специально сконфигурированного Normalize-коллектора. Он подключается к указанным серверам NATS, вычитывает события из заданных тем (subject) и отправляет их по интеграционной шине.

Чтобы Normalize-коллектор работал как фильтрующий сервис, необходимо сконфигурировать его на подключение к интеграционной шине и чтение из потока UNFILTERED. После применения фильтров события автоматически передаются в потоки EVENTS и FILTERS.

Пример конфигурации

komrad-normalize-collector.yaml
collector:
type: normalize
value:
sources:
- stream: UNFILTERED
subject: unfiltered.>
source:
servers:
- nats://localhost:3490
user: komrad
password: pass
user-credentials: ""
tls:
disable: false
ServerName: ""
TrustedCA: /var/lib/echelon/komrad/certs/ca.pem
Cert: /var/lib/echelon/komrad/certs/client.pem
CertKey: /var/lib/echelon/komrad/certs/client-key.pem
system-pool: false
min-version: "1.3"
client-auth: require-and-verify-client-cert
tuning:
connect-timeout: 10s
max-reconnects: 1000000
max-wait: 0s
ping-interval: 2m
max-pings-outstanding: 2
publish-async-max-pending: 0
reconnect-interval: 5s
reconnect-wait: 1s
retry-on-failed-connect: false
replicas: 1

Описание параметров

ПараметрОписание
typeТип коллектора — normalize
sources[].streamИмя NATS JetStream-потока для чтения событий
sources[].subjectNATS subject для подписки (поддерживается wildcard >)
source.serversСписок адресов серверов NATS
source.user / passwordУчетные данные для подключения к NATS
source.tlsНастройки TLS-соединения с NATS
source.tuningПараметры настройки соединения (таймауты, повторные подключения, пинги)
replicasКоличество реплик для обеспечения отказоустойчивости
Когда использовать

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