Aller au contenu principal

Monitoring & Observabilité

Ce document décrit la stack de monitoring déployée pour assurer la disponibilité et la performance de la solution.

Architecture de monitoring

Composants

Prometheus

  • Image : prom/prometheus:latest
  • Intervalle de scrape : 15 secondes
  • Rétention : 15 jours (--storage.tsdb.retention.time=15d)
  • Réseau : monitor-net + dokploy-network

Cibles configurées

JobCiblePortMétriques
prometheusmonitoring-prometheus9090Auto-monitoring
node-exportermonitoring-node-exporter9100CPU, RAM, disque, réseau
cadvisormonitoring-cadvisor8080CPU/RAM/réseau par conteneur
dcgm-exportermonitoring-dcgm-exporter9400Utilisation GPU, température, mémoire VRAM
camera-managercontrol-hub-camera-manager4000Métriques métier (flux RTSP, frames)
batch-inferencecontrol-hub-batch-inference4002Latence inférence, batch size, throughput
redis-workercontrol-hub-redis-worker4001Jobs traités, latence, erreurs

Grafana

  • Image : grafana/grafana:latest
  • Authentification : GitHub OAuth SSO (pas de login/password)
    • Organisations autorisées configurées
    • Auto-assign role Admin
    • Formulaire de login désactivé
  • Provisioning : datasources et dashboards provisionnés automatiquement via fichiers YAML

Dashboards préconfigurés

DashboardFichierMétriques affichées
Custom Dashboardcustom_dashboard.jsonMétriques métier (inférence, caméras)
DCGM (GPU)dcgm.jsonUtilisation GPU, température, mémoire VRAM
Node Exporternode-exporter.jsonCPU, RAM, disque, réseau du host

Node Exporter

  • Image : prom/node-exporter:latest
  • Accès : montage en lecture seule de /proc, /sys, /
  • Exclusions : systèmes de fichiers virtuels (/sys, /proc, /dev, /host, /etc)

cAdvisor

  • Image : gcr.io/cadvisor/cadvisor:v0.47.2 (version fixée pour stabilité cgroup v2)
  • Accès : Docker socket + montages /sys, /var/lib/docker, /dev/disk
  • Mode : privileged + accès /dev/kmsg

DCGM Exporter (GPU)

  • Image : nvidia/dcgm-exporter:latest
  • Requis : GPU NVIDIA + drivers DCGM
  • Capabilities : SYS_ADMIN
  • Métriques : utilisation GPU, température, mémoire VRAM, puissance, clockspeed

Healthchecks Docker

Chaque service critique dispose d'un healthcheck Docker :

ServiceTestIntervalleTimeoutStart PeriodRetries
MySQLmysqladmin ping -h localhost10s5s5
Redisredis-cli -a $PASS ping10s5s5
Camera Managerpgrep -f src/manager.py30s10s10s3
Batch Inferencepgrep -f inference_service30s10s30s3
Redis Workerpgrep -f python worker.py30s10s5s3
Showcasewget --spider http://127.0.0.1:300030s10s40s3

Disponibilité

MécanismeDescription
Replicas API2 instances avec load balancing Traefik
Restart policiesunless-stopped ou always sur tous les services
HealthchecksDétection automatique des services défaillants
Depends_onOrdonnancement du démarrage (MySQL → Redis → API)
Start periodDélai de grâce pour les services longs à démarrer (batch-inference: 30s)