Fait partie de notre série Performance & Scalability
Lire le guide completSurveillance et observabilité : bonnes pratiques en matière d'APM, de journalisation et d'alerte
Les entreprises dotées de pratiques d'observabilité matures résolvent les incidents 69 % plus rapidement, selon le rapport sur l'état d'observabilité de Splunk. La surveillance vous indique que quelque chose ne va pas. L'observabilité vous indique pourquoi il est cassé et où chercher. La différence entre lutter contre chaque problème de production pendant des heures et les résoudre en quelques minutes dépend de la façon dont vous instrumentez vos systèmes, structurez vos journaux et concevez vos alertes.
Points clés à retenir
- Les trois piliers de l'observabilité (métriques, journaux et traces) répondent chacun à des questions différentes et travaillent ensemble pour fournir une compréhension complète du système.
- Alerte sur les symptômes (impact face à l'utilisateur) et non sur les causes (métriques internes) pour réduire la fatigue des alertes et détecter les nouveaux modes de défaillance
- La journalisation JSON structurée avec des ID de corrélation permet de rechercher parmi les services et de reconstruire les flux de demandes
- Les SLO (Service Level Objectives) transforment la surveillance de « quelque chose est-il cassé » à « respectons-nous nos engagements envers les utilisateurs »
Les trois piliers de l'observabilité
L’observabilité repose sur trois types de données complémentaires. Chaque pilier répond à différentes questions sur le comportement de votre système.
Métriques
Les métriques sont des mesures numériques collectées à intervalles réguliers. Ils répondent aux questions « que se passe-t-il » : combien de requêtes par seconde ? Quel est le temps de réponse moyen ? Quelle quantité de mémoire est utilisée ?
Caractéristiques :
- Agrégé et compact : des millions d'événements compressés dans des compteurs de séries chronologiques
- Peu coûteux à stocker : données de taille fixe quel que soit le volume de trafic
- Idéal pour les tableaux de bord et les alertes
- Contexte limité : vous savez que le temps de réponse a augmenté, mais vous ne savez pas quelles demandes spécifiques sont lentes.
Types de métriques clés :
- Compteur -- valeur croissante de façon monotone (total des requêtes, total des erreurs)
- Gauge -- valeur qui augmente et diminue (utilisation actuelle du processeur, connexions actives)
- Histogramme - distribution des valeurs (centiles de temps de réponse, tailles de charge utile)
- Résumé - centiles pré-calculés côté client
Journaux
Les journaux sont des enregistrements texte horodatés d'événements discrets. Ils répondent aux questions « que s'est-il passé » : quel message d'erreur l'utilisateur a-t-il vu ? Quels paramètres ont été transmis à la fonction défaillante ? Quel était l’état du système lorsque le problème est survenu ?
Caractéristiques :
- Contexte riche – détails arbitraires sur des événements individuels
- Cher à grande échelle : les systèmes à fort trafic génèrent des gigaoctets de journaux par heure - Recherchable : recherchez des événements spécifiques grâce à la recherche en texte intégral
- Nécessite une structure : les lignes de journal non structurées sont difficiles à analyser et à corréler
Traces
Les traces suivent une seule requête sur plusieurs services. Ils répondent aux questions « où est passé le temps » : quel appel de service est lent ? Où le chemin de la requête diverge-t-il ? Quelle requête de base de données constitue le goulot d'étranglement ?
Caractéristiques :
- Montrer la causalité – relations parent-enfant entre les opérations
- Révéler le comportement des systèmes distribués - latence au-delà des limites des services
- Échantillonnage requis à grande échelle : le suivi de chaque demande coûte cher
- Essentiel pour les microservices : sans traces, le débogage des flux multiservices n'est qu'une hypothèse
Écosystème d'outils d'observabilité
| Catégorie | Ouvert | Commerciale | Cloud-Natif |
|---|---|---|---|
| Métriques | Prométhée + Grafana | Datadog, nouvelle relique | AWS CloudWatch, surveillance Google Cloud |
| Journaux | Loki, pile ELK (Elasticsearch, Logstash, Kibana) | Journaux Datadog, Splunk | Journaux AWS CloudWatch, journalisation Google Cloud |
| Traces | Jaeger, Zipkin | Datadog APM, nouvelle relique | AWS X-Ray, Google Cloud Trace |
| Tout-en-un | Pile Grafana (Prométhée + Loki + Tempo) | Datadog, Nouvelle Relique, Dynatrace | — |
| Suivi des erreurs | Sentinelle (noyau ouvert) | Sentinelle, Bugsnag, arceau de sécurité | — |
| Surveillance de la disponibilité | — | Meilleure disponibilité, Pingdom | Vérifications de l'état d'AWS Route 53 |
Choisir une pile
Pour la plupart des entreprises en croissance, nous recommandons de commencer par :
- Sentry pour le suivi des erreurs : détecte les exceptions avec des traces de pile complètes, des cartes sources et un suivi des versions
- Prometheus + Grafana pour les métriques – écosystème d'intégration étendu, open source et testé au combat
- Journalisation structurée vers un service géré -- Datadog Logs, AWS CloudWatch ou Grafana Loki selon votre fournisseur de cloud
- OpenTelemetry pour l'instrumentation – norme indépendante du fournisseur qui fonctionne avec n'importe quel backend
Pour les équipes qui souhaitent un fournisseur unique, Datadog offre la meilleure expérience tout-en-un, mais à un coût important à grande échelle. La pile open source de Grafana (Prometheus, Loki, Tempo) offre des fonctionnalités équivalentes avec un coût de licence inférieur mais une charge opérationnelle plus élevée.
Meilleures pratiques de journalisation structurée
Les lignes de journal non structurées comme Error processing order 12345 for user [email protected] sont lisibles par l'homme mais hostiles à la machine. Les journaux JSON structurés permettent la recherche, le filtrage, l'agrégation et l'alerte sur des champs spécifiques.
Structure du journal
Chaque entrée de journal doit inclure :
| Champ | Objectif | Exemple |
|---|---|---|
| horodatage | Quand l'événement s'est produit | 2026-03-15T14:30:00.123Z |
| niveau | Gravité (débogage, info, avertissement, erreur) | erreur |
| messages | Description lisible par l'homme | Le traitement de la commande a échoué |
| prestations | Quel service a généré le journal | serveur API |
| IDcorrélation | Demander un traçage entre les services | req-abc123 |
| ID utilisateur | Qui a été touché | usr-456 |
| durée | Combien de temps a duré l'opération | 1523 (ms) |
| erreur.nom | Classe d'erreur | Erreur de connexion à la base de données |
| erreur.stack | Trace de pile (erreurs uniquement) | ... |
ID de corrélation
Un ID de corrélation est un identifiant unique généré au début de chaque demande et transmis à chaque appel de service en aval, requête de base de données et tâche en arrière-plan. Lors de l'enquête sur un problème, la recherche par ID de corrélation affiche chaque entrée de journal liée à cette demande spécifique dans tous les services.
Mise en œuvre : Générez un UUID au niveau de la passerelle API ou de l'équilibreur de charge, transmettez-le dans l'en-tête X-Request-ID et incluez-le dans chaque entrée de journal. Dans NestJS, utilisez un middleware qui extrait ou génère l'ID de corrélation et le stocke dans le contexte de stockage local asynchrone.
Niveaux de journalisation
Utilisez les niveaux de journalisation de manière cohérente :
- DEBUG -- informations de diagnostic détaillées, désactivées en production sauf en cas de débogage actif
- INFO -- événements commerciaux significatifs (commande passée, utilisateur enregistré, paiement traité)
- WARN -- situations inattendues que le système a gérées mais qui doivent faire l'objet d'une enquête (nouvelle tentative réussie, échec du cache, appel d'API obsolète)
- ERROR - échecs ayant affecté l'expérience utilisateur (échec de la demande, paiement refusé, service externe indisponible)
- FATAL -- l'application ne peut pas continuer (base de données inaccessible, configuration requise manquante)
Conservation des journaux et gestion des coûts
Les journaux sont les données d’observabilité les plus coûteuses à stocker. Mettre en œuvre une rétention à plusieurs niveaux :
- Stockage à chaud (30 jours) - recherche en texte intégral, requêtes rapides, coût élevé - Stockage à chaud (90 jours) – requêtes compressées et plus lentes, coût modéré
- Stockage frigorifique (1 an+) -- archivé, requête à la demande, faible coût
- Journaux de débogage -- ne pas stocker en production sauf en cas de dépannage actif
Conception d'alerte
Les mauvaises alertes créent une lassitude face aux alertes : les équipes cessent de répondre aux alertes car la plupart sont des faux positifs ou des bruits de faible priorité. Une bonne alerte fait apparaître de véritables problèmes qui nécessitent une intervention humaine.
Alerte sur les symptômes, pas sur les causes
Alerte basée sur les symptômes (bonne) : "Le taux d'erreur sur /api/orders a dépassé 1 % pendant 5 minutes" : cela indique directement l'impact sur l'utilisateur, quelle que soit la cause sous-jacente.
Alerte basée sur la cause (mauvaise) : "Le processeur de la base de données a dépassé 90 %" : cela peut affecter ou non les utilisateurs. La base de données peut très bien gérer 95 % du processeur, ou elle peut être à 50 % du processeur mais complètement bloquée.
Les métriques basées sur les causes appartiennent aux tableaux de bord à des fins d'investigation, et non aux règles d'alerte.
Niveaux de gravité des alertes
| Gravité | Critères | Réponse | Notifications |
|---|---|---|---|
| Critique (P1) | Impactant les revenus, tous les utilisateurs concernés | Réponse immédiate, ingénieurs de réveil | Appel téléphonique PagerDuty, Slack |
| Élevé (P2) | Fonctionnalité dégradée, sous-ensemble d'utilisateurs concernés | Répondez dans les 30 minutes | PagerDuty push, Slack |
| Moyenne (P3) | Performances dégradées, aucune perte de fonctionnalités | Répondez dans les 4 heures | Canal Slack, e-mail |
| Faible (P4) | Anomalie détectée, aucun impact utilisateur | Répondez dans les 24 heures | E-mail, billet |
Réduire le bruit des alertes
- Alertes liées au groupe -- si la base de données tombe en panne, vous recevez une alerte « base de données indisponible », et non 50 alertes de chaque service qui en dépend 2. ** Exiger une violation soutenue ** – « CPU supérieur à 90 % pendant 5 minutes » et non « CPU supérieur à 90 % pendant 1 seconde » pour éviter les pics transitoires.
- Résolution automatique : les alertes devraient s'effacer automatiquement lorsque la condition est résolue.
- Examen hebdomadaire des alertes : examinez toutes les alertes déclenchées, identifiez et corrigez ou faites taire celles qui n'ont pas nécessité d'action humaine.
- Boucle de rétroaction sur appel : après chaque rotation d'astreinte, l'ingénieur documente quelles alertes étaient exploitables et lesquelles nécessitent un réglage.
SLO : objectifs de niveau de service
Les SLO transforment la surveillance de réactive ("quelque chose est cassé, réparez-le") à proactive ("nous consommons notre budget d'erreurs, enquêtons avant que les utilisateurs ne s'en aperçoivent").
Définir les SLO
Un SLO définit la fiabilité cible d'un service. Il se compose de :
- SLI (Service Level Indicator) – la métrique mesurée (taux de réussite des requêtes, centile de latence)
- Target - le seuil qui définit des performances acceptables (taux de réussite de 99,9 %, P95 inférieur à 200 ms) - Fenêtre - la période sur laquelle la cible est évaluée (30 jours glissants)
Exemples de SLO pour une plateforme de commerce électronique
| Services | SLI | Cible | Budget d'erreur (30 jours) |
|---|---|---|---|
| API du produit | Réponses réussies (non-5xx) | 99,9% | 43 minutes d'arrêt |
| Commander | Transactions réussies | 99,95% | 21 minutes d'arrêt |
| Rechercher | Résultats renvoyés sous 500 ms | 99% | 7,2 heures de réponses lentes |
| Tableau de bord d'administration | Chargements de pages en moins de 3 s | 95% | 36 heures de chargements lents |
Budgets d'erreur
Le budget d’erreur est l’inverse de votre objectif SLO. Un SLO de 99,9 % autorise 0,1 % d'erreurs, soit environ 43 minutes d'arrêt par mois. Lorsque le budget d’erreurs est épuisé, l’équipe se concentre davantage sur les fonctionnalités que sur la fiabilité.
Les budgets d'erreur fournissent un langage partagé entre les équipes d'ingénierie et de produit. Au lieu de débattre pour savoir si un service est « suffisamment fiable », les deux équipes peuvent voir exactement combien de marge d'erreur il reste et prendre des décisions fondées sur les données concernant la fourniture de nouvelles fonctionnalités ou l'investissement dans la stabilité.
Questions fréquemment posées
Combien coûte l'observabilité à grande échelle ?
Les coûts d'observabilité varient de 10 à 50 $ par hôte et par mois pour les piles open source (Prometheus, Grafana, Loki) à 30 à 100 $ et plus par hôte pour les solutions commerciales (Datadog, New Relic). Le principal facteur de coût est le volume des journaux : optimisez-le en échantillonnant les journaux de débogage, en compressant les journaux stockés et en définissant des périodes de conservation appropriées. Pour la plupart des entreprises de moins de 50 serveurs, le coût est compris entre 500 et 2 000 $ par mois.
Dois-je utiliser OpenTelemetry ou des agents spécifiques au fournisseur ?
Utilisez OpenTelemetry. Il s'agit de la norme industrielle en matière d'instrumentation, prise en charge par tous les principaux fournisseurs d'observabilité, et évite la dépendance vis-à-vis d'un fournisseur. Vous pouvez changer de backend (de Datadog à Grafana, par exemple) sans réinstrumenter votre code. Les agents spécifiques au fournisseur offrent parfois une intégration plus poussée, mais le compromis en matière de portabilité n'en vaut pas la peine.
Comment configurer la surveillance d'une application NestJS ?
Dans NestJS, utilisez des intercepteurs pour la synchronisation des requêtes, des filtres d'exception pour le suivi des erreurs et un middleware pour la propagation des ID de corrélation. Intégrez Sentry avec @sentry/nestjs pour le suivi des erreurs. Exportez les métriques Prometheus avec la bibliothèque prom-client exposée sur un point de terminaison /metrics. Utilisez la journalisation structurée avec nestjs-pino ou winston configuré pour la sortie JSON.
Quelle est la différence entre la surveillance et l'observabilité ?
La surveillance vous indique quand des problèmes prédéfinis se produisent (CPU élevé, taux d'erreur en hausse, disque plein). L'observabilité vous permet de poser de nouvelles questions sur le comportement du système sans déployer de nouvelles instruments. Un système est observable lorsque vous pouvez comprendre son état interne à partir de ses sorties externes (métriques, journaux, traces). En pratique, une bonne surveillance est un sous-ensemble de l’observabilité.
Comment convaincre mon équipe d'investir dans l'observabilité ?
Suivez le temps moyen de résolution (MTTR) des incidents de production avant et après les améliorations de l’observabilité. Les équipes avec une bonne observabilité réduisent généralement le MTTR de 60 à 70 %. Multipliez le temps gagné par les coûts d’ingénierie pour afficher le retour sur investissement. Suivez également le nombre d'incidents détectés par la surveillance par rapport aux rapports des utilisateurs : la détection proactive renforce la confiance des clients.
Quelle est la prochaine étape
Commencez par le suivi des erreurs (Sentry) si vous n'avez rien : il fournit la valeur la plus immédiate en détectant et en alertant sur les erreurs de production. Ensuite, ajoutez une journalisation structurée avec des ID de corrélation. Implémentez ensuite la collecte de métriques avec les tableaux de bord Prometheus et Grafana. Enfin, ajoutez un traçage distribué lorsque vous disposez de plusieurs services.
Pour le contexte complet de l'ingénierie des performances, consultez notre guide des piliers sur [la mise à l'échelle de votre plateforme d'entreprise] (/blog/scaling-business-platform-performance). Pour optimiser l'infrastructure sur laquelle veille votre surveillance, lisez notre guide de mise à l'échelle de l'infrastructure.
ECOSIRE implémente des piles d'observabilité pour les plateformes métiers fonctionnant sur Odoo ERP et des architectures personnalisées. Contactez notre équipe DevOps pour une évaluation de surveillance et d'observabilité.
Publié par ECOSIRE — aider les entreprises à évoluer grâce à des solutions basées sur l'IA dans Odoo ERP, Shopify eCommerce et OpenClaw AI.
Rédigé par
ECOSIRE TeamTechnical Writing
The ECOSIRE technical writing team covers Odoo ERP, Shopify eCommerce, AI agents, Power BI analytics, GoHighLevel automation, and enterprise software best practices. Our guides help businesses make informed technology decisions.
ECOSIRE
Développez votre entreprise avec ECOSIRE
Solutions d'entreprise pour l'ERP, le commerce électronique, l'IA, l'analyse et l'automatisation.
Articles connexes
Débogage et surveillance des webhooks : le guide de dépannage complet
Maîtrisez le débogage des webhooks avec ce guide complet couvrant les modèles de défaillance, les outils de débogage, les stratégies de nouvelle tentative, les tableaux de bord de surveillance et les meilleures pratiques de sécurité.
GitHub Actions CI/CD pour les projets Monorepo
Guide complet GitHub Actions CI/CD pour les monorepos Turborepo : versions affectées uniquement, tâches parallèles, stratégies de mise en cache, déploiements basés sur l'environnement et bonnes pratiques de sécurité.
Test et surveillance des agents IA en production
Un guide complet pour tester et surveiller les agents IA dans les environnements de production. Couvre les cadres d'évaluation, l'observabilité, la détection des dérives et la réponse aux incidents pour les déploiements OpenClaw.
Plus de Performance & Scalability
Débogage et surveillance des webhooks : le guide de dépannage complet
Maîtrisez le débogage des webhooks avec ce guide complet couvrant les modèles de défaillance, les outils de débogage, les stratégies de nouvelle tentative, les tableaux de bord de surveillance et les meilleures pratiques de sécurité.
Tests de charge k6 : testez sous contrainte vos API avant le lancement
Maîtrisez les tests de charge K6 pour les API Node.js. Couvre les montées en puissance des utilisateurs virtuels, les seuils, les scénarios, HTTP/2, les tests WebSocket, les tableaux de bord Grafana et les modèles d'intégration CI.
Configuration de production Nginx : SSL, mise en cache et sécurité
Guide de configuration de production Nginx : terminaison SSL, HTTP/2, en-têtes de mise en cache, en-têtes de sécurité, limitation de débit, configuration du proxy inverse et modèles d'intégration Cloudflare.
Odoo Performance Tuning : PostgreSQL et optimisation du serveur
Guide expert sur le réglage des performances d’Odoo 19. Couvre la configuration PostgreSQL, l'indexation, l'optimisation des requêtes, la mise en cache Nginx et le dimensionnement du serveur pour les déploiements d'entreprise.
Odoo vs Acumatica : ERP cloud pour les entreprises en croissance
Odoo vs Acumatica comparés pour 2026 : modèles de tarification uniques, évolutivité, profondeur de fabrication et quel ERP cloud correspond à votre trajectoire de croissance.
Test et surveillance des agents IA en production
Un guide complet pour tester et surveiller les agents IA dans les environnements de production. Couvre les cadres d'évaluation, l'observabilité, la détection des dérives et la réponse aux incidents pour les déploiements OpenClaw.