Содержание

Руководство по установке

Глоссарий

Термин Значение термина
Батч Группа данных, обрабатываемых одновременно.
Биометрический образец Изображения, содержащие лицо или тело и соответствующие стандарту VisionLabs. Используется при работе с LUNA PLATFORM.
Биометрический шаблон Набор уникальных свойств, получаемых в LUNA PLATFORM из биометрического образца.
Детекция Сущность FaceStream, содержащая координаты лица или тела и оценочное значение объекта, по которому определяется лучший кадр.
Лучший кадр Кадр видеопотока, на котором лицо/тело зафиксировано в оптимальном ракурсе для дальнейшей обработки.
Портрет Изображение лица или тела, трансформированное под определенный формат. Портрет имеет два типа - “warp” (изображение трансформируется в формат биометрического образца), “gost” (из исходного кадра вырезается детекция с учетом отступов).
Ракурс Степень поворота головы (в градусах) по каждой из трех осей вращения (наклон вверх/вниз относительно горизонтальной оси; наклон влево/вправо относительно вертикальной оси; поворот относительно вертикальной оси).
Событие Сущность LUNA PLATFORM, которая содержит информацию (город, пользовательские данные, номер трека и т.д.) об одном лице и/или теле. Данная информация передается в LUNA PLATFORM приложением FaceStream. Полный перечень передаваемой информации см. в документации OpenAPI LUNA PLATFORM.
Трек Информация о положении объекта (лица) одного человека на последовательности кадров. Если объект покидает зону кадра, то трек прерывается не сразу. Некоторое время он ожидает возвращения объекта в кадр. Если объект вернулся, то трек продолжается.
Трекинг Функция отслеживания объекта (лица) на последовательности кадров.
LUNA Streams Сервис для создания и управления потоками, которые содержат политики обработки видеопотока/видеофайла/набора изображений.
Аббревиатура Расшифровка
БД, DB База данных
LP LUNA PLATFORM

Системные требования

FaceStream поставляется в Docker-контейнерах и может запускаться на CPU и GPU. Для установки необходимы образы Docker-контейнеров. Для загрузки образов Docker на сервере требуется подключение к сети Интернет, либо образы следует загрузить на любое другое устройство и перенести на сервер. Требуется вручную указать логин и пароль для загрузки образов Docker.

FaceStream можно запустить с помощью скрипта Docker Compose.

Рекомендуется использовать следующие версии Docker и Docker Compose для запуска FaceStream:

Запуск контейнеров FaceStream и LUNA Streams был протестирован на:

В контейнере FaceStream используется следующая ОС:

Сервисы LP и сторонние приложения

Для работы FaceStream требуются компоненты LUNA PLATFORM, дополнительные базы данных и сервис LUNA Streams. Основная информация об этом ПО содержится в данном документе.

LUNA Streams не является компонентом LUNA PLATFORM.

Следующие компоненты LUNA PLATFORM используются по умолчанию с FaceStream:

Следующие версии баз данных рекомендованы к использованию с LUNA Streams:

Для загрузки настроек в сервис LUNA Configurator требуется наличие Python версии 2.x или 3.x.

Установка и конфигурация Oracle не описывается в данном руководстве. Далее в документе будут приводиться примеры запуска с использованием PostgreSQL.

Балансировщики нагрузки (например, Nginx) и другие программы могут использоваться при масштабировании системы для обеспечения отказоустойчивости. Их конфигурация не описывается в данном руководстве.

Процессоры

Ниже приведены требования для запуска FaceStream в минимальной конфигурации. Требования для использования системы в продуктивном контуре рассчитываются в зависимости от предполагаемой нагрузки.

CPU

Дальнейшие минимальные требования приведены для использования одного экземпляра FaceStream.

Для корректной работы приложения аппаратное обеспечение должно отвечать следующим минимальным требованиям:

На аппаратные требования влияют несколько факторов:

Следует подбирать аппаратное обеспечение на основе вышеперечисленных факторов.

