Les Trois Piliers de l'Observabilité Expliqués
Au-delà du Monitoring : Comprendre l’Observabilité
Le monitoring vous dit quand quelque chose ne va pas. L’observabilité vous dit pourquoi.
Dans un monde de microservices et de systèmes distribués, vous avez besoin de la capacité à poser des questions arbitraires sur le comportement de votre système sans déployer de nouveau code. C’est ça, l’observabilité.
Pilier 1 : Les Logs
Les logs sont des événements horodatés et discrets qui enregistrent ce qui s’est passé dans votre système.
Bonnes Pratiques de Logging Structuré
{
"timestamp": "2026-03-08T14:30:00Z",
"level": "ERROR",
"service": "payment-service",
"trace_id": "abc123def456",
"span_id": "span789",
"user_id": "user_42",
"message": "Échec du traitement du paiement",
"error": "fonds_insuffisants",
"amount": 99.99,
"currency": "EUR",
"duration_ms": 234
}
Pratiques Essentielles
- Utilisez toujours le logging structuré (JSON) plutôt que du texte brut
- Incluez les trace IDs pour la corrélation entre services
- Utilisez des niveaux de log appropriés (DEBUG, INFO, WARN, ERROR)
- Ajoutez du contexte métier (ID utilisateur, ID commande, montants)
- Centralisez les logs avec des outils comme ELK Stack ou Grafana Loki
Pilier 2 : Les Métriques
Les métriques sont des valeurs numériques mesurées dans le temps, agrégées en données de séries temporelles.
La Méthode RED (pour les services)
- Rate : Nombre de requêtes par seconde
- Errors : Nombre de requêtes échouées par seconde
- Duration : Distribution des temps de réponse
La Méthode USE (pour les ressources)
- Utilization : Temps moyen d’utilisation de la ressource
- Saturation : Quantité de travail en file d’attente
- Errors : Nombre d’événements d’erreur
Exemple : Métriques Prometheus
from prometheus_client import Counter, Histogram
REQUEST_COUNT = Counter(
'http_requests_total',
'Total des requêtes HTTP',
['method', 'endpoint', 'status']
)
REQUEST_DURATION = Histogram(
'http_request_duration_seconds',
'Durée des requêtes HTTP en secondes',
['method', 'endpoint'],
buckets=[.005, .01, .025, .05, .1, .25, .5, 1, 2.5, 5]
)
Pilier 3 : Les Traces
Les traces distribuées suivent le parcours d’une requête à travers plusieurs services.
Anatomie d’une Trace
Une trace est composée de spans - des opérations nommées et chronométrées représentant une unité de travail :
[Trace: commande-checkout]
├── [Span: API Gateway] 2ms
│ ├── [Span: Service Auth] 5ms
│ └── [Span: Service Commande] 150ms
│ ├── [Span: Vérification Stock] 30ms
│ ├── [Span: Service Paiement] 80ms
│ │ └── [Span: API Paiement Externe] 60ms
│ └── [Span: Service Notification] 20ms
Connecter les Trois Piliers
La vraie puissance vient de la corrélation des trois signaux :
- Une alerte métrique se déclenche : latence p99 > 500ms
- Les traces révèlent le span lent : requête base de données du payment-service
- Les logs de ce span montrent : “Pool de connexions épuisé, en attente d’une connexion disponible”
Cette corrélation nécessite un trace ID partagé qui circule à travers les trois signaux.
Construire votre Stack d’Observabilité
| Composant | Open Source | Commercial |
|---|---|---|
| Métriques | Prometheus + Grafana | Datadog, New Relic |
| Logs | Grafana Loki, ELK Stack | Splunk, Datadog |
| Traces | Jaeger, Zipkin | Datadog, Honeycomb |
| Tout-en-un | Stack Grafana | Datadog, Dynatrace |
Conclusion
L’observabilité n’est pas un produit que vous achetez - c’est une propriété de votre système que vous construisez. Commencez par instrumenter vos services les plus critiques avec les trois piliers, puis étendez progressivement la couverture.