"Детектор" черного экрана (Системный администратор): различия между версиями

Материал из SmartPlayer
 
(не показана 21 промежуточная версия 2 участников)
Строка 1: Строка 1:
<languages/>
<translate>
<!--T:1-->
== '''Описание ситуации''' ==
== '''Описание ситуации''' ==
У пользователей появляются проблемы с трансляциями на устройствах. При воспроизведении контента на некоторых устройствах выводится «чёрный» экран. Эту проблему можно наблюдать в личном кабинете пользователя или на месте нахождения устройства.
У пользователей появляются проблемы с трансляциями на устройствах. При воспроизведении контента на некоторых устройствах выводится «чёрный» экран. Эту проблему можно наблюдать в личном кабинете пользователя или на месте нахождения устройства.
 
</translate>
<translate>
<!--T:2-->
== '''Причина''' ==
== '''Причина''' ==
В устройствах, работающих на местах во время проигрывания контента, появляется «чёрный экран». При этом трансляция в личном кабинете продолжает работать, но отображает только "Чёрный" экран.<br>
В устройствах, работающих на местах во время проигрывания контента, появляется «чёрный экран». При этом трансляция в личном кабинете продолжает работать, но отображает только "Чёрный" экран.<br>
Эта ситуация возникает из-за различных ошибок при запуске трансляции. Причины таких проблем могут быть разными, и их очень сложно обнаружить и поправить.<br>
Эта ситуация возникает из-за различных ошибок при запуске трансляции. Причины таких проблем могут быть разными, и их очень сложно обнаружить.<br>
В качестве причины может выступать любое действие:  
В качестве причины может выступать любое действие:  
* Пользователь загружает видео, но это видео использует неподдерживаемый системой кодек. Тогда видео просто не может запуститься и показывает черный экран. Бывает проблемы, связанные с клиентским приложением (баг), и из-за этого начинаются проблемы с трансляцией.
* Пользователь загружает видео, но это видео использует неподдерживаемый системой кодек. Тогда видео просто не может запуститься и показывает черный экран. Бывает проблемы, связанные с клиентским приложением (баг), и из-за этого начинаются проблемы с трансляцией.
*  Пока есть наличие постоянной, стабильной сети – все работает отлично. Как только устройство теряет доступ к сети (по любой причине) – трансляция прерывается и появляется чёрный экран.
*  Пока есть наличие постоянной, стабильной сети – все работает отлично. Как только устройство теряет доступ к сети (по любой причине) – трансляция прерывается и появляется чёрный экран.
[[File:.png|thumb|Список проблем из-за которых возникает черный экран|450px]]
[[File:Пример черного экрана в ЛК.png|thumb|Пример отображения "Чёрного" экрана в личном кабинете пользователя|500px]]
=== '''Систематичность проблемы''' ===
=== '''Систематичность проблемы''' ===
"Чёрный" экран очень несложно отследить и подтвердить визуально. В этом случае хорошо помогает личный кабинет.<br>
"Чёрный" экран очень несложно отследить и подтвердить визуально. В этом случае хорошо помогает личный кабинет.<br>
Проблема ситуации в том, что он не несет в себе систематичности по времени и может появляться как раз в месяц, так и раз в несколько дней или часов.<br>
Проблема ситуации в том, что проблема не несет в себе систематичности по времени и может появляться как раз в месяц, так и раз в несколько дней или часов.<br>
Период появления черного экрана определяется опытным путём и подтверждает по факту у точки. Поиск причины проблемы перекладывается на плечи технических специалистов.
Период появления черного экрана определяется опытным путём и подтверждает по факту у точки. Поиск причины проблемы перекладывается на плечи технических специалистов.
</translate>
<translate>