FaceStream также может работать в режиме ускорения вычислений за счет использования ресурсов видеокарты (см. ниже) и использования AVX2 инструкций. Требуется CPU с поддержкой AVX2. Система автоматически определяет наличие инструкций и запускается в оптимальном режиме.

GPU

Вычисления с использованием видеокарты поддерживаются только для детектора FaceDetV3. См. параметр “defaultDetectorType” в настройках FaceEngine (“faceengine.conf”).

Требуется минимум 6Гб оперативной или выделенной видеопамяти. Рекомендуется 8 Гб VRAM или более.

Поддерживаются архитектуры Pascal, Volta, Turing. Требуются Compute Capability 6.1 или выше и CUDA версии 11.4.

Рекомендуемый драйвер NVIDIA - r470.

В данный момент для одного экземпляра FaceStream поддерживается только одна видеокарта.

Введение

Для запуска FaceStream с помощью данной документации необходимо наличие запущенной LUNA PLATFORM в соответствии с документацией по установке LUNA PLATFORM. При необходимости можно запустить FaceStream с помощью предварительного запуска минимально необходимых сервисов LUNA Configurator, LUNA Licenses, PostgreSQL и InfluxDB (см. документ “Руководство по установке без запущенной LP”).

Данный документ описывает:

Перед запуском необходимо ознакомиться с общей информацией и последовательностью действий.

Лицензирование FaceStream регулируется особенным параметром лицензионного ключа LUNA PLATFORM 5, определяющим количество потоков для работы LUNA Streams. Таким образом, для работы FaceStream необходима лицензия LUNA PLATFORM 5. Лицензия должна быть активирована перед запуском FaceStream.

Скрипт Docker Compose из данного дистрибутива используется для развертывания LUNA Streams и FaceStream на одном сервере.

Считается, что запуск выполняется на сервере с операционной системой CentOS, где FaceStream не был установлен.

Администратор должен вручную настроить Firewall и SELinux на сервере. В данном документе не описывается их настройка.

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

https://docs.docker.com

В данном документе приведены примеры разворачивания FaceStream в минимальной рабочей конфигурации для использования в демонстрационных целях. Данная конфигурация не является достаточной для реальной эксплуатации системы в продуктивном контуре.

Все описываемые команды необходимо исполнять в оболочке Bash (когда команды запускаются напрямую на сервере) или в программе для работы с сетевыми протоколами (в случае удаленного подключения к серверу), например, Putty.

Подробную информацию по общей работе и настройках приложения см. в руководстве администратора FaceStream.

Подготовка к запуску

Убедитесь в том, что вы являетесь root-пользователем перед тем, как начать запуск!

Перед запуском FaceStream необходимо выполнить следующие действия:

  1. Распаковать дистрибутив FaceStream
  2. Создать символическую ссылку
  3. Выполнить установку Docker
  4. Выполнить установку Docker Compose, если планируется запускать FaceStream с помощью автоматического запуска через скрипт Docker Compose
  5. Выбрать способ записи логов
  6. Настроить вычисления с помощью GPU, если планируется использовать GPU
  7. Авторизироваться в registry VisonLabs
  8. Убедиться, что в лицензии указан параметр, определяющий количество потоков для обработки сервисом LUNA Streams

После выполненных действий можно приступить к ручному или автоматическому запуску LUNA Streams и FaceStream.

Распаковка архива

Рекомендуется переместить архив в предварительно созданную директорию для FaceStream и распаковать архив в этой директории.

Указанные команды следует выполнять под пользователем root.

Создайте директорию для FaceStream.

mkdir -p /var/lib/fs

Переместите архив в созданную директорию. Предполагается, что архив сохранён на сервере в директории “/root”.

mv /root/facestream_docker_v.5.1.43.zip /var/lib/fs/

Перейдите в директорию.

cd /var/lib/fs/

Установите утилиту unzip, если она ещё не установлена.

yum install unzip

Распакуйте архив.

unzip facestream_docker_v.5.1.43.zip

Создайте символическую ссылку. Символическая ссылка указывает на директорию, в которой хранятся файлы для запуска нужной версии программного продукта.

ln -s facestream_docker_v.5.1.43 fs-current

Установка Docker

