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