Skip to content

Data Storager

data-storager (репозиторий и имя сервиса) — микросервис, который переносит данные из основной реляционной БД Webim в поисковый кластер (Elasticsearch или OpenSearch) и аналитическую СУБД ClickHouse. Сервис работает по модели «чтение → преобразование → запись» и не изменяет исходные данные в основных базах Webim.

Функции

Сервис обладает следующими функциями:

  • Индексация истории чатов, статусов операторов и связанных объектов в Elasticsearch / OpenSearch (для быстрого поиска в Истории диалогов)

  • Перенос статистических данных в ClickHouse (для работы Статистики)

  • Инкрементальное обновление данных по мере поступления новых событий (через брокер сообщений Kafka)

  • Публикация технических метрик для мониторинга

  • Предоставление эндпоинтов для проверки состояния сервиса

Сетевые требования

Сервис предоставляет HTTP-эндпоинты для мониторинга и проверки состояния. Порт задаётся переменными окружения (значения по умолчанию следует уточнять по .env сервиса).

Метрики доступны по пути /metrics.

Проверка состояния доступна по пути /health (если включена в поставке/конфигурации сервиса).

Для hosted-клиентов необходимо открыть следующие порты и направления для узла с сервисом.

Направление Назначение Порт/протокол Примечание
Входящие HTTP-эндпоинты сервиса порт сервиса (по умолчанию 8000/tcp) Для доступа к /metrics и /health.
Исходящие Бэкенд Webim 443/tcp Для получения данных и служебных запросов.
Исходящие Кэш порт кэша Если используется внешний кэш (рекомендуется при масштабировании).
Исходящие Elasticsearch / OpenSearch 9200/tcp (по умолчанию) Для записи индексов истории чатов.
Исходящие ClickHouse 9000/tcp (по умолчанию) Для записи статистических данных.
Исходящие Apache Kafka порт брокера Получение триггеров на обработку данных.

Переменные окружения

Сервис настраивается через файл .env. Полный перечень переменных и значения по умолчанию смотрите в репозитории сервиса: файл .env.template в корне (разработка) и deploy/.es-storager.env.example (типичный hosted-пример с другими именами для поиска: ELASTIC_URLS, ELASTIC_USER и т. д.). Ниже — имена из .env.template, которые чаще всего нужно согласовать при развёртывании:

Переменная Назначение
KAFKA_BROKER Адрес брокера Apache Kafka.
DISCOVER_AND_STORE_CHATS_TOPIC Имя топика с задачами на обработку (в шаблоне задано по умолчанию).
SEARCH_ENGINE_URLS URL узлов Elasticsearch / OpenSearch (в примере deploy/.es-storager.env.exampleELASTIC_URLS).
SEARCH_ENGINE_USER, SEARCH_ENGINE_PASSWORD Учётная запись кластера поиска (в hosted-примере часто ELASTIC_USER, ELASTIC_PASSWORD).
SEARCH_ENGINE_INDEX_TEMPLATE Шаблон имён индексов, например {account}-{object}.
SEARCH_ENGINE_TYPE elasticsearch или opensearch.
STATS_DATABASE_DEFAULT_URLS Подключения к ClickHouse для статистики (несколько URL через запятую при необходимости).
META_DATABASE_URL Подключение к meta-БД Webim.
PRO_DATABASE_TEMPLATE, PRO_DATABASE_DEFAULT_URL Шаблон имени и URL баз pro по аккаунтам.
REDIS_CACHE_LOCATION Строка подключения к Redis для кэша.
STATS_WEB_PORT Порт HTTP-сервиса статистики (метрики и служебные эндпоинты; по умолчанию в коде — 8000).
ES_KEY_VALUE Значение, с которым producer сопоставляет value для ключа es_storager_key в таблице accountkeyvalue (см. Подключение Elasticsearch или OpenSearch).
SENTRY_DSN Опционально: отправка ошибок в Sentry.

Масштабирование и отказоустойчивость

Сервис может быть развернут в нескольких экземплярах за балансировщиком (если это предусмотрено вашей схемой). При горизонтальном масштабировании рекомендуется использовать общий внешний кэш для согласованной работы экземпляров.

Логирование и мониторинг

Логи приложения пишутся в стандартный вывод процесса.

Технические метрики доступны на /metrics и могут быть собраны системой мониторинга. Для контроля доступности рекомендуется настроить проверку /health (если эндпоинт включён).


data-storager обеспечивает перенос данных из основной БД Webim в Elasticsearch / OpenSearch и ClickHouse, предоставляя эндпоинты для мониторинга и контроля состояния.


Последнее обновление страницы: 13 апреля 2026 г.