Surveillance vs observabilité : la vraie différence, avec les journaux, les métriques et les traces

  1. Accueil
  2. Blog
  3. DevOps

DevOps

Surveillance vs observabilité : La vraie différence, avec les journaux, les métriques et les traces

La surveillance vous indique que quelque chose ne va pas. L’observabilité vous aide à comprendre pourquoi, même lorsque l’échec est inattendu. Suivez un incident de paiement pour voir comment les deux fonctionnent ensemble.

9 min de lecture
Surveillance vs observabilité : la vraie différence, avec des logs, des métriques et des traces

À retenir

  • Surveillance surveille les problèmes connus, à l’aide de métriques et d’alertes prédéfinies.
  • L’observabilité désigne la capacité à comprendre l’état interne d’un système à partir de ses sorties.
  • Les journaux, les métriques et les traces sont des signaux courants, mais leur collecte ne garantit pas une meilleure compréhension.
  • Ils travaillent ensemble : la surveillance donne l’alerte et l’observabilité vous aide à en trouver la cause.

Le tableau de bord est vert, et pourtant les clients se plaignent que le paiement ne fonctionne pas. Si vous avez occupé ce poste, vous comprenez déjà la différence entre surveillance et observabilité. Votre surveillance n’a vérifié que ce que vous pensiez vérifier, et cet échec est quelque chose de nouveau.

Ce guide explique les deux idées sans le langage marketing et suit un incident fictif depuis l’alerte jusqu’à la cause profonde. Les journaux, traces et chiffres sont inventés pour illustrer le processus. Vous devez également savoir que les vendeurs et les praticiens tracent cette ligne différemment, et certains considèrent qu’il s’agit en partie d’une distinction marketing. Nous nous concentrons sur la partie pratique.

La réponse courte

La surveillance est une activité. Vous décidez à l’avance ce que vous souhaitez surveiller, comme le processeur, le taux d’erreur ou l’espace disque, et vous définissez des seuils qui déclenchent des alertes. Il répond : « Est-ce que la chose dont je m’inquiétais se produit ?

L’observabilité est une propriété de votre système. Le terme vient de la théorie du contrôle, où il décrit dans quelle mesure vous pouvez déduire l’état interne d’un système à partir de ses sorties externes. En pratique, il répond : « Que se passe-t-il et pourquoi, y compris pour des problèmes que je n’avais jamais anticipés ?

Pensez à une voiture. Les voyants du tableau de bord surveillent. Ils couvrent un ensemble de problèmes connus. Le port de diagnostic complet d’un mécanicien, qui permet à quelqu’un de poser de nouvelles questions sur n’importe quelle partie du moteur, est plus proche de l’observabilité.

Surveillance et observabilité côte à côte

Aspect Surveillance Observabilité
Question principale Quelque chose ne va pas ? Pourquoi est-ce faux ?
Idéal pour Modes de défaillance connus Échecs inconnus et nouveaux
Approche Contrôles et tableaux de bord prédéfinis Exploration ouverte de données riches
Sortie typique Alertes et graphiques d’état Réponses à de nouvelles questions
Détail des données Souvent regroupés Détaillé, par demande si possible
Configuration Configurer les contrôles de l’extérieur Nécessite l’instrumentation de votre code
Utilisé par Opérations, personnel d’astreinte Développeurs et personnel d’astreinte

Ce n’est pas un choix entre les deux. Vous avez toujours besoin d’alertes pour vous indiquer quand chercher.

Pourquoi la surveillance seule ne suffit pas

Avec une seule application sur un serveur, la liste des problèmes pouvant survenir est assez courte, vous pouvez donc toutes les regarder. Un système moderne peut comporter des dizaines de services, de files d’attente et d’API tierces, ainsi que des conteneurs qui vont et viennent. Les échecs deviennent des combinaisons que personne n’avait prédit : une région, un type de client, une version d’application spécifique et une seule dépendance lente.