Docker требуется для запуска контейнера FaceStream.

Установка Docker описана в официальной документации:

https://docs.docker.com/engine/install/centos/.

Если на сервере уже установлен Docker версии 20.10.8, то выполнять повторную установку не требуется. Не гарантируется работа с более высокими версиями Docker.

Ниже перечислены команды для быстрой установки:

При возникновении проблем с установкой обратитесь к официальной документации Docker.

Установите зависимости.

yum install -y yum-utils device-mapper-persistent-data lvm2

Добавьте репозиторий.

yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

Установите Docker.

yum -y install docker-ce docker-ce-cli containerd.io

Запустите Docker.

systemctl start docker
systemctl enable docker

Проверьте, статус запуска Docker.

systemctl status docker

Установка Docker Compose

Примечание. Выполняйте установку Docker Compose только если собираетесь использовать скрипт автоматического запуска FaceStream.

Установите Docker Compose.

curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose
ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose

Для получения более подробной информации обратитесь к официальной документации:

https://docs.docker.com/compose/install/

Выбор способа записи логов

Существует два способа вывода логов:

Настройки вывода логов сервисов LUNA PLATFORM и сервиса LUNA Streams задаются в секции <SERVICE_NAME>_LOGGER сервиса Configurator.

Настройки вывода логов FaceStream задаются в настройках logging секции FACE_STREAM_CONFIG сервиса Configurator.

При необходимости можно использовать оба способа вывода логов.

Запись логов в stdout

Данный способ используется по умолчанию и для него не требуется выполнять дополнительных действий.

Рекомендуется настроить ротацию логов Docker для ограничения их размеров (см. раздел “Настройка ротации логов Docker”).

Запись логов в файл

Примечание. При включении сохранения логов в файле необходимо помнить о том, что логи занимают определенное место в хранилище, а процесс логирования в файл негативно влияет на производительность системы.

Для использования данного способа необходимо выполнить следующие дополнительные действия:

В скрипте Docker Compose не настроена синхронизация директорий с папками. Необходимо вручную добавить монтирование папок в файл docker-compose.yml.

См. инструкцию по включению записи логов в файлы в разделе “Запись логов на сервер”.

Установка зависимостей для GPU

Пропустите данный раздел если не собираетесь использовать FaceStream с GPU.

Для использования GPU с Docker контейнерами необходимо установить NVIDIA Container Toolkit.

Пример установки приведен ниже.

distribution=$(. /etc/os-release;echo $ID$VERSION_ID)
curl -s -L https://nvidia.github.io/nvidia-docker/$distribution/nvidia-docker.repo | tee /etc/yum.repos.d/nvidia-docker.repo
yum install -y nvidia-container-toolkit
systemctl restart docker

Проверьте работу NVIDIA Container toolkit, запустив базовый контейнер CUDA (он не входит в дистрибутив FaceStream, его необходимо загрузить из Интернета):

docker run --rm --gpus all nvidia/cuda:11.4.3-base-centos7 nvidia-smi

Для дополнительной информации см. следующую документацию:

https://github.com/NVIDIA/nvidia-docker#centos-7x8x-docker-ce-rhel-7x8x-docker-ce-amazon-linux-12.

Извлечение атрибутов на GPU разработано для максимальной пропускной способности. Выполняется пакетная обработка входящих изображений. Это снижает затраты на вычисления для изображения, но не обеспечивает минимальную задержку для каждого изображения.

GPU-ускорение разработано для приложений с высокой нагрузкой, где количество запросов в секунду достигает тысяч. Нецелесообразно использовать ускорение GPU в сценариях с небольшой нагрузкой, когда задержка начала обработки имеет значение.

Действия для запуска FaceStream с GPU через Docker Compose

Для запуска FaceStream с GPU через Docker Compose необходимо, кроме вышеописанных действий, добавить секцию deploy в поле facestream в файл docker-compose.yml.

Перед запуском контейнера FaceStream с GPU требуется включить использование GPU для вычислений в настройках FaceStream с помощью параметра “enable_gpu_processing” (см. раздел “Настройки FaceStream” в руководстве администратора).

