Qu'est-ce que c'est AWS X-Ray ? - AWS X-Ray

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Qu'est-ce que c'est AWS X-Ray ?

AWS X-Ray est un service qui collecte des données sur les demandes traitées par votre application et fournit des outils que vous pouvez utiliser pour afficher, filtrer et obtenir des informations sur ces données afin d'identifier les problèmes et les opportunités d'optimisation. Pour toute demande retracée envoyée à votre application, vous pouvez consulter des informations détaillées non seulement sur la demande et la réponse, mais également sur les appels que votre application fait aux AWS ressources en aval, aux microservices, aux bases de données et aux API Web.


      X-Ray affiche des informations détaillées sur les demandes de candidature.

AWS X-Ray reçoit des traces de votre application, en Services AWS plus des utilisations déjà intégrées à X-Ray. L'instrumentation de votre application implique l'envoi de données de suivi pour les demandes entrantes et sortantes et d'autres événements au sein de votre application, ainsi que des métadonnées relatives à chaque demande. De nombreux scénarios d'instrumentation exigent uniquement des modifications de configuration. Par exemple, vous pouvez instrumenter toutes les requêtes HTTP entrantes et les appels en Services AWS aval effectués par votre application Java. Il existe plusieurs SDK, agents et outils qui peuvent être utilisés pour équiper votre application de traçage par rayons X. Voir Instrumentation de votre application pour plus d'informations.

Services AWS qui sont intégrés à X-Ray peuvent ajouter des en-têtes de suivi aux demandes entrantes, envoyer des données de suivi à X-Ray ou exécuter le daemon X-Ray. AWS Lambda Vous pouvez, par exemple, envoyer des données de suivi concernant les requêtes adressées à vos fonctions Lambda et exécuter le démon X-Ray sur les utilisateurs afin de simplifier l'utilisation du SDK X-Ray.


      Comment fonctionne le SDK X-Ray

Au lieu d'envoyer les données de suivi directement à X-Ray, chaque SDK client envoie des documents de segment JSON à un processus démon qui écoute le trafic UDP. Le daemon X-Ray met en mémoire tampon les segments d'une file d'attente et les télécharge dans X-Ray par lots. Le daemon est disponible pour Linux, Windows et macOS, et est inclus sur les AWS Elastic Beanstalk AWS Lambda plateformes.

X-Ray utilise les données de suivi provenant des AWS ressources qui alimentent vos applications cloud pour générer une carte de suivi détaillée. La carte de suivi indique le client, votre service frontal et les services principaux que votre service frontal appelle pour traiter les demandes et conserver les données. Utilisez la carte de suivi pour identifier les goulets d'étranglement, les pics de latence et les autres problèmes à résoudre afin d'améliorer les performances de vos applications.


      La carte de suivi indique le client, le service frontal et les services principaux que votre service frontal appelle pour traiter les demandes et conserver les données

Commencer à utiliser X-Ray

Pour commencer avec AWS X-Ray :

  • Lancez un exemple d'application déjà instrumenté pour générer des données de suivi. En quelques minutes, vous pouvez lancer l'exemple d'application, générer du trafic, envoyer des segments à X-Ray et afficher une carte de suivi et des traces dans le AWS Management Console.

  • Apprenez à instrumenter votre application, notamment à l'aide des SDK X-Ray ou du AWS Distro pour envoyer des données de suivi OpenTelemetry à X-Ray.

  • Découvrez d'autres Services AWSsolutions intégrées à X-Ray, notamment l'échantillonnage et l'ajout d'en-têtes aux demandes entrantes, l'exécution du démon X-Ray et l'envoi automatique de données de suivi à X-Ray.

  • Utilisez l'API X-Ray, qui permet d'accéder à toutes les fonctionnalités de X-Ray via le AWS AWS Command Line Interface SDK ou directement via HTTPS.

AWS X-Ray concepts

AWS X-Ray reçoit les données des services sous forme de segments. X-Ray regroupe ensuite les segments ayant une requête commune dans des traces. X-Ray traite les traces pour générer un graphe de service fournissant une représentation visuelle de votre application.

Segments

Les ressources de calcul qui exécutent la logique de votre application envoient des données concernant leur travail sous forme de segments. Chaque segment indique le nom de la ressource, des détails concernant la demande, ainsi que des détails sur le travail effectué. Par exemple, lorsqu'une demande HTTP parvient à votre application, elle peut enregistrer les données suivantes sur :

  • L'hôte : nom d'hôte, alias ou adresse IP

  • La demande : méthode, adresse du client, chemin, agent utilisateur

  • La réponse : statut, contenu

  • Le travail effectué : heures de début et de fin, sous-segments

  • Problèmes qui se produisent : erreurs, défauts et exceptions, y compris la capture automatique des piles d'exceptions.


        Segmenter les données pour un X-Ray Trace

