Перейти к содержанию

# Введение

В данном документе приводятся примеры шагов для выполнения миграции окружения LUNA PLATFORM с помощью утилиты Storages.

Миграция включает в себя как обновление (upgrade) на более новую версию, так и понижение версии (downgrade) на более раннюю. Таким образом, для обновления и даунгрейда используется один и тот же процесс миграции. Документ содержит пошаговые инструкции для выполнения этой задачи и последующего запуска контейнеров.

Рекомендуется ознакомиться с руководством по утилите Storages перед развертыванием LUNA PLATFORM.

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

Важно! Миграция с помощью Storages возможна только для версий LUNA PLATFORM v.5.46.1 и выше. Для обновления с более ранних версий необходимо запросить документацию у специалистов VisionLabs. По полученной документации выполнить обновление до v.5.46.1 (с поддержкой утилиты Storages), затем воспользоваться данным руководством для перехода на целевую версию LUNA PLATFORM.

Обратите внимание, что начиная с версий 5.46.1 могли произойти критические изменения, такие как обновления порогов, версий нейронных сетей, прекращение поддержки FaceDetV1 и FaceDetV2 и другие (см. полный перечень критических изменений в разделе "Ключевые изменения предыдущих версий"). Такое изменение как обновление порогов может давать другой результат при выполнении оценивания, нежели в старой сборке. Данные команды помечены соответствующим образом. Будьте внимательны и не выполняйте лишних действий если обновляетесь с версии LUNA PLATFORM v.5.136.0.

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

- "Подготовка к обновлению" — действия по распаковке архивов, подготовке директорий, настройке лицензии и пр. Некоторые действия могут быть опциональными.
- "Запуск сторонних сервисов" — запуск СУБД PostgreSQL и БД Redis, Influx
- "Миграция окружения" — выполнение миграции окружения (обновление или откат версий баз данных, настроек и пр.)
- "Запуск сервисов" — запуск контейнеров с сервисами LUNA PLATFORM

В разделе "Дополнительная информация" приводится полезная информация по описанию параметров запуска сервисов, командах Docker, включении Grafana для визуализации мониторинга и пр.

Данное руководство написано с предположением, что:

- предыдущая минорная версия LUNA PLATFORM уже установлена, и требуемое окружение на сервере готово к работе.
- LP 5 установлена в соответствии с руководством по установке, и используются пути по умолчанию. В противном случае следует внести изменения вручную в процессе миграции.

# Подготовка к миграции

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

Перед миграцией необходимо выполнить следующие действия, которые актуальны как для повышения, так и для понижения версии LUNA PLATFORM:

1․ Ознакомиться с ключевыми изменениями предыдущих версий, если выполняется миграция с версии, отличной от версии LUNA PLATFORM v.5.136.0

2․ Создать резервные копии

3․ Подготовиться к смене версии нейронной сети для извлечения биометрических шаблонов, если это необходимо

4․ Удалить старую символическую ссылку

5․ Распаковать дистрибутив новой версии LUNA PLATFORM

6․ Создать новую символическую ссылку

7․ Изменить группу и владельца для новых директорий

8․ Сохранить пользовательские настройки сервиса Configurator, если они изменялись

9․ Создать директории с логами, если ранее использовалась запись логов в файлы

10․ Обновить лицензию, если это необходимо

11․ Настроить вычисления с помощью GPU, если планируется использовать GPU

12․ Удалить старые контейнеры, если это необходимо

> Важно! Процедура миграции с помощью утилиты Storages является универсальной и позволяет как обновить (upgrade), так и понизить (downgrade) версию платформы. Все последующие шаги применимы в обоих сценариях.

## Ключевые изменения предыдущих версий

Примечание. Если миграция выполняется между соседними версиями LUNA PLATFORM, этот раздел можно пропустить.

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

> В таблице ниже перечислены не все изменения. См. подробную информацию о всех изменениях в примечаниях к выпуску LUNA PLATFORM.

Версия | Изменения | Обязательные действия
--- | --- | ---
5.96.0 | Теперь по умолчанию используется 65-ая модель нейронной сети для извлечения биометрических шаблонов лиц. | Ознакомиться с информацией, описанной в разделе "Подготовка к смене версии нейронной сети", и выполнить определенные действия перед запуском Remote SDK или Video Agent, т.к. изменилась версия по умолчанию.
5.88.0 | Теперь Redis в поставке LUNA PLATFORM запаролен. В документации в команду запуска контейнера Redis добавлено пробрасывание дефолтного пароля. В скрипте Docker Compose также передается дефолтный пароль. | Поскольку часть настроек LUNA PLATFORM требует аутентификации к Redis, а Redis теперь по умолчанию запаролен, то при обновлении необходимо обязательно добавить пароль к следующим настройкам: `LUNA_ATTRIBUTES_DB`, `REDIS_DB_ADDRESS`, `TASKS_REDIS_DB_ADDRESS`.
5.84.0 | Из контейнера Remote SDK удалена 110ая модель нейронной сети для извлечения биометрических шаблонов тел. Теперь по умолчанию используется 116ая модель нейронной сети для извлечения биометрических шаблонов тел. | Ознакомиться с информацией, описанной в разделе "Подготовка к смене версии нейронной сети", и выполнить определенные действия перед запуском Remote SDK, т.к. изменилась версия по умолчанию.
5.76.0 | Группа параметров "INFLUX_MONITORING" переименована в "LUNA_MONITORING". | При подготовке окружения с помощью Storages с указанием разных сущностей (например, "luna_prepare configs", "luna_prepare database" и др.), необходимо выполнять обновление окружения для InfluxDB (аргументы "aggregated_influx_bucket" и "influx_bucket") строго после миграции настроек (аргумент "configs"). В противном случае подготовка окружения не будет выполнена корректно. При выполнении всего окружения с помощью аргумента "all_entities" никаких дополнительных действий делать не нужно.
5.72.1 | Из контейнера Remote SDK удалена 107ая модель нейронной сети для извлечения биометрических шаблонов тел. | Ознакомиться с информацией, описанной в разделе "Подготовка к смене версии нейронной сети", и выполнить определенные действия перед запуском Remote SDK, если использовалась 107ая модель.
5.67.0 | Обновлено значение порога из настройки "redetect_score_threshold" группы настроек "LUNA_REMOTE_SDK_FACE_DETECTOR_SETTINGS" с "0.3" до "0.5". | Обновить значение порога в соответствии с пользовательской логикой.
5.62.3 | Теперь по умолчанию используется модель 62 нейронной сети для извлечения биометрических шаблонов. | Ознакомиться с информацией, описанной в разделе "Подготовка к смене версии нейронной сети", и выполнить определенные действия перед запуском Remote SDK, т.к. изменилась версия по умолчанию.
5.53.0 | Обновлен образ VisionLabs для PostgreSQL с 12 версии на 16 версию. | Если ранее использовался данный образ, то необходимо самостоятельно выполнить миграцию согласно официальной документации.

## Создание резервных копий

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

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

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

- резервные копии всех баз данных, используемых с LUNA PLATFORM;
- резервную копию бакетов Image Store;
- резервную копию настроек сервисов LUNA PLATFORM.

### Копия СУБД PostgreSQL

Резервная копия СУБД PostgreSQL выполняется с помощью утилит pg_dumpall или pg_dump.

Воспользуйтесь официальной инструкцией для выполнения резервной копии.

### Копия базы данных Influx

Резервная копия БД Influx выполняется с помощью команды influxd backup.

Воспользуйтесь официальной инструкцией для выполнения резервной копии.

### Копия бакетов Image Store

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

    cp -r /var/lib/luna/image_store /var/lib/luna/BACKUP_image_store

### Дамп-файл с настройками сервисов

Пользовательские значения настроек сервисов LUNA PLATFORM (всех, кроме сервиса Configurator) автоматически мигрируются с помощью механизма миграции сервиса Configurator.

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

Чтобы создать дамп-файл, используйте следующие команды (можно выполнить из любой директории на сервере):

    wget -O /var/lib/luna/BACKUP_settings_dump.json 127.0.0.1:5070/1/dump

или

    curl 127.0.0.1:5070/1/dump > /var/lib/luna/BACKUP_settings_dump.json

Важно! Данный файл не будет использован в процессе нормальной установки LUNA PLATFORM. Чтобы применить сохраненные настройки, нужно выполнить команду Storages для загрузки дампа (`load_dump`) с аргументом `--dump-file`: `--dump-file=/srv/settings_dump.json`. Применить дамп-файл можно только к пустой базе данных с созданными таблицами. См. подробную информацию в разделе Команда load_dump.

## Подготовка к смене версии нейронной сети

В некоторых сборках LUNA PLATFORM удаляются модели нейронных сетей для извлечения биометрических шаблонов лиц и тел, а также меняются настройки использования моделей по умолчанию. См. раздел "Ключевые изменения предыдущих версий" для подробной информации о данных изменениях.

Если выполняется обновление с версии, где были удалены нейронные сети, а в предыдущей сборке в настройках "DEFAULT_FACE_DESCRIPTOR_VERSION" или "DEFAULT_HUMAN_DESCRIPTOR_VERSION" была указана какая-то из удаленных моделей, то сервис Remote SDK не запустится.

В текущей сборке LUNA PLATFORM поддержаны модели нейросетей для извлечения биометрических шаблонов:

Объект, из которого извлекается БШ | Модели нейронных сетей | Модель по умолчанию
--- | --- | ---
Лицо | 59, 60, 62, 65, 67 | 65
Тело | 108, 116 | 116

Необходимо выполнить одно из дополнительных действий в зависимости от следующих сценариев работы:

Продолжение использования отсутствующих нейронных сетей

Запросите у VisionLabs старую модель нейронной сети и подготовьте её к переносу в новый контейнер Remote SDK или Video Agent после его запуска (см. инструкцию по переносу в разделе "Использование модели нейросети не из поставки" руководства администратора).

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

Перейти на новую версию с продолжением использования старых шаблонов можно выполнив задачу Additional extraction. Это позволит преобразовать старые шаблоны на новую версию нейронной сети.

В релизах LUNA PLATFORM сначала добавляется поддержка какой-либо модели, а только потом спустя несколько версий обновляется модель по умолчанию, что обеспечивает наличие новой модели в контейнере при обновлении с предыдущей версии. Однако если выполняется обновление со старой версии LUNA PLATFORM, то важно убедиться, что в старой версии контейнера Remote SDK или Video Agent имеется требуемая модель для выполнения задачи Additional extraction. Модель можно запросить у специалистов VisionLabs или перенести из более новой версии контейнера Remote SDK или Video Agent.

Важно! Исключением является процесс повторного извлечения биометрических шаблонов тел, позволяющий использовать задачу Additional extraction уже после запуска нового контейнера Remote SDK или Video Agent, который гарантированно имеет новую модель. В таком случае можно не думать о том есть ли модель нейронной сети в старом контейнере.

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

