Мониторинг#
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 в режиме восстановления: |
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 |
Флаг поддержки кластера: |
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). |
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).
Импорт дашборда:
Откройте Grafana: перейдите по адресу сервера Grafana, например:
http://localhost:3000.Войдите в систему: введите учетные данные для входа в Grafana.
Перейдите в раздел импорта:
нажмите на значок шестеренки (Settings) в левой боковой панели;
из отобразившегося меню выберите Dashboards;
Нажмите кнопку Import.
Введите ID дашборда: в поле Dashboard ID введите значение
1860.Загрузите дашборд: нажмите кнопку Load или Import.
Проверьте дашборд: после загрузки убедитесь, что все визуализации и панели отображаются корректно.
Без использования ID:
Перейти на страницу дашборда на сайте Grafana.
Скачать файл
18665.json. 3> В Grafana перейти в Dashboards → Import → загрузить файл.