Le SDK X-Ray collecte des informations à partir des en-têtes de demande et de réponse, du code de votre application et des métadonnées relatives aux AWS ressources sur lesquelles elle s'exécute. Vous choisissez les données à collecter en modifiant la configuration ou le code de votre application afin d'instrumenter les demandes entrantes, les demandes en aval et les clients du AWS SDK.

Demandes transmises

Si un équilibreur de charge ou un autre intermédiaire transmet une demande à votre application, X-Ray prend l'adresse IP du client depuis l'X-Forwarded-Foren-tête de la demande plutôt que depuis l'adresse IP source du paquet IP. L'adresse IP du client enregistrée pour une demande transférée peut être falsifiée, elle ne doit donc pas être fiable.

Vous pouvez utiliser le SDK X-Ray pour enregistrer des informations supplémentaires telles que des annotations et des métadonnées. Pour plus d'informations sur la structure et les informations enregistrées dans les segments et les sous-segments, consultez AWS X-Ray documents segmentés. La taille des documents segmentés peut atteindre 64 kB.

Sous-segments

Un segment peut décomposer les données concernant le travail effectué en sous-segments. Les sous-segments fournissent des informations de durée plus précises et des détails sur les appels en aval effectués par votre application pour satisfaire la demande initiale. Un sous-segment peut contenir des informations supplémentaires sur un appel à une Service AWS API HTTP externe ou à une base de données SQL. Vous pouvez même définir des sous-segments arbitraires pour instrumenter des fonctions spécifiques ou des lignes de code dans votre application.


        Les sous-segments fournissent des informations plus précises

Pour les services qui n'envoient pas leurs propres segments, comme Amazon DynamoDB, X-Ray utilise des sous-segments pour générer des segments déduits et des nœuds en aval sur la carte de trace. Cela vous permet de voir l'ensemble de vos dépendances en aval, même si elles ne prennent pas en charge le suivi ou sont externes.

Les sous-segments représentent la vue par votre application d'un appel en aval en tant que client. Si le service en aval est également instrumenté, le segment qu'il envoie remplace le segment déduit généré à partir du sous-segment du client en amont. Le nœud sur le graphique de services utilise toujours des informations provenant du segment du service, si elle sont disponibles, tandis que la zone périphérique entre les deux nœuds utilise le sous-segment du service en amont.

Par exemple, lorsque vous appelez DynamoDB avec un client SDK AWS instrumenté, le SDK X-Ray enregistre un sous-segment pour cet appel. DynamoDB n'envoie pas de segment. Par conséquent, le segment déduit dans le traçage, le nœud DynamoDB sur le graphe de service et la limite entre votre service et DynamoDB contiennent tous des informations provenant du sous-segment.


        À la limite entre une application instrumentée et DynamoDB.

Lorsque vous appelez un autre service instrumenté avec une application instrumentée, le service en aval envoie son propre segment pour enregistrer sa vue de l'appel que le service en amont a enregistré dans un sous-segment. Dans le graphique de services, les deux nœuds de service contiennent des informations de synchronisation et des informations d'erreur provenant de ces services, tandis que l'arc entre eux contient des informations provenant du sous-segment du service en amont.


        Une application instrumentée appelant une autre application instrumentée.

Ces deux points de vue sont utiles, car le service en aval enregistre précisément le moment auquel il a commencé et terminé le travail sur la demande et le service en amont enregistre la latence de l'aller-retour, y compris le temps passé par la demande pour circuler entre les deux services.

Graphique de services

X-Ray utilise les données envoyées par votre application pour générer un graphe de service. Chaque AWS ressource qui envoie des données à X-Ray apparaît sous forme de service dans le graphique. Les zones périphériques connectent les services qui fonctionnent ensemble pour traiter les demandes. Les arcs connectent les clients à votre application, et votre application aux ressources et services en aval qu'elle utilise.

Noms des services

Un segment name doit correspondre au nom de domaine ou au nom logique du service qui génère le segment. Toutefois, cela n'est pas appliqué. Toute application autorisée PutTraceSegmentspeut envoyer des segments sous n'importe quel nom.

Un graphique de services est un document au format JSON qui contient des informations sur les services et ressources qui composent votre application. La console X-Ray utilise le graphe de service pour générer une visualisation ou une carte de service.


        Carte de traçage