- выполните предварительные действия, если выполняете миграцию не с предыдущей версии LUNA PLATFORM:

  - повторное извлечение биометрических шаблонов тел: если предпочитаете выполнять задачу Additional extraction перед миграцией, то обязательно убедитесь, что в старом контейнере Remote SDK или Video Agent есть новая модель нейронной сети. Если предпочитаете выполнять задачу Additional extraction после миграции (рекомендуется), то никаких дополнительных действий не требуется.
  - повторное извлечение биометрических шаблонов лиц: обязательно убедитесь, что в контейнере Remote SDK или Video Agent есть новая модель нейронной сети.

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

      docker exec -it luna-remote-sdk ls fsdk/data

  В директории должны быть файлы вида `cnn<model>_<architecture>.plan` и `cnndescriptor_<nn_version>.conf`.

- выполните задачу Additional extraction:

  - повторное извлечение биометрических шаблонов тел: перед или после миграции
  - повторное извлечение биометрических шаблонов лиц: перед миграцией

  См. раздел "Задача Additional extraction" в руководстве администратора.

- укажите новую версию нейронной сети в настройках "DEFAULT_FACE_DESCRIPTOR_VERSION" или "DEFAULT_HUMAN_DESCRIPTOR_VERSION" в соответствии с разделом "Смена версии нейронной сети в Configurator":

  - повторное извлечение биометрических шаблонов тел:
    - после миграции, если задача Additional extraction выполняется перед миграцией
    - перед миграцией, если задача Additional extraction выполняется после миграции (иначе сервис Remote SDK или Video Agent может не запуститься если модель была удалена из контейнера)
  - повторное извлечение биометрических шаблонов лиц: после миграции

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

Укажите новую версию нейронной сети в настройках "DEFAULT_FACE_DESCRIPTOR_VERSION" или "DEFAULT_HUMAN_DESCRIPTOR_VERSION" перед запуском сервиса Remote SDK или Video Agent в соответствии с разделом "Смена версии нейронной сети в Configurator".

> Если не требуется использовать извлечение биометрических шаблонов тел, то можно отключить использование нейронной сети с помощью команды `--env=EXTEND_CMD="--enable-body-descriptor-estimator=0"` при запуске контейнера Remote SDK (см. подробную информацию в разделе "Включение/отключение некоторых эстиматоров и детекторов" руководства администратора).

### Смена версии нейронной сети в Configurator

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

- откройте пользовательский интерфейс Configurator `http://<configurator_server_ip>:5070`;
- введите название настройки "DEFAULT_FACE_DESCRIPTOR_VERSION" или "DEFAULT_HUMAN_DESCRIPTOR_VERSION" в поле "Setting name" и нажмите "Apply Filters";
- установите нужную модель нейронной сети в настройке "DEFAULT_FACE_DESCRIPTOR_VERSION" или "DEFAULT_HUMAN_DESCRIPTOR_VERSION";
- сохраните изменения, нажав кнопку "Save".

Важно! Изменение настройки "DEFAULT_FACE_DESCRIPTOR_VERSION" распространяется на два контейнера - Remote SDK и Video Agent. Соответственно, модель нейронной сети для извлечения лиц должна присутствовать в обоих контейнерах. Если она присутствует только в одном контейнере, то второй не сможет запуститься.

## Удаление символической ссылки

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

    rm -f /var/lib/luna/current

## Распаковка дистрибутива

Дистрибутив представляет собой архив luna_v.5.137.0, где v.5.137.0 это числовой идентификатор, обозначающий версию LUNA PLATFORM.

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

Переместите дистрибутив в директорию на вашем сервере перед установкой. Например, переместите файлы в директорию `/root/`. В ней не должно быть никакого другого дистрибутива или файлов лицензии кроме целевых.

Переместите дистрибутив в директорию c LUNA PLATFORM.

    mv /root/luna_v.5.137.0.zip /var/lib/luna

Установите приложение для распаковки архива при необходимости

    dnf install -y unzip

Откройте папку с дистрибутивом

    cd /var/lib/luna

Распакуйте файлы

    unzip luna_v.5.137.0.zip

## Создание символической ссылки

Создайте символическую ссылку. Она показывает, что актуальная версия файла дистрибутива используется для запуска LUNA PLATFORM.

    ln -s luna_v.5.137.0 current

## Изменение группы и владельца для директорий

Сервисы LP запускаются внутри контейнеров пользователем "luna". Таким образом, требуется установить разрешения для данного пользователя на работу с примонтированными директориями.

Откройте директорию LP "example-docker":

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

Создайте директорию для хранения настроек:

    mkdir luna_configurator/used_dumps

Установите для пользователя с UID 1001 и группой 0 разрешения на работу с примонтированными директориями.

    chown -R 1001:0 luna_configurator/used_dumps

## Сохранение пользовательских настроек сервиса Configurator

Примечание. Пропустите данный шаг, если настройки Configurator не изменялись.

Настройки сервиса Configurator не мигрируются автоматически, в отличие от настроек всех остальных сервисов.

Если предыдущая версия LP использовалась с настройками сервиса Configurator, отличных от настроек по умолчанию, нужно создать резервную копию файла конфигурации "luna_configurator_postgres.conf" в отдельной директории на сервере.

    cp /var/lib/luna/<your_previous_lp_version>/example-docker/luna_configurator/configs/luna_configurator_postgres.conf /var/lib/luna/BACKUP_luna_configurator_postgres.conf

Эта резервная копия должна быть примонтирована к запускаемому контейнеру сервиса Configurator.

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

    diff /var/lib/luna/current/example-docker/luna_configurator/configs/luna_configurator_postgres.conf /var/lib/luna/BACKUP_luna_configurator_postgres.conf

## Создание директории логов для новых сервисов

Пропустите этот раздел в случае, если ранее логи не сохранялись на сервере.

В целевой версии LUNA PLATFORM могли появиться новые сервисы, для которых нужно создать директории с логами. Это зависит от версии, с которой выполняется миграция. Например, в версии 5.30.0 появился сервис Accounts.

> См. раздел "Запись логов на сервер" если вы ранее не использовали запись логов в файл, но хотите включить её.

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

    mkdir -p /tmp/logs/configurator /tmp/logs/image-store /tmp/logs/accounts /tmp/logs/faces /tmp/logs/licenses /tmp/logs/events /tmp/logs/python-matcher /tmp/logs/handlers /tmp/logs/remote-sdk /tmp/logs/tasks /tmp/logs/tasks-worker /tmp/logs/sender /tmp/logs/api /tmp/logs/admin /tmp/logs/luna-video-agent /tmp/logs/luna-video-manager /tmp/logs/luna-streams-retranslator

    chown -R 1001:0 /tmp/logs/configurator /tmp/logs/image-store /tmp/logs/accounts /tmp/logs/faces /tmp/logs/licenses /tmp/logs/events /tmp/logs/python-matcher /tmp/logs/handlers /tmp/logs/remote-sdk /tmp/logs/tasks /tmp/logs/tasks-worker /tmp/logs/sender /tmp/logs/api /tmp/logs/admin /tmp/logs/luna-video-agent /tmp/logs/luna-video-manager /tmp/logs/luna-streams-retranslator

Если необходимо использовать сервис Python Matcher Proxy, то нужно дополнительно создать директорию `/tmp/logs/python-matcher-proxy` и установить ей разрешения.

## Обновление лицензии

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

- выполнить действия из руководства по активации лицензии
- задать настройки лицензирования HASP или Guardant перед запуском контейнера Licenses

### Действия из руководства по активации лицензии

Откройте руководство по активации лицензии и выполните необходимые шаги.

Примечание. Это действие является обязательным. Лицензия не будет работать без выполнения шагов по активации лицензии из соответствующего руководства.

Примечание. При обновлении Guardant Control Center необходимо заново выписать лицензионный ключ.

## Вычисления с помощью GPU

Для основных вычислений, выполняемых сервисом Remote SDK, можно использовать GPU.

Пропустите данный раздел, если не собираетесь использовать 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

    dnf install -y nvidia-container-toolkit

    systemctl restart docker

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

    docker run --rm --gpus all nvcr.io/nvidia/cuda:12.4.0-base-ubi8 nvidia-smi

См. документацию NVIDIA для дополнительной информации.

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

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

## Удаление старых контейнеров (опционально)

Примечание. Удаление старых контейнеров не является обязательным при подготовке окружения с помощью утилиты Storages. Достаточно просто ограничить количество запросов к БД, однако в таком случае необходимо понимать определенные последствия. См. раздел "Рекомендации по поведению сервисов во время подготовки окружения" в руководстве по утилите Storages.

Важно! Исключением является сервис Image Store. Во время подготовки окружения бакетов, Storages выполняет запрос к сервису Image Store для получения информации о бакетах. Если контейнер Image Store удален, то запрос будет выполнен неудачно и возникнет ошибка миграции. Чтобы выполнить миграцию бакетов при удаленном контейнере Image Store, необходимо явно указать утилите Storages расположение бакетов с помощью аргументов `--local-buckets` или `--s3-buckets`. При использовании локальных бакетов необходимо также примонтировать к контейнеру Storages директорию с бакетами.

Остановите все контейнеры, относящиеся к предыдущей версии LUNA PLATFORM. Контейнеры сторонних приложений удалять необязательно.

Например, можно использовать следующую команду:

    docker container rm -f luna-configurator luna-sender luna-tasks luna-handlers luna-remote-sdk luna-python-matcher luna-events luna-licenses luna-faces luna-image-store luna-admin luna-api luna-tasks-worker luna-accounts luna-lambda luna-video-agent luna-video-manager

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

    docker ps -a

Также рекомендуется удалить старые образы контейнеров для освобождения места. Можно использовать следующую команду для удаления всех неиспользуемых образов.

> Если на сервере достаточно места, рекомендуется выполнить это действие только после успешного запуска новой версии LP.

> Данная команда удаляет все неиспользуемые образы, а не только образы, относящиеся к LP.

    docker image prune -a -f

# Запуск сторонних сервисов

В данном разделе описывается запуск баз данных в Docker-контейнерах. Они должны быть запущены перед подготовкой окружения и запуском сервисов LP.

## InfluxDB

Примечание. Если вы не удаляли старый контейнер, пропустите данный шаг.

Для мониторинга сервисов LUNA PLATFORM требуется наличие запущенной базы данных Influx 2.0.8-alpine. Ниже приведена команда для запуска контейнера InfluxDB.

Примечание. В качестве альтернативы можно использовать БД ClickHouse, инструкция по запуску которой см. в "Использование ClickHouse в качестве альтернативы InfluxDB". Информацию о выборе БД для мониторинга см. в разделе "Мониторинг" руководства администратора.

> При необходимости можно настроить визуализацию данных мониторинга с помощью сервиса LUNA Dashboards, включающего настроенную систему визуализации данных Grafana. Также можно запустить инструмент для расширенной работы с логами Grafana Loki. См. инструкцию по запуску LUNA Dashboards и Grafana Loki в разделе "Визуализация мониторинга и логов с помощью Grafana".