vi /var/lib/fs/fs-current/example-docker/docker-compose.yml
  facestream:
    image: ${REGISTRY_ADDRESS}:${DOCKER_REGISTRY_PORT}/facestream:${FS_VER}
    deploy:
      resources:
        reservations:
          devices:
          - driver: nvidia
            count: all
            capabilities: [gpu]
    restart: always
    environment:
      CONFIGURATOR_HOST: ${HOST_CONFIGURATOR}
      CONFIGURATOR_PORT: 5070

driver - в данном поле указывается драйвер для зарезервированного устройства(устройств);

count - в данном поле задается количество графических процессоров, которые должны быть зарезервированы (при условии, что хост содержит такое количество графических процессоров);

capabilities - данное поле выражает как общие, так и специфические возможности драйвера. Его необходимо задать, иначе будет возвращена ошибка при развертывании сервиса.

Для дополнительной информации см. следующую документацию:

https://docs.docker.com/compose/gpu-support/#enabling-gpu-access-to-service-containers.

Вход в registry

При запуске контейнеров необходимо указать ссылку на образ, необходимый для запуска контейнера. Этот образ загружается из VisionLabs registry. Перед этим необходима авторизация.

Логин и пароль можно запросить у представителя VisionLabs.

Введите логин <username>.

docker login dockerhub.visionlabs.ru --username <username>

После выполнения команды будет запрошен ввод пароля. Введите пароль.

В команде docker login можно вводить логин и пароль одновременно, однако это не гарантирует безопасность, т.к. пароль можно будет увидеть в истории команд.

Проверка наличия лицензии

Если сервисы LUNA PLATFORM уже запущены и лицензия с параметром, регулирующим количество потоков для работы LUNA Streams, уже активирована, то необходимо убедиться в том, что текущий ключ LUNA PLATFORM содержит данный параметр. Информация может быть предоставлена специалистами VisionLabs.

Если данный параметр не содержится в ключе, то необходимо запросить новый ключ и обратиться к специалистам VisionLabs для консультации по обновлению лицензионного ключа.

Запуск FaceStream

Существует два способа запуска FaceStream - ручной и автоматический с помощью скрипта Docker Compose.

Используйте гиперссылки ниже для перехода к инструкции по необходимому способу запуска:

Ручной запуск FaceStream

Примечание. Выполняйте данные действия только если собираетесь запускать FaceStream вручную. Если собираетесь запускать FaceStream с помощью скрипта Docker Compose перейдите в раздел “Запуск FaceStream с помощью Docker Compose”.

Загрузка настроек в LUNA Configurator

Основные настройки LUNA Streams и FaceStream должны быть заданы в сервисе Configurator после его запуска. Исключением являются настройки FaceEngine, которые задаются в конфигурационном файле “faceengine.conf” и передаются во время запуска контейнера FaceStream.

При необходимости можно использовать вместо настроек сервиса Configurator конфигурационные файлы и передавать их во время запуска контейнера (для дополнительной информации см. раздел “Использование FaceStream с конфигурационными файлами” руководства администратора).

Настройки FaceStream и LUNA Streams загружаются в Configurator по-разному.

Загрузка настроек LUNA Streams

Для загрузки настроек LUNA Streams в сервис Configurator, необходимо использовать механизм миграции конфигураций.

docker run \
-v /etc/localtime:/etc/localtime:ro \
-v /tmp/logs/streams:/srv/logs \
--entrypoint=/bin/bash \
--rm \
--network=host \
dockerhub.visionlabs.ru/luna/streams-configs:v.0.7.2 \
-c "python3 -m streams_configs.migrate head --config_db_url postgres://luna:luna@127.0.0.1:5432/luna_configurator"

--config_db_url postgres://luna:luna@127.0.0.1:5432/luna_configurator - флаг указания адреса БД luna_configurator

Загрузка настроек FaceStream

Настройки FaceStream расположены в специальном файле “facestream_dump.json”. Для загрузки этих настроек в сервис LUNA Configurator, необходимо использовать скрипт “load_dump.py”.

