Observabilité API : relier les signaux à une décision

À retenir

Un tableau de disponibilité ne suffit pas pour expliquer une opération lente ou incorrecte. Commencez par le parcours utilisateur, puis reliez mesures, événements et dépendances nécessaires au diagnostic.

Baies de communication et câblage réseau dans un local vide Illustration · scène fictive
Dans cet article

Choisir le signal adapté à la question

OpenTelemetry distingue notamment métriques, journaux et traces. Ils se complètent, sans garantir une visibilité exhaustive. Documentez la fenêtre de mesure, les points instrumentés et les exclusions ; une moyenne seule peut masquer les requêtes les plus lentes.

QuestionSignal utileLimite à connaître
Combien de requêtes échouent ?Métriques agrégéesDéfinir erreurs, périmètre et période.
Où le temps est-il passé ?Trace et durées des étapesÉchantillonnage et dépendances non instrumentées.
Quel événement a eu lieu ?Journal structuréPas de secrets ni de données excessives.
Le parcours fonctionne-t-il ?Sonde fonctionnelleUn scénario ne couvre pas tous les usages.

Construire un diagnostic exploitable

  • Mesurez débit, erreurs et distribution des durées par opération normalisée. Évitez les identifiants utilisateurs et les URL variables comme étiquettes de métriques.
  • Reliez les événements à un identifiant de corrélation et à la version du service. Vérifiez la propagation du contexte et la politique d’échantillonnage avant de chercher une trace absente.
  • Associez chaque alerte à un impact, un responsable et une première action. Testez les sondes avec des comptes dédiés et sans déclencher d’opérations irréversibles.

Protéger les données et vérifier le résultat

Ne journalisez pas les mots de passe, jetons ou corps sensibles. Limitez les accès et la conservation. Une réponse HTTP réussie peut tout de même contenir un résultat métier faux : contrôlez aussi les invariants attendus et les droits, dans un environnement maîtrisé.

Références primaires

Pour approfondir

Relier les signaux à une tâche utilisateur

Métriques, journaux et traces répondent à des questions différentes. Un taux de disponibilité élevé peut masquer un parcours d’achat ou de connexion en échec. Définissez d’abord le résultat attendu par l’utilisateur, puis instrumentez les appels qui y contribuent.

  • Choisir un indicateur par parcours : succès, délai et erreurs visibles par l’utilisateur.
  • Propager un identifiant de corrélation entre services et limiter les données sensibles dans les traces.
  • Rejouer une panne de dépendance pour vérifier que l’alerte conduit à une action et à un mode dégradé compréhensible.

Référence primaire : OpenTelemetry — Observability primer. Méthode connexe : consulter le guide pratique.

Panne de collecte : rapprocher les journaux et les événements manquants

Distinguer événements produits, reçus et exploitables pour expliquer une interruption sans confondre silence et absence d’incident.

  • Cartographiez application, collecteur et stockage avec leurs responsables. Préparez une séquence finie d’événements fictifs portant des identifiants stables, sans secrets ni données clients. Conservez heure de l’événement et heure d’observation : un retard de collecte n’est pas automatiquement une perte.
  • En test, interrompez la destination puis rétablissez-la. Observez remplissage de la file, tentatives, rejets et redémarrage. Une file persistante peut limiter certaines pertes mais reste bornée et dépend du stockage ; fixez le comportement si elle est pleine. Vérifiez que la collecte ne bloque pas silencieusement le service.
  • Rapprochez la référence et les événements réellement lisibles au même arrêt d’observation. Comptez répétitions, retards et absences séparément ; un acquittement réseau ne prouve pas l’exploitation finale. Sans référence fiable, déclarez la couverture inconnue plutôt que zéro événement perdu ou zéro incident.

Cas de recette à reproduire

Exemple fictif : ces données ne décrivent aucun client ni résultat réel.

Voir les données du cas
{
    "expected_ids": [
        "E1",
        "E2",
        "E3"
    ],
    "received_ids": [
        "E1",
        "E1",
        "E3"
    ],
    "received_rows": 3,
    "unique_received": 2,
    "missing_ids": [
        "E2"
    ],
    "observation_cutoff": "same_for_both_sets"
}

Décision attendue

Exemple fictif : E1, E2 et E3 sont attendus, mais E1, E1 et E3 sont reçus. Les trois lignes ne prouvent pas la complétude : E1 se répète et E2 manque à l’arrêt d’observation.

OpenTelemetry — Collector resiliency