Примечание. При необходимости можно использовать внешнюю БД InfluxDB 2.0.8-alpine. В таком случае можно пропустить команду ниже, однако вам придется задать пользовательские настройки для каждого сервиса LUNA PLATFORM.

Используйте команду `docker run` со следующими параметрами:

    docker run \
    -e DOCKER_INFLUXDB_INIT_MODE=setup \
    -e DOCKER_INFLUXDB_INIT_BUCKET=default \
    -e DOCKER_INFLUXDB_INIT_USERNAME=luna \
    -e DOCKER_INFLUXDB_INIT_PASSWORD=password \
    -e DOCKER_INFLUXDB_INIT_ORG=luna \
    -e DOCKER_INFLUXDB_INIT_ADMIN_TOKEN=kofqt4Pfqjn6o0RBtMDQqVoJLgHoxxDUmmhiAZ7JS6VmEnrqZXQhxDhad8AX9tmiJH6CjM7Y1U8p5eSEocGzIA== \
    -v /etc/localtime:/etc/localtime:ro \
    -v /var/lib/luna/influx:/var/lib/influxdb2 \
    --restart=always \
    --detach=true \
    --network=host \
    --name influxdb \
    dockerhub.visionlabs.ru/luna/influxdb:2.0.8-alpine

> В команде выше создается стандартный бакет. Бакет для хранения данных мониторинга LUNA PLATFORM будет создан на этапе подготовки окружения с помощью утилиты Storages. Обратите внимание, что попытка подготовки окружения (создание бакета) для InfluxDB через утилиту Storages не будет успешной, если бакет уже существует и в команде подготовки окружения не укзан флаг `-ii` (игнорировать сущность если она уже есть).

## PostgreSQL

### Миграция с PostgreSQL 12 на PostgreSQL 16

В LUNA PLATFORM v.5.53.0 обновился образ VisionLabs для PostgreSQL с 12 версии на 16 версию.

Если ранее использовался данный образ, то необходимо самостоятельно выполнить миграцию согласно официальной документации. При необходимости можно продолжить использовать PostgreSQL 12, указав образ "postgis-vlmatch:12" в команде запуска контейнера.

Монтирование данных PostgreSQL 12 из директории "/var/lib/luna/postgres" в контейнер для PostgreSQL 16 приведет к ошибке.

### Запуск контейнера PostgreSQL

Примечание. Если вы не удаляли старый контейнер, пропустите данный шаг.

Используйте следующую команду для запуска PostgreSQL.

    docker run \
    --env=POSTGRES_USER=luna \
    --env=POSTGRES_PASSWORD=luna \
    --shm-size=1g \
    -v /var/lib/luna/postgresql/data/:/var/lib/postgresql/data/ \
    -v /etc/localtime:/etc/localtime:ro \
    --name=postgres \
    --restart=always \
    --detach=true \
    --network=host \
    --health-cmd="pg_isready -U luna -d postgres" \
    dockerhub.visionlabs.ru/luna/postgis-vlmatch:16.1

`-v /var/lib/luna/current/example-docker/postgresql/data/:/var/lib/postgresql/data/` — эта команда позволяет монтировать директорию "data" в контейнер PostgreSQL. Директория на сервере и директория в контейнере будут синхронизированы. Данные PostgreSQL из контейнера будут сохраняться в эту директорию.

`--network=host` — при необходимости изменить порт для PostgreSQL, следует изменить эту строку на `-p 5440:5432`. Здесь первый порт `5440` — локальный, а `5432` — порт в контейнере.

> Все базы данных для сервисов LP следует создавать вручную, если используется уже установленный PostgreSQL.

## Redis

Примечание. Если вы не удаляли старый контейнер, пропустите данный шаг.

Примечание. При запуске Redis по умолчанию задан пароль `lunapass`. Крайне рекомендуется сменить пароль для повышения безопасности. Обратите внимание, что пароль должен быть указан в соответствующей настройке сервиса, например, в параметре "password" группы "LUNA_ATTRIBUTES_DB" сервиса Events. По умолчанию в дамп-файле уже прописан пароль `lunapass`.

Используйте следующую команду для запуска Redis.

    docker run \
    -v /etc/localtime:/etc/localtime:ro \
    --name=redis \
    --restart=always \
    --detach=true \
    --network=host \
    dockerhub.visionlabs.ru/luna/redis:7.2 \
    redis-server --requirepass lunapass

# Миграция окружения

Миграция окружения выполняется с помощью утилиты Storages. С помощью команды ниже будет выполнено:

- Создание бакетов в InfluxDB для работы мониторинга (если не было выполнено ранее)
- Создание бакетов для сервиса Image Store (если не было выполнено ранее)
- Подготовка БД Influx для сбора агрегированной статистики сервисом Admin
- Создание баз данных, добавление функций VLMatch, создание сценариев миграции для СУБД PostgreSQL (если не было выполнено ранее)
- Загрузка базовых настроек в БД Configurator

> Важно! Утилита Storages поддерживает миграцию как на более новые, так и на более старые версии LUNA PLATFORM. При миграции на предыдущую версию будут выполнены соответствующие скрипты отката изменений в базах данных и настройках.

## Выбор сервисов

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

Миграцию окружения можно выполнить как для каждого сервиса отдельно, так и для всех сервисов сразу. В данной документации миграция окружения выполняется с аргументом `all_entities`, означающим, что будут обновлены все сущности для набора сервисов, определенных в конфигурации Storages.

Однако уже после миграции окружения необходимо включить в настройках LUNA PLATFORM использование соответствующих сервисов.

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

- выбор сервисов в настройке "ADDITIONAL_SERVICE_USAGE" в конфигурационном файле Storages для того, чтобы утилита Storages могла обновить все необходимые сущности для будущих сервисов
- выбор сервисов в настройке "ADDITIONAL_SERVICE_USAGE" в настройках LUNA PLATFORM чтобы сообщить системе какие сервисы надо использовать. Загрузить настройку можно либо с помощью дамп-файла, либо в настройках Configurator после его непосредственного запуска.

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

В результате, чтобы выбрать сервисы, нужно:

- заполнить конфигурационный файл Storages
- выбрать сервисы для запуска с помощью сервиса Configurator

Список сервисов, для которых можно включить/отключить миграцию окружения:

- Faces
- Events
- Image Store
- Tasks
- Sender
- Handlers
- Remote SDK
- Python Matcher
- Python Matcher Proxy (отключен по умолчанию)
- Lambda (отключен по умолчанию)
- Video Manager (отключен по умолчанию)
- Video Agent (отключен по умолчанию)
- Streams Retranslator (отключен по умолчанию)

> Работа с сервисом Lambda возможна только при разворачивании сервисов LUNA PLATFORM в Kubernetes. См. подробную информацию в руководстве по разворачиванию LP в Kubernetes.

Важно! Отключение миграции окружения для основных сервисов имеет определенные последствия. См. подробную информацию в разделе "Отключаемые сервисы" руководства администратора.

## Настройка конфигурационного файла Storages

Примечание. Пропустите данный раздел, если нужно запустить LUNA PLATFORM в стандартной конфигурации.

При миграции окружения используется конфигурационный файл сервиса Storages, содержащий:

- список сервисов для которых будет обновлено окружение
- настройки подключения к базам данных
- настройки подключения к бакетам
- настройки подключения к S3
- настройки мониторинга
- другие

Этот файл должен быть примонтирован к контейнеру сервиса Storages и указан в аргументе `--config`.

В качестве примера монтируется файл `storages_config.conf`, содержащий стандартные настройки для разворачивания LUNA PLATFORM в минимальной базовой конфигурации.

Отредактируйте конфигурационный файл Storages для задания пользовательских настроек:

    vi /var/lib/luna/current/extras/conf/storages_config.conf

## Команда миграции окружения

> Перед выполнением миграции окружения убедитесь, что в настройке "ADDITIONAL_SERVICES_USAGE" конфигурационного файла Storages включены все сервисы, которые вы планируете использовать.

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

> Приведенная ниже команда является примером для обновления до самой последней версии LUNA PLATFORM. Если необходимо выполнить миграцию на другую версию, замените значения `--platform_version` и образа `storages` на целевые.

    docker run \
    --rm \
    --network=host \
    -v /var/lib/luna/current/extras/conf/storages_config.conf:/srv/storages_config.conf \
    -v /var/lib/luna/image_store/:/srv/local_storage/ \
    dockerhub.visionlabs.ru/luna/storages:v.0.131.0 \
    bash -c "luna_prepare prepare all_entities \
        --platform_version=v.5.137.0 \
        --profile=common \
        --config=/srv/storages_config.conf \
        --monitoring-ttl=30 \
        --local-buckets=/srv/local_storage"

Здесь:

- `-v /var/lib/luna/current/extras/conf/storages_config.conf:/srv/storages_config.conf` — команда монтирования конфигурационного файла Storages
- `-v /var/lib/luna/image_store/:/srv/local_storage/` — команда монтирования директории с бакетами Image Store
- `luna_prepare prepare all_entities` — команда "prepare" для подготовки всех сущностей
- `--platform_version` — именованный аргумент, содержащий версию LUNA PLATFORM
- `--profile` — именованный аргумент, содержащий профиль (ссылка на список сервисов) `backports`, означающий, что будет подготовлено окружение для всех сервисов
- `--config=/srv/storages_config.conf` — именованный аргумент, содержащий адрес конфигурационного файла для использования сервисом Storages
- `--monitoring-ttl=30` — именованный аргумент, который позволяет настроить политику хранения для неагрегированных данных мониторинга. Он задает максимальный срок в днях, в течение которого данные будут храниться в системе мониторинга перед автоматическим удалением.
- `-local-buckets=/srv/local_storage` — именованный аргумент, содержащий директорию, в которой должны быть созданы бакеты Image Store

Если в конфигурационном файле Storages были включены дополнительные сервисы, необходимо также включить их использование в настройке "ADDITIONAL_SERVICES_USAGE" в сервисе Configurator (см. Выбор сервисов для запуска с помощью сервиса Configurator).

# Запуск сервисов

В данном разделе приведены примеры команд запуска сервисов LUNA PLATFORM.

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

- Базы данных, балансировщики, HASP сервис и прочие сторонние сервисы
- Configurator
- Image Store
- Accounts
- Licenses
- Faces
- Events
- Python Matcher
- Python Matcher Proxy. Сервис отключен по умолчанию.
- Remote SDK
- Handlers
- Tasks
- Sender
- Streams Retranslator
- Сервисы видеоаналитики
- API
- Admin

Рекомендуется запускать контейнеры один за другим и ожидать отображения статуса контейнера "up" (команда `docker ps`).

Некоторые из этих сервисов не являются обязательными к запуску и можно отключить их использование. Рекомендуется использовать сервисы Events, Tasks, Sender и Admin по умолчанию. См. раздел "Выбор сервисов" для более подробной информации.

При запуске каждого сервиса используются определенные параметры, например, `--detach`, `--network` и др. См. раздел "Описание параметров запуска" для получения более подробной информации о всех параметрах запуска сервисов LUNA PLATFORM и баз данных.

