Observabilité
On ne peut pas réparer ce que l'on ne voit pas. L'observabilité est conçue dès le départ, pas ajoutée après un incident. Si une question sur la production nécessite une modification de code pour être répondue, l'instrumentation est erronée.
Règles
- Trois piliers : logs, métriques, traces. Chacun répond à une question différente — ce qui s'est passé (logs), combien et à quelle fréquence (métriques), pourquoi c'était lent (traces). Vous avez besoin des trois.
- Logs structurés uniquement. JSON (ou similaire). Grep n'est pas une stratégie à grande échelle.
- ID de corrélation / trace dans chaque ligne de log. Propagez-le via les en-têtes à travers les limites de service. Un seul ID relie l'ensemble du parcours d'une requête.
- Métriques RED sur chaque point de terminaison. Taux, Erreurs, Durée (avec P50/P95/P99). Le minimum nécessaire pour repérer les régressions.
- Métriques USE sur chaque ressource. Utilisation, Saturation, Erreurs — pour le CPU, la mémoire, les pools, les files d'attente, le disque, le réseau.
- Tracez chaque appel interservice. Utilisez OpenTelemetry. Capturez également les requêtes DB et les accès au cache en tant que spans.
- Alertez sur les SLOs, pas sur les métriques brutes. « CPU > 80% » réveille des humains à 3h du matin pour rien. « La latence P99 dépasse le SLO pendant 5 minutes » capte la vraie douleur utilisateur.
- Les endpoints de santé et de disponibilité sont différents.
/health= « Je suis vivant, ne me redémarre pas. »/ready= « Je peux recevoir du trafic maintenant. » Traitez-les comme tels. - Loggez au bon niveau, loggez une fois par événement.
INFOpour le cycle de vie des requêtes,WARNpour les problèmes récupérables,ERRORpour ce qui nécessite une intervention humaine. Les logs dupliqués font mentir les tableaux de bord. - Ne loggez jamais de PII ni de secrets. Masquez au niveau du appender ; ne faites pas confiance aux appelants pour s'en souvenir.
- Chaque alerte pointe vers un runbook. Une alerte sans action documentée est une notification Slack qui se fait passer pour une page.
Signaux d'alarme
- Déboguer la production en se connectant en SSH à un pod.
- Des alertes qui se déclenchent régulièrement et sont ignorées. (La fatigue des alertes est un problème de fiabilité.)
- Des logs qui disent « erreur survenue » sans contexte, sans ID, sans pile.
- Des métriques qui montrent uniquement des moyennes, sans percentiles.
- Un tableau de bord par service, zéro tableau de bord par parcours utilisateur.