Глоссарий#
| Термин | Определение |
|---|---|
| Docker | Платформа для разработки, доставки и запуска контейнерных приложений. Позволяет создавать контейнеры, автоматизировать их запуск и развертывание, управляет жизненным циклом. Позволяет запускать множество контейнеров на одной хост-машине |
| Docker Compose | Позволяет разворачивать и настраивать несколько контейнеров одновременно |
| Идентификация | Процедура определения субъекта биометрических данных путем сравнения биометрических признаков, полученных от субъекта биометрических данных, со всеми эталонными биометрическими признаками (контрольными шаблонами), хранящимися в биометрической базе данных |
| Контейнер | Способ упаковать приложение и все его зависимости в единый образ. Этот образ запускается в изолированной среде, не влияющей на основную операционную систему. Контейнеры позволяют отделить приложение от инфраструктуры |
| Образ | Неизменяемый образ, из которого разворачивается контейнер. Набор файлов, необходимых для запуска и работы приложения на другом хосте |
| Программное обеспечение (ПО) | Программа или множество программ, используемых для управления компьютером |
| Система контроля управления доступом (СКУД) | Совокупность программно-аппаратных технических средств, направленных на контроль входа и выхода в помещение с целью обеспечения безопасности и регулирования посещения определенного объекта. Например, турникеты на входе в банки/офисные здания |
Введение#
Документ описывает процесс установки и настройки сервиса VisionLabs LUNA Access версии 2.19.0 (далее — Access), а также содержит аппаратные и программные требования к ПО.
Процесс настройки и установки необходимо выполнять под учетной записью суперпользователя (с root правами).
Системные требования#
Требования к программному обеспечению (Таблица 1).
Таблица 1. Требования к программному обеспечению
|
Ресурс |
Рекомендовано |
|---|---|
|
Операционная система (ОС) |
ОС, поддерживающие Docker (CentOS, RedOS и др.) |
|
Docker |
v.20.10 и новее |
|
Docker-compose |
v.1.29 и новее |
Требования к аппаратному обеспечению рабочей станции (Таблица 2).
Таблица 2. Требования к аппаратному обеспечению
| Ресурс | Рекомендовано |
|---|---|
| Процессор (CPU) | Intel/AMD x64 2,0 GHz |
| Оперативная память (RAM) | 4 ГБ и выше |
| Свободное место на диске (HDD/SSD) | 20 ГБ и выше |
Архитектура Access#
Общая схема работы#
Схема работы Access и описание представлены ниже (Рисунок 1) и (Таблица 3).
Таблица 3. Описание схемы Access.
| Компонент | Описание |
|---|---|
| Пользователи | Пользователь Access, занимающийся настройкой компонентов и отслеживание их работы. |
| Access | Совокупность программных средств управления, позволяющих реализовать совместную работу продуктов VisionLabs и различных систем контроля и управления доступом (СКУД). |
| Access UI | Графический интерфейс Access. |
| Access Backend | Backend Access, отвечающий за работу с внешними компонентами, взаимодействием с UI. |
| Access backend server | Набор библиотек, объединяющий модули Access и UI. |
| RabbitMQ | Брокер сообщений, обеспечивающий передачу событий между Access backend server и Worker. |
| Redis | Система хранения данных в виде структур для обеспечения работоспособности Access. |
| PersonStorage | Локальное хранилище, предназначенное для хранения связей между персонами СКУД и их биометрическими данными. Позволяет синхронизировать данные между системами контроля доступа, биометрическими системами (LP, КБС) и внешними сервисами. В хранилище содержатся: идентификатор сотрудника в СКУД, ФИО, номер карты и время последнего обновления фотографии. |
| JSON-хранилище | Файл settings.json для хранения настроек интеграций и учетных записей пользователей. |
| Worker | Сервис, обеспечивающий выполнение задач модулей в фоновом режиме. |
| Модуль «Пайплайн» | Модуль Access, обеспечивающий основную логику и взаимодействие модулей. |
| Модуль «Устройства» | Модуль Access, содержащий библиотеки для подключения внешних устройств к Access. |
| Модуль «Сервисы» | Модуль Access, содержащий библиотеки для подключения внешних сервисов к Access. |
| Модуль «Контроллеры» | Модуль Access, содержащий библиотеки для работы с внешними контроллерами и преобразователями. |
| Внешние устройства | Подключаемые камеры, терминалы и тепловизоры, передающие видеопоток для дальнейшей обработки. Полный список доступных устройств см. в Руководстве пользователя. |
| Внешние сервисы | СКУД, КБС или продукты VisionLabs, которые могут быть использованы в интеграции. Полный список доступных СКУД и продуктов VisionLabs см. в Руководстве пользователя. |
| Внешние контроллеры | Внешние контроллеры (например, преобразователи для контроллеров СКУД), используемые в интеграциях. |
Диаграммы последовательности работы Access#
Взаимодействие внутренних компонентов Access#
Взаимодействие и описание компонентов Access на примере типовой интеграции источник видеосигнала + LUNA PLATFORM 5 (LP5) + Sigur (Рисунок 2) и (Таблица 4).
Таблица 4. Описание диаграммы последовательности
| Шаг | Описание |
|---|---|
| (1) | Человек подошел к турникету с целью прохода, лицо человека зафиксировал терминал. |
| (2) | Терминал передал фото человека в модуль «Устройства» |
| (3) | Модуль устройства передает в модуль Пайплайны данные о лице для дальнейшей обработки. |
| (4) | Модуль Пайплайн обрабатывает фото согласно внутренним настройкам. |
| (5) | Модуль Пайплайн передает данные о проходе в модуль Сервис для дальнейшей обработки. |
| (6) | Модуль Сервис отправляет запрос во внешний сервис (LP5) на идентификацию лица. |
| (7) | Внешние сервис (LP5) производит идентификацию. |
| (8) | Внешние сервис (LP5) возвращает ответ о результате распознавания и идентификации лица. |
| (9) | Модуль Сервисы передает в модуль Пайплайн данные о распознавании. |
| (10) | Модуль Пайплайны возвращает ответ в Модуль устройство о результате распознавания. |
| (11) | Модуль Устройства возвращает данные о имени человека у терминала для отображения имени и сообщения об успешной идентификации на экране терминала |
| (12) | Модуль Пайплайны передает данные о распознавании в модуль Сервисы. |
| (13) | Модуль Сервисы передает данные о распознавании во Внешние сервис (Sigur) |
| (14) | Внешний сервис (Sigur) выполняет обработку результата распознавания согласно внутренним инструкциям. В случае успешного распознавания отправляет сигнал на открытие турникета. |
| (15) | Внешний сервис (Sigur) возвращает результат обработки в Модуль Сервисы. |
| (16) | Модуль Сервисы передает в модуль Пайплайн данные об обработке. |
| (17) | Модуль Пайплайны передает данные в Access backend server с помощью RabbitMQ. |
| (18) | Access backend server отправляет в Access UI данные для отображения результата прохода в разделе Логирование. |
Создание компонента#
Схема создания компонента в Access UI и описание (Рисунок 3) и (Таблица 5).
Таблица 5. Описание диаграммы последовательности
| Шаг | Описание |
|---|---|
| (1) | Пользователь заполняет данные нового объекта (устройства, сервиса, пайплайна или контроллера) в Access UI. |
| (2) | Access UI отправляет запрос на Access backend server на создание компонента. |
| (3) | Access backend server создает компонента и формирует задачу на проверку состояния подключенного компонента. |
| (4) | Access backend server отправляет задачу в RabbitMQ для постановки задачи в очередь. |
| (5) | RabbitMQ возвращает ответ о постановки задачи в очередь. |
| (6) | RabbitMQ отправляет запрос на проверку состояния компонента в соответствующий модуль (Устройства/Сервисы/Контроллеры), указанного в настройках компонента. |
| (7) | Модуль Устройства/Сервисы/Контроллеры перенаправляет запрос на проверку состояния во внешние устройство/сервис/контроллер. |
| (8) | Внешние устройство/сервис/контроллер возвращает ответ о состоянии активности. |
| (9) | Модуль Устройства/Сервисы/Контроллеры возвращает ответ о состоянии внешнего устройство/сервис/контроллер. |
| (10) | (Alt создание пайплайна) RabbitMQ отправляет запрос в Модуль Пайплайн на проверку состояния компонентов, указанных в настройках пайплайна. |
| (11) | (Alt создание пайплайна) Модуль Пайплайн перенаправляет запрос на проверку состояния в модули Устройства/Сервисы/Контроллеры, которые указаны в настройках пайплайна. |
| (12) | (Alt создание пайплайна) Модули Устройства/Сервисы/Контроллеры возвращают ответ о доступности компонентов. |
| (13) | (Alt создание пайплайна) Модуль Пайплайны возвращает ответ о состоянии. |
| (14) | RabbitMQ возвращает результат задачи в Access backend server. |
| (15) | Access backend server сохраняет данные в JSON-хранилище. |
| (16) | Access backend server отправляет в Access UI данные для отображения результата создания компонента. |
| (17) | Access UI отображает созданные компонент с активным статусом для пользователя. |
Автоматический мониторинг#
Схема автоматического мониторинга состояния компонентов и описание (Рисунок 4) и (Таблица 6).
Таблица 6. Описание диаграммы последовательности
| Шаг | Описание |
|---|---|
| (1) | Входной точкой для этого процесса является создание любого компонента. |
| (2) | Access backend server передает данные о созданном компоненте в Redis. |
| (3) | Redis передает данные о созданном компоненте в Worker, который каждую минуту отправляет запрос в подключенные Модули для проверки состояния внешних устройств. |
| (4) | Модули перенаправляют запрос на проверку подключения к внешним компонентам. |
| (5) | Внешние компоненты возвращают ответ о состоянии подключения, если ответ на запрос не был получен, то модуль считает подключенное устройство отключенным. |
| (6) | Модуль записывает данные о состоянии компонента в Redis. |
| (7) | Access backend server получает данные о состоянии компонентов из Redis. |
| (8) | Access UI запрашивает статус активности компонента у Access backend server |
| (9) | Access UI обновляет индикатор статуса активности компонента. |
Лицензирование#
Для работы Access не требуется лицензия.
Лицензированию могут быть подвержены внешние системы и сервисы, которые используются в интеграции. Лицензия в этом случае приобретается отдельно у правообладателя.
Установка Access#
Данный раздел описывает установку и использование Docker и Docker Compose для развертывания Access.
Docker и Docker Compose не входят в дистрибутив Access.
Процесс настройки и установки необходимо выполнять под учетной записью суперпользователя (с root правами).
В руководстве приведены команды для CentOS.
Подготовка к установке#
Создайте главную директорию, где в дальнейшем будут все версии продукта и перейдите в нее:
sudo mkdir -p -v /var/lib/vl-access-2/
sudo chown $(whoami) /var/lib/vl-access-2/
cd /var/lib/vl-access-2/
Установка Docker и Docker Compose#
Используйте официальную инструкцию для установки Docker Engine и Docker Compose для используемой ОС.
Перед запуском Access необходимо убедиться что Docker запущен и активен.
1. Запустите Docker:
systemctl start docker
systemctl enable docker
2. Проверьте Docker:
systemctl status docker
Ответ должен содержать статус Active (running).
3. Проверьте установку Docker Compose:
docker-compose --version
В ответе должна быть указана версия docker-compose, например:
docker-compose version 1.29.2, build 5becea4.
Подготовка окружения и распаковка дистрибутива#
Дистрибутив представляет собой архив вида «vl-access-2-v2.19.0».
Ссылку для скачивания дистрибутива необходимо запросить у представителя VisionLabs.
Архив содержит компоненты, необходимые для установки и эксплуатации Access.
Архив не включает зависимости, которые входят в стандартную поставку ОС и могут быть загружены из открытых источников.
Запуск Access осуществляется из Docker образа.
Для запуска необходимо выполнить действия:
1. Переместите скачанный архив vl-access-2-v2.19.0.zip в директорию /var/lib/vl-access-2.
2. Установите архиватор unzip, если он не установлен.
yum install unzip
Команда установки может отличаться в зависимости от менеджера пакетов в ОС, например в Ubuntu/Debian используется
apt, а в AlmaLinuxdnf.
3. Распакуйте файлы дистрибутива:
unzip vl-access-2-v2.19.0.zip -d vl-access-2-v2.19.0
Дистрибутив содержит (Таблица 7):
Таблица 7. Состав дистрибутива
| Имя директории | Описание |
|---|---|
| /db | Набор файлов для работы с JSON-хранилищем (создается автоматически после запуска Access). |
| /docs | Директория содержащая документацию по Access. |
| .env | Конфигурационный файл для настройки переменных среды. |
| CHANGELOG.md | Полное описание изменений версий. |
| docker-compose.yml | Файл содержащий команды запуска docker контейнеров. |
| conf.yml | Файл содержащий конфигурации для сервиса log-agent. |
| README_FOR_ENGINEERS.md | Краткое руководство по запуску для инженеров внедрения. |
| /scripts | Директория с полезными скриптами см. Руководство администратора. |
| vl-access-2-images-v2.19.0.tar.gz | Дистрибутив Access, при выборе архива с образом. |
| /tls | Директория для хранения сертификатов взаимодействия с внешними системами в формате .pem (создается автоматически после запуска Access). |
4. Перейдите в директорию:
cd vl-access-2-v2.19.0
При работе с дистрибутивом без образа необходимо скачать образ при запуске, см. раздел Запуск
Настройка Access#
Произведите настройку с помощью файла .env (Таблица 8):
nano .env
Таблица 8. Описание параметров env
|
Параметр |
Описание |
Значения по умолчанию |
|
Параметры FastAPI и Worker |
||
|
DEBUG |
Режим отладки Access - вывод в логах ОС и в интерфейсе информации типа Debug о работе Access
|
0 |
|
VL_ACCESS_TAG |
Тэг Access, берется из внутренних настроек. Не рекомендуется изменять этот параметр. |
2.19.0 | |
|
LOG_DB_HOST |
Имя хоста для хранение логов. |
log-storage |
|
LOG_DB_PORT |
Порт для подключения к log-storage. |
27017 |
|
LOG_DB_NAME |
Имя БД логов. |
logs |
|
LOG_DB_USER |
Имя пользователя БД логов. |
username |
|
LOG_DB_PASSWORD |
Пароль пользователя БД логов. |
password |
|
C_FORCE_ROOT |
Принудительный запуск Celery от имени root пользователя. |
true |
|
WORKER_CONCURRENCY |
Максимальное кол-во процессов у компонента Worker, которые могут обрабатываться параллельно. Задается исходя от нагрузки на систему. |
16 |
|
WORKERS_AMOUNT |
Количество инстансов worker (необходим для увеличения количества обрабатываемых событий, используется на высоконагруженных объектах). |
1 |
|
Параметры Redis |
||
|
REDIS_HOST |
Имя хоста Redis. |
redis |
|
REDIS_PORT |
Порт, на котором развернут Redis. |
6379 |
|
REDIS_DB_BASE |
Номер основной базы данных Redis. |
0 |
|
REDIS_DB_PERSONS |
Номер базы данных Redis, хранящей информацию о людях. |
1 |
|
REDIS_DB_CELERY_BEAT |
Номер базы данных Redis для хранения информации о периодических задачах сервиса worker-beat. |
2 |
|
Параметры Rabbit |
||
|
RABBITMQ |
Название брокера очередей сообщений. Access поддерживает только RabbitMQ. |
rabbitmq |
|
RABBITMQ_DEFAULT_USER |
Логин пользователя для подключения к RabbitMQ внешних систем |
guest |
|
RABBITMQ_DEFAULT_PASS |
Пароль для подключения к RabbitMQ внешних систем |
guest |
|
RABBITMQ_PROTOCOL |
Тип протокола RabbitMQ. Поддерживается только AMQP. |
amqp |
|
RABBITMQ_URL |
Адрес для подключения к RabbitMQ |
|
|
CELERY_BROKER_URL |
Адрес для подключения к брокеру Celery |
|
|
Параметры подключения FrontEnd |
||
|
BACKEND_HOST |
Хост сервиса fastapi. Указать IP адрес, если frontend и fastapi запущены на разных машинах |
fastapi |
|
BACKEND_PORT |
Порт для подключения к backend Access. |
9091 |
Запуск Access#
1. Импортируйте образ:
1.1. При наличии образа в архиве
docker load -i vl-access-2-images-v2.19.0.tar.gz
1.2. Без образа:
docker login dockerhub.visionlabs.ru
docker-compose pull
docker logout dockerhub.visionlabs.ru
2. Добавьте symlink в директорию /var/lib/vl-access-2/, которая ссылается на последнюю версию продукта:
ln -s /var/lib/vl-access-2-v2.19.0 /var/lib/vl-access-2/current
3. Запустите Access:
docker-compose up -d
Контейнеры Access поставляются с предустановленными утилитами, необходимыми для работы с образом.
4. Проверьте доступность Access по адресу: http://<IP_address>:9092/.
Для доступа к интерфейсу Access создайте администратора (см. раздел Управление учетными записями).
Управление учетными записями#
Добавление учетной записи#
В Access поддерживается создание учетной записи с ролью Администратора. Более подробно о ролях и доступах см. в Руководстве пользователя раздел Роли в сервисе.
1. Запустите скрипт создания администратора:
docker-compose exec fastapi python backend/manage.py createadmin
2. Следуйте указаниям консоли:
(venv) [root@localhost vl-access-2]# docker-compose exec fastapi python backend/manage.py createadmin
Admin creation:
Enter your login: admin
Enter your password:
Confirm your password
Admin user created successfully
Логин администратора должен быть уникальным
3. Проверьте корректность создания администратора – войдите в созданную учетную запись http://<IP_address>:9092/.
Просмотр списка учетных записей#
1. Выполните команду просмотра списка созданных администраторов:
docker-compose exec fastapi python backend/manage.py listadmin
В консоли отобразится список администраторов:
(venv) [root@localhost vl-access-2]# docker-compose exec fastapi python backend/manage.py listadmin
admin
admin2
Удаление учетной записи#
Получите информацию о логине необходимого аккаунта для удаления с помощью команды просмотра.
1. Выполните команду для удаления администратора:
docker-compose exec fastapi python backend/manage.py deleteadmin
2. Введите логин администратора.
В ответе на запрос консоль выдаст сообщение об успешном удалении:
(venv) [root@localhost vl-access-2]# docker-compose exec fastapi python backend/manage.py deleteadmin
Admin deletion:
Enter your login: admin2
Admin was deleted successfully.
Скрипты#
Скрипт загрузки образов#
Скрипт scripts/save_images.sh позволяет выгрузить docker образы по путям, указанным в docker-compose.yml в формат tar.gz (Таблица 9).
Выгрузка может понадобиться для сохранения образов на носитель и перенос на объект при отсутствии/плохом интернет-соединении.
Запуск скрипта:
./save_images.sh -f <path_to/docker-compose.yml> -d <local_path_to/docker_images> -u <dockerhub_username> -p <dockerhub_password>
Таблица 9. Доступные команды:
| Ключ | Описание |
|---|---|
| -h | Справка по командам |
| -f | Путь до и имя docker-compose.yml. Обязательный |
| -d | Путь до и директория сохранения образа. Обязательный |
| -o | Имя образа. |
| -u | Логин для подключения к dockerhub.visionlabs.ru. Обязательный |
| -p | Пароль для подключения к dockerhub.visionlabs.ru. Обязательный |
Итоговый архив необходимо поместить в директорию Access и произвести запуск по инструкции.
Обновление Access#
1. Экспортируйте файл настроек старой версии продукта, для этого нажмите на стрелку справа от аватара пользователя и кнопку Экспортировать настройки (Рисунок 5).
Загрузится файл со всеми настройками компонентов в формате json.
2. Сохраните конфигурационный файл .env старой версии, расположенный по пути /var/lib/vl-access-2/vl-access-2-v2.*.*/.env, где v2.*.* - номер версии продукта.
3. Для обновления Access необходимо выполнить Удаление → Распаковку новой версии дистрибутива → Настройку параметров env (перенесите необходимые значения переменных из сохраненного конфигурационного файла .env старой версии в новый файл) и повторную Установку и запуск Access.
4. После установки новой версии перейдите в UI Access, нажмите на стрелку справа от аватара пользователя и кнопку Импортировать настройки (Рисунок 6).
В открывшемся окне выберете ранее сохраненный json файл, введите название настройки и нажмите кнопку Загрузить (Рисунок 7).
При попытке импортировать файл настроек прежней версии Access в новую могут возникнуть ошибки обратной совместимости компонентов. В случае возникновения проблем обратитесь в техническую поддержку VisionLabs.
Удаление Access#
Удаление Access выполняется путем остановки и удаления контейнеров Docker.
Выполните следующие действия:
1. Перейдите в директорию с файлом docker-compose.yml. Остановите запущенные контейнеры:
docker-compose down
2. Удалите директорию установленного Сервиса:
rm -rf vl-access-2-v2.*.*
Сбор и анализ логов#
Инструкция по сбору логов#
Сбор логов необходим для:
- Предоставления информации технической поддержки VisionLabs для составления тикета на поиск проблемы;
- Самостоятельного поиска ошибок.
Для получения полной информации о нештатной ситуации при работе Access необходимо подготовить и передать информацию представителю VisionLabs о:
- Файле настроек;
- Логах контейнеров;
- Файле .env;
- Информацию о рабочем окружении;
- Скриншоты UI (только в случаях ошибок UI).
Файл настроек#
Файл настроек – JSON файл, который содержит информацию об используемых компонентах в Access.
Файл настроек становится доступен для экспорта после создания в Access компонента.
1. После создания любого из 4-х типов компонентов необходимо нажать на справа от аватара пользователя и нажать кнопку "Экспортировать настройки" (Рисунок 8).
При этом произойдет загрузка JSON файла с именем vl-access_setting.json.
2. Найдите JSON на локальной машине.
Для Linux-систем по умолчанию /home/<username>/Downloads.
3. Переименуйте файл настроек в зависимости от основных используемых сервисов и устройств, например: bolid+gate+fast.json.
Логи контейнеров#
Файлы логов контейнеров содержат всю информацию о работе Access от момента запуска (docker compose up) до создания логов, при условии активности контейнеров.
1. Откройте в консоли директорию Access.
Для самопроверки удостоверьтесь, что в этой директории есть /db и docker-compose.yml (Рисунок 9).
2. Выполните команды для записи логов контейнеров worker и fastapi:
В названии лог файла должны быть указаны названия основных компонентов.
docker-compose logs worker &> worker_<components_names>.log
docker-compose logs fastapi &> fastapi_<components_names>.log
3. Проверьте наличие созданных файлов .log в той же директории.
Файл .env#
Файл .env находится в корневой папке дистрибутива (там же где docker-compose.yml), но может не отображаться в UI по умолчанию.
Найдите файл .env для передачи представителю VisionLabs.
Информация о рабочем окружении#
Сверьте аппаратные и программные свойства рабочей машины с минимальными (см. Требования).
Для проверки требований выполните команды просмотра:
1. Версия ОС локальной машины:
hostnamectl
2. Версия docker/docker-compose:
docker --version
docker-compose --version
3. Информация о аппаратных характеристиках:
cat /proc/cpuinfo | grep "model name"
4. Объем свободной оперативной памяти:
free -h
5. Объем свободного дискового пространства:
df -h
Скриншоты UI#
Скриншоты необходимы только для поиска проблемы с UI:
- неадекватно отображается статус is_alive компонента,
- отображается компонент, которого не должно быть (удалили, но он "вернулся"),
- появилась нечитаемая ошибка,
- в списке в LUNA Clementine дубли - на скриншот должны попасть даты создания лиц в списке,
- есть расхождения с событиями в LUNA Clementine, неверный тег события,
- прочее проблемы с UI.
Отслеживание проходов с помощью trace_id#
В Access для каждого прохода через СКУД формируется уникальный идентификатор — trace_id. Данный идентификатор связывает все события, относящиеся к одному проходу конкретного лица: от момента детекции до предоставления доступа через турникет.
Использование trace_id позволяет быстро и точно отслеживать весь процесс прохода, анализировать задержки на разных этапах и выявлять возможные проблемы.
С помощью trace_id можно отследить:
- Время получения и обработки событий в системе;
- Информацию о результате распознавания: ФИО, номер карты, идентификаторы в СКУД и биометрической системе;
- Время выполнения ключевых операций: детекция, распознавание, отправка данных на терминал и контроллер;
- Другие технические детали, связанные с обработкой прохода.
Отслеживание проходов через события Luna Platform#
1. Откройте интерфейс Luna CLEMENTINE / Luna Platform и перейдите в раздел Последние события.
2. Найдите самое раннее успешное событие распознавания.
3. Перейдите в карточку этого события, нажав на стрелку в правом верхнем углу возле фотографии (Рисунок 10).
4. Скопируйте восьмизначный trace_id из поля Теги (Рисунок 11).
5. Убедитесь, что в Access включён режим отладки (debug), и в логе worker присутствуют сообщения уровня DEBUG.
6. Найдите все логи, относящиеся к этому проходу, выполнив команду:
docker-compose logs fastapi worker | grep "<trace_id>"
Пример (Рисунок 12).
Как найти trace_id по ФИО персоны#
1. Убедитесь, что включён режим отладки (debug) для Access и в worker есть DEBUG-логи.
2. Найдите нужный лог по ФИО:
docker-compose logs worker | grep -i "<name>"
3. В найденном логе будет указан trace_id в формате trace <trace_id> (Рисунок 13).
4. Используйте данный trace_id для поиска всех связанных логов:
docker-compose logs fastapi worker | grep "<trace_id>"
Поиск события в Luna Platform по trace_id#
Порядок действий для отображения события по trace_id в UI (Рисунок 14).
1. В Luna CLEMENTINE / Luna Platform перейдите в раздел Последние события.
2. Нажмите на значок фильтра справа.
3. Введите значение trace_id в поле Теги.
4. Нажмите кнопку Отфильтровать.
Логирование при репликации#
Логирование репликации в Access позволяет отслеживать процесс синхронизации данных пользователей (лиц) и контроллеров из СКУД в систему распознавания лиц LUNA PLATFORM 5.
Правильное понимание логов репликации позволяет быстро идентифицировать и решать проблемы интеграции Access с СКУД. Анализ логов помогает обеспечить надежную работу системы контроля доступа и своевременно выявлять потенциальные проблемы с синхронизацией данных.
Для дополнительной информации о отслеживании конкретных событий прохода и использовании Trace ID обратитесь к разделу Отслеживание проходов с помощью trace_id.
Просмотр логов репликации#
Для просмотра логов репликации необходимо выполнить следующие действия:
1. Перейдите в директорию продукта:
cd /var/lib/vl-access-2/
2. Выведете логи контейнеров FastAPI и Worker в режиме реального времени:
docker compose logs fastapi worker --follow
Каждая строка содержит информацию о событии репликации с временной меткой, уровнем логирования (INFO, ERROR и т.д.) и описанием события.
Для остановки просмотра логов и возврата к командной строке нажмите одну из следующих сочетаний клавиш:
Ctrl + Z / Ctrl + C / Ctrl + D
Фильтрация логов#
Логи можно фильтровать по различным критериям, добавив команду grep в команду вывода.
1. Для поиска по ФИО пользователя:
docker compose logs fastapi worker --follow | grep "ФИО"
Где: ФИО - данные в поле "Информация" целевого лица в CLEMENTINE
2. Для поиска по ID пользователя:
docker compose logs fastapi worker --follow | grep "external_id"
Где: external_id - идентификатор лица из СКУД
3. Для поиска по ID компонента:
docker compose logs fastapi worker --follow | grep "component_id"
Где: component_id - идентификатор компонента в Access.
Структура процесса репликации#
Процесс репликации состоит из следующих основных этапов:
1. Инициирование репликации - репликация запускается автоматически при создании или перезагрузке компонента СКУД, либо вручную в интерфейсе ПО СКУД;
2. Репликация контроллеров - синхронизация данных контроллеров СКУД (если применимо);
3. Репликация лиц - синхронизация данных пользователей с их фотографиями;
4. Обработка ошибок и исключений - логирование любых проблем, возникших в процессе;
5. Завершение репликации - финальное логирование статуса.
Ключевые логи репликации
1. Начало репликации контроллеров.
Когда компонент СКУД начинает репликацию, вы увидите логи следующего вида:
Start controller replication
Лог указывает на то, что система начинает синхронизировать контроллеры из СКУД.
2. Начало репликации лиц (Рисунок 15).
Лог:
Start face replication
Этот лог служит маркером начала основного процесса синхронизации пользователей.
3. Создание нового лица и сохранение в хранилище (Рисунок 16).
Когда система находит нового пользователя в СКУД, который еще не добавлен в хранилище лиц LP5, создается новая запись:
Create new face: [face_id], ID [UUID], external ID [external_id] to list [list_id]
Saved person in storage: [storage_name]: [external_id] | [additional_info]
Параметры лога:
- face_id - внутренний ID лица в биометрической системе
- UUID - уникальный идентификатор записи в системе Access
- external_id - идентификатор лица из СКУД
- list_id - идентификатор списка, в который добавляется лицо
- storage_name - имя хранилища, в которое
- additional_info - дополнительная информация о лице, например значение доп. поля MDM_ID
Лог информирует о том, что новая запись о пользователе успешно создана в системе и подтверждает, что данные пользователя успешно синхронизированы и сохранены в локальном хранилище Access.
4. Изменение данных пользователя (Рисунок 17).
Когда данные пользователя изменяются в СКУД (например, изменение ФИО, фотографии или других атрибутов), система может выполнить операцию "удаление и пересоздание", вы увидите следующие логи:
Successfully updated face [face_id] name: [name] in list Luna
Saved person in storage: [storage_name]: [external_id] | [additional_info]
Параметры лога:
- face_id - внутренний ID лица в биометрической системе
- name - ФИО персоны в СКУД
- external_id - идентификатор лица из СКУД
- storage_name - имя хранилища, в которое
- additional_info - дополнительная информация о лице, например значение доп. поля MDM_ID
Эта операция может происходить не только во время полной репликации, но также и во время работы системы, когда администратор СКУД вносит изменения в данные пользователя.
5. Завершение репликации (Рисунок 18).
Когда все пользователи обработаны, система логирует завершение репликации:
End face replication
Лог обозначает успешное завершение процесса синхронизации лиц.
Рекомендации по анализу логов#
При возникновении проблем с репликацией:
1. Определите временной диапазон:
- Найдите логи "Start face replication" и "End face replication", это даст вам точные временные рамки проблемы
2. Отфильтруйте логи по компоненту:
- Используйте команды поиска с ID компонента для фокусировки на конкретном СКУД (см. Фильтрация логов)
3. Найдите ошибки/предупреждения:
- Ищите строки, содержащие "ERROR" или "WARNING"
4. Проверьте конкретного пользователя:
- Используйте команды поиска по ФИО или ID лица из СКУД (см. Фильтрация логов)
- Убедитесь, что пользователь реплицировался успешно
5. Проверьте последовательность операций:
- Убедитесь, что логи идут в правильном порядке
- Проверьте наличие как логов успешного сохранения, так и потенциальных ошибок
Решение типовых проблем#
При анализе логов репликации вы можете столкнуться с различными ошибками и предупреждениями. Таблица ниже служит быстрым справочником для диагностики проблем и поиска решений. Каждый сценарий соответствует конкретному типу ошибки, которую вы можете увидеть в логах, и указывает на возможные причины и действия для исправления (Таблица 10).
Таблица 10. Решение типовых проблем
| Сценарий | Ключевые логи | Решение |
|---|---|---|
| Множественные лица на фото | Multiple faces found in image | Обновить фотографию в СКУД |
| Отсутствует фотография | Person has no photo | Добавить фото в СКУД |
| Отсутствует лицо на фотографии | The face hasn't been created due to wrong handler policies | Обновить фотографию в СКУД |
| Некорректное фото | The face hasn't been created due to wrong handler policies | Обновить фотографию в СКУД |
| Пользователь заблокирован | Person is blocked | Разблокировать в СКУД |
| Длительная репликация | Большой временной диапазон | Проверить объем данных и нагрузку на систему |
Ошибка множественных лиц в изображении#
Когда биометрическая система LUNA обнаруживает несколько лиц на одной фотографии, логируется ошибка:
ERROR: LUNA API ERROR 11038 Multiple faces found in image
Возможные причины:
- Фотография содержит несколько человек;
- Качество фотографии низкое, и биометрическая система неправильно интерпретирует части изображения как отдельные лица.
Лицо не соответствует требованиям#
Если фотография не соответствует требованиям системы распознавания, логируется соответствующая ошибка:
ERROR: LUNA API ERROR [code] [error_description]
или
LUNA CLIENT ERROR The face hasn't been created due to wrong handler policies. <details>
Типичные ошибки валидации включают:
- Лицо слишком маленькое;
- Лицо повернуто под большим углом;
- Освещение недостаточное;
- Часть лица закрыта;
- Некорректное фото: перевернуто/размыто и проч.
Возможные причины:
- Фотография не соответствует требованиям качества LUNA PLATFORM;
- Фотография не соответствует требованиям политик обработчика;
- Некорректная обработка фотографии перед отправкой.
Блокировка пользователя#
Если пользователь заблокирован в СКУД система логирует:
Person is blocked
Возможные причины:
- Пользователь заблокирован в СКУД.