Pour une application distribuée, X-Ray combine les nœuds de tous les services qui traitent les demandes avec le même ID de trace dans un graphe de service unique. Le premier service qui traite la demande ajoute un en-tête de suivi, lequel est ensuite propagé entre le serveur frontal et les services appelés.

Par exemple, Scorekeep exécute une API web qui appelle un microservice (une fonction AWS Lambda ) pour générer un nom aléatoire à l'aide d'une bibliothèque Node.js. Le SDK X-Ray pour Java génère l'ID de trace et l'inclut dans les appels à Lambda. Lambda envoie des données de suivi et transmet l'ID de trace à la fonction. Le SDK X-Ray pour Node.js utilise également l'ID de trace pour envoyer des données. Par conséquent, les nœuds de l'API, du service Lambda et de la fonction Lambda apparaissent tous sous forme de nœuds distincts, mais connectés, sur la carte de trace.

Les données du graphique de service sont conservées pendant 30 jours.

Suivis

Un ID de suivi permet de suivre le cheminement d'une demande au sein de votre application. Un suivi recueille tous les segments générés par une seule demande. Il s'agit généralement d'une requête HTTP GET ou POST qui passe par un équilibreur de charge, accède au code de votre application et génère des appels en aval vers d'autres AWS services ou des API Web externes. Le premier service pris en charge avec lequel la demande HTTP interagit ajoute un en-tête d'ID de suivi à la demande et le propage en aval pour suivre la latence, l'organisation et les autres données de la demande.


        Vue chronologique d'un suivi qui collecte tous les segments générés par une seule demande

Consultez les AWS X-Ray tarifs pour en savoir plus sur le mode de facturation des X-Ray Traces. Les données de suivi sont conservées pendant 30 jours.

Echantillonnage

Pour garantir un suivi efficace et fournir un échantillon représentatif des demandes traitées par votre application, le SDK X-Ray applique un algorithme d'échantillonnage pour déterminer quelles demandes sont suivies. Par défaut, le SDK X-Ray enregistre la première demande chaque seconde, et 5 % des demandes supplémentaires.

Afin de ne pas encourir de frais de service lors de la mise en route, le taux d'échantillonnage par défaut est prudent. Vous pouvez configurer X-Ray pour modifier la règle d'échantillonnage par défaut et configurer des règles supplémentaires qui appliquent l'échantillonnage en fonction des propriétés du service ou de la demande.

Par exemple, vous souhaiterez peut-être désactiver l'échantillonnage et suivre toutes les demandes d'appels qui modifient l'état ou traitent des utilisateurs ou des transactions. Pour les appels en lecture seule à fort volume, tels que les appels d'interrogation d'arrière-plan, les vérifications de l'état ou la maintenance des connexions, vous pouvez effectuer un échantillon à faible taux et obtenir malgré tout suffisamment de données pour voir tout problème éventuel.

Pour plus d’informations, consultez Configuration de règles d'échantillonnage .

En-tête de suivi

Toutes les demandes sont suivies jusqu'à un minimum configurable. Une fois ce minimum atteint, seul un certain pourcentage des demandes est suivi afin d'éviter les coûts superflus. La décision d'échantillonnage et l'ID de suivi sont ajoutés aux demandes HTTP dans des en-têtes de suivi nommés X-Amzn-Trace-Id. Le premier service intégré aux rayons X reçu par la demande ajoute un en-tête de suivi, qui est lu par le SDK X-Ray et inclus dans la réponse.

Exemple En-tête de suivi avec ID de suivi racine et décision d'échantillonnage
X-Amzn-Trace-Id: Root=1-5759e988-bd862e3fe1be46a994272793;Sampled=1
Sécurité de l'en-tête de suivi

Un en-tête de suivi peut provenir du SDK X-Ray Service AWS, d'une demande ou d'une demande du client. Votre application peut supprimer X-Amzn-Trace-Id des demandes entrantes, afin d'éviter les problèmes provoqués par les utilisateurs qui ajoutent des ID de suivi ou des décisions d'échantillonnage à leurs demandes.

L'en-tête de suivi peut également contenir un ID de segment parent si la demande provenait d'une application instrumentée. Par exemple, si votre application appelle une API Web HTTP en aval avec un client HTTP instrumenté, le SDK X-Ray ajoute l'ID de segment de la demande d'origine à l'en-tête de suivi de la demande en aval. Une application instrumentée qui sert la demande en aval peut enregistrer l'ID de segment parent pour connecter les deux demandes.

