Перейти к содержанию

Режимы подсчёта и обновления статистики

В Webim актуальность данных в отчётах зависит от версии модуля статистики (версия 1 или версия 2) и выбранного режима подсчёта/обновления. В данном разделе рассматриваются режимы подсчёта и обновления статистики.

Статистика версии 1

В Статистике версии 1 часть данных кэшируется. В зависимости от настроек возможны разные сценарии обновления.

1) Быстрая статистика: только отображение рассчитанного кэша

В редакторе настроек аккаунта (account config) установлены параметры настроек сервера:

  • new_stats_mode = true

  • stats_display_only = true

Что происходит:

  • при открытии страницы статистики пересчёт не запускается;

  • показываются данные, рассчитанные заранее фоновым заданием (как правило — за прошлые сутки).

Данные в таком случае обновляются по расписанию (обычно 1 раз в сутки).

2) Быстрая статистика: кэш + расчёт при запросе

В редакторе настроек аккаунта (account config) установлены параметры настроек сервера:

  • new_stats_mode = true

  • stats_display_only = false

Что происходит:

  • при открытии статистики система достраивает (дополняет) кэш chatstats для выбранного периода и фильтров;

  • данные могут быть актуальнее, но запрос может выполняться дольше и создавать дополнительную нагрузку на Chat Backend.

Данные в таком случае обновляются при обращении к отчётам (в интерфейсе или через API статистики).

3) Полный пересчёт при запросе

В редакторе настроек аккаунта (account config) установлен параметр настройки сервера:

  • new_stats_mode = false

Что происходит:

  • статистика пересчитывается целиком за выбранный период при каждом запросе;

  • максимальная актуальность, но самый тяжёлый режим по времени и нагрузке.

N.B.

В режимах 1–2 данные за текущий день могут обновляться не сразу: часть показателей появится после фонового расчёта или после расчёта при открытии страницы статистики. Для прошедших дней значения обычно стабилизируются после расчёта кэша.

Статистика версии 2 (ClickHouse)

В Статистике версии 2 отчёты строятся на данных в ClickHouse. Используются два подхода к наполнению ClickHouse.

1) Наполнение со стороны Chat Backend

Данные попадают в ClickHouse со стороны Chat Backend. Обновление может идти (почти) в реальном времени или с небольшой задержкой/периодичностью — в зависимости от настроек.

Параметры в редакторе настроек аккаунта (account config):

  • analytics_v2_chat_backend_population — включает заполнение статистики версии 2 данными со стороны Chat Backend;

  • analytics_v2_chat_backend_realtime_population — включает наполнение realtime-данными;

  • analytics_v2_chat_backend_realtime_population_period — период обновления realtime-данных (в секундах).

Важно

Параметры analytics_v2_* актуальны начиная с версии 10.8. В версиях 10.4–10.7 использовались прежние имена (clickhouse_stats, chat_backend_stats_population, chat_backend_realtime_population и др.) — см. описание параметров account config.

N.B.

Обычные данные — это общие записи по чатам, оценкам, опросам, операторам и т. п., которые пополняются по мере изменений в системе и включают все чаты.

Realtime-данные — это актуальный «срез» данных об онлайне системы и активных на данный момент операторах/чатах; как правило, они содержат только активные чаты и обновляются с заданной периодичностью.

2) Периодическое заполнение фоновой задачей

Для дозаполнения ClickHouse и устранения «пробелов» по данным используется фоновая задача. Ее можно запускать вручную или по расписанию. Подробнее: Перенос данных в ClickHouse.

Нововведение в 10.8

Начиная с версии 10.8 в Webim есть отдельный микросервис data-storager. Он является третьим и основным способом обновления данных в Статистике версии 2. Эксплуатационное описание — в статье Data Storager.

Как он работает:

  • получает «триггеры» на обработку через брокер сообщений (Kafka). Триггер — это сообщение-задание с названием аккаунта (выполнение очередного шага обновления данных для этого аккаунта);

  • вычитывает изменения из основной базы данных Webim (MySQL/MariaDB/PostgreSQL — в зависимости от инсталляции). Сервис получает не сами данные, а только триггер, после чего самостоятельно читает нужные записи из БД;

  • записывает данные:

    • в Elasticsearch / OpenSearch (индексы, используемые для поиска чатов),

    • в ClickHouse (данные для отчётов Статистики версии 2).

Для инкрементального переноса используются маркеры (хранятся в Redis) — служебные значения прогресса, которые фиксируют, «до какого места» данные уже обработаны. Поэтому при повторных запусках data-storager переносит только новые и изменённые данные.

Если маркеров ещё нет (первый запуск), наполнение статистики в ClickHouse начинается с ограниченной глубины переноса — по умолчанию последние 30 дней.

Схема режимов расчёта статистики (ES / data-storager)
Схема режимов расчёта статистики (ES / data-storager)

Важно

data-storager получает триггеры через Kafka и вычитывает данные из основной БД Webim. Внутренние детали реализации в этом разделе не рассматриваются.