Concepts 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.

Concepts AWS X-Ray

AWS X-Ray reçoit des données à partir des services sous forme de segments. X-Ray regroupe ensuite les segments ayant une requête commune danstraces. X-Ray traite les traces pour générer ungraphe de servicequi fournit 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 produisenterreurs, défauts et exceptions, y compris la capture automatique des piles d'exceptions.


        Segmenter les données pour un traçage aux rayons X

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 auAWSles ressources sur lesquelles il fonctionne. Vous choisissez les données à collecter en modifiant la configuration ou le code de votre application pour instrumenter les demandes entrantes, les demandes en aval etAWSClients du 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 depuisX-Forwarded-Foren-tête dans la demande plutôt que depuis l'adresse IP source dans le 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 queannotations et métadonnées. Pour plus d'informations sur la structure et les informations enregistrées dans les segments et les sous-segments, consultez Documents de segment AWS X-Ray. La taille des documents segmentés peut atteindre 64 Ko.

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 vers unService AWS, une 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érersegments déduitset des nœuds en aval sur la carte des services. 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 instrumentAWSClient SDK, le SDK X-Ray enregistre un sous-segment pour cet appel. DynamoDB n'envoie pas de segment. Par conséquent, le segment inféré 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 ungraphe de service. ChaqueAWSLa ressource qui envoie des données à X-Ray apparaît sous forme de service dans le graphe. 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 segmentnamedoit 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 avec 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 ouplan des services.


        Cartographie des services

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 comme des nœuds distincts mais connectés sur la carte des services.

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'autresAWSservices ou 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

VoirAWS X-Raytarificationpour plus d'informations 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échantillonnagealgorithme pour déterminer quelles demandes sont tracées. Par défaut, le SDK X-Ray enregistre la première demande chaque seconde, ainsi que 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, veuillez consulter 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 traçage peut provenir du kit de développement X-Ray, d'unService AWS, ou à la 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

Lineagepeut être ajouté à l'en-tête de trace par Lambda et d'autresServices AWSdans le cadre de leurs mécanismes de traitement, et ne devraient 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. LeAWS X-Rayla console fournit uneasy-to-navigatevue 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 Amazon Resource Name (ARN) pour générer son propre graphe de service, des résumés de traces et AmazonCloudWatchmétriques. 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 métriques indiquant le nombre de traces qui correspondent à chaque critère sont publiées dans CloudWatch toutes les minutes.

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 PricingAWS X-Ray (Tarification).

Pour plus d'informations sur les groupes, voirConfigurer 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,AWSles 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 de détails du segment ou du sous-segment, dans leDétails du tracépage dans leCloudWatchconsole.


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

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 sousdétails du segmentdans la console X-Ray.