# Схема прохождения событий

Схема описывает методику получения, обработки и сохранения данных из внешних источников.

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

Изображение

Схема предполагает наличие 4-х звеньев:

  1. Сборщик логов – точка прослушивания HTTP. Программа обертывает полученные данные в модель (_id, _aggregatedAt, _connector, _sourceType, _source) и отправляет сообщение в препроцессор на обработку. Программа также проводит валидацию ключа коннектора и входной модели в зависимости от типа входных данных.

  2. Препроцессор событий. Запускает обработчик входного сообщения, если он есть. Обработчик может:

    • Выполнить парсинг и превращение текста в JSON.
    • Выполнить обработку пакетных событий – вычленить из этих событий единичные элементы.
    • Выполнить преобразование входной модели, например, добавить вычисляемое поле или изменить тип поля в модели.
    • Добавить системные метки для событий.
  3. Анализатор схемы БД сообщения. Формирует модель для базы данных согласно схеме, записанной в коннекторе. Создает эту схему исходя из модели JSON, добавляя нужные поля при необходимости. Производит потоковую обработку сообщений с использованием ML на основе обученной ранее модели, присваивая им следующие метки:

    • _labels.ml.cluster.id – порядковый номер кластера, к которому относится событие.
    • _labels.ml.cluster.modelVersion – версия (итерация) модели.
    • _labels.ml.cluster.position – позиция события относительно центра кластера. Дробное значение, чем меньше – тем ближе к центру кластера.
  4. Буфер событий. Выполняет запись всех первичных событий в БД ClickHouse, в соответствии со схемой потока, из которого они получены.