Для использования скрипта “load_dump.py” требуется наличие Python версии 2.x или 3.x. Если установлена версия 2.x, то скрипт нужно запускать с помощью команды python. Если же установлена версия 3.х, то скрипт нужно запускать с помощью команды python3.

cd /var/lib/fs/fs-current/example-docker/luna_configurator/dumps/
python3 -m load_dump --dump-file=facestream_dump.json --luna-config=http://127.0.0.1:5070/1

Все необходимые параметры будут автоматически добавлены в сервис LUNA Configurator.

Подготовка БД LUNA Streams

Для запуска FaceStream необходимо запустить сервис LUNA Streams, создав и инициализировав для него БД. Данный сервис не входит в поставку LUNA PLATFORM 5, поэтому должен быть запущен отдельно.

Создание БД LUNA Streams в контейнере PostgreSQL

Создайте базу данных для LUNA Streams:

docker exec -i postgres psql -U luna -c "CREATE DATABASE luna_streams;"

Дайте возможность пользователю авторизоваться в БД:

docker exec -i postgres psql -U luna -c "GRANT ALL PRIVILEGES ON DATABASE luna_streams TO luna;"

Активируйте PostGIS:

docker exec -i postgres psql -U luna luna_streams -c "CREATE EXTENSION postgis;"

Инициализация БД LUNA Streams

Инициализируйте данные в БД LUNA Streams:

docker run -v /etc/localtime:/etc/localtime:ro \
--rm \
--network=host \
dockerhub.visionlabs.ru/luna/luna-streams:v.0.7.2 \
python3 ./base_scripts/db_create.py --luna-config http://localhost:5070/1

Команда запуска контейнера LUNA Streams

Запуск контейнера осуществляется следующей командой:

docker run \
--env=CONFIGURATOR_HOST=127.0.0.1 \
--env=CONFIGURATOR_PORT=5070 \
--env=PORT=5160 \
--env=WORKER_COUNT=1 \
--env=RELOAD_CONFIG=1 \
--env=RELOAD_CONFIG_INTERVAL=10 \
-v /etc/localtime:/etc/localtime:ro \
-v /tmp/logs/streams:/srv/logs \
--name=luna-streams \
--restart=always \
--detach=true \
--network=host \
dockerhub.visionlabs.ru/luna/luna-streams:v.0.7.2

Для проверки корректности запуска сервиса можно выполнить GET-запрос http://127.0.0.1:5160/version. В ответе должна вернуться версия LUNA Streams v.0.7.2.

Команды запуска контейнера FaceStream

Команда запуска контейнера с использованием CPU

Запуск контейнера осуществляется следующим образом:

docker run \
--env=CONFIGURATOR_HOST=127.0.0.1 \
--env=CONFIGURATOR_PORT=5070 \
-v /var/lib/fs/fs-current/extras/conf/configs/faceengine.conf:/srv/facestream/data/faceengine.conf \
-v /var/lib/fs/fs-current/extras/conf/configs/runtime.conf:/srv/facestream/data/runtime.conf \
-v /etc/localtime:/etc/localtime:ro \
-v /tmp/logs/facestream:/srv/logs \
--env=PORT=34569 \
--detach=true \
--restart=always \
--name=facestream \
--network=host \
dockerhub.visionlabs.ru/luna/facestream:v.5.1.43

Описание остальных параметров и ключей запуска см. в разделе “Описание ключей запуска”.

Для проверки корректности запуска можно выполнить GET-запрос http://127.0.0.1:34569/version. В ответе должна вернуться версия FaceStream.

Команда запуска контейнера с использованием GPU

Примечание. Используйте данную команду только если собираетесь использовать FaceStream с GPU.

Перед запуском FaceStream в режиме GPU необходимо установить дополнительные зависимости (см. раздел “Установка зависимостей для GPU”).

Перед запуском контейнера FaceStream с GPU требуется включить использование GPU для вычислений в настройках FaceStream с помощью параметра “enable_gpu_processing” (см. раздел “Настройки FaceStream” в руководстве администратора).

