Concepts et architecture d'X-Ray

Supervision et dépannage sur AWS

John Q. Martin

Principal Consultant

Le défi des systèmes distribués

 

Application monolithique

  • Flux linéaire, dans un seul processus
  • Débogage simple

 

Application distribuée

  • Une requête touche plusieurs services, BDD, API externes
  • En cas d'échec, quel service en est la cause ?

Un gros nœud emmêlé de fils multicolores, illustrant la difficulté de tracer une requête dans un système distribué

Supervision et dépannage sur AWS

Qu'est-ce qu'AWS X-Ray ?

 

X-Ray est un service de traçage distribué qui :

  • Suit les requêtes de bout en bout entre services
  • Mesure la latence et détecte les erreurs à chaque étape
  • Visualise l'architecture via une carte des services

 

Exemple de chemin de requête :

  Schéma d'un chemin de requête traversant plusieurs services dans un traçage distribué

Supervision et dépannage sur AWS

Cinq capacités clés

 

Cinq capacités clés d'X-Ray : traçage des requêtes, analyse des performances, détection d'erreurs, carte des services et insights

Supervision et dépannage sur AWS

Comment fonctionne le traçage

 

Flux de traçage distribué : une requête entre dans le Service A, qui appelle le Service B puis le Service C, chacun transmettant le Trace ID dans l'en-tête HTTP ; chaque service émet un segment avec le même Trace ID vers le démon X-Ray, qui les transfère à X-Ray pour les assembler en un traçage complet

Supervision et dépannage sur AWS

Propagation du Trace ID et des en-têtes

 

Format du Trace ID :

Format du Trace ID X-Ray avec numéro de version, horodatage Unix en hexadécimal et identifiant unique

 

En-tête HTTP :

X-Amzn-Trace-Id:
  Root=1-5e8c1234-...;
  Parent=abc123;
  Sampled=1
  • Root, Trace ID, identique sur tous les services
  • Parent, ID du segment amont
  • Sampled, 0 ou 1, tracé ou ignoré
Supervision et dépannage sur AWS

Le démon X-Ray

 

Ce qu'il fait :

  • Écoute sur le port UDP 2000
  • Reçoit les données de segments de votre application
  • Met en mémoire tampon, regroupe et envoie à l'API X-Ray
  • Désaccouple votre app du service X-Ray

 

Déploiement selon l'environnement :

Déploiement du démon X-Ray selon l'environnement : automatique sur Lambda, service sur EC2 et sidecar sur ECS

Supervision et dépannage sur AWS

Échantillonnage

 

Règle par défaut :

  • Première requête par seconde : toujours tracée
  • 5 % des requêtes supplémentaires : échantillonnées

Champs de règle personnalisée :

  • fixed_target : requêtes/s toujours tracées
  • rate : pourcentage des requêtes supplémentaires
  • priority : le nombre le plus bas l'emporte

 

Stratégie d'exemple :

Règle 1 (priorité 1) :
  Erreurs 5xx -> échantillonnage 100 %

Règle 2 (priorité 10) :
  Trafic normal -> échantillonnage 5 %
Supervision et dépannage sur AWS

Segments

 

Ce qu'un segment enregistre :

  • Nom du service
  • Heure de début et de fin
  • Trace ID
  • Détails de la requête et de la réponse HTTP
  • Compte et région AWS

 

États d'un segment :

Cinq états d'un segment X-Ray : in progress, ok, error, fault et throttle

Supervision et dépannage sur AWS

Sous-segments

 

Comparaison de chronologie : sans sous-segments une seule barre de 800 ms ; avec sous-segments, les 800 ms se décomposent en DynamoDB 50 ms, PaymentService 400 ms mis en évidence comme goulot d'étranglement, et InventoryService 300 ms

Rôle des sous-segments :

  • Donnent un minutage fin à l'intérieur d'un segment
  • Suivent les appels en aval
  • Transforment 800 ms en :
    • DynamoDB.PutItem : 50 ms
    • Appel à PaymentService : 400 ms
    • Appel à InventoryService : 300 ms

 

Espaces de noms :

Trois espaces de noms de sous-segments : aws pour les appels AWS, remote pour le HTTP externe et local pour le code personnalisé

Supervision et dépannage sur AWS

Annotations

 

Points clés :

  • Paires clé-valeur indexées – recherchables et filtrables
  • Limite : 50 indexées par traçage
  • Types : string, number, boolean

À utiliser pour :

  • user_id, order_id, environment
  • version, feature flags, error codes

 

Syntaxe de filtre :

annotation.user_id = "user-123"
annotation.environment = "production"
AND annotation.version = "1.2.3"
Supervision et dépannage sur AWS

Métadonnées

 

Points clés :

  • Non indexées – ni recherche ni filtre
  • Aucune limite de taille
  • Prend en charge toute structure JSON

À utiliser pour :

  • Corps complets de requêtes et de réponses
  • Messages d'erreur et traces de pile
  • Contexte métier (articles de commande, adresses)

 

Annotations vs. Metadata :

Tableau comparatif : annotations indexées et recherchables, versus metadata détaillées non indexées

Supervision et dépannage sur AWS

Structure de traçage complète

 

Structure de traçage complète avec quatre segments et l'API de paiement externe comme opération la plus lente

Supervision et dépannage sur AWS

Récapitulatif

 

  • X-Ray – service de traçage distribué pour une visibilité de bout en bout entre services
  • Mécanisme de traçage – propagation du Trace ID via en-têtes HTTP, segments collectés par le démon, règles d'échantillonnage configurables
  • Composants du traçage :
    • Segments – enregistrements de travail au niveau service
    • Sous-segments – minutage détaillé des opérations en aval
    • Annotations – paires clé-valeur indexées pour filtrer et rechercher
    • Métadonnées – contexte détaillé, non indexé
Supervision et dépannage sur AWS

Passons à la pratique !

Supervision et dépannage sur AWS

Preparing Video For Download...