DEV NOTE
Surveiller et monitorer ses apps après déploiement
Une introduction opérationnelle aux logs, métriques, traces et alertes qui rendent une application observable après sa mise en ligne.
CI/CD & DevOpsTEMPS DE LECTURE : 4 MIN
Introduction : L'observabilité, clé de la fiabilité
Livrer, c'est bien.
Observer, c'est mieux. Une app sans monitoring, c'est un avion sans tableau de bord.
Questions que le monitoring doit répondre :
- Mon app est-elle accessible ? (Uptime)
- Est-elle rapide ? (Performance)
- Y a-t-il des erreurs ? (Error tracking)
- Les ressources sont-elles saines ? (CPU, RAM, Disk)
Les 3 piliers de l'observabilité
Logs (ce qu'il s'est passé)
Définition : Enregistrements horodatés des événements.
Exemple :
- 2025-01-10 14:32:15 INFO User 123 logged in
- 2025-01-10 14:35:42 ERROR Database connection failed
Niveaux de logs :
- DEBUG : Détails pour le dev (désactivé en prod)
- INFO : Événements normaux
- WARN : Problème potentiel
- ERROR : Erreur récupérable
- CRITICAL : Erreur critique (système down)
Metrics (ce qui se passe en temps réel)
Définition : Valeurs numériques mesurées dans le temps.
Exemples :
- CPU usage : 45%
- RAM : 2.3 GB / 8 GB
- Requests per second : 1200
- Response time : 230ms
- Error rate : 0.5%
Traces (parcours d'une requête)
Définition : Suivi du parcours d'une requête à travers tous les services.
Exemple : Requête utilisateur → API Gateway → Auth Service → Database → Response
Outils :
Jaeger,
Zipkin,
OpenTelemetry
Stack de monitoring complète
Logs : ELK Stack
Composants :
- Elasticsearch : Stockage et indexation des logs
- Logstash : Collecte et transformation
- Kibana : Visualisation (dashboards)
Alternative moderne : Loki + Grafana (plus léger)
Metrics : Prometheus + Grafana
Prometheus :
- Time-series database (stocke les métriques dans le temps)
- Pull model (scrape les endpoints /metrics)
- Alerting intégré
Grafana :
- Dashboards magnifiques
- Alerting visuel
- Multi-sources (Prometheus, Loki, InfluxDB...)
Error Tracking : Sentry
Capture automatiquement les
exceptions et erreurs en prod.
Fonctionnalités :
- Stack traces complètes
- Contexte utilisateur (navigateur, OS, user ID)
- Source maps (erreurs JS déminifiées)
- Alertes Slack/Email
Uptime Monitoring
Outils :
- UptimeRobot : Gratuit, ping toutes les 5 min
- Pingdom : Monitoring avancé
- Better Uptime : Status page + alerting
Configurer Prometheus + Grafana
Étape 1 : Exposer les metrics
Exemple Node.js avec
prom-client :
Expose un endpoint
/metrics que Prometheus scrappe.
Étape 2 : Configurer Prometheus
Dans
prometheus.yml :
Étape 3 : Créer un dashboard Grafana
- Ajouter Prometheus comme source de données
- Créer un dashboard avec des panels (CPU, RAM, Requests/s...)
- Configurer des alertes (CPU > 80%)
Alerting intelligent
Quand alerter ?
- Critical : Site down, DB inaccessible → Alerte immédiate (SMS, appel)
- Warning : CPU > 80%, Disk > 90% → Slack/Email
- Info : Deploy réussi → Log uniquement
Éviter l'alert fatigue
Problème : Trop d'alertes → on les ignore.
Solution :
- Alerter uniquement sur ce qui nécessite une action immédiate
- Grouper les alertes similaires
- Silence pendant les maintenances
Performance Monitoring
Web Vitals (Frontend)
Métriques Google :
- LCP (Largest Contentful Paint) : Temps de chargement du contenu principal
- FID (First Input Delay) : Réactivité aux clics
- CLS (Cumulative Layout Shift) : Stabilité visuelle
Outils :
- Google Analytics 4
- Vercel Analytics
- web-vitals library
APM (Application Performance Monitoring)
Outils :
- Datadog APM : Traces distribuées
- New Relic : Monitoring all-in-one
- Elastic APM : Intégré à ELK
Logs structurés
JSON Logs
Au lieu de : "User 123 logged in at 14:32"
Préférer :
Plus facile à parser et indexer dans Elasticsearch.
Bonnes pratiques
- Centraliser les logs (ELK, Loki)
- Alerter sur les seuils critiques (CPU > 90%, erreurs > 1%)
- Dashboards clairs (Grafana)
- Retention policy (supprimer les vieux logs pour économiser)
- Monitoring du monitoring (Prometheus qui surveille Prometheus)
- Relier au CI/CD (alerter sur deploy failed)
Solutions all-in-one
- Datadog : Logs + Metrics + APM + Tracing (payant mais puissant)
- New Relic : Monitoring complet (free tier généreux)
- Grafana Cloud : Loki + Prometheus + Grafana managés
- AWS CloudWatch : Natif AWS
- Azure Monitor : Natif Azure
Conclusion
Un bon DevOps ne dort jamais tranquille sans un dashboard.
Surveiller, c'est maîtriser.
Les 3 piliers :
- Logs (ce qui s'est passé)
- Metrics (ce qui se passe)
- Traces (parcours des requêtes)
Ressources :
- prometheus.io
- grafana.com
- sentry.io/welcome
- opentelemetry.io
> "You can't improve what you don't measure." — Peter Drucker