Сбор и анализ логов#
Инструкция по сбору логов#
Сбор логов необходим для:
- Предоставления информации технической поддержки 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
Возможные причины:
- Пользователь заблокирован в СКУД.