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

Материал из SmartPlayer
Нет описания правки
Нет описания правки
Строка 1: Строка 1:
== '''Описание ситуации''' ==
== '''Описание ситуации''' ==
У пользователей появились проблемы с трансляциями на устройствах. При воспроизведении контента– картинок, видео, на некоторых устройствах появляется «чёрный» экран. Эту проблему можно наблюдать в личном кабинете пользователя или на месте нахождения устройства.
У пользователей появились проблемы с трансляциями на устройствах. При воспроизведении контента на некоторых устройствах появляется «чёрный» экран. Эту проблему можно наблюдать в личном кабинете пользователя или на месте нахождения устройства.
== '''Причина''' ==
== '''Причина''' ==
В устройствах, работающих на местах во время проигрывания контента, появляется «чёрный экран». При этом трансляция в личном кабинете продолжает работать.<br>
В устройствах, работающих на местах во время проигрывания контента, появляется «чёрный экран». При этом трансляция в личном кабинете продолжает работать, но отображает только "Чёрный экран".<br>
Эта ситуация возникла из-за различных ошибок при запуске трансляции. Итогом этой ошибки является placeholder с оповещением, который видит пользователь.
Эта ситуация возникает из-за различных ошибок при запуске трансляции. Причины таких проблем могут быть разными, и их очень сложно обнаружить и поправить.<br>
Причины таких проблем могут быть разными, и их очень сложно обнаружить и поправить.
В качестве причины может выступать любое действие:  
В качестве причины может выступать любое действие:  
* Пользователь загружает видео, но это видео использует неподдерживаемый системой кодек. Тогда видео просто не может запуститься и показывает черный экран.<br>
* Пользователь загружает видео, но это видео использует неподдерживаемый системой кодек. Тогда видео просто не может запуститься и показывает черный экран.<br>
Строка 11: Строка 10:
[[File:.png|thumb|Список проблем из-за которых возникает черный экран|450px]]
[[File:.png|thumb|Список проблем из-за которых возникает черный экран|450px]]
=== '''Систематичность проблемы''' ===
=== '''Систематичность проблемы''' ===
"Чёрный" экран очень сложно отследить и подтвердить визуально. Он не несет в себе систематичности по времени и может появляться как раз в месяц, так и раз в несколько дней или часов.<br>
"Чёрный" экран очень несложно отследить и подтвердить визуально. Проблема ситуации в том, что он не несет в себе систематичности по времени и может появляться как раз в месяц, так и раз в несколько дней или часов.<br>
Период черного экрана определяется и подтверждает по факту у точки.   В данном случае все упирается в причины, в которых, естественно нужно разбираться.
Период появления черного экрана определяется опытным путём и подтверждает по факту у точки. Поиск причины проблемы перекладывается на плечи технических специалистов.
== '''Концепт решения''' ==
== '''Концепт решения''' ==
Для решения проблемы было решено создать автоматический «Детектор» черного экрана. Функционал детектора работает проактивно. Он уведомляет о проблемах с контентом на точке и оповещает о ситуации в личном кабинете.<br>
{{Note|Данный функционал не доступен пользователю в личном кабинете. Его необходимо включать отдельно.|warn}}  
{{Note|Данный функционал не доступен пользователю в личном кабинете. Его необходимо включать отдельно.|warn}}  
Для решения проблемы было решено создать автоматический «Детектор» черного экрана. Функционал детектора работает проактивно. Он уведомляет о проблемах с контентом на точке и оповещает о ситуации в личном кабинете.<br>
=== '''Подготовка''' ===
У каждого клиента/компании есть свой ID связанный с сервером. К этому ID привязываются все устройства компании. С определенным промежутком сервер отправляет на устройства «ивент».<br>
У каждого клиента/компании есть свой ID связанный с сервером. К этому ID привязываются все устройства компании. С определенным промежутком сервер отправляет на устройства «ивент».<br>
Запуская «ивент» устройство с помощью детектора проверяет наличие «черного экрана», делая скриншот во время запуска.<br>
Запуская «ивент» устройство с помощью детектора проверяет наличие «черного экрана», делая скриншот во время запуска.<br>
Строка 21: Строка 21:
* После запуска «ивента» черного экрана нет - система продолжает работу в штатном режиме.
* После запуска «ивента» черного экрана нет - система продолжает работу в штатном режиме.
* После запуска «ивента» чёрный экран обнаружен - сервер отправляет повторный, проверочный "ивент".<br>
* После запуска «ивента» чёрный экран обнаружен - сервер отправляет повторный, проверочный "ивент".<br>
Промежуток для повторной отправки составляет 10 секунд.
Промежуток для повторной отправки составляет 10 секунд.
Если же и во второй раз отправляется черный экран, то со стороны сервера отправляется письмо на почту.
Если же и во второй раз отправляется черный экран, то со стороны сервера отправляется письмо на почту.
{{Note|Указанная почта должна быть привязана к серверу.|warn}}
{{Note|Указанная почта должна быть привязана к серверу.|warn}}
Строка 27: Строка 27:
1. Для правильного работы необходимо чтобы placeholder с белой точкой воспринимался как черный экран. Поэтому используется не абсолютная проверка.
1. Для правильного работы необходимо чтобы placeholder с белой точкой воспринимался как черный экран. Поэтому используется не абсолютная проверка.
2. '''Актуально только при проигрывании видео.''' При наличии root прав на устройстве – детектор работает нормально. Но, если, на устройстве нет root прав детектор не сможет сделать скриншот.<br>
2. '''Актуально только при проигрывании видео.''' При наличии root прав на устройстве – детектор работает нормально. Но, если, на устройстве нет root прав детектор не сможет сделать скриншот.<br>
'''Исключения:'''
'''Исключения:'''<br>
Скриншот доступен:
Скриншот доступен:
* Если приложение подписано «подписью разработчика» (уровень прав – Signage)
* Если приложение подписано «подписью разработчика» (уровень прав – Signage)
Строка 34: Строка 34:
4. Информация от сервера к разработчикам отправляется через ивент. Внутри отправленного «ивента» сервер ждет callback от разработчиков.<br>
4. Информация от сервера к разработчикам отправляется через ивент. Внутри отправленного «ивента» сервер ждет callback от разработчиков.<br>
5. Тайм – аут “Callback” на сервере составляет – 30 секунд.
5. Тайм – аут “Callback” на сервере составляет – 30 секунд.
== '''Реализация''' ==
=== '''Активация''' ===
По умолчанию детектор для всех компаний отключен на сервере, так как создает на него слишком большую нагрузку. Включается детектор только по запросу со стороны компании, у которой появилась проблема с чёрным экраном.
=== '''Алгоритм действия''' ===
Для запуска детектора нужно использовать id компании, который указан в личном кабинете.
Системному администратору нужно подключиться на сервер, через Command Line Interface (CLI).
Далее нужно перейти в серверное приложение и выполнить команду в docker exec.
Docker exec -it Smartplayer_backend_i bash. 
На этом этапе попадаем в контейнер с серверным приложением.<br>
Далее выполняем команду:
Enable screen - screen monitor.
После выполнения команды появится форма просящая ввести Id компании.<br>
После ввода ID появляется запрос на мониторинг всех платформ компании. В данном случае выбираем «ДА/Y»
В последствии нужно указать e-mail на который будут приходить оповещения о проблемах.
Также можно указать интервал с которым будут приходить скриншоты (например 1 минута) и нажимаем энтер.
Далее в строке появляется статус - Company screen monitoring enabled.
=== '''"Чёрный" экран''' ===
Если серверное приложение обнаружило черный экран, оно отправляет на почту письмо .
Настройка почты для серверного приложения находится в конфлюэнс.
Инструкция : настройка отправки писем через серверное приложение.
На сервере devop все настроено и прописано.
Сисадмин должен настроить на серверном приложение передачу письма.
Для проверки через лк можем поставить черную картинку. И тогда сможем проверить на почте полученное сообщение о черном экране. я как сисадмин должен буду принять меры для устранения проблемы.
Его также можно выключить: документ по comand linet interface.
там показано как можно отключить функционал и также посмотреть для каких компаний он включен.
Для отправки письма нужно id устройства. его можно вбить в поиске и найти устройство. В общем нужно найти решение.
Сервер продолжает отправляет оповещения пока не исправится черный экран на устройстве.
Это все актуально только для конкретногоустройства и позволяет понять, что на точке что то работает не так.
=== '''Уведомления на почту''' ===
При получении сообщения о проблеме на почту, невозможно напрямую из этого уведомления провести какие-то действия. К примеру «перезагрузка экрана». В данной ситуации обязательно долен быть задействован компетентный человек. 
Это нужно для корректного определения причины.  Проблемы могут быть как с нашей стороны (например баг приложения), так и со стороны пользователя (например пользователь неправильно создал трансляцию).
== '''Итоговый результат''' ==
Наличие детектора позволяет контролировать ситуацию и оперативно работать для исправления. Это актуально как для нас, так и для системных администраторов клиента.
Для перезапуска трансляции надо зайти в лк и перезапустить все вручную
Детектор черных экранов запускается только для конкретных компаний/заказчиков. По умолчанию он выключен. Включение и выключение мониторинга доступно через CLI. При включении данные передаются в настройки CLI. Это:
• ID компании, для которой включаем детектор
• Можно передать платформу (или несколько платформ), для которой необходимо запустить мониторинг.
Например: передаем ANDROID и мониторинг включается только для устройств ANDROID
• E-mail адрес или несколько адресов на которые должно отправляться уведомление о нештатной ситуации
• Указанное время хранения скриншотов (по умолчанию 3 дня)
Детектор черного экрана на данный момент работает только на Android версии 1.63.1

