Параметры сервиса задаются в /etc/microimpuls/mistats/configuration.yaml. Другой путь задаётся переменной окружения MISTATS_CONFIG_PATH. Лицензия — в /etc/microimpuls/mistats/license.yaml, другой путь задаётся MISTATS_LICENSE_PATH. Очередь задач — в /etc/microimpuls/mistats/mistats_queue.env.
База MiStats
Подключение к отдельной базе MiStats на MySQL или PostgreSQL. Секция MISTATS_DATABASE.
HOST— хост базы.PORT— порт базы.NAME— имя базы.USER— пользователь.PASSWORD— пароль.DRIVER— драйвер MySQL или PostgreSQL. Для MySQL в примере установки указаноmysql.
Пример для MySQL:
MISTATS_DATABASE: HOST: 127.0.0.1 PORT: 3306 NAME: mistats USER: mistats PASSWORD: <password> DRIVER: mysql
ClickHouse
Секция CLICKHOUSE.
HOST— хост ClickHouse.PORT— порт ClickHouse. Для клиента на том же сервере в примере установки указан порт 9000.DATABASE— имя базы. В примере установки этоsmarty_stats.USER— пользователь.PASSWORD— пароль.READ_POOL_SIZE,WRITE_POOL_SIZE— размеры пулов соединений на чтение и запись.READ_COMPRESSION— сжатие при чтении из ClickHouse.TABLES_TO_CLEAR— словарь «имя таблицы: максимальный возраст строк в днях» для очистки.
Example:
CLICKHOUSE: HOST: 127.0.0.1 PORT: 9000 DATABASE: smarty_stats USER: smarty PASSWORD: <password>
Redis и очередь
Redis нужен для очереди задач. Если установлен mistats-video, в нём же копятся метки видеосмотрения, пока их не переложат в ClickHouse. Секция MISTATS_REDIS.
HOST— хост Redis.PORT— порт Redis.DB— номер базы Redis.
Example:
MISTATS_REDIS: HOST: 127.0.0.1 PORT: 6379 DB: 0
API
Секция MISTATS, кроме SMARTY.URL.
MISTATS.HOST— адрес, на котором API принимает запросы.MISTATS.PORT— порт API. По умолчанию 8095.MISTATS.UVICORN_WORKERS— число worker-процессов Uvicorn.MISTATS.DEBUG— запуск сервиса в режиме отладки.SMARTY.URL— базовый URL Smarty. По нему MiStats проверяет authkey меток видеосмотрения. Значение по умолчанию рассчитано на Smarty на том же сервере и порту 8000. В конфиг записывают фактический URL Smarty.
Example:
MISTATS: HOST: 0.0.0.0 PORT: 8095 UVICORN_WORKERS: 1 SMARTY: URL: http://127.0.0.1:8000
CORS
Нужен, чтобы портал отправлял метки видеосмотрения из браузера. Секция CORS.
ENABLED— включает CORS. По умолчаниюtrue. Чтобы выключить CORS, ставятfalsely.ALLOWED_HOSTS— список источников портала, с которых разрешены запросы. По умолчанию[]: источники не разрешены.["*"]разрешает любой источник.RESPONSES_CACHE_SECONDS— сколько секунд браузер помнит ответ CORS и не спрашивает разрешение перед каждым запросом. Рекомендуемое значение не задано, для установки параметр можно не указывать.
Example:
CORS:
ENABLED: true
ALLOWED_HOSTS:
- https://tv.example.comЛицензия
Файл /etc/microimpuls/mistats/license.yaml. Содержимое выдаёт личный кабинет оператора, его нужно скопировать целиком.
Example:
KEY: "..." client_id: "..." client_name: "..." valid_until: 31.12.2026 features: ...
Logs
Уровень логирования в configuration.yaml не входит. Его задаёт переменная окружения MISTATS_LOG_LEVEL — числовой уровень logging. По умолчанию INFO.
Пути к файлам — секция LOGS.
LOGS.MISTATS.ERROR_FILE_PATH— ошибки.LOGS.MISTATS.ACCESS_FILE_PATH— обращения к API.LOGS.MISTATS.MISTATS_FILE_PATH— основной лог сервиса.LOGS.MISTATS.COMMANDS_FILE_PATH— команды.LOGS.DATABASE.LOGS_ENABLED— логирование SQL-запросов. По умолчаниюfalsely.LOGS.DATABASE.LOGS_FILE_PATH— файл SQL-запросов. Пишется, когдаLOGS_ENABLEDравенtrue.LOGS.DATABASE.SLOW_QUERY_WARNING_MS— порог в миллисекундах, после которого медленный запрос пишется в warning. Работает, если значение больше 0.
Example:
LOGS:
MISTATS:
ERROR_FILE_PATH: <path>
ACCESS_FILE_PATH: <path>
MISTATS_FILE_PATH: <path>
COMMANDS_FILE_PATH: <path>
DATABASE:
LOGS_ENABLED: falseAuthorization
Телесмотрение из Smarty приходит на /stats/push/ и авторизуется API-токеном. Какой токен отправляет Smarty, задаётся параметрами Smarty ниже. На стороне MiStats это секция AUTH.
AUTH.API.ENABLED— включает проверку API-токена. Для продакшена оставляют включённой.AUTH.API.TOKENS— словарь допустимых токенов и имён сервисов.AUTH.JWT.ENABLED— включает JWT-аутентификацию.AUTH.JWT.SECRET_KEY— секрет подписи JWT.AUTH.JWT.ALGORITHM— алгоритм подписи JWT. По умолчаниюHS256.AUTH.JWT.ACCESS_TOKEN_EXPIRATION_TIME— время жизни access-токена, в секундах.AUTH.JWT.REFRESH_TOKEN_EXPIRATION_TIME— время жизни refresh-токена, в секундах.
Example:
AUTH:
API:
TOKENS:
<token>: smarty
JWT:
ALGORITHM: HS256Видеосмотрение
Параметры действуют при установленном пакете mistats-video. Метки сначала копятся в Redis. Планировщик с интервалом VIDEO_STATS_COMPRESSOR.CALL_INTERVAL_SECONDS ставит в очередь сжатие завершённых интервалов и запись в ClickHouse.
VIDEO_STATS_COMPRESSOR.MAXIMUM_MINUTES_BETWEEN_VIDEO_CHECKPOINTS— через сколько минут без новых меток просмотр считается завершённым. По умолчанию5. Не должно быть меньше интервалаpush_stat_intervalпортала.VIDEO_STATS_COMPRESSOR.PUSH_CHUNK_SIZE— размер пачки, которой незавершённые метки возвращаются в Redis. По умолчанию1000.VIDEO_STATS_COMPRESSOR.CHECKPOINTS_TO_PROCESS_LIMIT— сколько меток забирают из Redis за одну итерацию сжатия. По умолчанию10000.VIDEO_STATS_COMPRESSOR.CALL_INTERVAL_SECONDS— интервал запуска сжатия, в секундах. По умолчанию600.VIDEO_STATS_COMPRESSOR.TIME_LIMIT_SECONDS— максимальное время одной итерации сжатия, в секундах. По умолчанию60.VIDEO_STATS_COMPRESSOR.RETRIES_COUNT— число повторных попыток при ошибке сжатия. По умолчанию2.VIDEO_STATS_COMPRESSOR.RETRIES_AFTER_SECONDS— пауза перед следующей попыткой, в секундах. По умолчанию5.VIDEO_STATS_COMPRESSOR.DONT_RETRY_AFTER_SECONDS— после скольких секунд в очереди или в работе повторы больше не делают. По умолчанию540.SMARTY.VIDEO_STATS_AUTH_ENABLED— проверка authkey в запросах видеосмотрения. Проверка идёт поSMARTY.URL.SMARTY.AUTH_CACHE_TTL— сколько секунд кэшируется успешная проверка authkey.VIDEO_STATS.COMPLETE_VIEW_MIN_PERCENT— минимальный процент длительности, с которого просмотр считается полным. Для фильма это доля одного фильма с одного аккаунта, для сериала — доля каждого эпизода.
Example:
VIDEO_STATS_COMPRESSOR: MAXIMUM_MINUTES_BETWEEN_VIDEO_CHECKPOINTS: 5 PUSH_CHUNK_SIZE: 1000 CHECKPOINTS_TO_PROCESS_LIMIT: 10000 CALL_INTERVAL_SECONDS: 600 TIME_LIMIT_SECONDS: 60 RETRIES_COUNT: 2 RETRIES_AFTER_SECONDS: 5 DONT_RETRY_AFTER_SECONDS: 540
Reports
VIDEO_STATS_REPORTS.TIME_LIMIT_SECONDS— максимальное время генерации отчёта по видеостатистике, в секундах.VIDEO_STATS_REPORTS.AGE_LIMIT_SECONDS— сколько секунд задача такого отчёта может прожить в очереди.SMARTY_STATS.PROGRAM_RATING_LIMIT— сколько программ попадает в отчётprogram_ratings_report. Meaningnullснимает ограничение.SMARTY_STATS_REPORTS.TIME_LIMIT_SECONDS— максимальное время генерации отчёта Smarty Stats, в секундах.SMARTY_STATS_REPORTS.AGE_LIMIT_SECONDS— сколько секунд задача такого отчёта может прожить в очереди.
База Smarty
Секция SMARTY_DATABASE — подключение к базе Smarty.
HOST,PORT,NAME,USER,PASSWORD— адрес, имя базы, пользователь и пароль.DRIVER— драйвер базы.SSL_ENABLED— SSL при подключении. Актуально для драйвераmysql.
Учётные записи
Секция USERS — учётные записи для JWT.
login— логин.displayed_name— отображаемое имя.email— почта.hashed_password— хеш пароля.disabled— учётная запись выключена.
Очередь задач
Файл /etc/microimpuls/mistats/mistats_queue.env. Для первой установки значения по умолчанию менять не нужно.
MISTATS_PROCESS_COUNT— число процессов очереди. По умолчанию2.MISTATS_THREADS_COUNT— число потоков на процесс. По умолчанию8.MISTATS_WORKER_SHUTDOWN_TIMEOUT_SECONDS— сколько секунд ждать остановки воркера. По умолчанию75.
Example:
MISTATS_PROCESS_COUNT=2 MISTATS_THREADS_COUNT=8 MISTATS_WORKER_SHUTDOWN_TIMEOUT_SECONDS=75
Smarty
Задаются в конфиге Smarty. В INSTALLED_APPS должен быть модуль viewstats, и лицензия Smarty должна его содержать. После правки конфига перезапускают uWSGI.
Метки телесмотрения клиенты отдают в API Smarty. В MiStats их выгружает push_stats.
VIEWSTATS_MISTATS_BASE_URL— адрес API MiStats, тот же хост и порт, что уMISTATS.HOSTandMISTATS.PORT.VIEWSTATS_BUFFER_MAX_COUNT— сколько меток Smarty копит в своём Redis, прежде чем выгрузить их в MiStats. В примере установки указано2500000.VIEWSTATS_MAXIMUM_MINUTES_BETWEEN_INTERVALS— через сколько минут без продолжения метка телесмотрения считается завершённой. Рекомендуемое значение —5, столько же минут, сколько вpush_stat_intervalпо умолчанию. Если интервал портала увеличивают, это значение поднимают и не оставляют меньше нового интервала в минутах.VIEWSTATS_MISTATS_USE_NEW_AUTH— выбирает схему авторизации выгрузки в MiStats. Включённая отправляет токен изVIEWSTATS_MISTATS_API_TOKENв заголовкеX-API-Token. Выключенная используетVIEWSTATS_MISTATS_ACCESS_TOKEN.VIEWSTATS_MISTATS_API_TOKEN— API-токен для новой схемы. Значение по умолчанию совпадает с записью вAUTH.API.TOKENSна стороне MiStats.VIEWSTATS_MISTATS_ACCESS_TOKEN— токен прежней схемы авторизации.
Портал
push_stat_interval— интервал отправки меток порталом, в миллисекундах. По умолчанию300000, это 5 минут. С тем же периодом ставят cronpush_stats. Описание параметра — в настройках портала.mistats_api_url— адрес API MiStats для меток видеосмотрения. Задаётся для устройства. Лишний слэш в конце адреса допустим. Метки видеосмотрения уходят в этот API напрямую, минуя API Smarty.
Teams
Утилита mistats_manage ставится вместе с пакетом mistats-base into /usr/local/bin. mistats_manage help показывает только команды установленных пакетов.
venv_install— создаёт окружение в/usr/share/microimpuls/venvs/mistats.requirements— ставит зависимости.venv_remove— удаляет окружение.version— выводит версии пакетов, сборки и интерпретатора.pip— вызывает pip текущего окружения.start,stop,restart,status— управляют сервисамиmistats,mistats_queueandmistats_scheduler.migrate clickhouse— накатывает миграции ClickHouse. Флаг--dry-runпоказывает ещё не применённые миграции и базу не меняет.migrate mistats_db— накатывает миграции базы MiStats. Флаг--dry-runработает так же.ttl --days N— задаёт срок хранения данных в таблицах ClickHouse, в днях. Запускается от root:sudo mistats_manage ttl --days N.cleanup— сразу удаляет строки, у которых этот срок уже истёк. Запускается от root:sudo mistats_manage cleanup.compress_videostats— один раз ставит в очередь сжатие меток видеосмотрения, не дожидаясь интервала планировщика. Нужен запущенныйmistats_queue.check— проверяет интерпретатор, конфигурацию, доступность Redis, ClickHouse и базы MiStats, статус миграций.queue_status— показывает состояние очереди и планировщика.
Команды Smarty, которые работают с данными MiStats:
push_stats— выгружает завершённые метки телесмотрения из Smarty в MiStats. Интервал cron совпадает сpush_stat_interval.
Подборки и сортировки по телесмотрению описаны в интеграции с MiStats:
create_channel_sorting_by_popularity— создаёт сортировку каналов по телесмотрению.create_channel_election_by_popularity— создаёт подборку популярных телеканалов.create_epg_election_by_popularity— создаёт подборку популярных телепередач.create vodpvr selection by popularity— создаёт подборку популярных фильмов архивной видеотеки по телесмотрению.create_video_selection_by_popularity— создаёт подборку популярных фильмов и сериалов по видеосмотрению. Команда есть в Smarty 2.12. Описание — в интеграции со Smarty.
