Детали задачи
-
История
-
Решение: Готово
-
Medium
-
Не заполнено
-
Не заполнено
-
Не заполнено
Описание
- Добавить реализацию сервиса EcosAuditService в ecos-webapp-commons/ecos-webapp-lib
Пользователи сервиса будут создавать emitter'ы для событий и периодически слать в них некоторые события, которые происходят в системе.
Внутри реализации сервиса EcosAuditService мы должны реализовать поддержку pipeline’ов
Суть одного pipeline сводится к конфигурации фильтров и выхода. Пример конфигурации:
ecos:
webapp:
task: // часть с task уже реализована. Здесь просто для понимания
executors:
audit:
corePoolSize: 10
audit:
enabled: true
pipelines:
main:
types:
include:
- records.query
exclude:
- records.mutate
async:
enabled: true // сделать отправку асинхронной
executor: audit // см. раздел task.executors
filters:
- type: predicate
config:
t: and
v:
- { t: eq, a: type, v: 'records.query' }
- { t: contains, a: event.sourceId, v: 'integrations/some-source-id' }
outputs:
- type: rabbitmq
config:
exchange: 'audit-events'
Фильтр может как выкидывать некоторые события так и менять существующие
Модель события, которое в итоге пойдет в output:
id: UUID //рандомный UUID time: Instant // время когда произошло событие type: String // тип события user: String // имя пользователя client: ClientData event: Any // здесь может быть любая информация по конкретному событию
По результатам задачи должна быть возможность:
- Настроить фильтрацию событий по типу (поле types.include и types.exclude). В списках фильтрации могут быть указаны либо конкретные значения типов, либо шаблоны вроде https://habr.com/ru/post/489086/ Topic Exchange (т.е. делим фильтр по знакам “.” на слова и обрабатываем символы # и * если они есть)
- Настроить выгрузку событий аудита в rabbitmq
- Добавить фильтры на основе предикатов (см. сервис ru.citeck.ecos.records2.predicate.PredicateService)
- Настроить асинхронную отправку событий
Общая архитектурная идея похожа на https://www.elastic.co/logstash/
Вложенные файлы
Связи запроса
- causes
-
ECOSCOM-4884 Documentation. Audit subsystem API and services to RTD
-
- Готово
-
- mentioned on
(35 mentioned on)