Детали задачи
-
История
-
Решение: Готово
-
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)