Мониторинг#
В LVM есть несколько методов мониторинга:
- Отправка данных в InfluxDB (включен по умолчанию)
- Отправка данных в ClickHouse
- Экспорт метрик в формате Prometheus через ресурс
/metrics(отключен по умолчанию)
При выборе между базами данных рекомендуется изучить документацию 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"
}