How to Monitor Your Qdrant Vector Database with Vigilmon
Qdrant is a high-performance vector similarity search engine designed for AI applications. If you're building semantic search, recommendation engines, or RAG (Retrieval-Augmented Generation) systems, Qdrant is likely in your stack. When Qdrant goes down, your AI features fail silently — embeddings stop being stored, similarity searches error out, and your RAG pipeline breaks.
This guide shows how to monitor Qdrant with Vigilmon.
Qdrant Health Endpoints
Qdrant exposes built-in health endpoints:
# Basic health check
curl http://localhost:6333/health
# {"title":"qdrant - vector search engine","version":"1.x.x"}
# Readiness check
curl http://localhost:6333/readyz
# {} (200 OK when ready)
Add Qdrant to Vigilmon
- Go to vigilmon.online
- Click + Add Monitor
- URL:
https://qdrant.your-app.com/health - Expected status:
200 - Check interval: 1 minute
For Qdrant Cloud:
https://your-cluster.cloud.qdrant.io/health
Application Health Route
Python (FastAPI + qdrant-client):
from qdrant_client import QdrantClient
from fastapi.responses import JSONResponse
client = QdrantClient(
url=settings.QDRANT_URL,
api_key=settings.QDRANT_API_KEY,
)
@app.get("/health/vector-db")
async def vector_db_health():
try:
collections = client.get_collections()
return {
"status": "ok",
"provider": "qdrant",
"collections": len(collections.collections),
}
except Exception as e:
return JSONResponse(status_code=503, content={"status": "error", "message": str(e)})
Node.js (TypeScript):
import { QdrantClient } from "@qdrant/js-client-rest";
const qdrant = new QdrantClient({
url: process.env.QDRANT_URL,
apiKey: process.env.QDRANT_API_KEY,
});
app.get("/health/vector-db", async (req, res) => {
try {
const result = await qdrant.getCollections();
res.json({ status: "ok", provider: "qdrant", collections: result.collections.length });
} catch (err) {
res.status(503).json({ status: "error", message: String(err) });
}
});
Monitor the Full RAG Pipeline
@app.get("/health/rag")
async def rag_health():
checks = {}
try:
client.get_collections()
checks["qdrant"] = "ok"
except Exception as e:
checks["qdrant"] = f"error: {str(e)}"
all_ok = all(v == "ok" for v in checks.values())
status_code = 200 if all_ok else 503
return JSONResponse(
status_code=status_code,
content={"status": "ok" if all_ok else "degraded", "checks": checks}
)
Docker Compose Setup
version: "3.8"
services:
qdrant:
image: qdrant/qdrant:latest
ports:
- "6333:6333" # REST API
- "6334:6334" # gRPC
volumes:
- qdrant_storage:/qdrant/storage
environment:
QDRANT__SERVICE__API_KEY: "${QDRANT_API_KEY}"
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:6333/health"]
interval: 30s
timeout: 10s
retries: 3
restart: unless-stopped
volumes:
qdrant_storage:
What to Monitor
| Check | URL | Notes |
|---|---|---|
| Qdrant health | /health |
Is the server running? |
| App vector health | /health/vector-db |
Can app query Qdrant? |
| RAG pipeline | /health/rag |
Full embedding pipeline |
Why External Monitoring Matters for AI Apps
Vector database issues surface as degraded AI features rather than hard errors:
- Search results become stale (no new embeddings stored)
- RAG responses lose context (cannot retrieve relevant documents)
- Recommendation quality drops silently
External monitoring catches Qdrant unavailability before it manifests as AI quality degradation.
Set up Vigilmon monitoring for your Qdrant instance today and keep your AI features reliable.
Vigilmon — free uptime monitoring for Qdrant, vector databases, and AI application health.
Top comments (0)