См. раздел "Команды Docker" для получения более подробной информации о работе с контейнерами.

## Configurator

### Запуск контейнера Configurator

Примечание. Настройки сервиса Configurator не мигрируются автоматически, в отличие от настроек всех остальных сервисов. Если в предыдущей версии LP изменялись настройки сервиса Configurator и необходимо сохранить пользовательские значения, то в команде ниже необходимо заменить путь `/var/lib/luna/current/example-docker/luna_configurator/configs/luna_configurator_postgres.conf` на путь с резервной копией настроек сервиса Configurator `/var/lib/luna/BACKUP_luna_configurator_postgres.conf` (см. раздел "Сохранение пользовательских настроек сервиса Configurator").

Используйте команду `docker run` со следующими параметрами для запуска Configurator:

> Приведенная ниже команда является примером запуска сервиса Configurator для версии LUNA PLATFORM v.5.137.0. При миграции на версию LUNA PLATFORM, отличную от v.5.137.0, замените тег образа Configurator на соответствующий целевой версии, для которой была выполнена подготовка окружения ранее.

    docker run \
    --env=PORT=5070 \
    --env=WORKER_COUNT=1 \
    --env=RELOAD_CONFIG=1 \
    --env=RELOAD_CONFIG_INTERVAL=10 \
    -v /etc/localtime:/etc/localtime:ro \
    -v /var/lib/luna/current/example-docker/luna_configurator/configs/luna_configurator_postgres.conf:/srv/luna_configurator/configs/config.conf \
    -v /tmp/logs/configurator:/srv/logs \
    --name=luna-configurator \
    --restart=always \
    --detach=true \
    --network=host \
    dockerhub.visionlabs.ru/luna/luna-configurator:v.2.4.31

> На данном этапе можно активировать запись логов в файл, если необходимо сохранять их на сервере (см. раздел "Запись логов на сервер").

### Выбор сервисов для запуска с помощью сервиса Configurator

> Пропустите данный раздел, если вы запускаете LUNA PLATFORM в стандартной конфигурацию.

Примечание. Перед выбором сервисов убедитесь, что вы подготовили окружение для требуемых сервисов. См. раздел "Выбор сервисов".

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

- перейдите в интерфейс сервиса Configurator `http://<configurator_server_ip>:5070/`;

- введите в поле "Setting name" значение "ADDITIONAL_SERVICES_USAGE" и нажмите "Apply Filters";

- для каждого сервиса в списке укажите значение "true" (включить) или "false" (отключить) в зависимости от необходимости его использования;

- нажмите "Save".

## Image Store

### Запуск контейнера Image Store

Примечание. Если вы не собираетесь использовать сервис Image Store, не запускайте этот контейнер и отключите использование сервиса. См. раздел "Выбор сервисов".

Используйте следующую команду для запуска сервиса Image Store:

> Приведенная ниже команда является примером запуска сервиса Image Store для версии LUNA PLATFORM v.5.137.0. При миграции на версию LUNA PLATFORM, отличную от v.5.137.0, замените тег образа Image Store на соответствующий целевой версии, для которой была выполнена подготовка окружения ранее.

    docker run \
    --env=CONFIGURATOR_HOST=127.0.0.1 \
    --env=CONFIGURATOR_PORT=5070 \
    --env=PORT=5020 \
    --env=WORKER_COUNT=1 \
    --env=RELOAD_CONFIG=1 \
    --env=RELOAD_CONFIG_INTERVAL=10 \
    -v /var/lib/luna/image_store/:/srv/local_storage/ \
    -v /etc/localtime:/etc/localtime:ro \
    -v /tmp/logs/image-store:/srv/logs \
    --name=luna-image-store \
    --restart=always \
    --detach=true \
    --network=host \
    dockerhub.visionlabs.ru/luna/luna-image-store:v.3.21.3

`-v /var/lib/luna/image_store/:/srv/local_storage/` — данные из указанной директории добавляются в Docker-контейнер, когда он запущен. Все данные из указанной директории Docker-контейнера сохраняются в данную директорию.

> Если директория с бакетами LP уже создана, укажите ее вместо `/var/lib/luna/image_store/`.

## Accounts

### Запуск контейнера Accounts

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

> Приведенная ниже команда является примером запуска сервиса Accounts для версии LUNA PLATFORM v.5.137.0. При миграции на версию LUNA PLATFORM, отличную от v.5.137.0, замените тег образа Accounts на соответствующий целевой версии, для которой была выполнена подготовка окружения ранее.

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

## Licenses

Примечание. Для использования триальной лицензии необходимо запускать сервис Licenses на том же сервере, на котором она используется.

### Задание настроек лицензии с помощью Configurator

Выполните действия по заданию настроек для HASP-ключа или Guardant-ключа.

#### Задание настроек лицензии HASP

Примечание. Выполняйте данные действия только если используется лицензия HASP. См. раздел "Задание настроек лицензии Guardant", если используется ключ Guardant.

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

- перейдите в интерфейс сервиса Configurator `http://<configurator_server_ip>:5070/`

- введите в поле "Setting name" значение "LICENSE_VENDOR" и нажмите "Apply Filters"

- задайте IP-адрес сервера с вашим ключом HASP в поле "server_address" в формате "127.0.0.1".

- нажмите "Save"

> Обратите внимание, что если лицензия активируется с помощью ключа HASP, то должно быть указано два параметра "vendor" и "server_address". Если вы хотите изменить защиту HASP на Guardant, то необходимо добавить поле "license_id".

#### Задание настроек лицензии Guardant

Примечание. Выполняйте данные действия только если используется ключ Guardant. См. раздел "Задание настроек лицензии HASP", если используется ключ HASP.

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

- перейдите в интерфейс сервиса Configurator `http://<configurator_server_ip>:5070/`

- введите в поле "Setting name" значение "LICENSE_VENDOR" и нажмите "Apply Filters"

- задайте IP-адрес сервера с вашим ключом Guardant в поле "server_address"

- задайте идентификатор лицензии в формате `0x<your_license_id>`, полученный в разделе "Сохранение идентификатора лицензии" руководства по активации лицензии, в поле "license_id"

- нажмите "Save"

> Обратите внимание, что если лицензия активируется с помощью ключа Guardant, то должно быть указано три параметра "vendor", "server_address" и "license_id". Если вы хотите изменить защиту Guardant на HASP, то необходимо удалить поле "license_id".

### Запуск контейнера Licenses

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

> Приведенная ниже команда является примером запуска сервиса Licenses для версии LUNA PLATFORM v.5.137.0. При миграции на версию LUNA PLATFORM, отличную от v.5.137.0, замените тег образа Licenses на соответствующий целевой версии, для которой была выполнена подготовка окружения ранее.

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

## Faces

### Запуск контейнера Faces

Примечание. Если вы не собираетесь использовать сервис Faces, не запускайте этот контейнер и отключите использование сервиса. См. раздел "Выбор сервисов".

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

> Приведенная ниже команда является примером запуска сервиса Faces для версии LUNA PLATFORM v.5.137.0. При миграции на версию LUNA PLATFORM, отличную от v.5.137.0, замените тег образа Faces на соответствующий целевой версии, для которой была выполнена подготовка окружения ранее.

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

## Events

### Запуск контейнера Events

Примечание. Если вы не собираетесь использовать сервис Events, не запускайте этот контейнер и отключите использование сервиса. См. раздел "Выбор сервисов".

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

> Приведенная ниже команда является примером запуска сервиса Events для версии LUNA PLATFORM v.5.137.0. При миграции на версию LUNA PLATFORM, отличную от v.5.137.0, замените тег образа Events на соответствующий целевой версии, для которой была выполнена подготовка окружения ранее.

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

## Сервисы Python Matcher

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

> Необходимо использовать сервис Python Matcher Proxy только если собираетесь использовать плагины сравнения. Использование Python Matcher Proxy и запуск соответствующего docker-контейнера описаны в разделе "Использование Python Matcher c Python Matcher Proxy".

> См. описание и использование плагинов сравнения в руководстве администратора.

### Использование Python Matcher без Python Matcher Proxy

Сервис Python Matcher со сравнением посредством базы данных Faces включен по умолчанию при запуске.

Сервис Python Matcher со сравнением посредством Events также включен по умолчанию. Его можно отключить, для этого см. раздел "Выбор сервисов". Таким образом, сервис Events не будет использоваться для LUNA PLATFORM.

Python Matcher, который производит сравнение с помощью библиотеки сравнений, включается когда "CACHE_ENABLED" установлен как "true" в настройке "DESCRIPTORS_CACHE".

> Для сервисов Python Matcher и Python Matcher Proxy загружается одно изображение.

### Запуск контейнера Python Matcher

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

> Приведенная ниже команда является примером запуска сервиса Python Matcher для версии LUNA PLATFORM v.5.137.0. При миграции на версию LUNA PLATFORM, отличную от v.5.137.0, замените тег образа Python Matcher на соответствующий целевой версии, для которой была выполнена подготовка окружения ранее.

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

## Remote SDK

### Смена модели нейронной сети для извлечения биометрических шаблонов

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

Если выполняется обновление с версии, где были удалены нейронные сети, а в предыдущей сборке в настройках "DEFAULT_FACE_DESCRIPTOR_VERSION" или "DEFAULT_HUMAN_DESCRIPTOR_VERSION" была указана какая-то из удаленных моделей, то сервис не запустится, если не выполнить одно из нижеперечисленных действий:

- запросить у специалистов VisionLabs старую модель нейронной сети и перенести её в новый контейнер
- перейти на новую версию нейронной сети, предварительно выполнив задачу Additional Extraction для повторного извлечения существующих БШ с использованием новой версии нейронной сети для их дальнейшего использования
- перейти на новую версию нейронной сети, прекратив использование старых биометрических шаблонов

См. подробную информацию в разделе "Подготовка к смене версии нейронной сети".

### Запуск контейнера Remote SDK

Примечание. Если вы не собираетесь использовать сервис Remote SDK, не запускайте этот контейнер и отключите использование сервиса. См. раздел "Выбор сервисов".

Вы можете запустить сервис Remote SDK, используя CPU (задано по умолчанию) или GPU.

> По умолчанию сервис Remote SDK запускается со всеми включенными эстиматорами и детекторами. При необходимости можно отключить использование некоторых эстиматоров или детекторов при запуске контейнера Remote SDK. Отключение ненужных эстиматоров позволяет экономить оперативную память или память GPU, поскольку при старте сервиса Remote SDK выполняется проверка возможности выполнения указанных оценок и загрузка нейронных сетей в память. При отключении эстиматора или детектора можно также удалить его нейронную сеть из контейнера Remote SDK. См. подробную информацию в разделе "Включение/отключение некоторых эстиматоров и детекторов" руководства администратора.

Запустите сервис Remote SDK, используя одну из следующих команд в соответствии с используемым процессором.

#### Запуск Remote SDK с использованием CPU

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

