SIRINVIDEO CCTV Документация администратора и пользователя На сайт 2026.08

Ноды и флот

Состояние нод, телеметрия, конфигурация, ядра, логи, сертификаты и вывод из эксплуатации.

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

Раздел Узлы (/admin/infrastructure/nodes) доступен только суперадмину. Админ организации и оператор пункта меню не видят, а прямой переход даёт «Страница не найдена». Рядом, на той же странице, вкладка «Туннельные агенты» — это отдельная сущность для камер за NAT, см. Камеры за NAT: туннели.

Список узлов: сводка по флоту, состояние, нагрузка и хранилище
Список узлов: сводка по флоту, состояние, нагрузка и хранилище

Список узлов#

Вверху четыре плитки: «Узлов во fleet» (настроенные медиасерверы), «Доступны» (из скольких настроенных), «Профилей в эфире» (активные основные и дополнительные профили) и «Требуют внимания» (недоступны, отключены или сообщают об ошибках).

Колонка Что показывает
Название имя ноды, под ним — её публичный URL
Состояние «Активен», «Выведен из эксплуатации» или «Отключён» плюс «Последний контакт»
Стримы и сессии сколько профилей в эфире из общего числа, сколько с деградацией и с ошибками
Нагрузка системы занятость worker-ядер, число логических CPU хоста и его загрузка
Хранилище по каждому хранилищу ноды: имя, «{n}% свободно» и IOPS записи
License состояние лицензии ноды и разрешённое число потоков
Версия версия сборки ноды

Клик по строке открывает карточку узла. Кнопка в шапке — «Добавить ноду».

Этот список — не обычная таблица консоли: поиска, фильтров, экспорта CSV и массовых действий здесь нет, потому что нод во флоте единицы или десятки, а не тысячи.

Как читать «Нагрузку системы»

Запись вида 0.80/24 worker-ядер · 24 CPU хоста · 4% загрузки означает: нода использует 0,80 ядра из 24 выделенных ей рабочих ядер, всего на хосте 24 логических CPU, и хост в целом занят на 4 %.

Первое число — потребление процесса ноды, третье — загрузка всего хоста, включая посторонние процессы. Расходятся они закономерно: если загрузка хоста высокая, а worker-ядра почти свободны, процессор ест кто-то другой, а не видео.

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

Добавление ноды#

Порядок обязателен: сначала нода создаётся в Plane, и только потом ставится на сервер. Подсказка формы говорит об этом прямо — «Сначала создайте логическую ноду. Fleet сгенерирует полный конфигурационный файл, который надо положить на сервер.».

Поле Обязательность Смысл
Название обязательное постоянное имя во fleet; используется при размещении камер и в аудите, после создания не меняется
Публичный URL обязательное адрес медиа и администрирования, доступный браузерам и control plane
Control URL необязательное адрес, по которому Plane управляет нодой; пусто — «как публичный»
Указывайте https:// сразу

Схема эффективного адреса управления (Control URL, а если он пуст — Публичный URL) — это единственное, из чего Fleet выводит стартовую конфигурацию ноды. При https:// в неё попадают TLS-слушатель и самоподписанный сертификат на настоящее имя ноды, и нода поднимается по HTTPS с первого запуска; Plane принимает этот сертификат осознанно — нода удостоверяется выданным ей ключом управления. Прежнего ограничения «при создании только http://» больше нет.

Порты выводятся оттуда же: https://node.example.com → нода слушает 80 и 443; https://cctv.example.com:9443 → 9080 и 9443 (так ставится нода на одном хосте с Plane, которому принадлежат 80 и 443); http://node.example.com:8090 → только 8090, без собственного TLS — вариант для ноды за прокси, который сам терминирует TLS.

После «Создать ноду» появляется тост «Нода создана. Скопируйте её конфигурацию на сервер.» и окно с готовым файлом node.conf. Полная процедура установки, спаривания и лицензирования — на странице Установка с нуля: Node.

Конфигурация ноды#

Окно «Конфигурация {имя}» открывается сразу после создания и в любой момент — кнопкой «Посмотреть конфигурацию» в карточке узла, раздел «Базовая конфигурация». В окне видно «Поколение» и весь текст node.conf; его можно скопировать в буфер или скачать файлом.

Инструкция под текстом: «Скопируйте весь файл на сервер ноды и запустите hastreamer-cctv-node, передав путь к нему. Листенеры, TLS и тюнинг можно менять локально; стримы и хранилища синхронизирует plane.». Это и есть граница ответственности: системную часть файла правят на сервере руками, рабочую нагрузку приводит в соответствие Plane. Разбор всех директив — node.conf — все директивы.

«Перегенерировать ключи» немедленно разрывает управление нодой

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

