Оставить заявку
  1. Документация
  2. MiStats
  3. Параметры и команды

Параметры и команды

Параметры сервиса задаются в /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 — словарь «имя таблицы: максимальный возраст строк в днях» для очистки.

Пример:

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.

Пример:

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.

Пример:

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, ставят false.
  • ALLOWED_HOSTS — список источников портала, с которых разрешены запросы. По умолчанию []: источники не разрешены. ["*"] разрешает любой источник.
  • RESPONSES_CACHE_SECONDS — сколько секунд браузер помнит ответ CORS и не спрашивает разрешение перед каждым запросом. Рекомендуемое значение не задано, для установки параметр можно не указывать.

Пример:

CORS:
  ENABLED: true
  ALLOWED_HOSTS:
    - https://tv.example.com

Лицензия

Файл /etc/microimpuls/mistats/license.yaml. Содержимое выдаёт личный кабинет оператора, его нужно скопировать целиком.

Пример:

KEY: "..."
client_id: "..."
client_name: "..."
valid_until: 31.12.2026
features:
  ...

Логи

Уровень логирования в 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-запросов. По умолчанию false.
  • LOGS.DATABASE.LOGS_FILE_PATH — файл SQL-запросов. Пишется, когда LOGS_ENABLED равен true.
  • LOGS.DATABASE.SLOW_QUERY_WARNING_MS — порог в миллисекундах, после которого медленный запрос пишется в warning. Работает, если значение больше 0.

Пример:

LOGS:
  MISTATS:
    ERROR_FILE_PATH: <path>
    ACCESS_FILE_PATH: <path>
    MISTATS_FILE_PATH: <path>
    COMMANDS_FILE_PATH: <path>
  DATABASE:
    LOGS_ENABLED: false

Авторизация

Телесмотрение из 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-токена, в секундах.

Пример:

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 — минимальный процент длительности, с которого просмотр считается полным. Для фильма это доля одного фильма с одного аккаунта, для сериала — доля каждого эпизода.

Пример:

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

Отчёты

  • VIDEO_STATS_REPORTS.TIME_LIMIT_SECONDS — максимальное время генерации отчёта по видеостатистике, в секундах.
  • VIDEO_STATS_REPORTS.AGE_LIMIT_SECONDS — сколько секунд задача такого отчёта может прожить в очереди.
  • SMARTY_STATS.PROGRAM_RATING_LIMIT — сколько программ попадает в отчёт program_ratings_report. Значение null снимает ограничение.
  • 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.

Пример:

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.HOST и MISTATS.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 минут. С тем же периодом ставят cron push_stats. Описание параметра — в настройках портала.
  • mistats_api_url — адрес API MiStats для меток видеосмотрения. Задаётся для устройства. Лишний слэш в конце адреса допустим. Метки видеосмотрения уходят в этот API напрямую, минуя API Smarty.

Команды

Утилита mistats_manage ставится вместе с пакетом mistats-base в /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_queue и mistats_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_selection_by_popularity — создаёт подборку популярных телеканалов.
  • create_epg_selection_by_popularity — создаёт подборку популярных телепередач.
  • create_vodpvr_selection_by_popularity — создаёт подборку популярных фильмов архивной видеотеки по телесмотрению.
  • create_video_selection_by_popularity — создаёт подборку популярных фильмов и сериалов по видеосмотрению. Команда есть в Smarty 2.12. Описание — в интеграции со Smarty.

Готовы запустить свой видеосервис?

Запросите персональную демонстрацию и узнайте, как Майкроимпульс поможет вашему бизнесу

Для отправки формы нужны функциональные cookie — без них не загрузится защита SmartCaptcha.