Amazon SQS e AWS X-Ray - AWS X-Ray

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Amazon SQS e AWS X-Ray

AWS X-Ray si integra con Amazon Simple Queue Service (Amazon SQS) per tracciare i messaggi che vengono passati attraverso una coda Amazon SQS. Se un servizio traccia le richieste utilizzando l'SDK X-Ray, Amazon SQS può inviare l'intestazione di tracciamento e continuare a propagare la traccia originale dal mittente al consumatore con un ID di traccia coerente. Questa continuità consente agli utenti di tracciare, analizzare ed eseguire il debug di tutti i servizi di downstream.

AWS X-Ray supporta il tracciamento di applicazioni basate su eventi utilizzando Amazon SQS e. AWS Lambda Usa la CloudWatch console per visualizzare una vista connessa di ogni richiesta mentre viene messa in coda con Amazon SQS ed elaborata da una funzione Lambda downstream. Le tracce dei produttori di messaggi upstream vengono automaticamente collegate alle tracce dei nodi consumer Lambda a valle, creando una end-to-end visualizzazione dell'applicazione. Per ulteriori informazioni, consulta la sezione di tracciamento delle applicazioni basate sugli eventi.

Traccia la mappa da Lambda attraverso la coda Amazon SQS.

Amazon SQS supporta la seguente strumentazione di tracing header:

  • Intestazione HTTP predefinita: l'SDK X-Ray popola automaticamente l'intestazione di traccia come intestazione HTTP quando chiami Amazon SQS tramite l'SDK. AWS L'intestazione di traccia predefinita viene trasportata da X-Amzn-Trace-Id e corrisponde a tutti i messaggi inclusi in una richiesta SendMessage o SendMessageBatch. Per ulteriori informazioni sull'intestazione HTTP predefinita, consulta Intestazione di tracciamento.

  • AWSTraceHeaderAttributo di sistema: AWSTraceHeader è un attributo di sistema di messaggi riservato da Amazon SQS per trasportare l'intestazione di traccia X-Ray con i messaggi in coda. AWSTraceHeaderè disponibile per l'uso anche quando la strumentazione automatica tramite X-Ray SDK non lo è, ad esempio quando si crea un SDK di tracciamento per una nuova lingua. Quando sono impostate entrambe le strumentazioni delle intestazioni, l'attributo del sistema di messaggi sostituisce l'intestazione di traccia HTTP.

Quando è in esecuzione su Amazon EC2, Amazon SQS supporta l'elaborazione di un messaggio alla volta. Ciò si applica quando viene eseguito su un host locale e quando si utilizzano servizi container AWS Fargate, come Amazon ECS o. AWS App Mesh

L'intestazione di traccia è esclusa sia dalla dimensione dei messaggi di Amazon SQS che dalle quote degli attributi del messaggio. L'abilitazione del tracciamento X-Ray non supererà le quote di Amazon SQS. Per ulteriori informazioni sulle AWS quote, consulta Amazon SQS Quotas.

Invio dell'intestazione di traccia HTTP

I componenti del mittente in Amazon SQS possono inviare automaticamente l'intestazione trace tramite SendMessageBatchla chiamata o. SendMessage Quando i client AWS SDK sono dotati di strumentazione, possono essere tracciati automaticamente in tutte le lingue supportate tramite X-Ray SDK. Le risorse tracciate Servizi AWS e a cui accedi all'interno di tali servizi (ad esempio, un bucket Amazon S3 o una coda Amazon SQS) vengono visualizzate come nodi downstream sulla mappa di traccia nella console X-Ray.

Per informazioni su come tracciare le chiamate AWS SDK con la tua lingua preferita, consulta i seguenti argomenti negli SDK supportati:

Recupero dell'intestazione di traccia e recupero del contesto di traccia

Se utilizzi un consumer Lambda downstream, la propagazione del contesto di traccia è automatica. Per continuare la propagazione del contesto con altri consumatori Amazon SQS, devi strumentalizzare manualmente il passaggio al componente ricevente.

Esistono tre fasi principali per recuperare il contesto di traccia:

  • Ricezione del messaggio dalla coda per l'attributo AWSTraceHeader chiamando l'API ReceiveMessage.

  • Recupero dell'intestazione di traccia dall'attributo.

  • Recupero dell'ID di traccia dall'intestazione. Facoltativamente, aggiunta di ulteriori parametri al segmento.

Di seguito è riportato un esempio di implementazione scritto con X-Ray SDK for Java.

Esempio : recupero dell'intestazione di traccia e recupero del contesto di traccia
// 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)); } }