> Приведенная ниже команда является примером запуска сервиса Remote SDK для версии LUNA PLATFORM v.5.137.0. При миграции на версию LUNA PLATFORM, отличную от v.5.137.0, замените тег образа Remote SDK на соответствующий целевой версии, для которой была выполнена подготовка окружения ранее.

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

#### Запуск Remote SDK с использованием GPU

Сервис Remote SDK не использует GPU по умолчанию. Если вы собираетесь использовать GPU, то следует включить его использование для сервиса Remote SDK в сервисе Configurator.

Если необходимо использовать GPU сразу для всех эстиматоров и детекторов, то необходимо использовать параметр "global_device_class" в секции "LUNA_REMOTE_SDK_RUNTIME_SETTINGS". Все эстиматоры и детекторы будут использовать значение данного параметра, если в параметре "device_class" их собственных настроек выставлено значение "global" (по умолчанию).

Если необходимо использовать GPU для определенного эстиматора или детектора, то необходимо использовать параметр "device_class" в секциях вида "LUNA_REMOTE_SDK_estimator-or-detector-name_SETTINGS.runtime_settings".

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

Используйте следующую команду для запуска сервиса Remote SDK с помощью GPU:

> Приведенная ниже команда является примером запуска сервиса Remote SDK для версии LUNA PLATFORM v.5.137.0. При миграции на версию LUNA PLATFORM, отличную от v.5.137.0, замените тег образа Remote SDK на соответствующий целевой версии, для которой была выполнена подготовка окружения ранее.

    docker run \
    --env=CONFIGURATOR_HOST=127.0.0.1 \
    --env=CONFIGURATOR_PORT=5070 \
    --env=PORT=5220 \
    --env=WORKER_COUNT=1 \
    --env=RELOAD_CONFIG=1 \
    --env=RELOAD_CONFIG_INTERVAL=10 \
    --gpus device=0 \
    -v /etc/localtime:/etc/localtime:ro \
    -v /tmp/logs/remote-sdk:/srv/logs \
    --network=host \
    --name=luna-remote-sdk \
    --restart=always \
    --detach=true \
    dockerhub.visionlabs.ru/luna/luna-remote-sdk:v.0.28.0

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

#### Запуск облегченной версии Remote SDK

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

Запуск облегченной версии сервиса Remote SDK предназначен для продвинутых пользователей.

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

- запросить у VisionLabs требуемые нейронные сети
- поместить нейронные сети в папку с установленной LUNA PLATFORM
- присвоить соответствующие права для файлов нейронных сетей
- смонтировать файлы нейронных сетей в папку `/srv/fsdk/data` контейнера Remote SDK
- с помощью аргументов переменной "EXTEND_CMD" явно указать какие из нейронных сетей должны использоваться

> Обратите внимание, что с помощью флага "enable-all-estimators-by-default" для переменной "EXTEND_CMD" можно выключить по умолчанию использование всех нейронных сетей (эстиматоров), а затем с помощью специальных флагов явно указывать какие нейронные сети должны быть использованы. Если не указывать данный флаг или выставить значение "--enable-all-estimators-by-default=1", то сервис Remote SDK будет пытаться найти в контейнере все нейронные сети. Если какая-то из нейронных сетей не будет найдена, то сервис Remote SDK не запустится.

Список доступных аргументов для запуска:

Аргумент | Описание
--- | ---
--enable-all-estimators-by-default | включить все эстиматоры по умолчанию
--enable-human-detector | одновременный детектор
--enable-face-detector | детектор лиц
--enable-body-detector | детектор тел
--enable-face-landmarks5-estimator | эстиматор 5 контрольных точек лица
--enable-face-landmarks68-estimator | эстиматор 68 контрольных точек лица
--enable-head-pose-estimator | эстиматор положения головы
--enable-liveness-estimator | эстиматор OneShotLiveness
--enable-fisheye-estimator | эстиматор бочообразной дисторсии (эффекта FishEye)
--enable-face-detection-background-estimator | эстиматор фона изображения
--enable-face-warp-estimator | эстиматор биометрического образца лица
--enable-body-warp-estimator | эстиматор биометрического образца тела
--enable-quality-estimator | эстиматор качества изображения
--enable-image-color-type-estimator | эстиматор типа цвета по лицу
--enable-face-natural-light-estimator | эстиматор естественности освещения
--enable-eyes-estimator | эстиматор глаз
--enable-gaze-estimator | эстиматор направления взгляда
--enable-mouth-attributes-estimator | эстиматор атрибутов рта
--enable-emotions-estimator | эстиматор эмоций
--enable-mask-estimator | эстиматор маски
--enable-glasses-estimator | эстиматор очков
--enable-eyebrow-expression-estimator | эстиматор бровей
--enable-red-eyes-estimator | эстиматор красных глаз
--enable-headwear-estimator | эстиматор головного убора
--enable-basic-attributes-estimator | эстиматор базовых атрибутов
--enable-face-descriptor-estimator | эстиматор извлечения биометрического шаблона лица
--enable-body-descriptor-estimator | эстиматор извлечения биометрического шаблона тела
--enable-body-attributes-estimator | эстиматор атрибутов тел
--enable-people-count-estimator | эстиматор количества людей
--enable-deepfake-estimator | эстиматор Deepfake

> См. подробную информацию включении и выключении определенных эстиматоров в разделе "Включение/отключение некоторых эстиматоров и детекторов" руководства администратора.

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

    chown -R 1001:0 /var/lib/luna/current/<neural_network_name>.plan

Пример команды запуска контейнера Remote SDK с монтированием нейронных сетей для детекции лиц и извлечения биометрических шаблонов лиц:

    docker run \
    --env=CONFIGURATOR_HOST=127.0.0.1 \
    --env=CONFIGURATOR_PORT=5070 \
    --env=PORT=5220 \
    --env=WORKER_COUNT=1 \
    --env=RELOAD_CONFIG=1 \
    --env=RELOAD_CONFIG_INTERVAL=10 \
    --env=EXTEND_CMD="--enable-all-estimators-by-default=0 --enable-face-detector=1 --enable-face-descriptor-estimator=1" \
    -v /var/lib/luna/current/cnndescriptor_59.conf:/srv/fsdk/data/cnndescriptor_59.conf \
    -v /var/lib/luna/current/cnn59b_cpu-avx2.plan:/srv/fsdk/data/cnn59b_cpu-avx2.plan \
    -v /var/lib/luna/current/FaceDet_v3_a1_cpu-avx2.plan:/srv/fsdk/data/FaceDet_v3_a1_cpu-avx2.plan \
    -v /var/lib/luna/current/FaceDet_v3_redetect_v3_cpu-avx2.plan:/srv/fsdk/data/FaceDet_v3_redetect_v3_cpu-avx2.plan \
    -v /var/lib/luna/current/slnet_v3_cpu-avx2.plan:/srv/fsdk/data/slnet_v3_cpu-avx2.plan \
    -v /var/lib/luna/current/LNet_precise_v2_cpu-avx2.plan:/srv/fsdk/data/LNet_precise_v2_cpu-avx2.plan \
    -v /etc/localtime:/etc/localtime:ro \
    -v /tmp/logs/remote-sdk:/srv/logs \
    --network=host \
    --name=luna-remote-sdk \
    --restart=always \
    --detach=true \
    dockerhub.visionlabs.ru/luna/luna-remote-sdk:v.0.28.0

## Handlers

Примечание. Если вы не собираетесь использовать сервис Handlers, не запускайте этот контейнер и отключите использование сервиса. См. раздел "Выбор сервисов".

### Запуск контейнера Handlers

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

> Приведенная ниже команда является примером запуска сервиса Handlers для версии LUNA PLATFORM v.5.137.0. При миграции на версию LUNA PLATFORM, отличную от v.5.137.0, замените тег образа Handlers на соответствующий целевой версии, для которой была выполнена подготовка окружения ранее.

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

## Tasks

Примечание. Если вы не собираетесь использовать сервис Tasks, не запускайте контейнер Tasks и контейнер Tasks Worker. Отключите сервис Tasks, для этого см. раздел "Выбор сервисов".

### Запуск контейнеров Tasks и Tasks Worker

Образ сервиса Tasks включает в себя сервисы Tasks и Tasks Worker ("рабочие процессы сервиса Tasks"). Они оба должны быть запущены.

> Если необходимо использовать задачу Estimator с использованием сетевого диска, то необходимо предварительно смонтировать директорию с изображениями с сетевого диска в специальные директории контейнеров Tasks и Tasks Worker. См. подробную информацию в разделе "Задача Estimator" в руководстве администратора.

#### Запуск контейнера Tasks worker

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

> Приведенная ниже команда является примером запуска сервиса Tasks worker для версии LUNA PLATFORM v.5.137.0. При миграции на версию LUNA PLATFORM, отличную от v.5.137.0, замените тег образа Tasks worker на соответствующий целевой версии, для которой была выполнена подготовка окружения ранее.

    docker run \
    --env=CONFIGURATOR_HOST=127.0.0.1 \
    --env=CONFIGURATOR_PORT=5070 \
    --env=PORT=5051 \
    --env=WORKER_COUNT=1 \
    --env=RELOAD_CONFIG=1 \
    --env=RELOAD_CONFIG_INTERVAL=10 \
    --env=SERVICE_TYPE="tasks_worker" \
    -v /etc/localtime:/etc/localtime:ro \
    -v /tmp/logs/tasks-worker:/srv/logs \
    --name=luna-tasks-worker \
    --restart=always \
    --detach=true \
    --network=host \
    dockerhub.visionlabs.ru/luna/luna-tasks:v.3.29.18

#### Запуск контейнера Tasks

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

> Приведенная ниже команда является примером запуска сервиса Tasks для версии LUNA PLATFORM v.5.137.0. При миграции на версию LUNA PLATFORM, отличную от v.5.137.0, замените тег образа Tasks на соответствующий целевой версии, для которой была выполнена подготовка окружения ранее.

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

## Sender

### Запуск контейнера Sender

Примечание. Если вы не собираетесь использовать сервис Sender, не запускайте этот контейнер и отключите использование сервиса. См. раздел "Выбор сервисов".

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

> Приведенная ниже команда является примером запуска сервиса Sender для версии LUNA PLATFORM v.5.137.0. При миграции на версию LUNA PLATFORM, отличную от v.5.137.0, замените тег образа Sender на соответствующий целевой версии, для которой была выполнена подготовка окружения ранее.

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

## Streams Retranslator

### Запуск контейнера Streams Retranslator

Примечание. Обратите внимание, что сервис Streams Retranslator отключен по умолчанию. Чтобы запуск не приводил к ошибке, подготовьте окружение и пропишите его включение в соответствии с разделом "Выбор сервисов".

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

> Приведенная ниже команда является примером запуска сервиса Streams Retranslator для версии LUNA PLATFORM v.5.137.0. При миграции на версию LUNA PLATFORM, отличную от v.5.137.0, замените тег образа Streams Retranslator на соответствующий целевой версии, для которой была выполнена подготовка окружения ранее.

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

Обратите внимание, что сервис использует следующие порты:

