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.

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