Trois lignes reçues prouvent-elles que trois événements sont conservés ?

Non. Deux lignes peuvent répéter le même identifiant et masquer une absence. Comparez les identifiants, la fenêtre d’observation et les étapes de la chaîne.

Référence primaire : OpenTelemetry — Collector resiliency. Méthode connexe : consulter le guide pratique.

Sous-domaines abandonnés : retirer un CNAME sans laisser de prise

Relier chaque nom DNS à une ressource contrôlée et intégrer le retrait du DNS à la fermeture d’un service.

  • Inventoriez nom public, chaîne CNAME, ressource du fournisseur et responsable. Comparez la zone DNS avec l’inventaire du compte autorisé. Une erreur HTTP, un NXDOMAIN ou une cible absente est un signal à examiner, pas la preuve d’une prise de contrôle possible ; les protections dépendent du fournisseur.
  • Pour un service à fermer, retirez le pointage ou remplacez-le par une destination que vous contrôlez avant de libérer la ressource. Tenez compte des TTL antérieurs et des caches ; vérifiez la zone autoritative et plusieurs résolveurs. Conservez les validations de propriété nécessaires au fournisseur plutôt que de supprimer indistinctement les TXT.
  • Vérifiez liens, redirections, rappels OAuth, webhooks et domaines de cookies qui utilisent encore ce nom. Si la cible a déjà été libérée, corrigez le pointage et examinez une éventuelle exposition selon la procédure d’incident. Ajoutez un contrôle de rapprochement DNS–ressources après chaque suppression.

Cas de recette à reproduire

Exemple fictif : ces données ne décrivent aucun client ni résultat réel.

Voir les données du cas
{
    "name": "portal.example",
    "cname_present": true,
    "resource_deleted": true,
    "provider_claimability": "not_verified",
    "takeover_observed": false,
    "expected": "remove_or_replace_mapping_and_review_exposure"
}

Décision attendue

Exemple fictif : portail.example pointe encore vers une ressource supprimée. Le CNAME est à retirer ou à remplacer par une cible contrôlée ; l’absence de ressource ne suffit pas à conclure qu’un tiers a pris le sous-domaine.

Microsoft — Prevent dangling DNS entries

Référence primaire : Microsoft — Prevent dangling DNS entries. Méthode connexe : consulter le guide pratique.

Reprises API : compter le budget de bout en bout

Dans la supervision, séparez durée d’un appel, attentes de reprise et durée totale vécue par le client. Un appel moyen rapide peut coexister avec un parcours lent si les erreurs déclenchent des attentes successives.

Cas pédagogique fictif — les chiffres ne décrivent pas CIE ni un client.

Le scénario fictif comprend quatre tentatives au total, chacune limitée à 250 ms, avec des attentes déterministes de 100, 200 et 400 ms. Le budget modélisé vaut 1 700 ms : 1 000 ms d’appels et 700 ms d’attentes. Il dépasse une échéance de 1 500 ms, avant même les autres coûts du parcours.

Tentatives au total
4Une initiale et trois reprises
Attentes cumulées
700 ms100 + 200 + 400
Budget modélisé
1 700 ms4 × 250 + 700
Décomposer la séquence fictive
ÉtapeDélai maximal de l’appelAttente avant l’appel suivant
Tentative 1250 ms100 ms
Tentative 2250 ms200 ms
Tentative 3250 ms400 ms
Tentative 4250 msAucune
Total1 000 ms700 ms
Durées du même modèle (ms)
  • Appels1 000 ms
  • Attentes700 ms
  • Échéance saisie1 500 ms

Contrôles pour interpréter le cas

  1. Propager une échéance globale et borner chaque appel par le temps restant. Ne pas empiler des politiques de reprise indépendantes entre couches.
  2. Vérifier si l’opération peut être répétée sans effet doublé. Un délai dépassé ne prouve pas que le serveur distant a arrêté le traitement.
  3. Le modèle ne comprend pas jitter, plafonds, Retry-After, résolution DNS, connexion, file d’attente ni validation locale. Mesurer ces coûts avant de configurer le service.
Quand une reprise aggrave la panne

Le budget de durée n’est qu’une condition. Une opération peut être assez rapide tout en étant dangereuse à répéter ou en multipliant la charge sur un fournisseur indisponible.

