Сжатие видеозаписей RDP сессий: настройка Video-Worker
1. Введение
Начиная с JumpServer V3.0.0, добавлен компонент Video-Worker, основная задача которого — обрабатывать записи, создаваемые компонентами Razor и Lion, и конвертировать их в формат MP4 для удобства аудита.
1.1. Принцип работы
После запуска Video-Worker регистрируется как компонент (аналогично Koko), чтобы получить настройки хранилища записей, куда будет загружаться уже перекодированный MP4-файл.
Если в настройках Lion и Razor включён Video-Worker, то они загружают записи напрямую в этот компонент для перекодирования.
После успешного перекодирования файл загружается в указанное хранилище записей.
Если Lion или Razor не могут загрузить запись в Video-Worker, то они откатываются к загрузке в своё собственное хранилище. При использовании хранилища по умолчанию запись отправляется в каталог core/data/media/replay.
⚠️ Важно
-
Задача перекодирования зависит от библиотек ffmpeg, которые активно используют CPU.
Нагрузка может достигать 100%, поэтому не рекомендуется размещать Video-Worker на той же машине, что и JumpServer. -
Для Razor: запись сначала конвертируется в серию изображений, затем ffmpeg собирает их в видео. Процесс использует все доступные ядра CPU.
-
Для Lion: используется официальный CLI-инструмент guacenc, который полностью загружает одно CPU-ядро на протяжении всего процесса.
1.2. Сравнение до и после перекодирования
| Тест | Длительность | Размер исходного файла | Размер MP4 | Снижение занимаемого места |
|---|---|---|---|---|
| Тест 1 | 8 часов | 4.1 GB | 0.80 GB | 80.5% |
| Тест 2 | 1 час | 2.4 GB | 0.37 GB | 84.6% |
1.3. Параметры
| Название параметра | Значение по умолчанию | Описание | Примечание |
|---|---|---|---|
| NAME | hostname | По умолчанию — имя хоста | |
| CORE_HOST | http://127.0.0.1:8080 | URL JumpServer, используется для регистрации через API | video-worker регистрируется в core так же, как и koko |
| BOOTSTRAP_TOKEN | нет | Предварительно созданный секретный ключ; должен совпадать с конфигурацией JumpServer | |
| BIND_HOST | 0.0.0.0 | IP-адрес привязки при запуске, по умолчанию 0.0.0.0 | |
| HTTPD_PORT | 9000 | Порт для HTTP/WS | |
| LOG_LEVEL | INFO | Возможные значения: [DEBUG, INFO, WARN, ERROR] | |
| VIDEO_WORKER_COUNT | 0 | Количество параллельных процессов; 0 означает, что значение не задано и вычисляется автоматически как «число ядер CPU + 1» | Если указано значение > 0, используется оно |
| VIDEO_WORKER_SECRET_KEY | '' | Случайно генерируемая строка из 32 символов; используется как ключ шифрования/дешифрования | Если нужно использовать несколько video-worker, ключ должен быть одинаковым |
| VIDEO_WORKER_CLEAN_PERIOD | 7 | В днях — срок хранения логов перекодированных сессий | При запуске очистка выполняется раз в 24 часа |
| IGNORE_VERIFY_CERTS | False | Игнорировать ли HTTPS-сертификат CORE_HOST, чтобы избежать ошибок валидации | Поддерживается с версии v3.10.8+ |
2. Включение Video-Worker в существующей среде (не рекомендуется)
Файл конфигурации JumpServer находится по адресу:
/opt/jumpserver/config/config.txt
Добавьте следующие параметры для включения перекодирования записей Windows в MP4:
USE_VIDEO=1
ENABLE_VIDEO_WORKER=True
VIDEO_WORKER_HOST=http://jms_video:9000
jmsctl restart
3. Отдельное развёртывание сервера перекодирования
Версия JumpServer на сервере перекодирования должна совпадать с версией основной среды.
3.1. Запуск с использованием Docker Compose
Пример окружения:
| Сервис | IP |
|---|---|
| JumpServer | 192.168.10.10 |
| Video-Worker | 192.168.10.11 |
📌 Настройка на сервере перекодирования
Распаковать установочный пакет JumpServer и подготовить окружение:
tar -zxvf jumpserver-offline-release-v3.10.9-amd64.tar.gz
cd /opt/jumpserver-offline-release-v3.10.9-amd64/scripts
./2_install_docker.sh # установка Docker
docker load -i images/video-worker:v3.10.9.tar
Конфигурация Video-Worker
Редактировать файл:
vim /data/config.txt
CORE_HOST=http://192.168.10.10:8080
BOOTSTRAP_TOKEN=YTc1NjNmNDItZjNlYS00NTMw # должен совпадать с конфигом JumpServer
IGNORE_VERIFY_CERTS=true # игнорировать сертификат HTTPS при подключении к CORE_HOST
VIDEO_WORKER_COUNT=6 # количество параллельных задач
VIDEO_WORKER_CLEAN_PERIOD=7 # период очистки логов (в днях)
HTTPD_PORT=9000
LOG_LEVEL=ERROR
Docker Compose-файл Video-Worker
vim /data/docker-compose-video.yml
(Полное содержимое приведено в оригинале.)
Конфигурация на стороне JumpServer
vim /opt/jumpserver/config/config.txt
ENABLE_VIDEO_WORKER=true
VIDEO_WORKER_HOST=http://192.168.10.11:9000
Управление запуском Video-Worker
docker-compose -f docker-compose-video.yml up -d # запуск
docker-compose -f docker-compose-video.yml down # остановка
3.2. Запуск с использованием оригинальных файлов JumpServer
Настройка на сервере перекодирования
Редактировать:
vim /opt/jumpserver/config/config.txt
Отключить ненужные компоненты:
CORE_ENABLED=0
CELERY_ENABLED=0
KOKO_ENABLED=0
LION_ENABLED=0
MAGNUS_ENABLED=0
CHEN_ENABLED=0
KAEL_ENABLED=0
PANDA_ENABLED=0
WEB_ENABLED=0
XRDP_ENABLED=0
USE_VIDEO=1
ENABLE_VIDEO_WORKER=True
CORE_HOST=http://192.168.10.10:8080
BOOTSTRAP_TOKEN=YTc1NjNmNDItZjNlYS00NTMw
Затем изменить соответствующие YAML-файлы и выполнить:
cd /opt/jumpserver-offline-release-v3.10.9-amd64/compose/
jmsctl restart
Конфигурация на стороне JumpServer
vim /opt/jumpserver/config/config.txt
ENABLE_VIDEO_WORKER=true
VIDEO_WORKER_HOST=http://192.168.10.11:9000
Также изменить YAML-файлы и выполнить:
jmsctl restart
🔍 Диагностика проблем
Если перекодирование завершилось ошибкой, проверяйте два направления:
-
Найдите лог выполнения по ID сессии в:
video/data/tasks/{id} -
Если в каталоге tasks нет записи с этим ID, проверьте логи компонентов lion или razor, возможно, ошибка в загрузке файла.