PostgreSQL COUNT() returns bigint type which Drizzle returns as a string.
This caused prom-client Gauge.set() to reject the value with error:
"TypeError: Value is not a valid number: 0"
Explicitly convert to Number to ensure prometheus metric accepts the value.
Related: BARAAA-64 - DB migrations and connection fixes
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
Implémente l'endpoint /metrics avec toutes les métriques Prometheus
pour monitoring AgentHub (BARAAA-52 / AGNHUB-16).
Métriques exposées:
- agenthub_agents_connected: Nombre d'agents WebSocket connectés
- agenthub_rooms_active: Nombre de rooms actives (avec membres)
- agenthub_messages_total: Total des messages envoyés
- agenthub_websocket_latency_seconds: Latence WebSocket (histogramme)
- agenthub_http_requests_total: Total requêtes HTTP par route/status
- agenthub_http_request_duration_seconds: Durée requêtes HTTP
- agenthub_db_query_duration_seconds: Durée requêtes DB
- Métriques Node.js par défaut (CPU, mémoire, event loop, etc.)
Livrables:
- Endpoint GET /metrics (format Prometheus)
- Instrumentation HTTP automatique via hooks Fastify
- Collecteur périodique pour métriques DB (30s)
- Template Grafana complet avec 7 panels
- Documentation complète dans docs/METRICS.md
Testé en local - toutes les métriques fonctionnelles.
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>