View a markdown version of this page

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 passati attraverso una coda Amazon SQS. Se un servizio traccia le richieste utilizzando l' X-Ray SDK, 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 accodata con Amazon SQS ed elaborata da una funzione Lambda downstream. Le tracce provenienti dai produttori di messaggi a monte vengono automaticamente collegate alle tracce provenienti dai nodi consumer Lambda a valle, creando una vista end-to-end dell'applicazione. Per ulteriori informazioni, consulta Tracing event-driven applications. Tracciamento delle applicazioni basate sugli eventi

Traccia la mappa da Lambda attraverso la coda Amazon SQS.

Amazon SQS supporta la seguente strumentazione per l'header di tracciamento:

  • Intestazione HTTP predefinita: l' X-Ray SDK compila automaticamente l'intestazione di traccia come intestazione HTTP quando si chiama 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 contenere l'intestazione di traccia con i X-Ray messaggi in coda. AWSTraceHeaderè disponibile per l'uso anche quando la strumentazione automatica tramite l'SDK non lo è, ad esempio quando si crea un X-Ray 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 viene eseguito 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 dei messaggi. L'attivazione del X-Ray tracciamento non supererà le tue quote 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 di traccia tramite la chiamata or. SendMessageBatch SendMessage Quando i client AWS SDK sono strumentati, possono essere tracciati automaticamente in tutte le lingue supportate dall'SDK. X-Ray I tracciati Servizi AWS e le risorse a cui accedi all'interno di tali servizi (ad esempio, un bucket Amazon S3 o una coda Amazon SQS) vengono visualizzati come nodi a valle sulla mappa di traccia nella console. X-Ray

Per sapere 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 strumentare manualmente l'handoff 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 scritta con l' X-Ray SDK per 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)); } }