== '''Концепт решения''' ==
== '''Концепт решения''' ==
Строка 20: Строка 27:
У каждого клиента/компании есть свой ID связанный с сервером. ID указан в личном кабинете и к нему привязываются все устройства компании.<br>  
У каждого клиента/компании есть свой ID связанный с сервером. ID указан в личном кабинете и к нему привязываются все устройства компании.<br>  
После запуска функционала сервер с определенным промежутком по времени отправляет на устройства «ивент».<br>
После запуска функционала сервер с определенным промежутком по времени отправляет на устройства «ивент».<br>
Запуская «ивент» устройство с помощью детектора проверяет наличие «черного экрана», делая скриншот во время запуска.<br>
Запуская «ивент» устройство с помощью детектора проверяет наличие "черного" экрана, делая скриншот во время запуска.<br>
После запуска детектора возможно получить два вида ответа:
После запуска детектора возможно получить два определенных результата:
* После запуска «ивента» черного экрана нет - система продолжает работу в штатном режиме.
* После запуска «ивента» черного экрана нет - система продолжает работу в штатном режиме.
* После запуска «ивента» чёрный экран обнаружен - сервер отправляет повторный, проверочный "ивент".<br>
* После запуска «ивента» чёрный экран обнаружен - сервер отправляет повторный, проверочный "ивент".<br>
'''Промежуток для повторной отправки "ивента" составляет 10 секунд.'''<br>
'''Промежуток для повторной отправки "ивента" по умолчанию составляет 10 секунд.'''<br>
Если же и во второй раз отправляется черный экран, то со стороны сервера отправляется письмо на почту.
Если же и во второй раз отправляется скриншот "чёрного" экрана то со стороны сервера отправляется письмо на почту, о наличии проблемы.
{{Note|Указанная почта должна быть привязана к серверу.|warn}}
{{Note|Указанная почта должна быть привязана к серверу.|warn}}
=== '''Подготовка ''' ===
=== '''Подготовка ''' ===
Системный администратор должен настроить серверное приложение по двум параметрам:
Системный администратор должен настроить серверное приложение по двум параметрам:
* Запуск и функционирование детектора "чёрного" экрана
* Запуск и функционирование детектора "чёрного" экрана
* Настройка отправки письма с ошибкой на почту
* Настройка отправки письма с ошибкой на почту
=== '''Подготовка ''' ===
=== '''Принцип действия ''' ===
Если серверное приложение обнаружило черный экран, оно отправляет на почту письмо.  
Если серверное приложение обнаружило черный экран, оно отправляет на почту письмо.
Для проверки работоспособности функционала через личный кабинет системный администратор может поставить черную картинку. В идеале на почту должно придти сообщение с оповещение о проблеме. Впоследствии системный администратор должен принять меры для устранения проблемы.
Итогом этой проверки станет сообщение на почту с оповещение о проблеме. <br>
там показано как можно отключить функционал и также посмотреть для каких компаний он включен.
Для подтверждения проверки работоспособности функционала через личный кабинет системный администратор может поставить черную картинку. Сервер продолжает отправляет оповещения пока проблема не будет исправлена или же пока не будет выключен функционал.<br>
Сервер продолжает отправляет оповещения пока не исправится черный экран на устройстве.
Впоследствии системный администратор должен принять меры для устранения проблемы.
Его также можно выключить: документ по comand linet interface.  
=== '''Тонкости и нюансы при работе функционала''' ===
=== '''Тонкости и нюансы при работе функционала''' ===
1. Для правильного работы необходимо чтобы placeholder с белой точкой воспринимался как черный экран. Поэтому используется не абсолютная проверка.
1. Для правильного работы необходимо чтобы placeholder с белой точкой воспринимался как черный экран. Поэтому используется не абсолютная проверка.<br>
2. '''Актуально только при проигрывании видео.''' При наличии root прав на устройстве – детектор работает нормально. Но, если, на устройстве нет root прав, детектор не сможет сделать скриншот.<br>
2. При наличии root прав на устройстве – детектор работает нормально. Но, если, на устройстве нет root прав, детектор не сможет сделать скриншот.<br>
'''Исключения:'''<br>
'''Исключения:'''<br>
Скриншот доступен:
Скриншот доступен:
Строка 47: Строка 54:
4. Информация от сервера к разработчикам отправляется через "ивент". Внутри отправленного «ивента» сервер ждет callback от разработчиков.<br>
4. Информация от сервера к разработчикам отправляется через "ивент". Внутри отправленного «ивента» сервер ждет callback от разработчиков.<br>
5. Тайм – аут “Callback” по умолчанию на сервере составляет – 30 секунд.
5. Тайм – аут “Callback” по умолчанию на сервере составляет – 30 секунд.
</translate>
<translate>
== '''Реализация''' ==
== '''Реализация''' ==
=== '''Активация''' ===
=== '''Активация''' ===
Строка 67: Строка 77:
</div>
</div>
Далее нужно перейти в серверное приложение и выполнить команду:
Далее нужно перейти в серверное приложение и выполнить команду:
<code>docker exec -it smartplayer_backend_i bash</code>
<code>docker exec -it smartplayer_backend_1 bash</code>
[[File:Команда docker.png|thumb|Команда"docker exec -it smartplayer_backend_i bash" |300px]]
[[File:Команда docker.png|thumb|Команда"docker exec -it smartplayer_backend_1 bash" |300px]]
На этом этапе попадаем в нашем контейнере с серверным приложением.<br>
На этом этапе попадаем в нашем контейнере с серверным приложением.<br>
Следующей выполняем команду:
Следующей выполняем команду:
<code>Enable screen - screen monitor </code>[[File:Enable screen monitor.png|thumb|Команда"docker exec -it smartplayer_backend_i bash" |300px]]
<code>./cli.js company enable-screen-monitor </code>[[File:Enable screen monitor.png|thumb|Команда"./cli.js company enable-screen-monitor" |300px]]
После очередного этапа система выдает вот такую строку:  
После очередного этапа система выдает вот такую строку:  
Системное сообщение <code>Input company ID and press Enter</code>[[File:Системное сообщение.png|thumb|Системное сообщение "Input company ID and press Enter:" |300px]]
Системное сообщение: <code>Input company ID and press Enter</code>[[File:Системное сообщение.png|thumb|Системное сообщение "Input company ID and press Enter:" |300px]]
Выполненная команда отобразит строку в которой просят ввести Id компании.<br>
Выполненная команда отобразит строку в которой просят ввести Id компании.<br>
После ввода ID появляется запрос на мониторинг всех платформ компании. В данном случае выбираем «ДА/Y»
После ввода ID появляется запрос на мониторинг всех платформ компании. В данном случае выбираем «ДА/Y»
[[File:Мониторинг всех платформ.png|thumb|Здесь нужно запустить мониторинг платформ нажав "ДА/Y" |300px]]
[[File:Мониторинг всех платформ.png|thumb|Здесь нужно запустить мониторинг платформ нажав "ДА/Y" |300px]]
В последствии консоль потребует указать e-mail на который будут приходить оповещения о проблемах.
В последствии консоль потребует указать e-mail на который будут приходить оповещения о проблемах.
Это делается с помощью команды:<br>
Это делается в строке:<br>
<code>Input_email and press enter</code>
<code>Input_email and press enter</code>
[[File:Строка почты.png|thumb|Команда"Input_email_and_press_Enter:" |300px]]
{{Note|Указанная почта должна быть привязана к серверу.|warn}}
{{Note|Указанная почта должна быть привязана к серверу.|warn}}
Также можно указать интервал с которым будут приходить скриншоты (например 1 минута) и применяем эту настройку через "Enter".<br>
Также можно указать интервал с которым будут приходить скриншоты (например 1 минута). Строка выглядит так:<br>
Далее в строке появляется статус - Company screen monitoring enabled. Это значит что функционал запущен.
<code>Input check interval in minutes (m) or seconds (s) and press "Enter"</code><br>
[[File:Интервал отправки сообщения.png|thumb|Здесь нужно указать время в минутах с префиксом (m) или в секундах с префиксом (S) |300px]]
Далее указываем время либо в секундах с префиксом (s) после числового значения, либо в минутах с префиксом (m) и применяем эту настройку через "Enter". Итогом всех манипуляций будет статус:<br>
<code>Company screen monitoring enabled</code> - выделена зеленым цветом. Это значит что детектор черного экрана запущен.
[[File:Запуск детектора.png|thumb|Оповещение о запуске Детектора выделено зелёным цветом |300px]]
Проверить настроенные уведомления можно с помощью команды <code>./cli.js company show-screen-monitor</code>
'''Отключить детектор черных экранов:''' <code>./cli.js company disable-screen-monitor</code>
 