Старый node.conf перестаёт проходить авторизацию сразу же. До тех пор пока новый файл не положен на сервер и служба не перезапущена, нода не получает конфигурацию: новые камеры на неё не приедут, а изменения существующих не применятся. Планируйте ротацию только вместе с доступом к серверу ноды.

Карточка узла#

Адрес — /admin/infrastructure/nodes/<UUID>. Вверху имя ноды, версия и короткий идентификатор, состояние и возраст телеметрии. Шесть вкладок; каждая имеет собственный адрес через ?tab=.

Карточка узла: телеметрия процесса и хоста, графики и тепловая карта ядер
Карточка узла: телеметрия процесса и хоста, графики и тепловая карта ядер
Вкладка Что внутри
Обзор телеметрия процесса и хоста, графики, тепловая карта ядер, состояние сети
Сессии кто и что смотрит на этой ноде прямо сейчас
Хранилища диски и S3: занятость, IOPS, порог вытеснения, холодный уровень
Логи операционный журнал ноды
Лицензия что нода сообщает о своей лицензии
Сеть и TLS адреса, сертификаты, базовая конфигурация, рабочие ядра, опасные действия

Обзор#

Четыре плитки: «Доступность» (возраст телеметрии), «CPU хоста», «Память хоста» и «Время работы». Ниже блок «Стримы и сессии» со счётчиками: «Всего», «Live», «Ожидают», «Подключаются», «Деградация», «Ошибки», «Сессии».

Затем четыре графика за последние минуты: «CPU процесса» (с подписью «{n} из {m} сконфигурированных worker-ядер»), «RSS процесса», «CPU хоста» и «Память хоста». Под ними «Ядра CPU» — тепловая карта по каждому логическому ядру, «Наведите на ядро для текущей загрузки».

Тепловая карта ядер показывает перекос раскладки

На здоровой ноде столбики ядер заполнены примерно одинаково. Если одно ядро прижато к потолку, а остальные пусты — работа стянута на один поток; проверьте параметр «Рабочие ядра» ниже на этой странице и раскладку камер по нодам.

Внизу — «Runtime и состояние сети»: «Открытые FD», «Ошибки UDP», «Потери ядра», «Потери очереди», «RX в очереди». Растущие «Потери ядра» и «Потери очереди» означают, что нода не успевает разбирать входящий трафик: это ищут в Производительности, а не в настройках камеры.

Сессии#

Кто смотрит видео с этой ноды: «Стрим», «Протокол», «Клиент», «Субъект», «Исходящий трафик», «Потери», «Джиттер», «Отставание». Есть поиск по стриму, клиенту или пользователю. Подписи «Текущая страница обновляется live» и «Видимые строки обновляются каждые 2 секунды» объясняют, почему числа меняются на глазах: обновляются только видимые строки — так список остаётся дешёвым даже под нагрузкой.

Если в колонке «Субъект» стоит Share · …, поток смотрят по выданной ссылке доступа, а не под учётной записью.

Хранилища#

Список хранилищ ноды с занятостью, скоростями чтения и записи, IOPS, порогом вытеснения и состоянием холодного уровня S3. Здесь же добавляют диски и выполняют обязательную инициализацию — всё это описано на отдельной странице Хранилища DVR.

Логи#

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

sudo journalctl -u hastreamer-cctv-node --since '2 hours ago' --no-pager

Лицензия#

Что нода сообщает о своей лицензии: «Владелец», «Email», «Макс. потоков», «Истекает», «Обновления до», «HWID». Если нода недоступна или не ответила, показывается «Лицензия недоступна — нода недоступна или не сообщила о ней.».

HWID берут именно отсюда — код активации выпускается под него. Лезть за ним в журнал сервиса не нужно; это остаётся запасным способом для ноды, до которой Plane не достучался. Сам код активации кладётся файлом на сервер ноды — Лицензирование.

Лицензируется именно нода, а не Plane. Нелицензированная нода спаривается, видна в списке и отвечает на запросы, но не отдаёт ни одного кадра видео — при этом над консолью висит красный баннер лицензии. Подробности — Лицензирование.

Сеть и TLS#

Карточки раздела:

  • «Адреса ноды» — «Публичный путь воспроизведения и приватный путь управления» плюс кнопка «Изменить».
  • «TLS / сертификаты» — кнопка «Управлять TLS».
  • «Базовая конфигурация» — кнопка «Посмотреть конфигурацию».
  • «Рабочие ядра».
  • «Опасные действия» — кнопка «Отключить».

Адреса ноды#

Кнопка «Изменить» в карточке «Адреса ноды» открывает форму «Сетевые адреса ноды» с двумя полями.

Поле Кто по нему обращается
Публичный URL браузеры зрителей — за видео, превью и плеером
Control URL Plane — за управлением; пусто означает «как публичный»