Vous ne pouvez pas rédiger à l’avance un tableau de bord pour une question à laquelle vous n’avez pas pensé. Vous avez besoin de données qui vous permettent de les poser par la suite.

Journaux, métriques et traces

Ces trois types de télémétrie sont souvent appelés les piliers de l’observabilité. Chacun répond à une question différente :

Signal Qu’est-ce que c’est Réponses Faiblesse
Métriques Des chiffres au fil du temps Combien ? Est-ce que ça empire ? Peu de détails sur des événements uniques
Journaux Enregistrements d’événements individuels Que s’est-il passé exactement ? Peut être coûteux et bruyant
Traces Parcours d’une demande à travers les services Où est passé le temps ? Nécessitent des instruments et sont souvent échantillonnés

Métriques

http_requests_total{service="checkout", status="500"} 1832
http_request_duration_seconds{service="checkout", quantile="0.95"} 2.4

Les métriques sont peu coûteuses à stocker et rapides à interroger, ce qui les rend idéales pour les tableaux de bord et les alertes. Méfiez-vous des étiquettes à cardinalité élevée, comme un identifiant utilisateur, dans de nombreux systèmes métriques, car elles peuvent augmenter considérablement les coûts.

Traces

Une trace suit une requête sur tous les services. Chaque étape est un span avec une heure de début et une durée :

POST /checkout                      2410 ms
├─ auth-service: verify token         18 ms
├─ cart-service: load cart            42 ms
├─ pricing-service: calculate       2290 ms   <-- slow
│  └─ SELECT coupons ...            2265 ms
└─ payment-service: not reached

Une trace rend évidente une étape lente, ce qui est très difficile à voir dans des journaux distincts provenant de services distincts.

Journaux

Les journaux fournissent le détail de ce qui s’est passé à un moment donné. Nous verrons comment les rendre utiles dans un instant.

Présentation d’un incident

Voici comment les pièces s’assemblent, dans un exemple fictif.

Étape Signal Ce que nous apprenons
1. Alerter les incendies Métrique La latence p95 de la caisse a dépassé son objectif de 1 seconde
2. Décomposez-le Métrique Seule l’application mobile est concernée, pas le Web
3. Inspecter une demande Tracer L’heure est à la tarification-service, à une requête de coupon
4. Lisez les détails Journaux Les demandes lentes utilisent toutes un coupon de la campagne d’aujourd’hui
5. Confirmez la cause Plan de requête La recherche de coupon n’a pas d’index approprié
6. Réparez-le Déploiement Ajoutez l’index et regardez la latence récupérer

La surveillance a géré l’étape 1. Tout ce qui a suivi était l’observabilité. Notez comment chaque question découle de la réponse précédente. Personne n’aurait pu créer à l’avance un tableau de bord pour « la requête de coupon d’application mobile de la campagne d’aujourd’hui ». Pour le correctif lui-même, notre guide sur l’optimisation des requêtes SQL montre comment lire ce type de plan.

De meilleurs journaux

Les journaux en texte brut sont conçus pour les yeux humains et difficiles à interroger. Les Journaux structurés utilisent des champs sur lesquels une machine peut filtrer :

# Hard to search
ERROR Payment failed for user 42 after 3 tries

# Easy to search
{"level":"error","event":"payment_failed","user_id":"42",
 "attempts":3,"provider":"acme","trace_id":"a1b2c3","duration_ms":2410}

Avec le deuxième formulaire, vous pouvez immédiatement demander « combien de pannes par fournisseur au cours de la dernière heure ? » Le champ trace_id est particulièrement précieux, car il relie une ligne de journal à l’ensemble de la requête, pour chaque service touché.

N’enregistrez jamais de mots de passe, de jetons ou de numéros de carte et faites attention aux données personnelles. Comme l’explique notre guide, les JWT peuvent être réutilisés par toute personne qui les lit à partir d’un journal.

