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

Мониторинг#

Мониторинг реализован как отправка данных в InfluxDB. Мониторинг LUNA Streams включен по умолчанию. Мониторинг FaceStream отключен по умолчанию.

InfluxDB#

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

Для того, чтобы использовать мониторинг FaceStream или LUNA Streams, необходимо в настройках FaceStream или настройках LUNA Streams задать для полей "bucket", "organization", "token" точно такие же данные, которые указывались при запуске контейнера InfluxDB. Так, например, если при запуске контейнера InfluxDB использовались следующие настройки...:

-e DOCKER_INFLUXDB_INIT_BUCKET=luna_monitoring \
-e DOCKER_INFLUXDB_INIT_USERNAME=luna \
-e DOCKER_INFLUXDB_INIT_PASSWORD=password \
-e DOCKER_INFLUXDB_INIT_ORG=luna \
-e DOCKER_INFLUXDB_INIT_ADMIN_TOKEN=kofqt4Pfqjn6o \

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

"influxdb": {
    "organization": "luna",
    "token": "kofqt4Pfqjn6o",
    "bucket": "luna_monitoring",

Логин и пароль используются для доступа к пользовательскому интерфейсу InfluxDB.

Настройки FaceStream и LUNA Streams содержат разные данные полей "bucket", "organization" и "token" по умолчанию. Если необходимо использовать мониторинг для обоих сервисов, то нужно задать одинаковые настройки. При необходимости можно сохранять данные FaceStream и LUNA Streams в разные бакеты (см. ниже).

Для того, чтобы разделить данные мониторинга FaceStream и LUNA Streams, можно создать отдельные бакеты после запуска контейнера InfluxDB. Это можно сделать с помощью одного из следующих способов:

  • с помощью пользовательского интерфейса InfluxDB (вкладка Explore > Create bucket) после старта контейнера InfluxDB
  • с помощью команды influx bucket create -n <bucket_name> -o <organization_name> в InfluxCLI после старта контейнера InfluxDB

Обратите внимание, что имя организации должно быть таким же, как при создании контейнера InfluxDB.

Мониторинг FaceStream#

Включение мониторинга#

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

  • перейти в пользовательский интерфейс Configurator: http://<configurator_server_ip>:5070/

  • ввести "FACE_STREAM_CONFIG" в поле "Setting name" и нажать "Apply Filters"

  • включить настройку "send_data" в секции «monitoring»

  • в зависимости от значений параметров "DOCKER_INFLUXDB_INIT_BUCKET", "DOCKER_INFLUXDB_INIT_ORG", "DOCKER_INFLUXDB_INIT_ADMIN_TOKEN" задаваемых при запуске контейнера InfluxDB, указать соответствующие значения в поля "bucket", "organization" и "token" в секции «monitoring».

  • перезапустить контейнер FaceStream: docker restart facestream

Отправляемые данные#

В InfluxDB отправляются следующие элементы:

  • элемент measurements. Он равен значению fs-requests.
  • набор тегов:

    • fs_ip — IP-адрес, где развернут FaceStream
    • source — поле "name", задаваемое при создании потока в LUNA Streams (опционально)
    • stream_id — идентификатор потока
  • набор полей:

    • track_id — идентификатор трека
    • event_id — идентификатор события, полученный от LUNA PLATFORM
    • request_id — внешний идентификатор для связи с мониторингом сервисов LUNA PLATFORM
    • track_start_time — время начала трека
    • track_best_shot_time — время, когда кадр с отправляемым лучшим снимком появился в системе
    • track_best_shot_min_size_time (опционально) — время, когда размер детекции достиг значения, заданного в параметре "best_shot_min_size"
    • track_best_shot_proper_size_time (опционально) — время, когда размер детекции достиг значения, заданного в параметре "best_shot_proper_size"
    • liveness_start_time (опционально) — время начала работы Liveness
    • liveness_end_time (опционально) — время окончания работы Liveness
    • bestshot_count — количество отправленных лучших снимков в одном запросе в LP вместе с текущим лучшим снимком. Так, например, если было выполнено 2 отправки по 10 лучших снимков, то значение данного параметра будет равно 10, а значение параметра track_send_count равно 2
    • time_from_first_frame_to_send — время, которое прошло от появления первого кадра в FS до отправки в LP
    • track_send_count — порядковый номер отправки данных с трека

    Поля, содержащие время, отправляются в виде UTC с точностью до микросекунд.

  • элемент timestamp. Он равен времени отправки лучшего снимка или лучших снимков в микросекундах.

Частота отправки данных в InfluxDB регулируется параметром "flashing_period" настроек FaceStream.

Лучших снимков может быть несколько, т.к. отправка с одного трека одновременно считается одним измерением. Для сохранения этого измерения в InfluxDB используются данные последнего лучшего снимка из группы лучших снимков. Данные, которые уникальны для каждого лучшего снимка (track_best_shot_time, liveness_start_time, liveness_end_time) будут теряться для всех лучших снимков кроме последнего в случае такой отправки.

Если опциональные поля отсутствуют, то данные этих полей не будут отправлены в БД Influx.

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

Мониторинг LUNA Streams#

Отправляемые данные#

Мониторинг возможен для двух типов событий: запрос (все запросы) и ошибка (только неудавшиеся запросы).

Каждое событие — это точка временного ряда. Для сервиса API точка представлена ​с использованием следующих данных:

  • тип события (запросы или ошибки)
  • отметка времени начала запроса
  • теги
  • поля

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

Тег — это индексированные данные в хранилище. Он представлен в виде словаря, где

  • keys — имена тегов (строка),
  • values — строка, целое число или число с плавающей запятой.

Поле представляет собой неиндексированные данные в хранилище. Оно представлено в виде словаря, где

  • keys — имена полей (строка),
  • values — строка, целое число или число с плавающей запятой.

Сохранение данных для серии запросов запускается при каждом запросе. Каждая точка содержит данные о соответствующем запросе (время выполнения и т.д.).

  • теги
Имя тега Описание
service сервис, всегда "luna-streams"
route объединение метода запроса и ресурса запроса (POST:/streams)
status_code HTTP статус код ответа
  • поля
Имя поля Описание
request_id идентификатор запроса
execution_time время выполнения запроса

Сохранение данных для серии ошибок запускается при сбое запроса. Каждая точка содержит error_code ошибки LUNA.

  • теги
Имя тега Описание
service сервис, всегда "luna-streams"
route объединение метода запроса и ресурса запроса (POST:/streams)
status_code HTTP статус код ответа
error_code код ошибки LUNA PLATFORM
  • поля
Имя поля Описание
request_id идентификатор запроса

Сохранение данных для серии лицензирования запускается при старте сервиса и каждые 60 секунд. Каждая точка содержит данные проверки лицензии.

  • теги
Имя тега Описание
service сервис, всегда "luna-streams"
license_status статус лицензии ("ok", "warning", "error", "exception")
  • поля
Имя поля Описание
license_streams_limit_rate процент использованных запросов
warnings предупреждающие сообщения о лицензии
errors сообщения об ошибках лицензии

Просмотр данных мониторинга#

Для просмотра данных мониторинга можно использовать интерфейс InfluxDB.

  • перейдите в пользовательский интерфейс InfluxDB <server_ip>:<influx_port>. Порт по умолчанию — 8086. Данные для входа по умолчанию — luna/password.

  • выберите вкладку Explore

  • выберите способ отображения информации в выпадающем списке (график, гистограмма, таблица и пр.)

  • выберите бакет внизу страницы

  • отфильтруйте необходимые данные

  • нажмите "Submit".