Exemple En-tête de suivi avec ID de suivi racine, ID de segment parent et décision d'échantillonnage
X-Amzn-Trace-Id: Root=1-5759e988-bd862e3fe1be46a994272793;Parent=53995c3f42cd8ad8;Sampled=1

Lineagepeuvent être ajoutés à l'en-tête de trace par Lambda et Services AWS d'autres dans le cadre de leurs mécanismes de traitement, et ne doivent pas être utilisés directement.

Exemple En-tête de traçage avec Lineage
X-Amzn-Trace-Id: Root=1-5759e988-bd862e3fe1be46a994272793;Sampled=1;Lineage=a87bd80c:1|68fd508a:5|c512fbe3:2

Expressions de filtrage

Même avec l'échantillonnage, une application complexe génère beaucoup de données. La AWS X-Ray console fournit une easy-to-navigate vue du graphe de service. Elle affiche des informations de santé et de performances qui vous aide à identifier les problèmes et les occasions d'optimiser votre application. Pour les suivis avancés, vous pouvez explorer les suivis pour les demandes individuelles ou utiliser des expressions de filtrage pour trouver des suivis liés à des chemins ou des utilisateurs spécifiques.


        Exploration des suivis des demandes individuelles

Groups

En étendant les expressions de filtre, X-Ray prend également en charge la fonctionnalité de groupe. En utilisant une expression de filtrage, vous pouvez définir les critères en vertu desquels vous acceptez les suivis dans le groupe.

Vous pouvez appeler le groupe par son nom ou par son Amazon Resource Name (ARN) pour générer son propre graphe de service, ses résumés de suivi et ses CloudWatch statistiques Amazon. Une fois qu'un groupe est créé, les traces entrantes sont vérifiées par rapport à l'expression du filtre du groupe lorsqu'elles sont stockées dans le service X-Ray. Les mesures relatives au nombre de traces correspondant à chaque critère sont publiées à CloudWatch chaque minute.

Le fait de mettre à jour l'expression de filtrage d'un groupe n'a pas pour effet de modifier les données déjà enregistrées. La mise à jour s'applique uniquement aux suivis ultérieurs. Cela peut entraîner la fusion des expressions nouvelles et anciennes dans le graphique. Pour éviter cela, supprimez le groupe actuel et créez-en un nouveau.

Note

Les groupes sont facturés en fonction du nombre de suivis récupérés qui correspondent à l'expression de filtrage. Pour en savoir plus, consultez AWS X-Ray Tarification.

Pour plus d'informations sur les groupes, consultezConfiguration des groupes.

Annotations et métadonnées

Lorsque vous instrumentez votre application, le SDK X-Ray enregistre des informations sur les demandes entrantes et sortantes, les AWS ressources utilisées et l'application elle-même. Vous pouvez ajouter d'autres informations dans le document de segment, comme des annotations et des métadonnées. Les annotations et les métadonnées sont agrégées au niveau du suivi et peuvent être ajoutées à n'importe quel segment ou sous-segment.

Les annotations sont de simples paires clé-valeur, indexées en vue de leur utilisation avec les expressions de filtre. Utilisez les annotations pour enregistrer les données que vous souhaitez utiliser pour regrouper les suivis dans la console ou lors de l'appel de l'API GetTraceSummaries.

X-Ray indexe jusqu'à 50 annotations par trace.

Les métadonnées sont des paires clé-valeur dont les valeurs peuvent être de tout type (objet et liste inclus), mais elles ne sont pas indexées. Utilisez les métadonnées pour enregistrer les données qui doivent être stockées dans le suivi, mais n'ont pas besoin d'être utilisées pour explorer les suivis.

Vous pouvez consulter les annotations et les métadonnées dans la fenêtre des détails du segment ou du sous-segment, sur la page Détails du suivi de la CloudWatch console.


        Les annotations et les métadonnées sont visibles dans les détails du segment ou du sous-segment dans la console  CloudWatch

Erreurs, anomalies et exceptions

X-Ray suit les erreurs qui se produisent dans le code de votre application et les erreurs renvoyées par les services en aval. Les erreurs sont classées comme suit :

  • Error— Erreurs du client (erreurs de la série 400)

  • Fault— Défaillances du serveur (erreurs de la série 500)

  • Throttle— Erreurs de régulation (429 demandes de trop)

Lorsqu'une exception se produit alors que votre application traite une demande instrumentée, le SDK X-Ray enregistre les détails de l'exception, y compris le suivi de la pile, le cas échéant. Vous pouvez consulter les exceptions dans les détails des segments dans la console X-Ray.