Перейти к основному контенту

Сжатие видеозаписей 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
Примечание:
Поскольку ffmpeg сильно нагружает CPU, не рекомендуется запускать Video-Worker на той же машине, что и JumpServer. Подробности можно уточнить у инженеров техподдержки JumpServer.

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

🔍 Диагностика проблем

Если перекодирование завершилось ошибкой, проверяйте два направления:

  1. Найдите лог выполнения по ID сессии в:
    video/data/tasks/{id}

  2. Если в каталоге tasks нет записи с этим ID, проверьте логи компонентов lion или razor, возможно, ошибка в загрузке файла.