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

Сжатие видеозаписей RDP сессий: настройка Video-Worker

1. Введение

Начиная с JumpServer V3.0.0, добавлен компонент Video-Worker, основная задача которого — обрабатывать записи, создаваемые компонентами Razor(RDP Client) и Lion(Web RDP), и конвертировать их в формат 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(Web RDP): используется официальный 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 (не рекомендуется)

Файл конфигурации 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

(Полное содержимое приведено в оригинале.)

version: '2.4'

services:
  video:
    image: registry.fit2cloud.com/jumpserver/video-worker:v3.10.9
    container_name: jms_video
    hostname: jms_video
    cpus: 2
    ulimits:
      core: 0
    restart: always
    tty: true
    ports:
      - 9000:9000
    env_file:
      - /data/config.txt
    volumes:
      - /data/video/data:/opt/video/data
    healthcheck:
      test: "curl -fsL http://localhost:9000/video-worker/health/ > /dev/null"
      interval: 10s
      timeout: 5s
      retries: 3
      start_period: 10s
    networks:
      - video_net
Конфигурация на стороне 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-файлы:

cd /opt/jumpserver-offline-release-v3.10.9-amd64/compose/
И после изменения перезапустить сервис
jmsctl restart

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

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

Найдите лог выполнения по ID сессии в:

video/data/tasks/{id}

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