Версия от 12:57, 7 августа 2023

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

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

Причина

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

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

Бывает проблемы, связанные с клиентским приложением (баг), и из-за этого начинаются проблемы с трансляцией.

  • Пока есть наличие постоянной, стабильной сети – все работает отлично. Как только устройство теряет доступ к сети (по любой причине) – трансляция прерывается и появляется чёрный экран.
Файл:.png
Список проблем из-за которых возникает черный экран

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

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

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

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

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

Подготовка

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

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

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

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

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

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

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

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

Реализация

Активация

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

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

Для запуска детектора нужно использовать id компании, который указан в личном кабинете. Системному администратору нужно подключиться на сервер, через Command Line Interface (CLI). Далее нужно перейти в серверное приложение и выполнить команду в docker exec. Docker exec -it Smartplayer_backend_i bash. На этом этапе попадаем в контейнер с серверным приложением.
Далее выполняем команду: Enable screen - screen monitor. После выполнения команды появится форма просящая ввести Id компании.
После ввода ID появляется запрос на мониторинг всех платформ компании. В данном случае выбираем «ДА/Y» В последствии нужно указать e-mail на который будут приходить оповещения о проблемах. Также можно указать интервал с которым будут приходить скриншоты (например 1 минута) и нажимаем энтер. Далее в строке появляется статус - Company screen monitoring enabled.

