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
| Job | Cible | Port | Métriques |
|---|---|---|---|
prometheus | monitoring-prometheus | 9090 | Auto-monitoring |
node-exporter | monitoring-node-exporter | 9100 | CPU, RAM, disque, réseau |
cadvisor | monitoring-cadvisor | 8080 | CPU/RAM/réseau par conteneur |
dcgm-exporter | monitoring-dcgm-exporter | 9400 | Utilisation GPU, température, mémoire VRAM |
camera-manager | control-hub-camera-manager | 4000 | Métriques métier (flux RTSP, frames) |
batch-inference | control-hub-batch-inference | 4002 | Latence inférence, batch size, throughput |
redis-worker | control-hub-redis-worker | 4001 | Jobs 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
| Dashboard | Fichier | Métriques affichées |
|---|---|---|
| Custom Dashboard | custom_dashboard.json | Métriques métier (inférence, caméras) |
| DCGM (GPU) | dcgm.json | Utilisation GPU, température, mémoire VRAM |
| Node Exporter | node-exporter.json | CPU, 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 :
| Service | Test | Intervalle | Timeout | Start Period | Retries |
|---|---|---|---|---|---|
| MySQL | mysqladmin ping -h localhost | 10s | 5s | — | 5 |
| Redis | redis-cli -a $PASS ping | 10s | 5s | — | 5 |
| Camera Manager | pgrep -f src/manager.py | 30s | 10s | 10s | 3 |
| Batch Inference | pgrep -f inference_service | 30s | 10s | 30s | 3 |
| Redis Worker | pgrep -f python worker.py | 30s | 10s | 5s | 3 |
| Showcase | wget --spider http://127.0.0.1:3000 | 30s | 10s | 40s | 3 |
Disponibilité
| Mécanisme | Description |
|---|---|
| Replicas API | 2 instances avec load balancing Traefik |
| Restart policies | unless-stopped ou always sur tous les services |
| Healthchecks | Détection automatique des services défaillants |
| Depends_on | Ordonnancement du démarrage (MySQL → Redis → API) |
| Start period | Délai de grâce pour les services longs à démarrer (batch-inference: 30s) |