Conseil : Ajoutez le contexte souhaité lors d’un incident, tel que la version, la région, le niveau client et l’état de l’indicateur de fonctionnalité. Pouvoir dire « uniquement la version 2.14 dans une région » résout souvent le problème à lui seul.

Les signaux d’or

Vous ne savez pas quoi surveiller ? Le livre Site Reliability Engineering de Google suggère quatre signaux pour les systèmes destinés aux utilisateurs :

Signal Question Exemple
Latence Combien de temps prennent les demandes ? temps de réponse p95 et p99
Trafic Quelle est la demande ? Requêtes par seconde
Erreurs Combien de requêtes échouent ? Taux de réponses 5xx
Saturation Quel est le niveau de remplissage du système ? Utilisation du processeur, de la mémoire et du pool de connexions

Utilisez des percentiles pour la latence, car les moyennes masquent les requêtes lentes, comme nous l’avons montré dans tests de charge vs tests de stress.

Alerte les gens en qui ils ont confiance

Si les alertes se déclenchent en permanence, les gens arrêtent de les lire. Les bons suivent quelques règles :

  • Alerte sur les symptômes ressentis par les utilisateurs. « Erreurs de paiement supérieures à 2 % » bat « CPU à 85 % ». Un processeur élevé qui ne nuit à personne ne devrait réveiller personne.
  • Rendez chaque alerte exploitable. Si personne n’a besoin de faire quoi que ce soit, faites-en un élément du tableau de bord ou supprimez-le.
  • Lien vers un runbook. Dites au répondeur où chercher et quoi essayer.
  • Examinez-les régulièrement. Supprimez ou corrigez toute alerte qui a été ignorée le mois dernier.

Objectifs de niveau de service

Un SLO transforme « le site doit être rapide et fiable » en un objectif mesurable, comme « 99,9 % des demandes de paiement aboutissent sur 30 jours ». Cela permet d’éviter environ 0,1 % d’échecs, ce que l’on appelle un budget d’erreur. S’il vous en reste suffisamment, vous pouvez expédier plus rapidement, et s’il est presque épuisé, vous pouvez donner la priorité à la fiabilité. C’est un moyen utile de régler les différends entre rapidité de livraison et stabilité.

OpenTelemetry et outils

OpenTelemetry est une norme open source et indépendante du fournisseur pour générer et exporter des données de télémétrie. Il s’agit d’un projet de la Cloud Native Computing Foundation. Instrumenter avec cela signifie que vous pouvez modifier votre backend plus tard sans réécrire votre code. Il ne s’agit pas d’un produit de stockage ou de tableau de bord en soi, vous l’associez donc à un :

Objectif Exemples open source Exemples commerciaux
Métriques Prométhée Datadog, nouvelle relique
Tableaux de bord Grafana Datadog, Dynatrace
Journaux Loki, Recherche Ouverte Splunk, Élastique
Traces Jaeger, Tempo Nid d’abeille, Datadog

Vérifiez vous-même les fonctionnalités et les tarifs actuels, car ces produits changent souvent. Les coûts peuvent augmenter rapidement avec le volume de données, utilisez donc l’échantillonnage et définissez des limites de conservation.

Comment commencer

  1. Commencez par les signaux en or pour votre service le plus important.
  2. Ajoutez une ou deux alertes sur les symptômes remarqués par les utilisateurs.
  3. Passez aux journaux structurés avec un ID de demande dans chaque ligne.
  4. Ajoutez le traçage à votre parcours utilisateur principal avec OpenTelemetry, car l’auto-instrumentation peut couvrir de nombreux frameworks courants.
  5. Liez les déploiements à vos graphiques afin que vous puissiez voir si une version de votre pipeline CI/CD a provoqué un changement.
  6. Apprenez de chaque incident. Après chacun d’entre eux, demandez quelles données auraient permis une résolution plus rapide et ajoutez-les.

Une petite équipe avec un seul service n’a pas besoin d’une immense plateforme. Des mesures de base, de bons journaux et quelques alertes peuvent suffire. Le traçage gagne sa place à mesure que le nombre de services augmente.