Quand une reprise aggrave la panne
Signal à examinerVérification concrèteConséquence pour la décision
Action non idempotenteVérifier la clé, sa portée et la conservation du résultat côté service.Réconcilier l’état avant de répéter une création ou un paiement.
Reprises à plusieurs étagesCompter les tentatives du navigateur, de la passerelle et du service.Attribuer la responsabilité des reprises et un budget de bout en bout.
Indisponibilité durableVérifier échéance, annulation et comportement du parcours sans le fournisseur.Prévoir une dégradation explicite et une reprise contrôlée.

Passer du chiffre à la vérification

Éprouver le scénario d’échec complet

Test à reproduire
Tester indisponibilité, réponse lente et perte de réponse après traitement. Vérifier l’idempotence avant toute reprise d’une écriture et compter aussi les reprises des couches intermédiaires.
Signal d’arrêt
Relancer une opération non idempotente sans savoir si la première tentative a produit son effet.

Changer une hypothèse

Réduire les essais sans créer de doublon métier

L’exemple précédent autorise quatre tentatives et atteint 1 700 ms. Voici ce que change un essai de moins, sans confondre budget théorique et durée observée.

  1. Trois tentatives

    3 × 250 ms = 750 ms d’appels au maximum dans le modèle.

  2. Deux attentes

    100 + 200 ms = 300 ms ; total modélisé : 1 050 ms.

  3. Échéance

    Il reste 450 ms sur 1 500 ms pour les autres coûts, sans garantie qu’ils y tiennent.

Exercice de lecture : les variantes décrivent des situations fictives.

Et si la première tentative a déjà créé la commande ?
Nouvel élément
Le serveur a traité l’action, mais la réponse s’est perdue.
Ce que cela change
Un nouvel essai peut répéter l’effet métier. Vérifier l’idempotence ou retrouver l’état de l’opération avant de renvoyer l’action. Le calcul de délai ne résout pas ce problème.
Et si plusieurs couches relancent chacune trois fois ?
Nouvel élément
Dans un cas maximal simplifié, trois tentatives à chaque niveau sur trois niveaux peuvent produire 27 appels en aval.
Ce que cela change
Identifier la couche responsable des reprises et le budget global. La multiplication 3 × 3 × 3 décrit ce scénario, pas un volume systématique de production.
Pourquoi compter les tentatives plutôt que les reprises ?

Une tentative initiale plus trois reprises produit quatre appels. Employer des noms distincts évite une erreur d’une tentative dans la configuration et le calcul.

Essayer un budget de reprise

n × délai + attente × (2^(n−1) − 1). Attentes doublées, sans jitter ni plafonnement.

Méthode connexe : consulter le guide pratique.

Références : données, usages et limites

Documentation consultée le .

Références : données, usages et limites
Source et objetDonnée ou repère vérifiéComment l’utiliserLimite à conserver
NIST · SP 800-61 Rev. 3

Préparer la réponse à incident dans la gestion du risque cyber.

La révision 3 a été publiée en avril 2025 et remplace la révision 2. Elle se présente comme un profil communautaire du CSF 2.0. Exercez décision de confinement, conservation des traces, communication et reprise. Comparez ce qui était prévu aux preuves produites pendant l’exercice.

Approfondir la méthode →

Lire le guide ne valide pas un plan local. Les contacts, accès de secours et dépendances doivent être testés dans votre environnement.
Google · Core Web Vitals

Distinguer vitesse d’affichage, réactivité et stabilité visuelle.

Les repères « bon » sont LCP ≤ 2,5 s, INP ≤ 200 ms et CLS ≤ 0,1, au 75e percentile, avec segmentation mobile et ordinateur. Séparez mesures de terrain et tests de laboratoire. Relevez période, URL, appareil, population et taille d’échantillon avant de comparer une évolution.

Approfondir la méthode →

Ces seuils ne sont pas des résultats mesurés de ce site. Un bon score de laboratoire ne prouve pas à lui seul l’expérience des visiteurs.

API : dépréciation et retrait

Retrait annoncé et continuité à vérifier

Un champ Sunset signale une intention ; il ne prouve ni arrêt effectif ni continuité assurée jusque-là. Préparer les dépendances, les données et les accès à déplacer.

  • Identifier le périmètre exact de l’annonce et son responsable.
  • Conserver les dates et leurs mises à jour avec la preuve de réception.
  • Tester la sortie, les opérations en cours et le retrait des accès devenus inutiles.

Comparer les annonces de dépréciation et de retrait →

IETF · RFC 9745 · Deprecation · Standards Track · March 2025 · §2–5 · consulted 2026-10-23

IETF · RFC 8594 · Sunset · Informational · May 2019 · §3–5, §8 · consulted 2026-10-23