=== '''Уведомления на почту''' ===
=== '''Уведомления на почту''' ===
Второй этап настройка уведомления, которые приходят на почту. Настройка уведомления подробно прописана в отдельной инструкции [[Настройка отправки писем через серверное приложение SmartPlayer]].<br>
Второй этап настройка уведомления, которые приходят на почту. Настройка уведомления подробно прописана в отдельной инструкции [[Настройка отправки писем через серверное приложение SmartPlayer]].<br>
{{Note|При получении сообщения о проблеме на почту, невозможно напрямую из этого уведомления сделать какие либо действия. К примеру «перезагрузка экрана».|warn}}
{{Note|При получении сообщения о проблеме на почту, невозможно напрямую из этого уведомления сделать какие либо действия. К примеру «Перезагрузка экрана» или "Остановка трансляции" недоступна.|warn}}
=== '''Дальнейшие действия''' ===
=== '''Предфинальные действия''' ===
В данной ситуации обязательно должен быть задействован компетентный человек, т.е. системный администратор.<br>
В зависимости от результата, системный администратор сможет корректно определить причину и предпринять конкретные действия для устранения ситуации. Если у него не получается решить проблему внутри своей среды или же проблема на нашей стороне, он должен обратиться к команде SmartPlayer.<br>
Он сможет корректно определить причину и предпринять конкретные действия для устранения ситуации. Так как проблемы могут быть как с нашей стороны (например баг приложения), так и со стороны пользователя (например пользователь неправильно создал трансляцию).
Это вариант удобен для всех. Так как поможет решить проблемы если они и  с нашей стороны (например баг приложения), так и со стороны пользователя (например пользователь неправильно создал трансляцию).
=== '''Итоговый результат''' ===
=== '''Важная информация о которой не стоит забывать ''' ===
Наличие детектора позволит контролировать проблемную ситуацию с "Чёрным" экраном и оперативно работать с её исправлением. Это актуально как для нас, так и для сотрудников клиента.
{{Note|'''Для перезапуска трансляции надо зайти в личный кабинет и перезапустить все вручную'''|warn}}
{{Note|Для перезапуска трансляции надо зайти в лк и перезапустить все вручную|warn}}
{{Note|'''Детектор черного экрана на данный момент работает только на Android версии 1.63.1'''|warn}}
{{Note|Детектор черного экрана на данный момент работает только на Android версии 1.63.1|warn}}
</translate>
<translate>
<!--T:5-->
== '''Итоговый результат''' ==
== '''Итоговый результат''' ==
Команда SmartPlayer и команда сотрудников со стороны клиента будет своевременно оповещена о проблеме и сможет оперативно ее решать с помощью указанных в статье шагов. <br>
Системный администратор со стороны клиента начнёт решать проблему запустив и настроив функционал детектора.
Наличие детектора позволяет контролировать проблемную ситуацию с "Чёрным" экраном и оперативно работать с её исправлением. Это актуально как для нас, так и для системных администраторов со стороны пользователя.
Команда SmartPlayer и команда сотрудников со стороны клиента смогут оперативно взаимодействовать для решения проблемы. <br>
Рядовой пользователь минимизирует негативный опыт взаимодействия с нашим продуктом.
Рядовой пользователь минимизирует негативный опыт взаимодействия с нашим продуктом.
</translate>

