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

Мониторинг#

В LVM есть несколько методов мониторинга:

При выборе между базами данных рекомендуется изучить документацию Influx и Clickhouse. ClickHouse демонстрирует лучшую производительность для задач агрегации данных, особенно при работе с большими объёмами информации и сложными аналитическими запросами. Однако на текущий момент вариантом по умолчанию остаётся InfluxDB. В будущих версиях LVM ClickHouse станет системой мониторинга по умолчанию.

Ниже приведено описание данных, которые LVM отправляет в InfluxDB и ClickHouse.

Метрики в формате Prometheus содержат тот же набор данных, что и в LUNA PLATFORM.

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

Отправка данных в InfluxDB#

LUNA Vinder Module поддерживает отправку данных мониторинга в InfluxDB — специализированную базу данных для работы с временными рядами. См. документацию InfluxDB.

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

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

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

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

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

  • keys — имена тегов (string),
  • values — значения с типами данных string, integer, float

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

  • keys — имена полей (string),
  • values — значения с типами данных string, integer, float

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

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

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

  • теги
Имя тега Описание
service сервис, "luna-vinder-projector" или "luna-vinder-matcher"
route объединение метода запроса и ресурса запроса (GET:/version)
status_code HTTP статус код ответа
error_code код ошибки LVM
  • поля
Имя поля Описание
request_id идентификатор запроса

Отправка данных в ClickHouse#

ClickHouse — это колоночная СУБД, где данные хранятся не строками, а столбцами. Это позволяет быстро читать и агрегировать данные только по нужным колонкам, минуя обработку всей строки. См. документацию ClickHouse.

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

Мониторинг возможен для двух типов событий: запрос (все запросы) и ошибка (только неудавшиеся запросы). В отличие от InfluxDB, где данные делятся на теги и поля, ClickHouse использует единую табличную структуру с поддержкой JSON. Каждое событие представлено записью, где:

  • time — временная метка создания записи;
  • data — данные с информацией о событии в JSON-формате, которая в противном случае была бы распределена по тегам и полям в InfluxDB.

Сохранение данных для серии запросов запускается при каждом запросе. Каждая запись содержит данные о соответствующем запросе (время выполнения и т.д.). Пример содержимого поля data для сервиса Projector:

{
    "service": "luna-vinder-projector",
    "route": "POST:/projections",
    "status_code": 200,
    "request_id": "1536751345,6a5c2191-3e9b-f5a4-fc45-3abf43625c5f",
    "execution_time": 0.123
}

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

{
    "service": "luna-vinder-projector",
    "route": "POST:/projections",
    "status_code": 400,
    "error_code": 13037,
    "request_id": "1536751345,6a5c2191-3e9b-f5a4-fc45-3abf43625c5f"
}