Erreurs courantes

  • Acheter un outil et l’appeler observabilité. La valeur vient d’une bonne instrumentation et de la façon dont vous utilisez les données.
  • Traiter trois piliers comme une liste de contrôle. Séparer les données sans aucun moyen de les relier vous oblige à parcourir les onglets. Les identifiants partagés sont importants.
  • Tout collecter. La télémétrie non filtrée coûte cher et ajoute du bruit.
  • Trop de tableaux de bord. Quelques vues fiables dépassent une centaine que personne n’ouvre.
  • Je pense que cela remplace les tests. Vous avez toujours besoin de tests avant la sortie. Cependant, les versions Canary se marient bien avec ces signaux.

Pour conclure

La surveillance vous indique que quelque chose s’est mal passé et l’observabilité vous donne les moyens de découvrir pourquoi. Le test pratique est simple : lorsqu’un problème inconnu apparaît, pouvez-vous en trouver la cause sans envoyer de nouveau code ? La prochaine fois que vous serez confronté à un incident, notez toutes les questions auxquelles vous n’avez pas pu répondre. Cette liste est votre feuille de route.

Questions fréquentes

Quelle est la différence entre surveillance et observabilité ?

La surveillance suit les métriques prédéfinies et les alertes sur les problèmes connus. L’observabilité est la capacité de comprendre l’état d’un système à partir de ses résultats, y compris en cas de problèmes inattendus.

Quels sont les trois piliers de l’observabilité ?

Ce sont des journaux, des métriques et des traces. Les journaux enregistrent les événements, les métriques mesurent les valeurs au fil du temps et les traces suivent une seule requête sur tous les services.

Ai-je besoin d’observabilité si j’ai une surveillance ?

Pour un système petit et simple, une bonne surveillance et des journaux peuvent suffire. À mesure que les systèmes deviennent distribués et que les pannes sont moins prévisibles, l’observabilité devient plus précieuse.

Qu’est-ce qu’OpenTelemetry ?

Il s’agit d’un standard open source et d’un ensemble d’outils permettant de produire et d’exporter des journaux, des métriques et des traces, vous n’êtes donc pas lié à l’agent d’un seul fournisseur.

Quels sont les quatre signaux d’or ?

Ce sont la latence, le trafic, les erreurs et la saturation. Les directives SRE de Google les recommandent comme point de départ pour surveiller les systèmes destinés aux utilisateurs.

Continuez à apprendre

Travailler avec Stack Quora

Besoin d’aide pour les tests, WordPress ou le référencement ?

Nous aidons les équipes à proposer de meilleurs logiciels et à développer leurs sites. Dites-nous sur quoi vous travaillez et nous vous proposerons une prochaine étape claire.

Continuez à lire

Plus de guides sur tests, IA et développement moderne

Vous avez apprécié cet article ? Choisissez un sujet et accédez directement à nos nouveaux didacticiels.

Intelligence artificielle

Les hallucinations de l'IA expliquées : pourquoi les modèles de langage inventent les choses et comment les réduire

Les hallucinations de l'IA ont expliqué : ce qu'elles sont, pourquoi les modèles de langage les produisent, les types courants, comment les réduire …

Lire l'article →
DevOps

Variables d'environnement expliquées : fichiers .env, secrets et configuration correctement effectués

Variables d'environnement expliquées avec des exemples Python que nous avons exécutés : lecture et définition, pourquoi chaque valeur est une chaîne…

Lire l'article →
Développement logiciel

Limitation du débit de l'API expliquée : algorithmes, en-têtes et gestion des erreurs 429

Limitation du débit de l'API expliquée avec une simulation que nous avons exécutée : compartiment de jetons, fenêtre fixe, fenêtre glissante, 429 ré…

Lire l'article →
Automatisation des tests

Se moquer en Python : unittest.mock, patch et les erreurs qui font mentir les tests

