---
title: Мониторинг
url: https://doc2.pstreamer.tv/ru/manual/webui/monitor.html
lang: ru
product: Perfect Streamer
version: 2.0.2.362
---

# Мониторинг

Группа **Мониторинг** в области «Узел» собирает экраны наблюдения за текущим узлом: состояние потоков, клиентов, оборудования и служб. Экраны обновляются автоматически. Большинство из них только показывает данные, но часть позволяет и управлять объектом: «Потоки» — создавать и настраивать потоки, «DVB-адаптеры» — добавлять, настраивать и сканировать адаптер, «База данных EPG» — править канал. Настройка служб, учётных записей и хранилищ вынесена в группы [Настройка](configure.md#webui-configure) и [Администрирование](administration.md#webui-administration).

Центральный экран группы — «Потоки» — вынесен в отдельный раздел [Потоки](streams.md#webui-streams).

## Обзор узла

![Обзор узла.](../../_images/webui_home_overview.png)

Стартовая панель узла. Верхняя полоса — плитки ключевых показателей: число потоков и из них «В эфире», счётчик «Проблемы», активные «Оповещения» (в роли администратора), загрузка CPU и памяти. Каждая плитка — ссылка на экран, откуда взята её цифра: первые три ведут на [Потоки](streams.md#webui-streams), «Оповещения» — на Оповещения, «CPU» и «Память» — на Системный монитор. Две плитки заодно настраивают то, куда ведут, чтобы список отвечал нажатой цифре: «Потоки» возвращает список в режим «Все», а «Оповещения» ставит область «Свой узел». «В эфире» и «Проблемы» фильтр намеренно не трогают: он делит потоки по паузе, а это не то, что считают обе цифры. Плитка «Оповещения» считает оповещения только своего узла, поэтому в домене её число меньше, чем у колокольчика общей панели, если у того выбрана область «Все узлы»; переход с плитки эти два числа и уравнивает. Ниже — панели проблемных подсистем; каждая перечисляет неисправные объекты, а когда их нет — короткую сводку о том, сколько объектов работает. «Проблемные потоки» есть всегда. «Транскодеры» появляются, когда на узле есть экземпляры транскодера или поднято оповещение о транскодере узла, «DVB-адаптеры» — когда обнаружен тюнер или настроен хотя бы один адаптер. Условия панелей шире, чем у одноимённых пунктов меню ([Устройство интерфейса](index.md#webui-layout)): отвалившаяся подсистема панель не уносит, поэтому настроенный адаптер держит панель и при пропавшем тюнере, а оповещение — панель транскодеров, даже если ни одного экземпляра не осталось. В этом случае пункт меню уже скрыт, а панель ещё на месте, и ссылка «Открыть →» в её заголовке остаётся единственным входом в раздел. Об отказе, перечислить в котором нечего, панель транскодеров сообщает строкой со счётчиком отказавших. Поэтому на узле без транскодеров и без тюнера панель подсистем остаётся одна, и входа в эти два раздела с обзора нет. «Недавние логи» живут по своему правилу: панель видна администратору, у которого работает база журналов, и только пока в ней есть записи уровня «предупреждение» и выше за последние пять минут. На спокойном узле её нет, сколько бы записей ни накопилось за годы, и она уходит сама, когда последнее предупреждение выходит из этого окна. В панелях подсистем имя объекта — ссылка, открывающая окно статистики именно этого потока, экземпляра транскодера или адаптера на его экране, а ссылка «Открыть →» в заголовке панели ведёт на весь список. У «Недавних логов» строки ссылками не являются — переход из заголовка или по ссылке «+N ещё →» внизу панели. В самом низу — полоса «Избранное» с закреплёнными графиками сигнала DVB-адаптеров и плитками мозаики (закрепляются на своих экранах); пока ничего не закреплено, полосы нет. Порядок в полосе задаёт оператор: элемент переносят перетаскиванием или сочетаниями `Alt+↑` и `Alt+↓`. Графики и плитки полоса рисует двумя группами, поэтому перенос идёт внутри своей группы: график встаёт среди графиков, плитка — среди плиток. Порядок хранится в браузере вместе с самим списком избранного и переживает перезагрузку страницы, но на другой машине и у другого оператора он свой. Перестановка работает только на широком экране; отдельной кнопки сброса у полосы нет — лишнее снимают той же звёздочкой, которой закрепляли. Оценка загрузки узла подробнее — на экране Системный монитор.

## Конвейер

![Граф конвейера: одиночный поток (SPTS).](../../_images/webui_pipeline_stream.png)

![Граф конвейера: мультиплексор MPTS.](../../_images/webui_pipeline_mpts.png)

![Граф конвейера: транскодер.](../../_images/webui_pipeline_transcoder.png)

Граф обработки одной выбранной сущности. Ядро графа — три полосы: «ВХОД», «ПОТОК» и «ВЫХОД». Если поток связан с транскодером или с мультиплексом, связь разворачивается прямо в картинке: с этой стороны добавляются ещё три полосы — соседние потоки, стадия обработки между ними («ТРАНСКОДЕР», «DEMUX» или «MUX») и собственные транспортные точки соседей («ВХОДЫ» и «ВЫХОДЫ»). Развёрнутая с обеих сторон цепочка занимает девять полос и показывает путь целиком, от входного сокета соседнего потока до собственного выходного. Разворачивается по одной стадии с каждой стороны и только по факту связи; переключателя для этого нет, а развёрнутое убирается из ядра, поэтому одна и та же сущность в графе не дублируется.

Вид графа выбирается по типу сущности. Поток SPTS и мультиплекс MPTS рисуются одинаково: у мультиплекса вверх по потоку разворачиваются «УЧАСТНИКИ» (в карточке каждого — его PNR), вниз — «ПОТРЕБИТЕЛИ»; список потоков — [Потоки](streams.md#webui-streams). Свои неизменные виды у ABR-набора ([Адаптивные наборы](../streamer/ott_dvr.md#streamer-ott-adaptive)), транскодера (Транскодеры) и DVB-адаптера (DVB-адаптеры).

Соседние потоки перечислены двумя списками — над схемой и под ней; фокус переносят кликом по имени или колесом мыши над списком, по одной позиции за шаг. Ещё фокус меняют поиском по имени потока в шапке и переходами с других экранов; текущий фокус хранится в адресе, так что на него можно дать прямую ссылку. После перехода схема возвращается в центр экрана. Само поле схемы — камера: перетаскиванием панорамируют, колесом масштабируют, кнопки «−», «+» и «Вписать» — в правом верхнем углу. «Вписать» только уменьшает слишком широкую цепочку до размеров окна; сам по себе масштаб не подгоняется — новый фокус открывается в натуральную величину.

Карточка потока открывает его статистику. Клик по соседнему потоку, по программе мультиплекса или по стадии «ТРАНСКОДЕР» переносит на них фокус; пока цепочка транскодера не развернулась, тот же переход делает карточка транскодера во «ВХОДЕ» или «ВЫХОДЕ» — у входа для этого должен быть задан декодер. У входов и выходов в транспортах общего каталога домена есть кнопка «Показать в библиотеке» ([Библиотека — этот поток](streams.md#webui-stream-library-feed)); в полосах соседних потоков её нет. Отдельная панель «Релеи узла» сводит локальные ретрансляции узла и на узле без них не показывается, а «двери» на соседние узлы открывают их админку на том же фокусе.

Выделив на экране «Потоки» несколько строк и нажав «Открыть в конвейере», получают групповой вид. Потоки в нём нарисованы одной общей схемой: строка на каждого участника, а то, что у них общее, — декодер транскодера, кормящий два варианта кодирования, или мультиплекс, в который входят несколько выбранных потоков, — нарисовано один раз, и от него идут связи к строкам участников. Списки соседних потоков, счётчик фокуса и поиск здесь убраны: каждый из них переводит фокус на один поток и тем распустил бы группу. Живое состояние входов в групповом виде не показывается, о чём полоса над схемой и предупреждает: схема построена по одному снимку конфигурации, время снимка указано там же, кнопка «Обновить» перечитывает его, а «К списку потоков» возвращает на экран. Собственное состояние каждого потока при этом живое, как обычно. Участников рисуется не больше двенадцати; выбрать можно и больше, но полоса тогда скажет, сколько из скольких показано. Участник, которого на узле уже нет, вместо схемы показывает «Этого потока больше нет на узле.». Выбранные ABR-наборы общей схемы не делят — каждый получает свою карточку с кнопкой «Открыть отдельно». Адрес группового вида годится для ссылки и открывается на любом устройстве: широкое окно нужно только чтобы собрать выделение.

Приостановленные входы и выходы граф не рисует, приостановленные потоки не попадают ни в список соседей, ни в состав мультиплекса; по прямой ссылке такой поток всё же открывается, а приостановленный вариант транскодера в полосе «ВАРИАНТЫ» остаётся на схеме. Модель передачи описана в [Модель передачи: Stream, Sender, Receiver, Peer](../planning/index.md#planning-model), обработка потока на узле — в [Streamer: особенности реализации](../streamer/index.md#streamer), мультиплексы MPTS — в [MPTS-потоки](../streamer/mpts.md#streamer-mpts).

## Клиенты

![Экран «Клиенты», вкладка «HTTP / OTT».](../../_images/webui_clients_http.png)

Список подключённых получателей, разложенный по вкладкам протоколов раздачи: «HTTP / OTT», «SRT», «PS1» и «RIST»; у каждой вкладки — живой счётчик активных сессий. Колонки «Клиент» (с пометкой происхождения: «Локальный логин» или «Внешний биллинг»), «Адрес», «Поток», «Логин» и «Аптайм» есть на всех вкладках; колонки протокола вставлены между ними, а не приписаны в конец: на «HTTP / OTT» это «Тип», «Сессия» и «Качество», на «SRT» — «Режим» (caller или listener), «Потери %», «TSBPD» и «RTT», на «PS1» — «Потери %» и «RTT», на «RIST» — «Статус», «RTT», «Полоса» и «Качество». По списку работает поиск (имя, логин, адрес), длинные списки разбиваются на страницы.

Порядок строк задаёт оператор: заголовок колонки — кнопка, и нажатие сортирует список по ней. Значок у подписи показывает состояние колонки: `↕` — колонку можно сортировать, но сейчас по ней не сортируют; `▲` и `▼` — выбранное направление. У колонки, которая не сортируется, значка нет вовсе. Нажатия перебирают три состояния: сначала полезное для этой колонки направление, затем обратное, затем сортировка снимается и возвращается порядок, в котором строки прислал узел. Полезное направление у числовых колонок — по убыванию («Аптайм», «Потери %», «RTT», «Полоса», «Качество»), чтобы выбросы оказывались наверху с первого нажатия; у текстовых — от А к Я. «Сессия» упорядочивается не по алфавиту, а по виду доставки: сначала «прямой», затем «OTT». «TSBPD» не сортируется вовсе — колонка на «Да» и «Нет», и группировка по ней ничего не сообщает. Строки, у которых в сортируемой колонке значения нет, уходят вниз при обоих направлениях, а не наверх; исключение — «Аптайм», где неизвестное время работы показано как `0s` и сортируется вместе с нулями. Числа внутри текстовых значений сравниваются как числа, а не посимвольно, и в любом месте строки: `192.168.1.9` идёт перед `192.168.1.10`, порт `:80` — перед `:5000`, а `stb2` — перед `stb10`. Сортируется весь найденный список целиком, а не показанная страница, и счётчик показанных строк от сортировки не меняется, но список возвращается на первую страницу. Строки с одинаковым значением всегда выстраиваются в один и тот же порядок, поэтому очередное обновление списка их местами не переставляет. Выбранный порядок не запоминается: экран всегда открывается в порядке узла. При переходе на другую вкладку протокола порядок сохраняется, но действует, только если та же колонка есть и там; если её там нет, список идёт в порядке узла, а при возврате сортировка снова вступает в силу.

Разворот строки открывает полный набор диагностических счётчиков сессии, обновляемый в реальном времени. Раскрыта всегда не больше одной строки: разворот следующей закрывает предыдущую, поэтому два набора счётчиков рядом не сравнить — показания снимают по очереди. Раскрытой строка остаётся, пока жива её сессия: обновление списка её не закрывает, в том числе когда у OTT-сессии меняется адрес. Закрывают её повторным нажатием, сменой вкладки, изменением строки поиска, сменой порядка сортировки или переходом по страницам; вместе с закрытой строкой снимается и выбор сессии для «Отключить».

Две колонки вкладки «HTTP / OTT» делят получателей по способу доставки: на одном и том же порту узел отдаёт и прямой MPEG-TS, и OTT. «Тип» показывает то, что сообщил узел, — протокол и схему через косую черту (`HLS/https`, `LL-DASH/quic`): протокол — HTTP (прямая раздача MPEG-TS), HLS, LL-HLS или LL-DASH, схема — http, https или quic. «Сессия» сводит это к двум значениям: «прямой» для протокола HTTP и «OTT» для остальных; прочерк означал бы, что узел вида сессии не сообщил, — на исправной сборке такого не бывает. Разница между значениями операционная. Прямая раздача — строка на каждое соединение: столько строк, сколько соединений допускает «Макс. подключений, HTTP/HLS» этого логина ([Пользователь: добавление и изменение](configure.md#webui-user-editor)), и отключаются они порознь; держится строка, пока живо соединение, — по бездействию узел его не закрывает. OTT-сессия — строка на сессию плеера, а не на запрос, и она исчезает сама примерно через минуту после последнего обращения плеера по этой сессии: считается любое обращение, не только загрузка чанка, поэтому плеер, который продолжает обновлять манифест, строку удерживает. У DASH несколько плееров одного логина, смотрящих один поток, идут одной сессией ([3.2. Session reuse для DASH](../extras/ott_caching.md#manual-extras-ott-caching-3-2-session-reuse-for-dash)). «Качество» считается по чанкам, поэтому у строк прямой раздачи эта колонка всегда пуста.

Администратору доступно действие «Отключить». Оно завершает одну сессию — ту, чья строка раскрыта; остальные сессии того же логина продолжают работу. Раскрытая строка и есть выбранная цель, поэтому кнопка включена всё время, пока раскрыта хоть одна строка, и следует за выбором при переходе от сессии к сессии. Когда не раскрыто ничего, она выключена, и рядом сказано, чего не хватает, — «Раскройте строку сессии, чтобы выбрать её, затем отключите.» Ещё две причины недоступности постоянные: на вкладке «RIST» отключение не поддерживается вовсе («Сессии RIST нельзя отключить.»), а на «SRT» не отключаются соединения в режиме caller («Сессии в режиме caller нельзя отключить (только просмотр).»). Выбранное подтверждают в окне «Отключить сессию». Команда уходит на узел асинхронно: ответ «Команда отключения отправлена.» означает, что узел её принял, а не что соединение уже закрыто. Протоколы передачи описаны в [Peer-протоколы надёжной передачи](../planning/index.md#planning-peer-protocols), OTT-раздача — в [OTT и DVR](../streamer/ott_dvr.md#streamer-ott-dvr), учётные записи получателей — на экране [Настройка](configure.md#webui-configure) ([2. Поведение клиентов](../extras/ott_caching.md#extras-ott-clients)).

## Монитор DVR

![Монитор хранилищ DVR.](../../_images/webui_dvr_monitor.png)

Наблюдение за записью DVR по хранилищам (только просмотр). Для каждого хранилища — заполнение относительно цели очистки (полоса с меткой цели), объёмы (использовано, свободно, всего, размер архива с разбивкой TS/MP4), признак «Давление на диск», текущая фоновая задача и число привязанных потоков; активные оповещения хранилища выводятся рядом. Разворот показывает построчно потоки архива (идёт запись / простой, глубина хранения, накопленный объём, задержки чтения/записи) и диагностику обслуживания (сбор осиротевших каталогов, обрезка по давлению на диск). Для потока открывается окно [Статистика потока](streams.md#webui-stream-stats); администратору — очистка архива отдельного потока и общая команда «Очистить осиротевшие архивы». Настройка самих хранилищ — на экране [Хранилища DVR](administration.md#webui-dvr-storages); запись и воспроизведение архива описаны в [OTT и DVR](../streamer/ott_dvr.md#streamer-ott-dvr) и [DVR: архив потока](../streamer/ott_dvr.md#streamer-dvr).

## Транскодеры

![Экран «Транскодеры».](../../_images/webui_transcoders.png)

Список активных экземпляров транскодеров узла с фильтром «Все / Активные». В шапке — суммарная загрузка «CPU всего» и «Память всего», а также действия над выделенным экземпляром: «Статистика» и «Открыть в конвейере» (Конвейер). По строке — состояние, декодер (источник), тип, число энкодеров, время работы, CPU и память; разворот показывает энкодеры с параметрами выхода (видеокодек, разрешение, кадровая частота/развёртка, аудиокодеки, реальный битрейт). У декодера и у каждого энкодера — свои действия над названным в этой строке потоком: у декодера это исходный поток, у энкодера — поток, который он выдаёт. Метка конвейера открывает статистику такого потока, а администратору рядом доступна кнопка настройки, открывающая поверх списка его редактор ([Настроить поток](streams.md#webui-stream-editor)). Обе оставляют оператора здесь; кнопка «Показать <имя потока> в списке потоков», наоборот, уводит с экрана: она открывает [Потоки](streams.md#webui-streams), где строка этого потока развёрнута и список прокручен к ней, и ничего поверх списка не открывает. Приход по такой ссылке снимает на том экране фильтры, в том числе возвращает переключатель «Все / Активные» в «Все», — иначе поток мог бы оказаться скрытым. В отличие от кнопки настройки, переход доступен в любой роли: это навигация, а не изменение. Возврат браузером приводит обратно на экран транскодеров, но заново — раскрытая строка экземпляра при этом закрывается. Возможности и настройка транскодирования — в [Транскодеры](../streamer/transcoder.md#streamer-transcoder), наблюдение — в [Контроль работы](../streamer/transcoder.md#streamer-transcoder-monitor), установка пакетов и драйверов — в [Транскодеры](../install/transcoder.md#install-transcoder).

### Экземпляр транскодера

![Окно статистики экземпляра транскодера.](../../_images/webui_transcoder_detail.png)

Карточка отдельного транскодера — окно статистики, открываемое из шапки экрана, из панели «Транскодеры» на обзоре узла или из центрального узла графа транскодера. Показывает источник (декодер), список энкодеров (1 → N), ресурсы (CPU, время работы, PID, память) и журнал процесса: последний код выхода, текущий и предыдущий журналы запусков (с копированием) — для диагностики. При переходе по ссылке с другого экрана окно заодно раскрывает и выделяет строку этого экземпляра в списке за собой, так что после закрытия окна оператор остаётся на нём; если список стоял в режиме «Активные», он возвращается в «Все» — иначе остановленный экземпляр, а именно к таким и ведут ссылки с обзора узла, был бы скрыт. Открытое из шапки самого списка окно фильтр не трогает.

## DVB-адаптеры

![Экран «DVB-адаптеры».](../../_images/webui_dvb_adapters.png)

Единый экран DVB-приёма: конфигурация адаптеров, обогащённая живым состоянием (захват сигнала, качество, битрейт). Строки сгруппированы по режиму — «Режим Stream» (приём в поток) и «FE Monitor» (мониторинг фронтенда, настроенного другим приложением); в колонках — имя, транспондер, сигнал, битрейт, оповещения и состояние; у строки — переключатель паузы. Действия над выделенным адаптером вынесены в шапку: «Статистика», «Открыть в графе» (Конвейер), а также (администратору) «Настроить адаптер» и «Удалить адаптер». Здесь же — фильтр «Все / Активные», «Добавить адаптер» и «Сканировать…» (администратору; кнопка сканирования требует ещё и ширины окна от 768 пикселей, на телефоне её нет). Переход на экран по ссылке, называющей конкретный адаптер, возвращает фильтр в «Все», чтобы адаптер не остался скрытым; открытие статистики из самого списка фильтр не трогает. Приём DVB описан в [DVB-приёмник](../streamer/dvb.md#streamer-dvb), наблюдение за адаптерами — в [Контроль сигнала](../streamer/dvb.md#streamer-dvb-monitoring).

### Редактор DVB-адаптера

Окно добавления и настройки DVB-адаптера. «Режим» и «Система вещания» задаются при добавлении и далее неизменны — они определяют состав настроек. Оборудование выбирается из списка обнаруженных фронтендов (см. [Оборудование](administration.md#webui-hardware)). Для режима Stream доступны параметры настройки (частота, символьная скорость, FEC, модуляция и прочее — по системе вещания), секция LNB для спутникового приёма, «T2-MI», «Дешифрование BISS» и «Дешифрование CI/CAM». Приглушение оповещений адаптера и раздел «Дополнительно» (расширенные параметры) доступны в обоих режимах; режим FE Monitor читает сигнал, не перестраивая тюнер. Приём и дескремблирование описаны в [Адаптеры](../streamer/dvb.md#streamer-dvb-adapter), [Дескремблирование](../streamer/dvb.md#streamer-dvb-descrambling) и [Декапсуляция T2-MI](../streamer/dvb.md#streamer-dvb-t2mi).

Часть полей окно требует заполнить до создания и само не даёт создать адаптер без них. Оборудование обязательно **в обоих режимах**, включая FE Monitor: пока в списке стоит «— выберите оборудование —», кнопка «Создать и настроить» заперта и под полем написано «Выберите оборудование — без этого адаптер не сохранить.». Монитор фронтенда тоже наблюдает за конкретным тюнером — он лишь не перестраивает его. На узле, где ни один фронтенд не перечислен, выбирать не из чего, и то же требование переходит на ручное поле «Индекс адаптера». Для DVB-S, DVB-S2 и DVB-C в режиме Stream к обязательным добавляется «Символьная скорость, ksym/s» — пока она нулевая, создание заперто и поле поясняет «Укажите символьную скорость — без неё адаптер не настроится.». Частоту и символьную скорость проверяет не только создание, но и окно правки: нулевое значение там больше не сохраняется наполовину.

Требование идёт от узла: эти ключи он объявляет со значением по умолчанию ниже собственной нижней границы и проверяет их при создании адаптера, поэтому значение обязан дать оператор, а подставить умолчание нельзя. До появления поля символьной скорости спутниковый и кабельный адаптер режима Stream вручную создать не удавалось вовсе — получался отказ узла, — и работал только мастер сканирования, который берёт скорость из найденного мультиплекса.

### Сканирование DVB

Мастер поиска каналов (администратору). Проходит по шагам: выбор тюнера и системы вещания, выбор источника — «Каталог» (спутник, кабель или эфир с параметрами LNB) либо «Слепое сканирование» по диапазону частот; затем идёт перебор транспондеров с индикацией прогресса и накоплением найденных мультиплексов, у каждого — список сервисов.

Справочники спутников, кабельных и эфирных регионов ищутся по строке: над списком стоит поле «Поиск», сам список отсортирован по названию, и числа в названиях сравниваются как числа. Введённые слова ищутся в любом порядке и по строке целиком — вместе с орбитальной позицией у спутника и кодом страны у кабельного и эфирного региона, — поэтому запрос `hot 13` находит Hotbird на 13.0°E. Уже выбранная строка из списка не исчезает, даже если под запрос не подходит: обнулить поиском выбранный источник нельзя. Счётчик под списком считает выведенные строки, а не совпадения, и пока в списке есть хоть одна строка, «Ничего не найдено.» не появляется; у пустого справочника счётчика нет вовсе, а причину называет сообщение над ним. Запрос очищается при переходе между спутником, кабелем и эфиром и при переключении «Каталог» ↔ «Слепое сканирование»; смена DVB-T на DVB-T2 или DVB-S на DVB-S2 его сохраняет.

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

Для эфирного сканирования на первом шаге появляется поле «Проверять PLP до» — перебор PLP на каждом транспондере DVB-T2 ([Сканирование](../streamer/dvb.md#streamer-dvb-scan)). По умолчанию 0: перебора нет, и узел получает такой же запрос, как раньше. Значение вне диапазона 0…255 не отправляется — вместо этого блокируется кнопка запуска. Узел старее 2.0.2.291 такого запроса не понимает, и поле на нём остаётся без действия.

Мультиплексы, найденные на разных PLP одной частоты, показываются отдельными строками — каждая со своим списком программ, своей отметкой PLP и своим флажком выбора; строка, прочитанная без фильтра, помечена «PLP авто». Отметка «PLP авто» относится ко всему списку результатов, а не к одному транспондеру: она появляется на строках без номера тогда, когда номер есть хотя бы у одной строки в списке. Номер PLP приходит и без перебора, если его задаёт справочник.

В списке тюнеров видны и занятые — выбрать их нельзя, — и рядом стоит состояние каждого: «свободен», «занят · идёт сканирование» либо «занят» с английским токеном причины: `kernel` — тюнер держит посторонний процесс, `pss-id-<номер>` — его держит адаптер этого же узла, и такой адаптер можно приостановить, чтобы освободить тюнер. Перебор останавливают кнопкой «Стоп»; пока команда в пути, на кнопке «Остановка…». Сам узел в остановке не отказывает — он принимает её всегда, — но команда может до него не дойти: истёк таймаут, оборвалась связь, кончилась сессия. Тогда в окне появляется сообщение, начинающееся словами «Не удалось остановить сканирование — тюнер по-прежнему занят.», с описанием сбоя после них; перебор при этом продолжает идти, и «Стоп» можно нажать ещё раз. Выдать неостановленное сканирование за остановленное интерфейс не станет. Сканирование на узле одно, общее на все адаптеры, поэтому запуск нового прохода прекращает предыдущий и занимает его место. Отказать в запуске узел может, и это единственный случай, когда он отказывает по-настоящему: предыдущий проход не освободил тюнер за отведённое время — «Не удалось запустить сканирование — тюнер ещё занят предыдущим проходом. Повторите через несколько секунд.» Закрытие окна любым способом посылает узлу ту же команду остановки — но уже без окна, в котором можно было бы сообщить о неудаче; не дошедшую команду подстрахует собственный таймаут узла. Найденные мультиплексы добавляются по одному или пачкой. По одному — открывается окно «Добавить DVB-адаптер» с предзаполненными параметрами; в нём только основное, а окно настройки со всеми параметрами открывается уже после того, как адаптер создан. Пачкой — выбранные строки создаются без окон, и прервать это может только предупреждение о совпадении имён. Имена формируются автоматически и проверяются на совпадения; у строки с номером PLP он входит в имя. Номер PLP записывается в «Stream id (ISI/PLP)» нового адаптера в обоих случаях сразу, поэтому проверять и править его нужно уже в настройках созданного адаптера. Добавление тоже закрывает мастер и потому останавливает перебор. Поиск каналов описан в [Сканирование](../streamer/dvb.md#streamer-dvb-scan).

### Статистика адаптера

Окно живых параметров выбранного адаптера. Содержит: сводку состояния и параметры настройки, активные оповещения, графики истории сигнала (уровень, SNR, BER, UCB), секцию «Метрики» (фронтенд, статус захвата, частота, «PLP / ISI», SNR, уровень сигнала, счётчики ошибок, для режима Stream — битрейт), список программ, «Несущие T2-MI», «Дешифраторы BISS», «Модуль CI/CAM», «Профилировщик» (загрузка потока обработки, переполнение DVR-кольца) и журнал адаптера. Администратору доступно «Сбросить статистику». Служит для настройки антенны и контроля стабильности приёма ([Контроль сигнала](../streamer/dvb.md#streamer-dvb-monitoring)).

В списке программ адаптера и в этом окне (заголовок и сводка программы, строка «Программа» в блоке медиаданных) у сервиса внутри несущей T2-MI показан составной PNR — тот же, которым программа адресуется везде: в выборе программы у демультиплексора, BISS и CAM ([Декапсуляция T2-MI](../streamer/dvb.md#streamer-dvb-t2mi)). Собственный номер программы внутри несущей для адресации не годится — на транспондере с зеркальными группами он повторяется у каждой несущей и не указывает ни на что. Программы внешнего мультиплекса показываются как прежде.

Строка «PLP / ISI» в «Метриках» появляется, только когда узел сообщает номер выбранного потока: у адаптера на «авто», а также у DVB-C и ATSC её нет. Это номер уровня тюнера — тот, что задан в «Stream id (ISI/PLP)»: PLP у DVB-T2, идентификатор потока у спутникового multistream. PLP несущих T2-MI — другое, их показывает отдельная секция «Несущие T2-MI».

## Тестовые потоки

Экран тестовых потоков — генерация служебных потоков для проверки трактов ([Тестовые потоки](../streamer/test_stream.md#streamer-test-stream)). Раздел находится в подготовке.

## База данных EPG

Собранная программа передач и состояние её источников. Экран содержит вкладки:

****База данных****
  Просмотр накопленной программы: выбор источника, список каналов с поиском и фильтром по наборам, расписание выбранного канала по дням (переключение дня и языка, подсветка текущей передачи). Администратору доступна правка канала — имя, часовой пояс, значок, принадлежность к наборам.
****Состояние источников****
  Статус импорта по каждому источнику: состояние, время прошлого и следующего обновления, число каналов и событий, ошибка; администратору — принудительное обновление источника.

Импорт и обработка EPG описаны в [База данных EPG](../streamer/epg/xmltv.md#streamer-epg-database) и [Импорт EPG/XMLTV](../streamer/epg/xmltv.md#streamer-epg-xmltv); источники и настройка — в [Настройка источников](../streamer/epg/xmltv.md#streamer-epg-sources) и на экране [Настройки EPG](configure.md#webui-epg-settings).

## Мозаика

Стена превью: живые миниатюры кадров — по одной плитке на каждый активный поток SPTS и на каждую программу активного MPTS (программы мультиплекса помечены значком). Сетка подстраивается под ширину экрана, размер плиток переключается элементом «Размер» (1, 1/2, 1/3). Приостановленные и остановленные потоки в мозаике не появляются. Нажатие на картинку открывает увеличенный кадр, нажатие на подпись — окно статистики её потока ([Статистика потока](streams.md#webui-stream-stats)); у программы мультиплекса это статистика всего MPTS, а не одной программы. Звёздочкой плитку можно закрепить в «Избранном» на экране Обзор узла.

Порядок плиток задаёт оператор: плитку переносят перетаскиванием на место соседней или сочетаниями `Alt+↑` и `Alt+↓`; о том же говорит подсказка плитки — «Перетащите, чтобы переставить · Alt+↑/↓». Жест работает только на широком экране: на планшете и телефоне стена показывает заданную раскладку, но менять её не даёт. Раскладка хранится в браузере, а не на узле и не в учётной записи, поэтому у другого оператора и на другой машине порядок свой. Кнопка «Сбросить раскладку» появляется в шапке рядом с элементом «Размер», как только своя раскладка задана, и возвращает стену к обычному порядку — по номеру потока, а у мультиплекса и по номеру программы. Плитка потока, ушедшего в паузу, место за собой сохраняет и на него же возвращается — даже если соседние плитки за это время переставили. Забывается место только тогда, когда плитка не появлялась на стене месяц. Новая плитка всегда добавляется в конец.

### Исходный кадр

Окно увеличенного просмотра выбранного кадра в исходном разрешении — для детальной визуальной проверки картинки. В шапке окна — имя плитки и размер кадра, а справа элементы «Уменьшить», текущий масштаб, «Увеличить», «Открыть в новой вкладке» и «Закрыть». Масштаб меняется от 100 % до 600 % — колесом мыши, клавишами `+` и `−` или теми же кнопками. Сто процентов означает «по ширине окна», а не «пиксель в пиксель»; пропорции кадра сохраняются всегда, поэтому высокий кадр и при 100 % может не поместиться в окно по высоте — такой досматривают прокруткой. Внутри окна листаются соседние плитки мозаики — клавишами `←` и `→` или кнопками у краёв, в том порядке, в каком плитки стоят на стене; при переходе к соседней плитке масштаб возвращается к 100 %. `Esc` закрывает окно. Шапка и подсказки скрываются через несколько секунд бездействия и возвращаются по нажатию на кадр.

## Системный монитор

![Системный монитор.](../../_images/webui_system.png)

Состояние сервера в виде карточек: «CPU» (общая загрузка и доля процесса PSS, число ядер), «Память» (использовано и доля PSS, объём в ГБ), «Сеть» (по каждому интерфейсу — приём/передача и загрузка канала, с вложением VLAN под физический адаптер) и карточки аппаратного ускорения (NVIDIA — GPU/память/декодер/энкодер, Intel VPL). В строке интерфейса после имени и, если она известна, скорости канала стоит его адрес IPv4 — `eno3 · 1 Gbps · 10.0.0.5`; у вложенного VLAN скорость не сообщается, и адрес идёт сразу за именем. Несколько адресов на одном интерфейсе перечисляются через запятую, а интерфейс без адреса IPv4 не показывает ничего. Ниже — блок «История»: графики показателей во времени с теми же пресетами окна, что и у статистики потока ([Статистика потока](streams.md#webui-stream-stats)); в заголовке графика интерфейса стоит тот же адрес. Интерфейс с известной скоростью канала рисуется в процентах от неё, а тот, чью скорость узел не сообщает (обычно это VLAN), — в мегабитах. Такой график не сжимает шкалу ниже 1 Мбит/с, чтобы почти простаивающий интерфейс не выглядел загруженным; а если хотя бы одно направление за окно что-то несло, но его пик не дотянул до мегабита, показания графика переходят на два знака после запятой — иначе интерфейс, несущий десятки килобит, читался бы как мёртвый. Молчавшее всё окно направление в этот счёт не идёт, поэтому полностью простаивающий интерфейс остаётся с целым нулём. Отдельной секцией на узлах с настроенными DVB-адаптерами выводятся графики качества сигнала фронтендов ([Контроль сигнала](../streamer/dvb.md#streamer-dvb-monitoring)). Помогает оценить запас по нагрузке; рекомендации по настройке ресурсов — в [Оптимизация работы узла](../extras/tuning.md#extras-tuning), внешний сбор метрик — в [Подключение внешних систем мониторинга](../extras/monitoring.md#extras-monitoring).

## Журналы

![Журналы.](../../_images/webui_logs.png)

Структурированный журнал событий узла (доступен администратору) с фильтрами и постраничным выводом. Отбор — по важности («Важность ≥»), типу и идентификатору источника, тексту сообщения и диапазону дат; переключается порядок сортировки (сначала новые / старые). В колонках — время, важность, источник и сообщение; источник-поток открывает его окно [Статистика потока](streams.md#webui-stream-stats), прочие источники ведут на профильный экран. Служит для диагностики и разбора инцидентов.

Каждый запуск службы отмечен в ленте отдельной строкой-разделителем «Запуск стримера» с моментом старта и сборкой, на которой прогон поднялся. У текущего прогона рядом стоит его аптайм, у прошедших — сколько прогон проработал и сколько узел простоял до следующего запуска; прогон, завершившийся без штатной остановки, помечается отдельно. Разделитель ставится и тогда, когда лента отфильтрована по важности: сама строка запуска — уведомление и под фильтр ошибок не попала бы, а граница прогонов нужна как раз при разборе инцидента.

Длинное сообщение в списке свёрнуто до двух строк; клик по строке (или по шеврону в её начале) разворачивает под ней панель с полным текстом, кнопкой «Скопировать сообщение», временем, уровнем, источником записи и — если запись повторялась — числом повторов. Строки разворачиваются независимо друг от друга, а при перелистывании и обновлении ленты разворот снимается: у записи журнала нет собственного номера, и запоминать было бы нечего.

Источник записи обозначается типом объекта, а для потоков — ещё номером и именем: `Stream #43 · orig CBC HD`; если отображаемое имя не задано, подставляется имя потока. Тем же именем с номером подписаны потоки в списке выбора фильтра «ID источника». Записи, сделанные входом или выходом потока, числятся за самим потоком и показывают его имя, а конкретные вход или выход названы в начале текста сообщения.

## Оповещения

![Активные оповещения.](../../_images/webui_alerts.png)

Сводный экран действующих оповещений: свои (текущего узла) либо всего домена — переключается областью в шапке. Экран показывает только активный набор — снятое оповещение из списка исчезает. В колонках — важность, источник, сообщение и возраст; источник-поток открывает его окно [Статистика потока](streams.md#webui-stream-stats). Оповещение о входе или выходе числится за потоком, а сам вход или выход приписан к имени потока английским токеном — `input #2` для входа, `output #7` для выхода. У входа это его номер в списке резервирования, тот же, что виден на экране; у выхода — внутренний номер записи, который нигде не показывается, потому что приоритета у выходов нет и порядкового номера им не дают. Считать выходы по порядку в списке бесполезно: номера остаются за удалёнными записями. Проще открыть развёрнутую строку потока — там оповещение стоит прямо на строке своего входа или выхода. В домене из нескольких узлов у строки показывается узел-источник (с переходом в его админку). Оповещения уровня действия администратора снабжены кнопкой «Сбросить» (подтверждение вручную), действующей на своём узле. У таких оповещений под источником указано, где устранять причину; когда это вход или выход, администратору строка служит ссылкой и открывает редактор владеющего потока ([Настроить поток](streams.md#webui-stream-editor)). Оповещение, пришедшее с другого узла, ссылки не даёт — номера потоков у каждого узла свои. Модель оповещений, их разбор и полный список кодов приведены в [Оповещения (алертер)](../meshwork/alerts.md#meshwork-alerts) и [Каталог кодов алертов](../meshwork/alerts.md#meshwork-alert-codes); настройка порогов и внешней доставки — на экране [Оповещатель](administration.md#webui-alerter).