Адреса меняют при переезде ноды на другой домен или порт. Схема при этом должна оставаться согласованной с тем, поднимает ли нода TLS сама.

Ноду со своим TLS нельзя опрашивать по http://

Нода с собственным сертификатом перенаправляет весь обычный HTTP на HTTPS. При таком перенаправлении теряется заголовок авторизации: Plane получает 401, управление молча перестаёт работать, а нода при этом выглядит живой — она отвечает браузерам и продолжает раздавать видео, но не принимает конфигурацию и уходит в offline.

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

Дополнительный эффект: конфигурация с логинами и паролями камер уходит на ноду в шифрованном виде, а не открытым текстом. Разбор вариантов сертификата — TLS и сертификаты.

Смена схемы меняет и слушатели ноды

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

TLS ноды#

Кнопка «Управлять TLS» открывает окно «TLS / сертификаты». Ключевой выбор — «Владелец сертификата»:

Значение Когда применяется
Собственный сертификат ноды «Для удалённых и выделенных нод. Нода сама использует ACME или отдельный загруженный PEM.»
Сертификат Plane · тот же хост «Только для co-located ноды. Локальный синхронизатор копирует сертификат Plane, не передавая приватный ключ удалённым хостам.»

Второй вариант годится только когда Plane и нода стоят на одном сервере. Состояние синхронизации показывается тут же: «Сертификаты Plane и Node совпадают» либо «Синхронизация сертификата требует внимания» с пояснением «Основной сертификат Node не совпадает с активным сертификатом Plane. Проверьте локальный синхронизатор.».

Ниже — «Активный сертификат Node»: имена сертификата (SAN), центр сертификации, срок действия, серийный номер, SHA-256 fingerprint и «Осталось дней: {n}». Блок «HTTPS и параметры ACME» задаёт «Порт HTTPS», «Каталог ACME» и «Контакт ACME», а «Управляемые сертификаты» позволяет добавить сертификат через «Настроить ACME» либо «Загрузить сертификат» (поля «Имена в сертификате», «Сертификат PEM», «Приватный ключ PEM», «Цепочка CA PEM (необязательно)»).

Проверить, что нода отдаёт именно ожидаемый сертификат, проще всего снаружи:

echo | openssl s_client -connect node.example.com:443 -servername node.example.com 2>/dev/null \
  | openssl x509 -noout -issuer -dates

Рабочие ядра#

Карточка «Рабочие ядра» задаёт, сколько ядер CPU нода отдаёт медиапроцессам. Значение записывается в node.conf директивой cores.

Значение Смысл
0 «Все высокопроизводительные» — каждое P-ядро на гибридных процессорах, все ядра на однородных
положительное число закрепляет ровно указанное число ядер
0 — это «все ядра», а не «ни одного»

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

Изменение применяется не сразу: «Применяется при следующей загрузке конфигурации и перезапуске ноды — число ядер задаётся системно-локально.». После сохранения (тост «Число рабочих ядер обновлено») перезапустите службу на сервере ноды:

sudo systemctl restart hastreamer-cctv-node

Вывод из эксплуатации#

Кнопка «Отключить» в блоке «Опасные действия» переводит ноду в состояние «Выведен из эксплуатации».

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

Подсказка в интерфейсе: «Отключайте только намеренно выводимую из эксплуатации пустую ноду. Для замены сервера остановите старый экземпляр, скопируйте тот же комплект конфигурации ноды, измените здесь адреса и запустите его на новом хосте.».

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

Замена сервера — это не вывод из эксплуатации. Меняя железо и оставляя ту же логическую ноду, сохраните её идентификатор и ключ: положите на новый сервер тот же node.conf (или получите его заново кнопкой «Посмотреть конфигурацию») и поправьте адреса. Отдельного удаления ноды в системе нет.

Диагностика#

Симптом Причина Решение
Нода не переходит в «Активен» после установки Plane не достучался до ноды проверьте control_url, firewall и что порт слушается: sudo ss -tlnp | grep hastreamer
Нода отвечает браузерам, но в списке недоступна адрес управления http:// у ноды со своим TLS: при редиректе теряется авторизация приведите оба адреса к https:// — см. предупреждение выше
Красный баннер лицензии, видео нет нода не лицензирована вкладка «Лицензия», затем Лицензирование
В списке чип «Показаны последние известные данные узлов» оборвался поток телеметрии обновите страницу; если чип держится — проверьте доступность Plane и ноды
Загрузка хоста высокая, worker-ядра свободны CPU занят посторонним процессом посмотрите top на сервере ноды
Растут «Потери ядра» и «Потери очереди» нода не успевает разбирать входящий трафик Производительность
Диска нет в списке при выборе для камеры диск не инициализирован Хранилища DVR

Более широкий разбор симптомов — Диагностика неисправностей. Всё то же самое через API — Ноды и хранилища.