Amazon SQS y AWS X-Ray - AWS X-Ray

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Amazon SQS y AWS X-Ray

AWS X-Ray se integra con Amazon Simple Queue Service (Amazon SQS) para rastrear los mensajes que pasan por una cola de Amazon SQS. Si un servicio rastrea solicitudes utilizando el SDK de X-Ray, Amazon SQS podrá enviar el encabezado de rastreo y continuar propagando el rastro original entre el remitente y el consumidor con un ID de rastro coherente. Esta continuidad permite que los usuarios puedan rastrear, analizar y depurar en otros servicios posteriores.

AWS X-Ray admite el seguimiento de aplicaciones basadas en eventos mediante Amazon SQS y. AWS Lambda Utilice la CloudWatch consola para ver una vista conectada de cada solicitud mientras está en cola con Amazon SQS y procesada por una función Lambda descendente. Las trazas de los productores de mensajes ascendentes se vinculan automáticamente a las trazas de los nodos consumidores de Lambda descendentes, lo que crea una end-to-end vista de la aplicación. Para obtener más información, consulte Rastreo de aplicaciones basadas en eventos.

Rastree el mapa desde Lambda a través de la cola de Amazon SQS.

Amazon SQS admite la siguiente instrumentación de encabezado de rastreo:

  • Encabezado HTTP predeterminado: el SDK de X-Ray rellena automáticamente el encabezado de rastreo como encabezado HTTP cuando se llama a Amazon SQS a través del AWS SDK. X-Amzn-Trace-Id lleva el encabezado de rastreo predeterminado, que se corresponde con todos los mensajes incluidos en una solicitud SendMessage o SendMessageBatch. Para obtener más información sobre el encabezado HTTP predeterminado, consulte Encabezado de seguimiento.

  • Atributo del sistema AWSTraceHeader: AWSTraceHeader es un atributo del sistema de mensajes reservado por Amazon SQS para incluir el encabezado de rastreo de X-Ray con los mensajes de la cola. AWSTraceHeader está disponible para su uso incluso cuando la instrumentación automática a través del SDK de X-Ray no lo está, por ejemplo, al crear un SDK de rastreo para un nuevo lenguaje. Cuando se establecen las instrumentaciones de los dos encabezados, el atributo del sistema de mensajes anula el encabezado de rastreo HTTP.

Cuando se ejecuta en Amazon EC2, Amazon SQS solo permite procesar un mensaje cada vez. Esto se aplica cuando se ejecuta en un host local y cuando se utilizan servicios de contenedores AWS Fargate, como Amazon ECS o AWS App Mesh.

El encabezado de rastreo no se incluye en las cuotas del tamaño de mensaje y de atributo del mensaje de Amazon SQS. Al habilitar el rastreo de X-Ray, no se superan las cuotas de Amazon SQS. Para obtener más información sobre AWS las cuotas, consulte Amazon SQS Quotas.

Enviar el encabezado de seguimiento HTTP

Los componentes del remitente de Amazon SQS pueden enviar automáticamente el encabezado de rastreo utilizando una llamada a SendMessageBatch o a SendMessage. Cuando los clientes AWS del SDK están instrumentados, se les puede realizar un seguimiento automático en todos los idiomas compatibles con el SDK de X-Ray. El rastreo Servicios de AWS y los recursos a los que accede dentro de esos servicios (por ejemplo, un bucket de Amazon S3 o una cola de Amazon SQS) aparecen como nodos descendentes en el mapa de rastreo de la consola X-Ray.

Para obtener información sobre cómo rastrear las llamadas AWS del SDK con su idioma preferido, consulte los siguientes temas de los SDK compatibles:

Recuperar el encabezado y el contexto de seguimiento

Si utiliza un consumidor posterior de Lambda, la propagación del contexto de rastreo es automática. Para continuar la propagación del contexto con consumidores de Amazon SQS, debe instrumentar manualmente la entrega al componente receptor.

Hay tres pasos principales para recuperar el contexto de rastreo:

  • Recibir el mensaje de la cola del atributo AWSTraceHeader llamando a la API ReceiveMessage.

  • Recuperar el encabezado de rastreo del atributo.

  • Recuperar el ID de rastreo del encabezado. Si lo desea, también puede añadir otras métricas al segmento.

A continuación se muestra un ejemplo de una implementación escrita con el SDK de X-Ray para Java.

ejemplo : Recuperar el encabezado y el contexto de seguimiento
// 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)); } }