- Порт 8554 — используется для обработки RTSP-потоков. Этот порт необходим, чтобы контейнер мог принимать видеопотоки RTSP от различных источников (камер, видеофайлов и т. д.).
- Порт 8888 — используется для отдачи HLS-потока для GUI. Этот порт необходим для того, чтобы предоставлять HLS-потоки клиентам, которые смогут отображать видео через HTTP.

Убедитесь, что вышеописанные порты не заняты или переопредите их при запуске с пользовательским сетевым интерфейсом.

Примечание. Обратите внимание, что порт для отдачи HLS-потока также можно заменить в настройке "EXTERNAL_LUNA_STREAMS_HLS_RETRANSMISSION_ADDRESS" для удобства.

## Сервисы видеоаналитики

Примечание. Обратите внимание, что видеосервисы Video Manager и Video Agent отключены по умолчанию. Чтобы запуск не приводил к ошибке, подготовьте окружение и пропишите их включение в соответствии с разделом "Выбор сервисов".

### Запуск контейнера Video Manager

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

> Приведенная ниже команда является примером запуска сервиса Video Manager для версии LUNA PLATFORM v.5.137.0. При миграции на версию LUNA PLATFORM, отличную от v.5.137.0, замените тег образа Video Manager на соответствующий целевой версии, для которой была выполнена подготовка окружения ранее.

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

### Смена модели нейронной сети для извлечения биометрических шаблонов

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

Если выполняется обновление с версии, где были удалены нейронные сети, а в предыдущей сборке в настройках "DEFAULT_FACE_DESCRIPTOR_VERSION" или "DEFAULT_HUMAN_DESCRIPTOR_VERSION" была указана какая-то из удаленных моделей, то сервис не запустится, если не выполнить одно из нижеперечисленных действий:

- запросить у специалистов VisionLabs старую модель нейронной сети и перенести её в новый контейнер
- перейти на новую версию нейронной сети, предварительно выполнив задачу Additional Extraction для повторного извлечения существующих БШ с использованием новой версии нейронной сети для их дальнейшего использования
- перейти на новую версию нейронной сети, прекратив использование старых биометрических шаблонов

См. подробную информацию в разделе "Подготовка к смене версии нейронной сети".

### Запуск контейнера Video Agent

Вы можете запустить сервис Video Agent, используя CPU (задано по умолчанию) или GPU.

> По умолчанию сервис Video Agent запускается со всеми включенными эстиматорами и детекторами. При необходимости можно отключить использование некоторых эстиматоров или детекторов при запуске контейнера Video Agent. Отключение ненужных эстиматоров позволяет экономить оперативную память или память GPU, поскольку при старте сервиса Video Agent выполняется проверка возможности выполнения указанных оценок и загрузка нейронных сетей в память. При отключении эстиматора или детектора можно также удалить его нейронную сеть из контейнера Video Agent. См. подробную информацию в разделе "Включение/отключение некоторых эстиматоров и детекторов" руководства администратора.

Запустите сервис Video Agent, используя одну из следующих команд в соответствии с используемым процессором.

#### Запуск Video Agent с использованием CPU

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

> Приведенная ниже команда является примером запуска сервиса Video Agent для версии LUNA PLATFORM v.5.137.0. При миграции на версию LUNA PLATFORM, отличную от v.5.137.0, замените тег образа Video Agent на соответствующий целевой версии, для которой была выполнена подготовка окружения ранее.

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

#### Запуск Video Agent с использованием GPU

Сервис Video Agent не использует GPU по умолчанию. Если вы собираетесь использовать GPU, то следует включить его использование для сервиса Video Agent в сервисе Configurator.

Если необходимо использовать GPU сразу для всех эстиматоров и детекторов, то необходимо использовать параметр "global_device_class" в секции "LUNA_VIDEO_AGENT_RUNTIME_SETTINGS". Все эстиматоры и детекторы будут использовать значение данного параметра, если в параметре "device_class" их собственных настроек выставлено значение "global" (по умолчанию).

Если необходимо использовать GPU для определенного эстиматора или детектора, то необходимо использовать параметр "device_class" в секциях вида "LUNA_VIDEO_AGENT_estimator-or-detector-name_SETTINGS.runtime_settings".

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

Используйте следующую команду для запуска сервиса Video Agent с помощью GPU:

> Приведенная ниже команда является примером запуска сервиса Video Agent для версии LUNA PLATFORM v.5.137.0. При миграции на версию LUNA PLATFORM, отличную от v.5.137.0, замените тег образа Video Agent на соответствующий целевой версии, для которой была выполнена подготовка окружения ранее.

    docker run \
    --env=CONFIGURATOR_HOST=127.0.0.1 \
    --env=CONFIGURATOR_PORT=5070 \
    --env=PORT=5240 \
    --env=WORKER_COUNT=1 \
    --env=RELOAD_CONFIG=1 \
    --env=RELOAD_CONFIG_INTERVAL=10 \
    --gpus device=0 \
    -v /etc/localtime:/etc/localtime:ro \
    -v /tmp/logs/video-agent:/srv/logs \
    --name=luna-video-agent \
    --restart=always \
    --detach=true \
    --network=host \
    dockerhub.visionlabs.ru/luna/luna-video-agent:v.1.21.0

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

## API

### Запуск контейнера API

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

> Приведенная ниже команда является примером запуска сервиса API для версии LUNA PLATFORM v.5.137.0. При миграции на версию LUNA PLATFORM, отличную от v.5.137.0, замените тег образа API на соответствующий целевой версии, для которой была выполнена подготовка окружения ранее.

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

> См. пример команды для создания нового аккаунта в разделе "Создание аккаунта".

> Рекомендуется создать расписание для задачи очистки мусора, если оно не было ранее создано. См. пример команды в разделе "Создание расписания задачи GC".

## Admin

### Запуск контейнера Admin

Примечание. Если вы не собираетесь использовать сервис Admin, не запускайте этот контейнер.

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

> Приведенная ниже команда является примером запуска сервиса Admin для версии LUNA PLATFORM v.5.137.0. При миграции на версию LUNA PLATFORM, отличную от v.5.137.0, замените тег образа Admin на соответствующий целевой версии, для которой была выполнена подготовка окружения ранее.

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

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

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

- Использование ClickHouse в качестве альтернативы InfluxDB
- Миграция с InfluxDB на ClickHouse
- Создание аккаунта
- Создание расписания для задачи по очистке мусора
- Управление шифрованием биометрических шаблонов
- Визуализация монтиторинга и логов с помощью Grafanа
- Полезные команды для работы с Docker
- Описание параметров запуска сервисов LUNA PLATFORM и создания баз данных
- Действия по включению сохранения логов сервисов LP в файлы
- Настройка ротации логов Docker
- Задание пользовательских настроек InfluxDB
- Использование сервиса Python Matcher с сервисом Python Matcher Proxy

## Использование ClickHouse в качестве альтернативы InfluxDB

Ниже приведена команда по запуску контейнера ClickHouse. Дополнительную информацию см. в разделе "Мониторинг" в руководстве администратора.

Примечание. При необходимости можно использовать внешнюю БД Clickhouse. В таком случае можно пропустить команду ниже, однако вам придется задать пользовательские настройки для каждого сервиса LUNA PLATFORM.

Используйте команду `docker run` со следующими параметрами:

    docker run \
    -e CLICKHOUSE_USER=luna \
    -e CLICKHOUSE_PASSWORD=password \
    -v /var/lib/luna/clickhouse/data:/var/lib/clickhouse \
    -v /var/lib/luna/clickhouse/logs:/var/log/clickhouse-server \
    -v /var/lib/luna/current/extras/conf/clickhouse_config.xml:/etc/clickhouse-server/config.xml \
    --name=clickhouse \
    --network=host \
    --restart=always \
    --detach=true \
    --health-cmd="wget --no-verbose --tries=1 --spider http://localhost:8123/ping || exit 1" \
    dockerhub.visionlabs.ru/luna/clickhouse-server:v.25.4.0

> Обратите внимание, что по умолчанию логи ClickHouse сохраняются в файлы. Для этого примонтирована директория `/var/lib/luna/clickhouse/logs`.

## Миграция с InfluxDB на ClickHouse

Для перехода с InfluxDB на ClickHouse в уже развернутой LUNA PLATFORM и корректной подготовки окружения выполните приведенные ниже шаги.

> Важно! Переход не включает перенос накопленных данных из InfluxDB в ClickHouse.

1․ Запустите контейнер Clickhouse командой, приведенной выше.

2․ Откройте конфигурационный файл Storages:

    vi /var/lib/luna/current/extras/conf/storages_config.conf

и задайте в секции `LUNA_MONITORING` необходимые настройки для ClickHouse. Пример:

    STORAGE_TYPE = clickhouse
    SEND_DATA_FOR_MONITORING = 1
    HOST = 127.0.0.1
    PORT = 9000
    HTTP_PORT = 8123
    DB_USER = luna
    DB_PASSWORD = password
    DB_NAME = luna_monitoring
    USE_SSL = 0
    FLUSHING_PERIOD = 1

3․ Отредактируйте секцию "LUNA_MONITORING" в настройках LUNA PLATFORM, чтобы сообщить системе какую базу данных для мониторинга необходимо использовать во всех сервисах (кроме сервиса Configurator - см. п.4).

Загрузить настройку можно одним из способов:

- с помощью дамп-файла перед стартом LUNA PLATFORM:

    vi /var/lib/luna/current/extras/conf/platform_settings.json

- с помощью интерфейса сервиса Configurator после его непосредственного запуска. Для этого нужно перейти по адресу `http://<your_server_ip_adress>:5070/`, в поле "Setting name" ввести значение "LUNA_MONITORING", применить фильтры и задать значения в поле Value:

    {
        "storage_type": "clickhouse",
        "send_data_for_monitoring": 1,
        "use_ssl": 0,
        "flushing_period": 1,
        "host": "127.0.0.1",
        "port": 9000,
        "http_port": 8123,
        "db_user": "luna",
        "db_password": "password",
        "db_name": "luna_monitoring"
    }

4․ Поскольку настройки сервиса Configurator хранятся в его конфигурационном файле, для настройки мониторинга этого сервиса необходимо отредактировать монитируемый файл перед запуском контейнера:

    /var/lib/luna/current/example-docker/luna_configurator/configs/luna_configurator_postgres.conf

В файле найдите секцию "LUNA_MONITORING" и задайте необходимые параметры подключения к ClickHouse.

5․ Выполните команду подготовки всего окружения (включая мониторинг) в разделе "Команда миграции окружения".

## Создание аккаунта

Аккаунт создается с помощью HTTP-запроса к ресурсу "create account".

> Аккаунт также можно создать с помощью сервиса Admin. Данный способ требует наличия существующих логина и пароль (или логина и пароля по умолчанию) и позволяет создать аккаунты типа "admin". См. подробную информацию в разделе "Сервис Admin" руководства администратора.

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

- login — электронный адрес
- password — пароль
- account_type — тип аккаунта ("user" или "advanced_user")

Создайте аккаунт, используя свои аутентификационные данные.

