Qdrant Exporter.
Prometheus metrics for self-hosted Qdrant — the per-collection, per-shard, and cluster data the native /metrics endpoint never exposes.
Overview
The native endpoint stops at Go runtime stats
Qdrant's built-in /metrics covers process-level stats and basic request counts. The interesting data — vectors per collection, shard health, optimizer state, search latency by type — lives in the /telemetry and /cluster JSON endpoints, which Prometheus can't scrape directly.
The detailed exporter Qdrant does ship (qdrant-cluster-exporter) is cloud-only. This project closes that gap for anyone running Qdrant on bare metal or plain Docker.
34 metrics across three groups
Every metric is prefixed qdrant_exporter_ and grouped by what it answers.
One detail knob that actually matters
Per-collection shard and storage metrics come from GET /telemetry?details_level=N. On Qdrant 1.16+, the legacy details_level=3 style often returns only a collection count with the nested collections array missing — so most qdrant_exporter_* series never appear. The exporter defaults to telemetry_details_level: 3 the correct way; override it via QDRANT_EXPORTER_QDRANT__TELEMETRY_DETAILS_LEVEL if a specific deployment still needs a different value.
Four rows, auto-provisioned
The bundled Grafana dashboard is wired up automatically by the Docker Compose profiles — no manual datasource or JSON import needed for the default setup.
How it works
The exporter is pull-based: on every Prometheus scrape it queries Qdrant fresh, reshapes the response into Prometheus series, and hands it off.
In the terminal
$ curl -s http://localhost:9153/metrics | head
# HELP qdrant_exporter_collection_vectors_total Total vectors
# TYPE qdrant_exporter_collection_vectors_total gauge
qdrant_exporter_collection_vectors_total{collection="docs"} 128400
# HELP qdrant_exporter_collection_indexed_ratio Indexed vectors / total (0-1)
# TYPE qdrant_exporter_collection_indexed_ratio gauge
qdrant_exporter_collection_indexed_ratio{collection="docs"} 0.98
# HELP qdrant_exporter_cluster_is_leader 1 = this node is the Raft leader
# TYPE qdrant_exporter_cluster_is_leader gauge
qdrant_exporter_cluster_is_leader 1Install & use
$ docker run -d --name qdrant-exporter -p 9153:9153 \$ -e QDRANT_EXPORTER_QDRANT__NODES='[{"url":"http://host.docker.internal:6333"}]' \$ --add-host host.docker.internal:host-gateway \$ baselhusam/qdrant-exporter
$ pip install qdrant-exporter$ qdrant-exporter --config qdrant-exporter.yaml
$ git clone https://github.com/baselhusam/qdrant_exporter$ cd qdrant_exporter$ docker compose --profile fullstack up -d # Qdrant + exporter + Prometheus + Grafana$ open http://localhost:3000 # Grafana, admin / admin