Прежде всего необходимо поднять MongoDB-сервер, на котором будут храниться данные телесмотрения абонентов. Минимальная поддерживаемая версия MongoDB — 3.4.
Далее, в секции INSTALLED_APPS
файла конфигурации Smarty необходимо добавить модуль viewstats
, а также указать данные для подключения к поднятому серверу MongoDB:MONGODB_HOST
— Адрес сервера MongoDB, тип данных str
;MONGODB_PORT
— Порт сервера MongoDB, тип данных int
;MONGODB_NAME
— Название базы данных, тип данных str
;MONGODB_USERNAME
— Имя пользователя для авторизации, тип данных str
;MONGODB_PASSWORD
— Пароль для авторизации, тип данных str
;MONGODB_AUTH_METHOD
— Метод авторизации (зависит от версии MongoDB), тип данных str
;
И установить все недостающие миграции командой:
smarty_manage migrate --settings=settings.smarty
Пример конфигурации:
INSTALLED_APPS += ( 'viewstats', // ... )
MONGODB_HOST = '127.0.0.1' MONGODB_PORT = 27017 MONGODB_NAME = 'Test' MONGODB_USERNAME = 'Test' MONGODB_PASSWORD = 'Password' MONGODB_AUTH_METHOD = 'SCRAM-SHA-1'
Для того, чтобы абонентские устройства начали отправлять статистику на сервер, необходимо включить ее отправку в панели администрирования на странице «Настройки STB и приложений» (чекбокс «Включить сбор статистических данных на сервер Smarty»)
Настройка модуля сбора статистики по абонентам
Для отображения информации внутри вкладки «Динамика абонентов» в секции INSTALLED_APPS
в файле конфигурации помимо модуля viewstats
необходимо добавить модуль smartystats
.
После добавления модулей необходимо установить все недостающие миграции командой
smarty_manage migrate --settings=settings.smarty
И настроить корректную работу management-команд cache_max_online
и save_stats
.
Команда cache_max_online
отвечает за обновление информации о максимальном числе абонентов онлайн для статистики. Можно запускать с любой регулярностью, но не реже, чем раз в сутки.
Команда save_stats
отвечает за сбор и хранение статистики по каждому клиенту для виджетов на экране «Динамика абонентов». Можно запускать с любой регулярностью, но не реже, чем раз в сутки.
Для работы с большим объемом данных рекомендуется настроить асинхронное выполнение задач через RQ.
Подробнее об асинхронном выполнении задач можно ознакомиться в разделе «Масштабирование и отказоустойчивость» — «Настройка асинхронного выполнения задач через RQ (Redis Queue)».
Дополнительные команды для сбора статистики
Команда сбора дополнительной статистики для отчета по количеству пользователей
smarty_manage collect_daily_stats --settings=settings.
Данная команда собирает информацию, которая используется в отчетах по оплатам, а также в графиках «Оплаты сегодня» и «Абоненты от которых поступила оплата» (и части других данных статистики) экрана «Динамика абонентов». Команду необходимо выполнять каждый день в начале дня (время записи сохраняется в UTC+0).
Команда кеширования данных для графиков «Динамики абонентов»
smarty_manage cache_customers_dynamic --settings=settings.
Команду рекомендуется запускать раз в час. Для небольших баз графики будут работать быстро и корректно и без данной команды. При первом запуске команда может выполняться долго (зависит от количества аккаунтов, транзакций и тарифов) из-за того, что будут рассчитываться данные за весь прошлый месяц. При повторном запуске будут рассчитываться данные только за последний день или час (данные повторно не кешируются).
Дополнительные параметры команды:
--client_id
– список идентификаторов клиентов, через запятую, для которых нужно провести кеширование. Если в аргумент ничего не передано, то кешируются данные для всех клиентов.
Команда создания умной сортировки каналов
smarty_manage create_channel_sorting_by_popularity --settings=settings.
При выполнении данной команды создается сортировка каналов на основании статистики телесмотрения, исходя из указанных параметров в команде.
Необходимые параметры для выполнения данной команды:
--client_id
– список идентификаторов клиентов, через запятую, для которых нужно провести кеширование;
--days_number
— количество дней, в течение которых стоит учитывать телесмотрение;
--criterion
— характеристика, по которой оценивать популярность. Возможные значения:watch_time
— по общему времени просмотра канала;watch_sessions
— по количеству включений канала;average_watch_time
— по среднему времени просмотра канала;median_watch_time
— по медианному времени просмотра канала.
Дополнительные параметры команды:--devices
— список устройств, для которых стоит учитывать статистику телесмотрения (передаются системные имена устройств, по умолчанию — все);--tariffs
— список тарифов для которых стоит учитывать статистику телесмотрения (передаются идентификаторы тарифов, по умолчанию — все);--accounts_active
— учитывать статистику только с активных аккаунтов.