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

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

Версия от 16: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 компании, который указан в личном кабинете.

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

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

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

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

"Enable screen - screen monitor".

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

Следующим этапом система выдает вот такую строку:

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

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

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

Мониторинг всех платформ. Здесь выбираем "Да/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