docker run \
--env=CONFIGURATOR_HOST=127.0.0.1 \
--env=CONFIGURATOR_PORT=5070 \
-v /var/lib/fs/fs-current/extras/conf/configs/faceengine.conf:/srv/facestream/data/faceengine.conf \
-v /var/lib/fs/fs-current/extras/conf/configs/runtime.conf:/srv/facestream/data/runtime.conf \
-v /etc/localtime:/etc/localtime:ro \
-v /tmp/logs/facestream:/srv/logs \
--env=PORT=34569 \
--gpus device=0 \
--detach=true \
--restart=always \
--name=facestream \
--network=host \
dockerhub.visionlabs.ru/luna/facestream:v.5.1.43

--gpus device=0 - параметр указывает используемое устройство GPU и позволяет использовать GPU. Один GPU используется для одного экземпляра FaceStream. Использование множества GPU для одного экземпляра невозможно.

Описание остальных параметров и ключей запуска см. в разделе “Описание ключей запуска”.

Для проверки корректности запуска можно выполнить GET-запрос http://127.0.0.1:34569/version. В ответе должна вернуться версия FaceStream.

Запуск FaceStream с помощью Docker Compose

Скрипт Docker Compose:

См. файл “docker-compose.yml” и другие файлы в директории “example-docker” для получения дополнительной информации.

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

https://docs.docker.com

Команда запуска FaceStream с помощью Docker Compose

Откройте директорию Docker Compose:

cd /var/lib/fs/fs-current/example-docker

Убедитесь в том, что контейнер FS не запущен до выполнения скрипта. Попытка запустить контейнер с таким же именем, как существующий контейнер, приведет к ошибке. Если контейнер запущен, необходимо остановить его с помощью команды docker container rm -f <container_name>. Чтобы остановить все контейнеры, используйте docker container rm -f $(docker container ls -aq).

Для запуска FaceStream с GPU с помощью Docker Compose необходимо выполнить действия, описанные в разделе “Установка зависимостей для GPU”.

Запуск FaceStream через Docker Compose:

Необходимо выполнить вход в VisionLabs registry (см. раздел “Вход в registry”)

./start_facestream.sh --configurator_address=127.0.0.1

--configurator_address=127.0.0.1 - адрес сервиса Configurator

Проверьте статус всех запущенных Docker контейнеров.

docker ps

Список потоков доступен по адресу http://127.0.0.1:34569/api/1/streams/. Просмотр потока в браузере доступен по адресу http://127.0.0.1:34569/api/1/streams/preview/<stream_id>.

Дальнейшие действия

Для дальнейшей работы с FaceStream необходимо создать поток с помощью POST-запроса “create stream” к сервису LUNA Streams. Поток содержит политики обработки видеопотока/видеофайла/набора изображений. Если поток создается со статусом “pending” (по умолчанию), то “рабочий процесс” FaceStream автоматически начнет обработку потока.

См. подробную информацию работе с потоками и LUNA Streams в разделе “Взаимодействие FaceStream с LUNA Streams” руководства администратора.

Список обрабатываемых потоков доступен по адресу http://127.0.0.1:34569/api/1/streams/. Просмотр потока в браузере доступен по адресу http://127.0.0.1:34569/api/1/streams/preview/<stream_id>.

Дополнительная информация

В данном разделе приводится следующая дополнительная информация:

Команды Docker

Показать контейнеры

Чтобы показать список запущенных Docker контейнеров, используйте команду:

docker ps

Чтобы показать все имеющиеся Docker контейнеры, используйте команду:

docker ps -a 

Копировать файлы в контейнер

Можно переносить файлы в контейнер. Используйте команду docker cp для копирования файла в контейнер.

docker cp <file_location> <container_name>:<folder_inside_container>

Вход в контейнер

Можно входить в отдельные контейнеры с помощью следующей команды:

docker exec -it <container_name> bash

Для выхода из контейнера используйте следующую команду:

exit

Имена образов

Можно увидеть все имена образов с помощью команды

docker images

Просмотр логов контейнера

Просмотреть логи контейнера можно с помощью следующей команды:

docker logs <container_name>

Удаление образа

Если требуется удаление образа:

docker rmi -f 61860d036d8c