Пример CURL-запроса к ресурсу "create account":

    curl --location --request POST 'http://127.0.0.1:5000/6/accounts' \
    --header 'Content-Type: application/json' \
    --data '{
      "login": "user@mail.com",
      "password": "password",
      "account_type": "user",
      "description": "description"
    }'

Необходимо заменить аутентификационные данные из примера на свои.

> См. подробную информацию об аккаунтах в разделе "Аккаунты и типы авторизации" руководства администратора.

> Для работы с токенами необходимо наличие аккаунта.

## Создание расписания задачи GC

Перед началом работы с LUNA PLATFORM можно создать расписание для задачи Garbage collection.

Для этого следует выполнить запрос "create tasks schedule" к сервису API, указав необходимые правила для расписания.

Пример команды создания расписания для аккаунта из раздела "Создание аккаунта", приведен ниже.

В примере задается расписание для задачи Garbage collection для событий старше 30 дней с удалением БО и исходных изображений. Задача будет повторяться один раз в сутки в 05:30 утра.

    curl --location --request POST 'http://127.0.0.1:5000/6/tasks/schedules' \
    --header 'Authorization: Basic dXNlckBtYWlsLmNvbTpwYXNzd29yZA==' \
    --header 'Content-Type: application/json' \
    --data '{
        "task": {
            "task_type": 4,
            "content": {
                "target": "events",
                "filters": {
                    "create_time__lt": "now-30d"
                },
                "remove_samples": true,
                "remove_image_origins": true
            }
        },
        "trigger": {"cron": "30 5 * * *", "cron_timezone": "utc"},
        "behaviour": {"start_immediately": false, "create_stopped": false}
    }'

При необходимости можно создать расписание без его автоматической активации. Для этого нужно указать параметр "create_stopped": "true". В таком случае после создания расписания его необходимо активировать вручную с помощью параметра "action" = "start" запроса "patch tasks schedule".

См. подробную информацию в разделе "Запуск задач по расписанию" руководства администратора.

## Управление шифрованием биометрических шаблонов

Примечание. См. подробную информацию в разделе "Шифрование биометрических шаблонов" в руководстве администратора.

Для обновления существующих биометрических шаблонов в базе данных Faces/Attributes/Events необходимо запустить скрипт `descriptors_encryption.py`. Этот скрипт предоставляет три варианта работы:

- Шифрование исходных биометрических шаблонов.
- Замена текущего ключа шифрования на новый.
- Дешифрование зашифрованных биометрических шаблонов.

Скрипт требует установки трех переменных окружения вне зависимости от выбранного варианта:

- `OLD_ENCRYPTION_KEY` (может быть пустым)
- `NEW_ENCRYPTION_KEY` (может быть пустым)
- `ENCRYPTION_ALGORITHM` (всегда обязателен и не может быть пустым)

Шифрование исходных биометрических шаблонов

Этот вариант позволяет зашифровать все биометрические шаблоны в базе данных, если они ранее не были зашифрованы. Уже зашифрованные биометрические шаблоны будут проигнорированы, поэтому скрипт можно запускать несколько раз. Для этого варианта необходимо заполнить переменную `NEW_ENCRYPTION_KEY` и оставить переменную `OLD_ENCRYPTION_KEY` пустой.

Замена текущего ключа шифрования на новый

Этот вариант предполагает, что шифрование уже было выполнено, и у вас есть текущий ключ шифрования, который вы хотите обновить. Уже зашифрованные биометрические шаблоны будут проигнорированы, поэтому скрипт можно запускать несколько раз. Необходимо указать обе переменные: `OLD_ENCRYPTION_KEY` и `NEW_ENCRYPTION_KEY`.

Дешифрование зашифрованных биометрических шаблонов

Этот вариант вернет биометрические шаблоны в их исходное состояние. Скрипт обработает только зашифрованные биометрические шаблоны и оставит неизменными оригинальные. Для выполнения этого варианта скрипта необходимо указать переменную `OLD_ENCRYPTION_KEY` и оставить переменную `NEW_ENCRYPTION_KEY` пустой.

#### Запуск скрипта миграции биометрических шаблонов

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

Для выполнения миграции необходимо выполнить скрипт `descriptors_encryption.py`, передав ему соответствующие аргументы. Список доступных аргументов приведен ниже:

- `--config` — Путь к файлу конфигурации.
- `--luna-config` — Адрес и версия API сервиса Configurator для получения настроек (например, "http://127.0.0.1:5070/1").
- `--chunk-size` — Размер пакета для обновления.
- `--LUNA_FACES_DB` — Тег для установки `LUNA_FACES_DB` для получения настроек из Configurator (только при миграции БД Faces).
- `--DATABASE_NUMBER` — Тег для установки `DATABASE_NUMBER` для получения настроек из Configurator.
- `--LUNA_ATTRIBUTES_DB` — Тег для установки `LUNA_ATTRIBUTES_DB` для получения настроек из Configurator (только при миграции БД Faces).
- `--LUNA_EVENTS_DB` — Тег для установки `LUNA_EVENTS_DB` для получения настроек из Configurator (только при миграции БД Events).
- `-v, --verbose` — Включение режима отладки.

Также необходимо передать соответствующие переменные окружения в команду запуска контейнера (см. выше).

Важно! Скрипт необходимо выполнять когда сервис остановлен, после миграции БД и перед запуском повторным запуском сервиса.

Пример команды выполнения миграции биометрических шаблонов в БД сервиса Faces:

    docker run \
    --env=OLD_ENCRYPTION_KEY=<your_old_encryption_key> \
    --env=NEW_ENCRYPTION_KEY=<your_new_encryption_key> \
    --env=ENCRYPTION_ALGORITHM=aes256-gcm \
    -v /etc/localtime:/etc/localtime:ro \
    -v /tmp/logs/faces:/srv/logs \
    --rm \
    --network=host \
    dockerhub.visionlabs.ru/luna/luna-faces:v.4.16.31 \
    python3 ./base_scripts/descriptors_encryption.py --luna-config=http://127.0.0.1:5070/1

## Визуализация монтиторинга и логов с помощью Grafana

Визуализация мониторинга выполняется за счет сервиса LUNA Dashboards, который содержит в себе платформу для визуализации данных мониторинга Grafana с настроенными дашбордами LUNA PLATFORM.

> При необходимости можно отдельно установить настроенные дашборды для Grafana. См. дополнительную информацию в разделе "LUNA Dashboards" в руководстве администратора.

Вместе с Grafana можно использовать систему агрегации логов Grafana Loki, позволяющую гибко работать с логами LUNA PLATFORM. Для доставки логов LUNA PLATFORM в Grafana Loki используется агент Promtail (дополнительную информацию см. в разделе "Grafana Loki" в руководстве администратора).

### LUNA Dashboards

Примечание. Для работы с Grafana необходимо использовать InfluxDB версии 2.

Примечание. Перед обновлением убедитесь, что старый контейнер LUNA Dashboards удален.

#### Запуск контейнера LUNA Dashboards

Используйте команду `docker run` со следующими параметрами для запуска LUNA Dashboards:

    docker run \
    --restart=always \
    --detach=true \
    --network=host \
    --name=grafana \
    -v /etc/localtime:/etc/localtime:ro \
    dockerhub.visionlabs.ru/luna/luna-dashboards:v.0.1.7

Для использования веб-интерфейса Grafana нужно перейти по адресу "http://IP_ADDRESS:3000", при условии, что контейнеры LUNA Dashboards и InfluxDB были запущены.

### Grafana Loki

Примечание. Для запуска Grafana Loki требуется наличие запущенного сервиса LUNA Dashboards.

Примечание. Перед обновлением убедитесь, что старые контейнеры Grafana Loki и Promtail удалены.

#### Запуск контейнера Grafana Loki

Используйте команду `docker run` со следующими параметрами для запуска Grafana Loki:

    docker run \
    --name=loki \
    --restart=always \
    --detach=true \
    --network=host \
    -v /etc/localtime:/etc/localtime:ro \
    dockerhub.visionlabs.ru/luna/loki:2.7.1

#### Запуск контейнера Promtail

Используйте команду `docker run` со следующими параметрами для запуска Promtail:

    docker run \
    -v /var/lib/luna/current/example-docker/logging/promtail.yml:/etc/promtail/luna.yml \
    -v /var/lib/docker/containers:/var/lib/docker/containers \
    -v /etc/localtime:/etc/localtime:ro \
    --name=promtail \
    --restart=always \
    --detach=true \
    --network=host \
    dockerhub.visionlabs.ru/luna/promtail:2.7.1 \
    -config.file=/etc/promtail/luna.yml -client.url=http://127.0.0.1:3100/loki/api/v1/push -client.external-labels=job=containerlogs,pipeline_id=,job_id=,version=

`-v /var/lib/luna/current/example-docker/logging/promtail.yml:/etc/promtail/luna.yml` — монтирование конфигурационного файла в контейнер Promtail

`-config.file=/etc/promtail/luna.yml` — флаг с адресом конфигурационного файла

`-client.url=http://127.0.0.1:3100/loki/api/v1/push` — флаг с адресом развернутой Grafana Loki

`-client.external-labels=job=containerlogs,pipeline_id=,job_id=,version=` — статические метки для добавления ко всем логам, отправляемым в Grafana Loki

## Команды 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 images`
- найдите требуемый образ, например dockerhub.visionlabs.ru/luna/luna-image-store
- скопируйте соответствующий ID образа из IMAGE ID, например, "61860d036d8c"
- укажите его в команде удаления:

    docker rmi -f 61860d036d8c

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

    docker rmi -f $(docker images -q)

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

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

    docker stop <container_name>

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

    docker stop $(docker ps -a -q)

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

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

- запустите команду "docker ps"
- остановите контейнер (см. Остановка контейнера)
- найдите требуемый образ, например: `dockerhub.visionlabs.ru/luna/luna-image-store`
- скопируйте соответствующий ID контейнера из столбца CONTAINER ID, например, "23f555be8f3a"
- укажите его в команде удаления:

    docker container rm -f 23f555be8f3a

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

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

#### Проверка логов сервисов

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

    docker logs <container_name>

## Описание параметров запуска

При запуске Docker-контейнера для какого-либо из сервисов LUNA PLATFORM необходимо задать дополнительные параметры, требуемые для работы этого сервиса.

> Параметры, требуемые для конкретного контейнера, описаны в разделе, посвященном запуску этого контейнера.

Все параметры, приведенные в примере запуска сервиса, необходимы для корректного запуска и работы сервиса.

### Параметры запуска сервисов

Пример команды запуска контейнеров сервисов LP:

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

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

- `docker run` — команда для запуска выбранного образа в качестве нового контейнера.

- `dockerhub.visionlabs.ru/luna/<service-name>:<version>` — позволяет задать образ, требуемый для запуска контейнера.

> Ссылки для загрузки требуемых образов контейнера доступны в описании запуска соответствующего контейнера.