Moquerie en Python avec unittest.mock, testée : Mock et return_value, side_effect, correctifs où un nom est utilisé, spec et autospec, dates moqueus…

Lire l'article →
Tests logiciels

Couverture du code expliquée : couverture des lignes par rapport aux branches et ce que signifie réellement 100 %

Couverture du code expliquée avec une véritable exécution de cover.py : couverture des lignes, des branches et des conditions, lecture d'un rapport,…

Lire l'article →
Bases de données et SQL

DELETE vs TRUNCATE vs DROP dans SQL : différences, restauration et quand les utiliser

DELETE vs TRUNCATE vs DROP expliqué avec SQL testé : ce que chacun supprime, restauration, déclencheurs, réinitialisation d'identité, vitesse et en …

Lire l'article →
Bases de données et SQL

Vues SQL expliquées : créez, utilisez et évitez les pièges, avec des exemples

Vues SQL expliquées avec les requêtes que nous avons exécutées : création d'une vue, résultats en direct, masquage des colonnes, performances, vues …

Lire l'article →
Développement logiciel

Interface TypeScript vs Type : différences réelles, testées avec le compilateur

Interface TypeScript vs type, vérifiée avec le vrai compilateur : ce que les deux peuvent faire, ce qu'un seul peut faire, la fusion des déclaration…

Lire l'article →
Développement logiciel

Python *args et **kwargs expliqués : fonctions flexibles avec des exemples clairs

Python *args et **kwargs expliqués avec le code que nous avons exécuté : emballage et déballage, ordre des paramètres, arguments de mot-clé uniqueme…

Lire l'article →
Développement logiciel

Fonctions Python Lambda : syntaxe, utilisations réelles et quand ne pas les utiliser

Fonctions Python lambda expliquées avec le code que nous avons exécuté : syntaxe, tri avec clé, carte et filtre, fermetures, piège de liaison tardiv…

Lire l'article →
Intelligence artificielle

Que sont les agents IA ? Comment ils fonctionnent, avec une simple boucle d'agent que vous pouvez exécuter

Que sont les agents IA ? Un guide simple sur la boucle d'agent, les outils, la mémoire et les garde-fous, avec une petite boucle Python que nous avo…

Lire l'article →
DevOps

Surveillance vs observabilité : la vraie différence, avec les journaux, les métriques et les traces

Surveillance et observabilité expliquées : échecs connus et inconnus, journaux, métriques et traces, présentation pas à pas des incidents de paiemen…

Lire l'article →
DevOps

Volumes Docker vs montages Bind : conserver les données du conteneur de la bonne manière

Volumes Docker et montages de liaison expliqués : pourquoi les données du conteneur disparaissent, volumes nommés, montages de liaison, tmpfs, exemp…

Lire l'article →
Automatisation des tests

TDD vs BDD : principales différences, une fonctionnalité conçue dans les deux sens et quand les utiliser

TDD vs BDD expliqué avec une fonctionnalité de remise construite dans les deux sens : refactor rouge-vert avec le code que nous avons exécuté, scéna…

Lire l'article →
Développement logiciel

Git merge vs rebase : différences, exemples et quand utiliser chacun

Git merge vs rebase expliqué avec de vraies sorties de log, un tableau comparatif, la règle d'or du rebase et un flux de travail sûr pour les équipes.

Lire l'article →
Développement logiciel

List comprehension Python : syntaxe, exemples et cas à éviter

La list comprehension Python expliquée : syntaxe, filtres, if-else, boucles imbriquées, temps mesurés et cas où une boucle for classique est préféra…

Lire l'article →
Bases de données et SQL

Jointures SQL expliquées avec exemples (Inner, Left, Right, Full)

Comprenez les jointures SQL pas à pas avec des tables et requêtes d'exemple : INNER, LEFT, RIGHT, FULL, CROSS et SELF, plus erreurs courantes et con…

Lire l'article →