Текущая версия от 15:08, 26 сентября 2023

Другие языки:

Описание ситуации

У пользователей появляются проблемы с трансляциями на устройствах. При воспроизведении контента на некоторых устройствах выводится «чёрный» экран. Эту проблему можно наблюдать в личном кабинете пользователя или на месте нахождения устройства.

Причина

В устройствах, работающих на местах во время проигрывания контента, появляется «чёрный экран». При этом трансляция в личном кабинете продолжает работать, но отображает только "Чёрный" экран.
Эта ситуация возникает из-за различных ошибок при запуске трансляции. Причины таких проблем могут быть разными, и их очень сложно обнаружить.
В качестве причины может выступать любое действие:

  • Пользователь загружает видео, но это видео использует неподдерживаемый системой кодек. Тогда видео просто не может запуститься и показывает черный экран. Бывает проблемы, связанные с клиентским приложением (баг), и из-за этого начинаются проблемы с трансляцией.
  • Пока есть наличие постоянной, стабильной сети – все работает отлично. Как только устройство теряет доступ к сети (по любой причине) – трансляция прерывается и появляется чёрный экран.
Пример отображения "Чёрного" экрана в личном кабинете пользователя

Систематичность проблемы

"Чёрный" экран очень несложно отследить и подтвердить визуально. В этом случае хорошо помогает личный кабинет.
Проблема ситуации в том, что проблема не несет в себе систематичности по времени и может появляться как раз в месяц, так и раз в несколько дней или часов.
Период появления черного экрана определяется опытным путём и подтверждает по факту у точки. Поиск причины проблемы перекладывается на плечи технических специалистов.