Удаление всех существующих образов:

docker rmi -f $(docker images -q)

Остановка контейнера

Контейнер можно остановить с помощью следующей команды:

docker stop <container_name>

Остановка всех контейнеры:

docker stop $(docker ps -a -q)

Удаление контейнера

Если необходимо удалить контейнер:

docker container rm -f 23f555be8f3a

Удаление всех контейнеров:

docker container rm -f $(docker container ls -aq)

Ключи запуска

Ключи запуска задаются с помощью переменных окружения:

См. принцип работы FaceStream с LUNA Configurator в разделе “Использование FaceStream с LUNA Configurator” руководства администратора.

Расшифровка параметров запуска контейнера

Ниже приведена расшифровка параметров запуска контейнера:

Запись логов на сервер

Чтобы включить сохранение логов на сервер, необходимо:

В скрипте Docker Compose не настроена синхронизация директорий с папками. Необходимо вручную добавить монтирование папок в файл docker-compose.yml.

Создание директории логов

Ниже приведены примеры команд для создания директорий для хранения логов и присвоения им прав для FaceStream и LUNA Streams.

mkdir -p /tmp/logs/facestream /tmp/logs/streams
chown -R 1001:0 /tmp/logs/facestream /tmp/logs/streams

Активация записи логов

Активация записи логов LUNA Streams

Для активации записи в файл необходимо задать настройки log_to_file и folder_with_logs в секции <SERVICE_NAME>_LOGGER настроек LUNA Streams.

Перейдите в интерфейс сервиса Configurator (127.0.0.1:5070) и задайте путь расположения логов в контейнере в параметре folder_with_logs для сервиса LUNA Streams. Например, можно использовать путь /srv/logs.

Установите параметр log_to_file как true чтобы активировать запись логов в файл.

Активация записи логов FaceStream

Для активации записи логов в файл необходимо задать значение настройки logging > mode в секции FACE_STREAM_CONFIG на l2f (выводить логи только в файл) или l2b (выводить логи и файл и в консоль).

Перейдите в интерфейс сервиса Configurator (127.0.0.1:5070) и укажите необходимое значение настройки. Путь расположения логов в контейнере FaceStream невозможно изменить. Необходимо указывать путь /srv/logs при монтировании.

По умолчанию в логах FaceStream выводятся только предупреждения системы. С помощью настройки параметра “severity” можно включить вывод ошибок (см. описание параметра в руководстве администратора).

Монтирование директорий с логами при старте сервисов

Директория с логами монтируется с помощью следующего аргумента при старте контейнера:

-v <server_logs_folder>:<container_logs_folder> \

где <server_logs_folder> директория, созданная на этапе создания директории логов, а <container_logs_folder> директория, созданная на этапе активации записи логов.

Пример команды запуска FaceStream с монтированием директории с логами:

docker run \
--env=CONFIGURATOR_HOST=127.0.0.1 \
--env=CONFIGURATOR_PORT=5070 \
-v /var/lib/fs/fs-current/extras/conf/configs/faceengine.conf:/srv/facestream/data/faceengine.conf \
-v /var/lib/fs/fs-current/extras/conf/configs/runtime.conf:/srv/facestream/data/runtime.conf \
-v /etc/localtime:/etc/localtime:ro \
-v /tmp/logs/facestream:/srv/logs \
--env=PORT=34569 \
--detach=true \
--restart=always \
--name=facestream \
--network=host \
dockerhub.visionlabs.ru/luna/facestream:v.5.1.43

Примеры команд запуска контейнеров ручным способом содержат эти аргументы.

Настройка ротации логов Docker

Чтобы ограничить размер логов, генерируемых Docker, можно настроить автоматическую ротацию логов. Для этого необходимо добавить в файл /etc/docker/daemon.json следующие данные:

{
    "log-driver": "json-file",
    "log-opts": {
        "max-size": "100m",
        "max-file": "5"
    }
}

Это позволит Docker хранить до 5 файлов логов на контейнер, при этом каждый файл будет ограничен 100 Мб.

После изменения файла необходимо перезапустить Docker:

systemctl reload docker

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