Раздел 2. Администрирование системы¶
Настоящий раздел описывает административные функции, периодические проверки и порядок планового обслуживания BOX5-DIT-MGSN. Раздел предназначен для администратора, который сопровождает действующий контур: управляет пользователями и ролями, контролирует доступы, проверяет состояние сервисов, готовит обновления и технологические окна.
Технологическая установка и восстановление поставки описаны в И2, разделе 2 и И2, разделе 3. Резервное копирование и восстановление данных как отдельный регламент приведены в И3, разделе 3. Состав сервисов и назначение доменов приведены в приложении Г.
Администрирование выполняется через три поверхности:
- web-интерфейс BOX5-DIT-MGSN, разделы Администрирование, Настройки, Мониторинг, Журналы;
- REST API за
ui-nginxиui-rest-to-gprc, если нужна проверка без ручной работы в UI; - сервер поставки
~/CODE/box3,compose.sh, Docker, каталоги данных и контейнерные логи.
Keycloak"] ui["Web UI BOX5-DIT-MGSN
рабочие разделы"] gateway["ui-nginx + ui-rest-to-gprc
/api/*"] auth["st-auth
профили и роли пользователей"] access["st-access
права на камеры и объекты"] camera["st-camera-storage
камеры, объекты, сценарии"] inference["inference
балансировка, мониторинг, модели"] audit["st-audit
журнал действий"] host["Хост поставки
compose.sh, docker, data"] admin --> sso --> ui --> gateway gateway --> auth gateway --> access gateway --> camera gateway --> inference gateway --> audit admin --> host host --> gateway host --> inference
Исходный Mermaid-код схемы: И3-MER-004. Раздел 2. Администрирование системы.
На схеме Keycloak показан только как внешний контур аутентификации. Его администрирование выполняется вне BOX5-DIT-MGSN; в BOX5-DIT-MGSN администратор работает с прикладными ролями, профилями, объектными правами, аудитом и состоянием сервисов.
2.1. Функции администрирования¶
2.1.1. Управление ролями и профилями пользователей¶
В промышленном контуре вход пользователей в BOX5-DIT-MGSN выполняется через Keycloak. Keycloak является внешней системой и в настоящем разделе не описывается. Администрирование внутри BOX5-DIT-MGSN начинается после успешной аутентификации пользователя во внешнем контуре: BOX5-DIT-MGSN хранит прикладной профиль пользователя, ролевую модель, объектные права доступа, историю входов и журнал действий.
Web-интерфейс публикует эти операции в разделе Администрирование:
- Пользователи - просмотр пользователей, известных BOX5-DIT-MGSN, и их прикладных параметров;
- Ролевая модель - создание и изменение ролей BOX5-DIT-MGSN, назначение доступных действий и страниц;
- Логирование действий - просмотр действий пользователей и выгрузка отчёта;
- профиль пользователя - просмотр персональных параметров в пределах назначенных прав.

Основные операции:
| Операция | Где выполняется | Источник данных | Контроль |
|---|---|---|---|
| Проверить режим входа через Keycloak | GET /config.json |
ui-rest/ui-config/config.json |
В активной конфигурации UI установлен признак перенаправления входа во внешний контур. |
| Просмотреть пользователей, известных BOX5-DIT-MGSN | UI Администрирование -> Пользователи или GET /api/statistics/auth/users/ |
st-auth, st-auth-postgres |
Список пользователей доступен для назначения ролей, объектных прав и отображения в журналах. |
| Управлять ролями | UI Ролевая модель или /api/statistics/auth/roles-v2/ |
st-auth |
В списке ролей отображается новая версия роли, пользователь видит только разрешённые разделы. |
| Проверить историю входов | UI журналов или отчёты auth | st-auth, st-auth-report-pdf-xlsx-generator |
Отчёт PDF/XLSX формируется за выбранный период. |
Создание учётных записей, отключение входа пользователя и требования к аутентификации относятся к внешнему контуру и не выполняются средствами BOX5-DIT-MGSN. В BOX5-DIT-MGSN администратор проверяет только прикладные настройки: роль, доступ к камерам и объектам, отображение пользователя в отчётах и журналах.
Токены, значения JWT_*, параметры интеграции с внешним контуром и другая
чувствительная информация не публикуется в документации, тикетах и общих
чатах. Для REST-проверок используется bearer token действующей авторизованной
сессии или утверждённой служебной процедуры проверки; порядок получения токена
в настоящей инструкции не приводится.
Пример безопасного smoke-проверочного набора через REST API:
curl -fsS http://<sova-host>/config.json \
| jq '.ADDITIONAL_SETTINGS.IS_REDIRECT_TO_KEYCLOAK'
curl -fsS -H "Authorization: Bearer ${token}" \
http://<sova-host>/api/statistics/auth/me/
curl -fsS -H "Authorization: Bearer ${token}" \
http://<sova-host>/api/statistics/auth/users/
curl -fsS -H "Authorization: Bearer ${token}" \
'http://<sova-host>/api/statistics/auth/roles-v2/?page=1&page_size=20'
2.1.2. Настройка прав доступа¶
Права доступа к камерам и наблюдаемым объектам хранятся в сервисе st-access
и БД st-access-postgres. Сервис поддерживает простые выдачи доступа,
именованные группы доступа, массовое назначение одинаковых прав пользователям
и пересборку плоского кэша привилегий.
| Операция | Где выполняется | Назначение |
|---|---|---|
| Выдать пользователю доступ к камере или объекту | UI карточки пользователя/объекта или POST /api/statistics/access/simple/ |
Разрешить пользователю видеть выбранные камеры, события, отчёты и связанные представления. |
| Создать группу доступа | GET/POST/PUT /api/statistics/access/group/ |
Сгруппировать пользователей и объекты ответственности. |
| Проверить привилегии пользователя | GET /api/statistics/access/privileges/{user_id}/ |
Убедиться, что сервисы получили актуальный список доступных камер и объектов. |
| Пересобрать кэш прав | POST /api/statistics/access/privileges/flush/ |
Используется после восстановления БД или массового изменения прав. |
После изменения прав st-access публикует обновлённый список привилегий в
Kafka topic statistic_access. Нижестоящие сервисы используют эти данные для
фильтрации уведомлений, отчётов, ответственных пользователей и доступных камер.
Если пользователь не видит ожидаемые события, администратор проверяет не только
роль, но и объектные права в st-access.
2.1.3. Управление конфигурацией камер, объектов, сценариев и моделей¶
Конфигурация технологического контура включает камеры, наблюдаемые объекты, сценарии Node-RED/NRI, версии моделей и параметры балансировки. Эти операции относятся к администрированию, потому что влияют на то, какие видеопотоки обрабатываются и какие события попадают операторам.
Сценарий описывает, какие нарушения и события нужно выявлять, какие модели и зоны использовать и по каким условиям формировать результат. Поэтому настройка прикладной логики выполняется через сценарии, а не через отдельные наборы категорий камеры.
| Объект | Основной сервис | Административная операция | Проверка результата |
|---|---|---|---|
| Камеры и наблюдаемые объекты | st-camera-storage |
Создание, изменение, удаление, привязка объекта, проверка статуса камеры | Камера есть в UI Мониторинг, в API camera-storage, нижестоящие сервисы получают Kafka-событие camera_*. |
| Сценарии и lite-сценарии | svr-scenario-storage, svr-lite-scenario-storage, node-red-sandbox |
Создание и изменение логики выявления нарушений/событий, загрузка, архивирование, проверка версии сценария, перенос из песочницы | В UI сценариев видна активная версия; после применения сценария камеры обрабатываются ожидаемым блоком NRI. |
| Модели | svr-models-registry, inf-flows-manager |
Загрузка версии модели, проверка скачанных/активных версий, запуск обновления | API-группа models-storage (GET /api/inference/models-storage/) и endpoints flows-manager возвращают ожидаемую модель. |
| Балансировка камер | inf-load-balancer |
Проверка нод, тегов балансировки, распределения камер | GET /api/inference/load-balancer/info2/ показывает ноды и камеры без незапланированных провалов. |
Изменение камер, сценариев, моделей и связанных технических настроек выполняется сначала на TEST, затем переносится в PROD в согласованное окно. Перед изменениями, которые затрагивают поток обработки или модели, администратор сохраняет конфигурацию и проверяет откат по регламенту раздела 3.
2.1.4. Мониторинг состояния системы¶
Администратор контролирует работоспособность на уровне UI, API, контейнеров, данных, GPU и inference-пайплайна. В web-интерфейсе для этого используются разделы Мониторинг, Журналы и Администрирование -> Мониторинг кластера.

Основные контрольные точки:
| Уровень | Проверка | Норма |
|---|---|---|
| Публичный UI/API | GET /, GET /config.json, GET /api/base/ping/ |
UI загружается, в конфигурации включён вход через внешний контур, ping возвращает {"result":"pong"}. |
| Docker-домены | compose.sh status all, docker ps |
Сервисы в состоянии Up, нет бесконечных рестартов. |
| Диски | df -h / /data, du -sh ${COMPOSE_DATA} |
Достаточно свободного места для новых событий, логов, видеофрагментов и резервных копий. |
| GPU | nvidia-smi |
GPU видимы, драйвер без ошибок, загрузка соответствует ожидаемому профилю. |
| Инференс | POST /api/inference/monitoring/light с {"camera_ids":[]} |
Возвращается список состояний камер; критичные камеры не находятся в незапланированном отказе. |
| Балансировка | GET /api/inference/load-balancer/info2/ |
Ноды и камеры распределены, нет неожиданного списка cameras_without_nodes. |
| Модели | GET /api/inference/models-storage/ |
Активные модели доступны через API-группу реестра моделей. |
| Журнал действий | GET /api/statistics/audit/services/, GET /api/statistics/audit/logs/ |
Audit API отвечает, события действий пользователей сохраняются. |
| Резервные копии | latest.psql.gz, gzip -t, тестовое восстановление |
Свежие dump-файлы пригодны для восстановления. |
Команды первичного контроля на сервере:
cd ~/CODE/box3
compose.sh status all
docker ps --format 'table {{.Names}}\t{{.Image}}\t{{.Status}}'
curl -fsS http://localhost/api/base/ping/
df -h / /data
nvidia-smi
Проверка inference через REST API:
curl -fsS -X POST http://<sova-host>/api/inference/monitoring/light \
-H "Authorization: Bearer ${token}" \
-H 'Content-Type: application/json' \
-d '{"camera_ids":[]}'
curl -fsS http://<sova-host>/api/inference/load-balancer/info2/ \
-H "Authorization: Bearer ${token}"
curl -fsS http://<sova-host>/api/inference/models-storage/ \
-H "Authorization: Bearer ${token}"
Состав Prometheus-метрик, источники технического мониторинга и ограничения
применения /metrics приведены в
приложении «Метрики мониторинга».
2.1.5. Управление обновлениями¶
Обновление BOX5-DIT-MGSN выполняется как управляемое изменение версии поставки:
- Зафиксировать текущие версии
~/CODE/box3,domains.conf,.env-файлов и Docker-образов. - Проверить свободное место и состояние резервных копий.
- Сделать резервную копию конфигурации и данных по разделу 3.
- Применить изменение на TEST и выполнить smoke-проверку UI/API/inference.
- В технологическое окно применить изменение на PROD.
- Перезапустить затронутый домен, а не одиночный контейнер, если изменение относится к сервису внутри домена.
- Выполнить контрольный чек-лист после запуска.
- Зафиксировать результат обновления: дата, версия, затронутые домены, выполненные проверки, обнаруженные отклонения и решение по откату.
Для одноузлового compose-профиля используются команды:
cd ~/CODE/box3
compose.sh check
compose.sh pull <domain>
compose.sh restart <domain>
compose.sh status <domain>
Для полного запуска или остановки:
cd ~/CODE/box3
compose.sh stop all
compose.sh start all
compose.sh status all
Если контур развёрнут в Docker Swarm, применяются штатные swarm-скрипты из поставки, описанные в И2. Нельзя смешивать compose-команды и swarm-операции без отдельного решения ответственного администратора.
2.1.6. Журналирование административных действий¶
Действия пользователей и администратора фиксируются в st-audit; часть
событий создаёт ui-rest-to-gprc при выполнении UI/REST-операций. В домене
severstal отдельный сервис svr-security-notice может зеркалировать
тот же audit-поток во внешний контур безопасности.
Администратор использует журнал действий для:
- расследования изменения конфигурации камер, ролей, прав доступа и событий;
- проверки неуспешных или подозрительных действий пользователя;
- выгрузки CSV-отчёта за период;
- подтверждения, что операция обновления или массового изменения была выполнена назначенным ответственным.
API-поверхность audit:
curl -fsS http://<sova-host>/api/statistics/audit/services/ \
-H "Authorization: Bearer ${token}"
curl -fsS 'http://<sova-host>/api/statistics/audit/logs/?page=1&page_size=50' \
-H "Authorization: Bearer ${token}"
2.1.7. Контроль конфигурационных переменных¶
Конфигурация BOX5-DIT-MGSN распределена между runtime-конфигурацией web-интерфейса,
.env-файлами доменов поставки, compose-файлами и конфигурацией Nginx. Перед
изменением параметров администратор фиксирует текущие файлы, проверяет изменение
на TEST, затем применяет его на PROD в согласованное окно. Полные .env-файлы,
значения паролей, токенов, приватных URL и ключей доступа в документацию и общие
каналы не переносятся.
Основные файлы:
| Контур | Файл | Что настраивает |
|---|---|---|
| Web UI | ui-rest/ui-config/config.json или ui-rest/ui-config/settings.json |
Флаги отображения интерфейса, ссылки на песочницу, графики, логотипы и клиентские интервалы обновления. |
| API-шлюз | ui-rest/.env |
Версии ui-react и ui-rest-to-gprc, роли, customer-domain маршруты, Kafka/JWT-параметры шлюза. |
| Backend/statistics | statistics/.env |
Auth, access, камеры, события, отчёты, audit, ClickHouse, MinIO, Kafka, SMTP и версии сервисов статистики. |
| Backend customer-domain | severstal/.env |
Интеграции с системами заказчика, сценарии, модели, asset/launch storage, ПК-КОТ, NiFi-интеграция и оргсинхронизация. |
| DS/inference | inference/.env, extended-inference/.env, .env песочницы Node-RED |
NRI, медиасервер, балансировщик, GPU, модели, MLflow/VLFlow, Kafka topics, online saver и конвертеры моделей. |
| Data storage | data-storage/.env, data-storage/configs/nginx.conf |
Временное хранилище данных, TTL временных объектов, MinIO, Redis и маршрут /api/s3/. |
Frontend-параметры в runtime-конфигурации:
| Наименование переменной | Значение по умолчанию | Описание переменной |
|---|---|---|
ADMIN_ROLE_ID_LIST |
[1, 22, 2346950] |
Присваивание суперадминистратора путём добавления идентификатора в массив. |
DEBOUNCE_TIME_CAMERA_PREVIEWS_MS |
2000 |
Задержка при скролле страницы и отображении новых preview камер на странице Мониторинг. |
REFRESH_CAMERA_PREVIEWS_INTERVAL_MS |
6000 |
Интервал обновления preview камер на странице Мониторинг. |
IS_ADD_WORK_ZONES_ACCESS |
false |
Доступ к установке тегов на странице создания или редактирования камеры. |
IS_CAMERA_LOG_ENABLE |
false |
Отображение вкладки Логи на странице просмотра камеры. |
IS_CSVN_FILTER_DISABLE |
false |
Фильтрация ЦСВН и виртуальных камер. |
IS_REJECTED_EVENTS_ENABLE |
false |
Отображение страницы Отклонённые события. |
IS_SEND_LIST_OF_SEVERSTAL_CAMERAS_IN_CHARTS |
true |
Передача массива доступных камер в графики на страницах Информационная панель и Верификация нарушений. |
SCENARIOS_FRAME_PATH |
/sandbox/settings/sandbox/ |
Путь до песочницы сценариев. |
SCENARIOS_FRAME_URL |
Задаётся URL песочницы | URL песочницы сценариев. |
TELEGRAM_CHART_URL |
Задаётся URL Telegram-бота | URL Telegram-бота для графиков и уведомлений, если функция включена. |
disable_logo_with_padding |
false |
Отключение логотипа с отступом, если ключ поддержан текущей версией UI. |
IS_USE_VK_TEAMS_NOTIFICATIONS |
Не используется | Резервный флаг уведомлений VK Teams; в текущем контуре не применяется. |
DASHBOARD_DATALENS_METRICS_URL |
Не используется | Резервная ссылка на метрики DataLens; в текущем контуре не применяется. |
Backend-параметры целесообразно вести группами, потому что каждый сервис имеет
собственный набор .env-ключей и часть значений является чувствительной:
| Группа переменных | Типовые значения или дефолт | Назначение |
|---|---|---|
PORT, SETTINGS_FILE, DEBUG, DEPENDS |
3000, config.settings.production, false, список host:port зависимостей |
Базовый режим запуска backend-сервисов и ожидание зависимостей перед стартом. |
JWT_SECRET, JWT_REFRESH_SECRET, JWT_ALGORITHM, AUTH_ROLE_*, SYNC_KEY, CUSTOM_DOMAINS |
Значения параметров доступа не приводятся | Проверка токенов, роли UI/API, синхронизационные маршруты и включение customer-domain API. |
POSTGRES_HOST, POSTGRES_PORT, POSTGRES_DATABASE, POSTGRES_USER, POSTGRES_PASSWORD, *_POSTGRES_* |
Внутренний host сервиса, порт 5432; пароль не приводится |
Подключение сервисов к собственным PostgreSQL sidecar. |
KAFKA_HOST, KAFKA_GROUP, KAFKA_TOPIC_* |
Обычно inf-kafka:9092; группы и topics задаются по сервису |
Асинхронный обмен камерами, событиями, пользователями, audit, моделями и websocket-обновлениями. |
MINIO_ACCESS_KEY, MINIO_SECRET_KEY, MINIO_BUCKET_*, MINIO_PREFIX_*, MINIO_IS_SECURE |
Ключи доступа не приводятся; bucket/prefix задаются по сервису | Доступ к S3-совместимому хранилищу для изображений, видео, отчётов, сценариев и моделей. |
USE_CLICKHOUSE, IS_USE_CLICKHOUSE, CLICKHOUSE_*, EVENT_STORAGE_CH_*, EVENT_STATISTIC_CH_* |
В событийном контуре USE_CLICKHOUSE=True |
Подключение аналитических витрин и зеркал PostgreSQL в ClickHouse. |
*_URL, *_HOST, *_BASE_URL, SVR_SEVERSTAL_INTEGRATION |
Внутренние DNS-имена Docker-сети | HTTP/gRPC endpoint-переменные между ui-rest-to-gprc, statistics, inference и svr-* сервисами. |
SEVERSTAL_INTEGRATION_*, POSTGRES_PK_KOT_*, PK_KOT_EVENT_STATUSES_FOR_SEND |
Значения параметров доступа и внешних URL не приводятся | Интеграции заказчика: ПК-КОТ, ЦСВН, теги камер, оргсинхронизация и передача статусов событий. |
SMTP_*, TELEGRAM_TOKEN, WITH_SMTP_CREDENTIALS, USER_CONFIRMATION_STATUSES_FOR_SEND |
Учётные данные не приводятся | Отправка e-mail, Telegram/VK Teams уведомлений и настройка статусов подтверждения. |
*_VERSION |
Тег образа или ветка поставки | Фиксация версий backend-сервисов в составе поставки. Меняется только вместе с планом обновления. |
DS/inference-параметры:
| Группа переменных | Типовые значения или дефолт | Назначение |
|---|---|---|
KAFKA_HOST, KAFKA_TOPIC_*, INFERENCE_KAFKA_TOPIC_* |
Обычно inf-kafka:9092; topics задаются в .env |
Управление жизненным циклом камер, отправка событий, rejected events, heartbeat и сведения о моделях. |
INFERENCE_IPC_DIRECTORY, SHARED_MEMORY_SIZE, NRI_COMPOSE_DATA_DIR |
/inference_ipc; размер shared memory задаётся по профилю контура |
IPC/shared-memory обмен кадрами между медиасервером и NRI. |
MODELS_PATH, MODEL_REGISTRIES_PRIORITY, VLFLOW_ENDPOINT, VLFLOW_MINIO_*, MLFLOW_*, AWS_* |
/models, ["filesystem", "vlflow"]; учётные данные не приводятся |
Поиск, скачивание и обновление моделей из filesystem, VLFlow, MLflow и S3-compatible хранилищ. |
USE_GPU, USE_AUTO_LIST_GPU, LIST_GPU, NVIDIA_VISIBLE_DEVICES |
Задаётся по GPU-профилю контура | Выбор GPU и режим запуска inference-процессов. |
YOLO_CONVERSION_URI, MMLAB_CONVERSION_URI, BOX_YOLO_CONVERSION_URI, BOX_MMLAB_CONVERSION_URI |
Unix-socket или внутренний endpoint конвертера | Конвертация моделей YOLO и MMLab для запуска в inference. |
BOX_URL, BOX_LOGIN, BOX_PASSWORD, SVR_SEVERSTAL_INTEGRATION |
Учётные данные и приватные URL не приводятся | Доступ NRI/песочницы к Box API и сервисам интеграции заказчика. |
ONLINE_SAVER_*, SAVE_*, OUTPUT_VIDEOS_*, EVENTS_VALIDATOR_* |
Задаётся по профилю диагностики и хранения | Сохранение событий, видео, кадров, отладочных артефактов и проверка событий валидатором. |
INF_LOG_LEVEL, LOGGING_LEVEL, ENABLE_TSM_FILE_LOGGING, TSM_PROCESS_HEARTBEAT_INTERVAL_SEC |
Обычно INFO/false; heartbeat задаётся по сервису |
Уровень логирования, файловые логи TSM и периодичность heartbeat inference-процессов. |
Data-storage-параметры:
| Переменная или параметр | Значение по умолчанию | Назначение |
|---|---|---|
DATA_TEMPORARY_STORAGE_VERSION |
Версия образа в data-storage/.env |
Версия прикладного сервиса временного хранения бинарных данных. |
DATA_TEMPORARY_STORAGE_PORT |
Задаётся в data-storage/.env |
Публикуемый порт сервиса ds-data-temporary-storage, если он открыт наружу. |
DATA_LIFE_TIME |
900 |
TTL временного объекта в Redis, в секундах. Чтение объекта TTL не продлевает. |
REDIS_HOST |
ds-data-temporary-storage-redis |
Redis sidecar для временных бинарных объектов. |
MINIO_ACCESS_KEY, MINIO_SECRET_KEY |
Значения параметров доступа не приводятся | Учётные данные MinIO для долговременного S3-совместимого хранилища. |
COMPOSE_DATA |
Корневой каталог данных контура | Базовый путь для persistent mount MinIO, PostgreSQL, ClickHouse и других сервисов. |
NETWORK_NAME |
bx_default |
Общая Docker-сеть доменов BOX5-DIT-MGSN. |
data-storage/configs/nginx.conf |
listen 8000, маршрут /api/s3/ |
Конфигурация ds-domain-gateway; это не .env-переменная, но именно здесь задаётся публикация объектных URL в MinIO. |
После изменения переменных выполняется проверка:
cd ~/CODE/box3
compose.sh check
compose.sh restart <domain>
compose.sh status <domain>
curl -fsS http://localhost/api/base/ping/
Для ui-rest/ui-config/config.json или settings.json дополнительно проверить,
что внешний GET /config.json или GET /settings.json возвращает новое значение,
а нужный экран UI работает после жёсткого обновления страницы в браузере.
2.2. Регламентные операции¶
Регламентные операции выполняются в порядке от наименее вмешивающихся проверок к операциям, которые могут повлиять на обработку видеопотоков. Сначала администратор собирает статус и логи, затем проверяет данные и резервные копии, и только после этого выполняет перезапуски, очистки или обновления.
| Периодичность | Обязательность | Операции | Очередность и контроль | Ответственный |
|---|---|---|---|---|
| Ежедневно, в начале смены | Обязательно | Проверить доступность UI и GET /api/base/ping/; состояние Docker-контейнеров; свободное место на / и /data; наличие свежих backup-файлов; критичные ошибки в логах ui-rest, statistics, inference; состояние GPU; список камер в inference-monitoring. |
Сначала чтение статуса, затем анализ отклонений. Если места меньше регламентного порога или есть контейнеры Restarting/Exited, создать инцидент до начала плановых изменений. |
Дежурный администратор |
| Ежедневно, после ночных заданий | Обязательно | Проверить st-auth-postgres-backup и st-access-postgres-backup, latest.psql.gz, gzip -t; проверить, что cron backup отработал без ошибок. |
Проверять до удаления старых копий и до любых обновлений. | Дежурный администратор |
| Еженедельно | Обязательно | Проверить роли и группы доступа; выгрузить/просмотреть audit-журнал за период; проверить камеры без нод балансировки; проверить модели и сценарии, которые должны быть активны; оценить рост COMPOSE_DATA, логов, видео и MinIO. |
Сначала сравнить фактическое состояние с эксплуатационным журналом изменений, затем согласовать корректировки ролей, прав доступа, сценариев или квот. | Администратор системы совместно с ответственным за эксплуатацию |
| Еженедельно | Рекомендуется | Выполнить выборочную проверку восстановления SQL dump в тестовой БД; проверить валидность файловой копии конфигурации; проверить актуальность ~/CODE/box3 и node-red-sandbox относительно паспорта поставки. |
Восстановление выполнять только вне промышленного контура или на отдельной тестовой БД. | Администратор системы |
| Ежемесячно | Обязательно | Провести ревизию пользователей, известных BOX5-DIT-MGSN, ролей и объектных прав; проверить активный режим входа через Keycloak в UI-конфигурации; проверить срок хранения audit/logs/backups; сверить версии Docker-образов и документацию поставки. | Результаты оформить в журнале эксплуатации: дата, проверяющий, выявленные отклонения, решение. | Ответственный администратор |
| Ежемесячно | Обязательно для PROD | Провести контрольное технологическое окно: резервная копия, запуск/остановка по регламенту, проверка после старта, актуализация инструкции отката. | Выполняется только по согласованному окну и после проверки на TEST. | Ответственный администратор и владелец сервиса |
| Перед каждым обновлением | Обязательно | Зафиксировать версии, выполнить backup, проверить свободное место, проверить здоровье TEST, подготовить план отката, уведомить пользователей. | Без успешного backup и плана отката обновление не начинать. | Ответственный за обновление |
| После каждого обновления | Обязательно | Проверить compose.sh status, UI, режим входа через Keycloak, auth/me, роли, права доступа, audit, мониторинг камер, load-balancer, API-группу models-storage, выборочный пользовательский сценарий. |
Сначала технический smoke, затем прикладная проверка операторского процесса. | Ответственный за обновление |
| По инциденту | Обязательно | Сохранить симптомы, время, логи, состояние контейнеров и дисков; локализовать домен; выполнить минимальный перезапуск или восстановление; оформить результат. | До перезапуска сохранить диагностические данные, если это не увеличивает ущерб. | Дежурный администратор |
Минимальный ежедневный чек-лист:
cd ~/CODE/box3
date -Is
compose.sh status all
curl -fsS http://localhost/api/base/ping/
docker ps --format 'table {{.Names}}\t{{.Status}}\t{{.Image}}'
df -h / /data
nvidia-smi
Проверка резервных копий st-auth и st-access:
for container in \
statistics-st-auth-postgres-backup-1 \
statistics-st-access-postgres-backup-1
do
docker exec "$container" ls -l /backup/latest.psql.gz
docker exec "$container" gzip -t /backup/latest.psql.gz
done
Проверка мониторинга камер:
curl -fsS -X POST http://localhost/api/inference/monitoring/light \
-H "Authorization: Bearer ${token}" \
-H 'Content-Type: application/json' \
-d '{"camera_ids":[]}' \
| jq 'length'
Проверка балансировки:
curl -fsS http://localhost/api/inference/load-balancer/info2/ \
-H "Authorization: Bearer ${token}" \
| jq '{nodes: (.nodes | length), cameras_without_nodes}'
Операции, которые запрещено выполнять как рядовой регламент без согласования:
- удаление или пересоздание PostgreSQL, ClickHouse, MinIO и Kafka-каталогов;
docker system pruneна PROD без оценки используемых образов и свободного места;- изменение
.env,domains.conf,ui-config/config.json, сценариев, моделей или прав доступа без фиксации исходного состояния; - перезапуск одиночного контейнера внутри домена, если штатный доменный
compose.sh restart <domain>применим; - публикация
.env, токенов, JWT, дампов БД, чувствительной информации и персональных данных в документацию, Git или общие каналы.
2.3. Регламент обслуживания¶
2.3.1. Плановое техническое обслуживание¶
Плановое обслуживание выполняется в согласованное технологическое окно. Для PROD оно проводится после проверки на TEST и после подтверждения, что резервная копия пригодна для восстановления.
Порядок обслуживания:
- Назначить окно и ответственных: исполнитель, проверяющий, контакт для отката и владелец бизнес-процесса.
- Зафиксировать исходное состояние:
cd ~/CODE/box3
date -Is
git rev-parse --short HEAD
compose.sh status all
docker ps --format 'table {{.Names}}\t{{.Image}}\t{{.Status}}'
df -h / /data
- Выполнить резервное копирование по разделу 3.
- Проверить, что нет активных незавершённых операций, которые будут потеряны при остановке: загрузки видео, формирования отчётов, обновления моделей, перенос сценариев, импорт/экспорт архивов.
- Остановить или перезапустить только затронутые домены.
- Выполнить обслуживание: обновление образа, изменение конфигурации, очистка согласованных временных данных, замена модели, настройка сценария.
- Запустить домены и дождаться стабилизации.
- Выполнить технический smoke:
ping, режим входа через Keycloak,auth/me, список пользователей, роли, группы доступа,monitoring/light,load-balancer/info2, API-группуmodels-storage, список audit-сервисов. - Выполнить прикладной smoke: вход в UI, просмотр мониторинга камер, проверка роли администратора, проверка выбранного операторского сценария.
- Записать результат в журнал эксплуатации.
2.3.2. Плановая остановка системы¶
Плановая остановка требуется для полного файлового backup, миграции узла,
обслуживания диска, замены критичных .env-параметров или обновления, которое
затрагивает несколько доменов.
Порядок:
- Уведомить пользователей о времени недоступности UI и обработки видеопотоков.
- Остановить входящие пользовательские операции: загрузки, настройки камер, сценарии, отчёты.
- Зафиксировать состояние контейнеров и дисков.
- Выполнить ручной SQL dump для backup sidecar-контейнеров, если они используются.
- Остановить основной контур:
cd ~/CODE/box3
compose.sh stop all
- Остановить песочницу Node-RED, если обслуживание затрагивает сценарии, модели или её данные:
cd ~/CODE/node-red-sandbox
docker compose down
- Выполнить обслуживание или файловое копирование.
- Запустить контур:
cd ~/CODE/box3
compose.sh start all
cd ~/CODE/node-red-sandbox
docker compose up -d
- Проверить UI, API, контейнеры, камеры, модели и audit.
В swarm-профиле вместо compose.sh stop/start all используется штатный
swarm-скрипт поставки. Порядок действий сохраняется: фиксация состояния,
backup, остановка, обслуживание, запуск, smoke-проверка, запись результата.
2.3.3. Применение обновлений¶
Обновление считается завершённым только после технической и функциональной проверки. Наличие запущенных контейнеров само по себе не подтверждает успешное обновление.
Порядок применения:
- Подготовить описание изменений: какие домены, сервисы, модели, сценарии,
переменные
.envи миграции затрагиваются. - Проверить дистрибутив на TEST.
- Зафиксировать исходные версии PROD:
cd ~/CODE/box3
git status --short
git rev-parse --short HEAD
docker images --format '{{.Repository}}:{{.Tag}} {{.ID}}' | sort
- Сделать backup.
- Применить изменение:
cd ~/CODE/box3
compose.sh pull <domain>
compose.sh restart <domain>
- Если образ был собран локально в контуре и не опубликован в registry, не
выполнять
compose.sh pull <domain>для этого тега, чтобы не заменить его старым registry-образом. - Выполнить smoke-проверку и сравнить с ожидаемым состоянием.
- При ошибке выполнить откат: вернуть предыдущие
.env/domains.conf, предыдущий тег образа или восстановить данные из backup, если обновление изменило схему или содержимое БД.
2.3.4. Очистка и обслуживание данных¶
Очистка данных выполняется только для классов данных, которые не являются источником истины или имеют утверждённый срок хранения.
| Объект | Можно очищать по регламенту | Условие |
|---|---|---|
| Docker logs | Да | После сохранения диагностически важных логов и с учётом log rotation. |
| Старые SQL dump | Да | После проверки, что остаётся минимально требуемое число актуальных копий. |
| Временные HLS/IPC/tmpfs-каталоги | Да | Только при остановленном или перезапускаемом домене inference/media. |
| Видео, отчёты, MinIO-объекты | Только по согласованному регламенту хранения | Перед удалением проверить, что данные не нужны для расследования, отчётов и восстановления. |
| PostgreSQL/ClickHouse/Kafka/MinIO каталоги | Нет как рядовая очистка | Только восстановление или миграция по отдельному плану. |
Если свободное место на /data приближается к критическому порогу, сначала
выясняется источник роста:
df -h /data
du -xh --max-depth=2 /data | sort -h | tail -n 30
docker system df
После анализа администратор выбирает минимальное действие: ротация логов, перенос backup, удаление согласованных временных файлов или расширение диска.
2.3.5. Верификация раздела¶
Содержание раздела применяется к промышленному контуру BOX5-DIT-MGSN. Проверки выполняются на целевом PROD-окружении через штатный URL BOX5-DIT-MGSN, SSH-доступ к узлам поставки и внутренние API. Адреса промышленного контура, токены, параметры доступа и значения, содержащие промышленную информацию, в настоящей документации не фиксируются; результат проверки заносится в журнал эксплуатации.
| Проверка | Результат |
|---|---|
| UI config | GET /config.json возвращает активную конфигурацию, в промышленном контуре включён ожидаемый режим входа через внешний контур авторизации. |
| Авторизованные экраны администрирования | Экраны ролей, пользователей, мониторинга кластера и журналов открываются пользователю с правами администратора; при подготовке скриншотов промышленная информация маскируется. |
SSH/API: GET /api/base/ping/ |
Получен ответ gateway без ошибки; проверка выполняется с узла поставки или через штатный внешний URL. |
| Состояние доменов | compose.sh status all и docker ps показывают запущенные критичные домены ui-rest, statistics, inference, extended-inference, severstal, data-storage, kafka-domain, elk-log и, если используется, node-red-sandbox. |
| REST с авторизацией | auth/me, auth/users, roles-v2, access/group, audit/services, load-balancer/info2 возвращают успешные ответы для действующей административной сессии. |
| REST-мониторинг | POST /api/inference/monitoring/light и POST /api/inference/monitoring/ с {"camera_ids":[]} возвращают состояние промышленного набора камер; количество камер не фиксируется в документации. |
REST models-storage |
GET /api/inference/models-storage/ возвращает список моделей из реестра svr-models-registry, ожидаемый для текущей версии поставки и включённых сценариев. |
| Backup sidecar | st-auth и st-access имеют актуальный latest.psql.gz; проверка пригодности dump описана в разделе 3. |