Мониторинг#

Platform V Vector DB (далее - Vector DB) предоставляет свои метрики в формате Prometheus/OpenMetrics, поэтому можно легко интегрировать их с совместимыми инструментами и мониторить Vector DB с помощью собственной системы мониторинга. Можно использовать конечную точку /metrics и настроить ее как цель сбора данных.

Конечная точка для метрик будет иметь вид: http://localhost:6333/metrics.

Интеграция с Vector DB проста для настройки с использованием Prometheus и Grafana.

При сборе метрик из многоузловых кластеров Vector DB важно собирать данные с каждого узла индивидуально, а не использовать балансируемый по нагрузке URL-адрес. В противном случае метрики будут выглядеть несогласованными после каждого сбора данных.

Метрики#

Доступны два типа конечных точек:

  • /metrics - это прямая конечная точка базового узла базы данных Vector DB.

  • /sys_metrics - это конечная точка только для облачной среды Vector DB, которая предоставляет дополнительную операционную и инфраструктурную информацию о кластере, такую как использование ЦП, памяти и диска, показатели коллекций и телеметрию балансировщика нагрузки. Д

Метрики узлов /metrics#

Каждый сервер Vector DB будет предоставлять следующие метрики.

Название

Описание

Размерность

Основные атрибуты

app_info

Информация о сервере Vector DB (версия, конфигурация)

gauge

version, node_id, mode (например, standalone или cluster)

app_status_recovery_mode

Статус запуска Vector DB в режиме восстановления:
1 — активен,
0 — нет

gauge

status (0/1)

collections_total

Общее количество коллекций в системе.

gauge

collection_type (полная/агрегированная)

collections_vector_total

Общее количество векторов во всех коллекциях

gauge

collection_name, vector_dim (размерность векторов)

collections_full_total

Количество полных коллекций (не агрегированных)

gauge

shard_count, replication_factor

collections_aggregated_total

Количество агрегированных коллекций (объединенных из нескольких шардов)

gauge

shard_count, aggregation_type

rest_responses_total

Общее число успешных ответов через REST API

counter

method (GET/POST/PUT/DELETE), collection_name

rest_responses_fail_total

Общее число неудачных ответов через REST API

counter

error_code (4xx/5xx), method

rest_responses_avg_duration_seconds

Средняя продолжительность ответа через REST API

gauge

method, collection_name

rest_responses_min_duration_seconds

Минимальная продолжительность ответа через REST API

gauge

method, collection_name

rest_responses_max_duration_seconds

Максимальная продолжительность ответа через REST API

gauge

method, collection_name

grpc_responses_total

Общее число успешных ответов через gRPC API.

counter

method, collection_name

grpc_responses_fail_total

Общее число неудачных ответов через gRPC API

counter

error_code, method

grpc_responses_avg_duration_seconds

Средняя продолжительность ответа через gRPC API

gauge

method, collection_name

grpc_responses_min_duration_seconds

Минимальная продолжительность ответа через gRPC API

gauge

method, collection_name

grpc_responses_max_duration_seconds

Максимальная продолжительность ответа через gRPC API

gauge

method, collection_name

cluster_enabled

Флаг поддержки кластера:
1 — включена,
0 — отключена

gauge

status (0/1), node_id

memory_active_bytes

Активно используемая память (jemalloc: stats.active)

gauge

allocation_type (heap/stack), page_size

memory_allocated_bytes

Общая выделенная память (jemalloc: stats.allocated)

gauge

allocation_type, fragmentation_rate

memory_metadata_bytes

Память для служебных данных (jemalloc: stats.metadata)

gauge

metadata_type (thread/cache), overhead_ratio

memory_resident_bytes

Физически занятая память (jemalloc: stats.resident)

gauge

resident_type (RSS/VSZ), swap_usage

memory_retained_bytes

Виртуальная память, удерживаемая приложением (jemalloc: stats.retained)

gauge

retained_type (mapped/committed), page_size

collection_hardware_metric_cpu

Использование процессора конкретной коллекцией

gauge

collection_name, cpu_core

Метрики, связанные с кластером#

Также существуют некоторые метрики, доступные только в распределенном режиме работы.

Название

Описание

Размерность

Основные атрибуты

cluster_peers_total

Общее количество пиров (узлов) в кластере

gauge

peer_id, status (active/inactive)

cluster_term

Текущий срок (term) кластера (инкрементируется при изменении лидерства)

counter

term_number, leader_id

cluster_commit

Индекс последней зафиксированной операции (commit index) в кластере

counter

commit_index, node_role (leader/follower)

cluster_pending_operations_total

Количество операций, ожидающих выполнения для конкретного пира

gauge

peer_id, operation_type (add/remove)

cluster_voter

Флаг, указывающий, является пир избирателем (voter) или обучаемым (learner).
1 — избиратель

gauge

peer_id, role (voter/learner)

Телеметрии#

Vector DB также предоставляет конечную точку /telemetry, которая предоставляет информацию о текущем состоянии базы данных, включая количество векторов, шардов и другую полезную информацию. Полное описание этой конечной точки можно найти в документации API.

Настройка#

Настройка Prometheus#

Добавьте в /etc/prometheus/prometheus.yml:

scrape_configs:
  - job_name: 'qdrant'
    metrics_path: '/metrics'
    static_configs:
      - targets: ['localhost:6333']

Дашборд Grafana#

Для работы с Grafana необходимо импортировать официальный дашборд (ID=18665).

Импорт дашборда:

  1. Откройте Grafana: перейдите по адресу сервера Grafana, например: http://localhost:3000.

  2. Войдите в систему: введите учетные данные для входа в Grafana.

  3. Перейдите в раздел импорта:

    • нажмите на значок шестеренки (Settings) в левой боковой панели;

    • из отобразившегося меню выберите Dashboards;

    • Нажмите кнопку Import.

  4. Введите ID дашборда: в поле Dashboard ID введите значение 1860.

  5. Загрузите дашборд: нажмите кнопку Load или Import.

  6. Проверьте дашборд: после загрузки убедитесь, что все визуализации и панели отображаются корректно.

Без использования ID:

  1. Перейти на страницу дашборда на сайте Grafana.

  2. Скачать файл 18665.json. 3> В Grafana перейти в DashboardsImportзагрузить файл.