Концепт решения

Для решения проблемы было решено создать автоматический «Детектор» черного экрана. Он уведомляет о проблемах с контентом на устройстве и оповещает о случившейся ситуации в личном кабинете.

Данный функционал не доступен пользователю в личном кабинете. Его необходимо включать отдельно.

Принцип действия

У каждого клиента/компании есть свой ID связанный с сервером. ID указан в личном кабинете и к нему привязываются все устройства компании.
После запуска функционала сервер с определенным промежутком по времени отправляет на устройства «ивент».
Запуская «ивент» устройство с помощью детектора проверяет наличие "черного" экрана, делая скриншот во время запуска.
После запуска детектора возможно получить два определенных результата:

  • После запуска «ивента» черного экрана нет - система продолжает работу в штатном режиме.
  • После запуска «ивента» чёрный экран обнаружен - сервер отправляет повторный, проверочный "ивент".

Промежуток для повторной отправки "ивента" по умолчанию составляет 10 секунд.
Если же и во второй раз отправляется скриншот "чёрного" экрана то со стороны сервера отправляется письмо на почту, о наличии проблемы.

Указанная почта должна быть привязана к серверу.

Подготовка

Системный администратор должен настроить серверное приложение по двум параметрам:

  • Запуск и функционирование детектора "чёрного" экрана
  • Настройка отправки письма с ошибкой на почту

Принцип действия

Если серверное приложение обнаружило черный экран, оно отправляет на почту письмо. Итогом этой проверки станет сообщение на почту с оповещение о проблеме.
Для подтверждения проверки работоспособности функционала через личный кабинет системный администратор может поставить черную картинку. Сервер продолжает отправляет оповещения пока проблема не будет исправлена или же пока не будет выключен функционал.
Впоследствии системный администратор должен принять меры для устранения проблемы.

Тонкости и нюансы при работе функционала

1. Для правильного работы необходимо чтобы placeholder с белой точкой воспринимался как черный экран. Поэтому используется не абсолютная проверка.
2. При наличии root прав на устройстве – детектор работает нормально. Но, если, на устройстве нет root прав, детектор не сможет сделать скриншот.
Исключения:
Скриншот доступен:

  • Если приложение подписано «подписью разработчика» (уровень прав – Signage).
  • Некоторые устройства (Vestel, Hikvision, Phillips) могут сделать скриншот без root прав из-за особенностей прошивки.

3. Если пользователь попробует сделать скриншот без root прав, то создается «пустой скриншот» с надписью «Идёт воспроизведение видео. Отсутствуют права для снятия скриншота».
4. Информация от сервера к разработчикам отправляется через "ивент". Внутри отправленного «ивента» сервер ждет callback от разработчиков.
5. Тайм – аут “Callback” по умолчанию на сервере составляет – 30 секунд.

Реализация

Активация

По умолчанию детектор для всех компаний отключен на сервере, так как создает на него слишком большую нагрузку.

Включается детектор только по запросу со стороны компании, у которой появилась проблема с чёрным экраном.

Алгоритм действия