- `--network=host` — указывает, что отсутствует симуляция сети и используется серверная сеть. При необходимости изменить порт для сторонних контейнеров следует заменить эту строку на `-p 5440:5432`. Здесь первый порт `5440` — это локальный порт, а `5432` — это порт, используемый в контейнере. Пример приведен для PostgreSQL.

- `--env=` — задает переменные окружения, требуемые для запуска контейнера (см. раздел "Аргументы сервисов").

- `--name=<service_container_name>` — задает имя запускаемого контейнера. Имя должно быть уникальным. Если уже существует контейнер с таким же именем, произойдет ошибка.

- `--restart=always` — определяет политику перезагрузки. Daemon всегда перезагружает контейнер вне зависимости от кода завершения.

- `--detach=true` — позволяет запустить контейнер в фоновом режиме.

- `-v` — позволяет загружать содержимое серверной папки в объем контейнера. Таким образом содержимое синхронизируется. Загружаются следующие общие данные:

- `/etc/localtime:/etc/localtime:ro` — задает текущий часовой пояс, используемый системой контейнера.

- `/tmp/logs/<service>:/srv/logs/` — позволяет копировать папку с записями (логами) сервиса на сервер в директорию `/tmp/logs/<service>`. Директорию для хранения логов можно изменить при желании.

#### Аргументы сервисов

Каждый сервис в LUNA PLATFORM имеет свои собственные аргументы запуска. Эти аргументы можно передать через:

- задание флага для скрипта запуска (`run.py`) соответствующего сервиса
- установку отдельных переменных окружения (`--env`) в командной строке Docker

Например, с использованием флага `--help` можно получить список всех доступных аргументов. Пример передачи аргумента для сервиса API может выглядеть следующим образом:

    docker run --rm dockerhub.visionlabs.ru/luna/luna-api:v.7.1.1 python3 /srv/luna_api/run.py --help

Список основных аргументов:

Флаг в строке запуска | Переменная окружения | Описание
`--port` | `PORT` | Порт, на котором сервис будет ожидать подключений.
`--workers` | `WORKER_COUNT` | Количество "рабочих процессов" для сервиса.
`--log_suffix` | `LOG_SUFFIX` | Суффикс, добавляемый к именам файлов логов (при включенном параметре записи логов в файл).
`--config-reload` | `RELOAD_CONFIG` | Включение автоматической перезагрузки конфигураций. См. раздел "Автоматическая перезагрузка конфигураций" в руководстве администратора LUNA PLATFORM 5.
`--pulling-time` | `RELOAD_CONFIG_INTERVAL` | Период проверки конфигураций (по умолчанию 10 секунд). См. раздел "Автоматическая перезагрузка конфигураций" в руководстве администратора LUNA PLATFORM 5.
`--luna-config` | `CONFIGURATOR_HOST`, `CONFIGURATOR_PORT` | Адрес сервиса Configurator для загрузки настроек. Для `--luna-config` передается в формате `http://localhost:5070/1`. Для переменных окружения хост и порт задаются явно. Если аргумент не задан, то будет использован конфигурационный файл по умолчанию.
`--config` | Нет | Путь до конфигурационного файла с настройками сервиса.
`--<config_name>` | Нет | Тег указанной настройки в Configurator. При задании данной настройки будет использовано значение тегированной настройки. Пример: `--LUNA_MONITORING TAG_1`. | Примечание. Необходимо заранее присвоить тег соответствующим настройкам в Configurator. Примечание. Работает только с флагом `--luna-config`.
`--tls_cert` | Нет | Путь к SSL-сертификату для запуска сервиса с использованием протокола HTTPS.
`--tls_key` | Нет | Путь к SSL-закрытому ключу для запуска сервиса с использованием протокола HTTPS.
`--tls_key_pass` | Нет | Пароль для SSL-закрытого ключа для запуска сервиса с использованием протокола HTTPS.

> Перечень аргументов может отличаться в зависимости от сервиса.

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

Для переопределения настроек используется префикс `VL_SETTINGS`. Примеры:

- `--env=VL_SETTINGS.LUNA_MONITORING.SEND_DATA_FOR_MONITORING=0`. Использование переменной окружения из данного примера установит значение настройки "SEND_DATA_FOR_MONITORING" для секции "LUNA_MONITORING" равным "0".
- `--env=VL_SETTINGS.OTHER.STORAGE_TIME=LOCAL`. Для несоставных настроек (настроек, которые расположены в секции "OTHER" в конфигурационном файле) необходимо указать префикс "OTHER". Использование переменной окружения из данного примера установит значение настройки "STORAGE_TIME" (если сервис использует данную настройку) на значение "LOCAL".

Передача флагов с использованием переменной окружения

Флаги, для которых явно не выделена переменная окружения, можно передать с помощью переменной окружения `EXTEND_CMD`.

Например, можно передать тег настроек следующим способом:

    --env=EXTEND_CMD="--LUNA_MONITORING=TAG_1 --LUNA_EVENTS_DB=TAG_2"

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

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

- создать директории для логов на сервере;
- активировать запись логов и задать расположение хранения логов внутри контейнеров сервисов LP;
- настроить синхронизацию директорий логов в контейнере с логами на сервере с помощью аргумента `volume` при старте каждого контейнера.

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

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

    mkdir -p /tmp/logs/configurator /tmp/logs/image-store /tmp/logs/accounts /tmp/logs/faces /tmp/logs/licenses /tmp/logs/events /tmp/logs/python-matcher /tmp/logs/handlers /tmp/logs/remote-sdk /tmp/logs/tasks /tmp/logs/tasks-worker /tmp/logs/sender /tmp/logs/api /tmp/logs/admin /tmp/logs/luna-video-agent /tmp/logs/luna-video-manager /tmp/logs/luna-streams-retranslator

    chown -R 1001:0 /tmp/logs/configurator /tmp/logs/image-store /tmp/logs/accounts /tmp/logs/faces /tmp/logs/licenses /tmp/logs/events /tmp/logs/python-matcher /tmp/logs/handlers /tmp/logs/remote-sdk /tmp/logs/tasks /tmp/logs/tasks-worker /tmp/logs/sender /tmp/logs/api /tmp/logs/admin /tmp/logs/luna-video-agent /tmp/logs/luna-video-manager /tmp/logs/luna-streams-retranslator

Если необходимо использовать сервис Python Matcher Proxy, то нужно дополнительно создать директорию `/tmp/logs/python-matcher-proxy` и установить ей разрешения.

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

#### Активация записи логов сервисов LP

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

Автоматический способ (перед/после запуска Configurator)

Для обновления настроек ведения логов можно использовать файл настроек `logging.json`, предоставленный в комплекте поставки.

Выполните следующую команду после запуска сервиса Configurator:

    docker cp /var/lib/luna/current/extras/conf/logging.json luna-configurator:/srv/luna_configurator/used_dumps/logging.json

Обновите настройки записи логов с помощью команды Storages для загрузки дампа (`load_dump`) с аргументом `--dump-file`: `--dump-file=/srv/logging.json`, где "logging.json" - имя дамп-файла. См. подробную информацию в разделе "Команда load_dump" руководства по утилите Storages.

Ручной способ (после запуска Configurator)

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

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

#### Активация записи логов сервиса Configurator (перед/после запуска Configurator)

Настроек сервиса Configurator нет в пользовательском интерфейсе Configurator, они расположены в следующем файле:

    /var/lib/luna/current/example-docker/luna_configurator/configs/luna_configurator_postgres.conf

Следует изменить параметры логирования в этом файле перед запуском сервиса Configurator или перезапустить его после внесения изменений.

Задайте путь расположения логов в контейнере в параметре `FOLDER_WITH_LOGS = ./` файла. Например, `FOLDER_WITH_LOGS = /srv/logs`.

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

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

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

    -v <server_logs_folder>:<container_logs_folder> \

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

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

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

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

## Настройка ротации логов 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

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

### Задание пользовательских настроек InfluxDB

Для InfluxDB OSS 2 доступны следующие настройки:

    "send_data_for_monitoring": 1,
    "use_ssl": 0,
    "flushing_period": 1,
    "host": "127.0.0.1",
    "port": 8086,
    "organization": "<ORGANIZATION_NAME>",
    "token": "<TOKEN>",
    "bucket": "<BUCKET_NAME>",
    "version": <DB_VERSION>

Можно обновить настройки InfluxDB для сервисов LP в сервисе Configurator, выполнив следующие действия:

- откройте следующий файл:

    vi /var/lib/luna/current/extras/conf/influx2.json

- задайте необходимые данные;
- сохраните изменения;
- скопируйте файл в контейнер InfluxDB:

    docker cp /var/lib/luna/current/extras/conf/influx2.json luna-configurator:/srv/

- обновите настройки в сервисе Configurator с помощью команды Storages для загрузки дампа (`load_dump`) с аргументом `--dump-file`: `--dump-file=/srv/influx2.json`, где "influx2.json" - имя дамп-файла. См. подробную информацию в разделе "Команда load_dump" руководства по утилите Storages.

> Также можно вручную обновить настройки в пользовательском интерфейсе сервиса Configurator.

Настройки сервиса Configurator задаются отдельно.

- откройте файл с настройками Configurator:

    vi /var/lib/luna/current/example-docker/luna_configurator/configs/luna_configurator_postgres.conf

- задайте необходимые данные;
- сохраните изменения;
- перезапустите Configurator:

    docker restart luna-configurator

## Использование Python Matcher с Python Matcher Proxy

Как было сказано ранее, вместе с сервисом Python Matcher можно дополнительно использовать сервис Python Matcher Proxy, который будет перенаправлять запросы сравнения либо сервису Python Matcher, либо плагинам сравнения. Использование плагинов может значительно ускорить выполнение запросов на сравнение. Например, с помощью плагинов возможно организовать хранение необходимых для выполнения операций сравнения данных и дополнительных полей объектов в отдельном хранилище, что позволит ускорить доступ к данным по сравнению с использованием стандартной БД LUNA PLATFORM.

Для использования сервиса Python Matcher с Python Matcher Proxy необходимо дополнительно запустить соответствующий контейнер, а затем выставить определенную настройку в сервисе Configurator. Выполняйте нижеперечисленные действия только если собираетесь использовать плагины сравнения.

> См. описание и использование плагинов сравнения в руководстве администратора.

### Запуск контейнера Python Matcher Proxy

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

    docker run \
    --env=CONFIGURATOR_HOST=127.0.0.1 \
    --env=CONFIGURATOR_PORT=5070 \
    --env=PORT=5110 \
    --env=WORKER_COUNT=1 \
    --env=RELOAD_CONFIG=1 \
    --env=RELOAD_CONFIG_INTERVAL=10 \
    --env=SERVICE_TYPE="proxy" \
    -v /etc/localtime:/etc/localtime:ro \
    -v /tmp/logs/python-matcher-proxy:/srv/logs \
    --name=luna-python-matcher-proxy \
    --restart=always \
    --detach=true \
    --network=host \
    dockerhub.visionlabs.ru/luna/luna-python-matcher:v.1.21.1

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

    ADDITIONAL_SERVICES_USAGE = "luna_matcher_proxy":true