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.
Amazon SQS et AWS X-Ray
AWS X-Ray s'intègre à Amazon Simple Queue Service (Amazon SQS) pour suivre les messages transmis via une file d'attente Amazon SQS. Si un service assure le suivi des demandes à l'aide du SDK X-Ray, Amazon SQS peut envoyer l'en-tête de suivi et continuer à propager le suivi d'origine de l'expéditeur au consommateur avec un identifiant de suivi cohérent. La continuité du suivi permet aux utilisateurs de suivre, d'analyser et de déboguer les services en aval d'un bout à l'autre.
AWS X-Ray prend en charge le suivi des applications pilotées par des événements à l'aide d'Amazon SQS et. AWS Lambda Utilisez la CloudWatch console pour voir une vue connectée de chaque demande mise en file d'attente avec Amazon SQS et traitée par une fonction Lambda en aval. Les traces provenant des producteurs de messages en amont sont automatiquement liées aux traces provenant des nœuds consommateurs Lambda en aval, créant ainsi une end-to-end vue de l'application. Pour plus d'informations, consultez la section Suivi des applications pilotées par des événements.
![Tracez la carte depuis Lambda via la file d'attente Amazon SQS.](images/console-batch-servicemap-linkededge.png)
Amazon SQS prend en charge l'instrumentation d'en-tête de suivi suivante :
-
En-tête HTTP par défaut — Le SDK X-Ray remplit automatiquement l'en-tête de trace en tant qu'en-tête HTTP lorsque vous appelez Amazon SQS via le SDK. AWS L'en-tête de suivi par défaut est transporté par
X-Amzn-Trace-Id
et correspond à tous les messages inclus dans une demandeSendMessage
ouSendMessageBatch
. Pour en savoir plus sur l'en-tête HTTP par défaut, consultez En-tête de suivi. -
AWSTraceHeader
Attribut système —AWSTraceHeader
Il s'agit d'un attribut de système de messagerie réservé par Amazon SQS pour contenir l'en-tête X-Ray Trace avec les messages dans la file d'attente.AWSTraceHeader
peut être utilisé même lorsque l'instrumentation automatique via le SDK X-Ray ne l'est pas, par exemple lors de la création d'un SDK de traçage pour une nouvelle langue. Lorsque les deux instrumentations d'en-tête sont définies, l'attribut système de message remplace l'en-tête de suivi HTTP.
Lorsqu'il est exécuté sur Amazon EC2, Amazon SQS prend en charge le traitement d'un message à la fois. Cela s'applique lors de l'exécution sur un hôte sur site et lors de l'utilisation de services de conteneur AWS Fargate, tels qu'Amazon ECS ou AWS App Mesh.
L'en-tête de trace est exclu à la fois de la taille des messages Amazon SQS et des quotas d'attributs des messages. L'activation du suivi X-Ray ne dépassera pas vos quotas Amazon SQS. Pour en savoir plus sur les AWS quotas, consultez Amazon SQS Quotas.
Envoi de l'en-tête de suivi HTTP
Les composants d'expéditeur d'Amazon SQS peuvent envoyer automatiquement l'en-tête de trace via l'appel SendMessageBatch
ou SendMessage
. Lorsque les clients du AWS SDK sont instrumentés, ils peuvent être automatiquement suivis dans toutes les langues prises en charge par le SDK X-Ray. Les ressources tracées AWS services et auxquelles vous accédez au sein de ces services (par exemple, un compartiment Amazon S3 ou une file d'attente Amazon SQS) apparaissent sous forme de nœuds en aval sur la carte de trace de la console X-Ray.
Pour savoir comment suivre les appels du AWS SDK dans la langue de votre choix, consultez les rubriques suivantes dans les SDK pris en charge :
-
Java — Suivi des appels du AWS SDK avec le SDK X-Ray pour Java
-
Node.js – Suivi des appels du AWS SDK avec le SDK X-Ray pour Node.js
-
Python – Suivi des appels du AWS SDK avec le SDK X-Ray pour Python
-
Ruby – Suivi des appels du AWS SDK avec le SDK X-Ray pour Ruby
-
.NET – Suivi des appels du AWS SDK avec le SDK X-Ray pour .NET
Récupération de l'en-tête de suivi et récupération du contexte de suivi
Si vous utilisez un consommateur Lambda en aval, la propagation du contexte de trace est automatique. Pour poursuivre la propagation du contexte avec d'autres clients Amazon SQS, vous devez instrumenter manuellement le transfert vers le composant récepteur.
La récupération du contexte de suivi comporte trois étapes principales :
-
Recevoir le message de la file d'attente pour l'attribut
AWSTraceHeader
en appelant l'APIReceiveMessage
. -
Récupérer l'en-tête de suivi à partir de l'attribut.
-
Récupérer l'ID de suivi à partir de l'en-tête. Vous pouvez également ajouter d'autres métriques au segment.
Voici un exemple d'implémentation écrit avec le SDK X-Ray pour Java.
Exemple : Récupération de l'en-tête de suivi et récupération du contexte de suivi
// Receive the message from the queue, specifying the "AWSTraceHeader" ReceiveMessageRequest receiveMessageRequest = new ReceiveMessageRequest() .withQueueUrl(
QUEUE_URL
) .withAttributeNames("AWSTraceHeader"); List<Message> messages = sqs.receiveMessage(receiveMessageRequest).getMessages(); if (!messages.isEmpty()) { Message message = messages.get(0); // Retrieve the trace header from the AWSTraceHeader message system attribute String traceHeaderStr = message.getAttributes().get("AWSTraceHeader"); if (traceHeaderStr != null) { TraceHeader traceHeader = TraceHeader.fromString(traceHeaderStr); // Recover the trace context from the trace header Segment segment = AWSXRay.getCurrentSegment(); segment.setTraceId(traceHeader.getRootTraceId()); segment.setParentId(traceHeader.getParentId()); segment.setSampled(traceHeader.getSampled().equals(TraceHeader.SampleDecision.SAMPLED)); } }