Вся работа будет вестись в два этапа.
Первый этап - это запуск самого детектора.

При запуске детектора нужно использовать id компании, который указан в личном кабинете.

Расположение ID компании в личном кабинете

Для этого нужно зайти в профиль и развернуть подробную информацию о пользователе. Системному администратору нужно подключиться на сервер, через Command Line Interface (CLI).

При включении CLI сервер получает определенные данные для настройки:
Это:

  • ID компании, для которой включаем детектор
  • Можно передать платформу (или несколько платформ), для которой необходимо запустить мониторинг.

Например: передаем параметр "ANDROID" и мониторинг включается только для устройств "ANDROID".

  • E-mail адрес или несколько адресов на которые должно отправляться уведомление о нештатной ситуации
  • Указанное время хранения скриншотов (по умолчанию 3 дня)

Далее нужно перейти в серверное приложение и выполнить команду: docker exec -it smartplayer_backend_1 bash

Команда"docker exec -it smartplayer_backend_1 bash"

На этом этапе попадаем в нашем контейнере с серверным приложением.
Следующей выполняем команду:

./cli.js company enable-screen-monitor

Команда"./cli.js company enable-screen-monitor"

После очередного этапа система выдает вот такую строку:

Системное сообщение: Input company ID and press Enter

Системное сообщение "Input company ID and press Enter:"

Выполненная команда отобразит строку в которой просят ввести Id компании.
После ввода ID появляется запрос на мониторинг всех платформ компании. В данном случае выбираем «ДА/Y»

Здесь нужно запустить мониторинг платформ нажав "ДА/Y"

В последствии консоль потребует указать e-mail на который будут приходить оповещения о проблемах. Это делается в строке:
Input_email and press enter

Команда"Input_email_and_press_Enter:"
Указанная почта должна быть привязана к серверу.

Также можно указать интервал с которым будут приходить скриншоты (например 1 минута). Строка выглядит так:
Input check interval in minutes (m) or seconds (s) and press "Enter"

Здесь нужно указать время в минутах с префиксом (m) или в секундах с префиксом (S)

Далее указываем время либо в секундах с префиксом (s) после числового значения, либо в минутах с префиксом (m) и применяем эту настройку через "Enter". Итогом всех манипуляций будет статус:
Company screen monitoring enabled - выделена зеленым цветом. Это значит что детектор черного экрана запущен.

Оповещение о запуске Детектора выделено зелёным цветом

Проверить настроенные уведомления можно с помощью команды ./cli.js company show-screen-monitor Отключить детектор черных экранов: ./cli.js company disable-screen-monitor

Уведомления на почту

Второй этап настройка уведомления, которые приходят на почту. Настройка уведомления подробно прописана в отдельной инструкции Настройка отправки писем через серверное приложение SmartPlayer.

При получении сообщения о проблеме на почту, невозможно напрямую из этого уведомления сделать какие либо действия. К примеру «Перезагрузка экрана» или "Остановка трансляции" недоступна.

Предфинальные действия

В зависимости от результата, системный администратор сможет корректно определить причину и предпринять конкретные действия для устранения ситуации. Если у него не получается решить проблему внутри своей среды или же проблема на нашей стороне, он должен обратиться к команде SmartPlayer.
Это вариант удобен для всех. Так как поможет решить проблемы если они и с нашей стороны (например баг приложения), так и со стороны пользователя (например пользователь неправильно создал трансляцию).

Важная информация о которой не стоит забывать

Для перезапуска трансляции надо зайти в личный кабинет и перезапустить все вручную
Детектор черного экрана на данный момент работает только на Android версии 1.63.1

Итоговый результат

Системный администратор со стороны клиента начнёт решать проблему запустив и настроив функционал детектора. Наличие детектора позволяет контролировать проблемную ситуацию с "Чёрным" экраном и оперативно работать с её исправлением. Это актуально как для нас, так и для системных администраторов со стороны пользователя. Команда SmartPlayer и команда сотрудников со стороны клиента смогут оперативно взаимодействовать для решения проблемы.
Рядовой пользователь минимизирует негативный опыт взаимодействия с нашим продуктом.