"Чёрный" экран

Если серверное приложение обнаружило черный экран, оно отправляет на почту письмо . Настройка почты для серверного приложения находится в конфлюэнс. Инструкция : настройка отправки писем через серверное приложение. На сервере devop все настроено и прописано. Сисадмин должен настроить на серверном приложение передачу письма. Для проверки через лк можем поставить черную картинку. И тогда сможем проверить на почте полученное сообщение о черном экране. я как сисадмин должен буду принять меры для устранения проблемы. Его также можно выключить: документ по comand linet interface. там показано как можно отключить функционал и также посмотреть для каких компаний он включен. Для отправки письма нужно id устройства. его можно вбить в поиске и найти устройство. В общем нужно найти решение. Сервер продолжает отправляет оповещения пока не исправится черный экран на устройстве. Это все актуально только для конкретногоустройства и позволяет понять, что на точке что то работает не так.

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

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

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

Наличие детектора позволяет контролировать ситуацию и оперативно работать для исправления. Это актуально как для нас, так и для системных администраторов клиента. Для перезапуска трансляции надо зайти в лк и перезапустить все вручную Детектор черных экранов запускается только для конкретных компаний/заказчиков. По умолчанию он выключен. Включение и выключение мониторинга доступно через CLI. При включении данные передаются в настройки CLI. Это: • ID компании, для которой включаем детектор • Можно передать платформу (или несколько платформ), для которой необходимо запустить мониторинг. Например: передаем ANDROID и мониторинг включается только для устройств ANDROID • E-mail адрес или несколько адресов на которые должно отправляться уведомление о нештатной ситуации • Указанное время хранения скриншотов (по умолчанию 3 дня) Детектор черного экрана на данный момент работает только на Android версии 1.63.1