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 en Amazon Simple Queue Service (Amazon SQS) para rastrear 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 rastreo de aplicaciones basadas en eventos mediante Amazon SQS y AWS Lambda. Utilice la consola de CloudWatch para ver una vista conectada de cada solicitud a medida que se pone en cola con Amazon SQS y la procesa una función de Lambda posterior. Los rastros de los productores de mensajes anteriores se vinculan automáticamente a los rastros de los nodos de consumidor de Lambda posteriores, lo que crea una vista integral de toda la aplicación. Para obtener más información, consulte Rastreo de aplicaciones basadas en eventos.

Mapa de rastros desde Lambda hasta 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 rastro como encabezado HTTP cuando se llama a Amazon SQS a través del SDK de AWS. X-Amzn-Trace-Id lleva el encabezado de rastro predeterminado y 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 rastro 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 es aplicable tanto cuando se ejecuta un host en las instalaciones como cuando se utilizan servicios de contenedor, como AWS Fargate, Amazon ECS o AWS App Mesh.

El encabezado de rastro 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 acerca de las cuotas de AWS, consulte Cuotas de Amazon SQS.

Enviar el encabezado de seguimiento HTTP

Los componentes del remitente de Amazon SQS pueden enviar automáticamente el encabezado de rastro utilizando una llamada a SendMessageBatch o a SendMessage. Cuando se instrumentan clientes del SDK de AWS, se puede realizar un seguimiento automático en todos los lenguajes en el SDK de X-Ray. Los recursos y Servicios de AWS rastreados a los que accede dentro de dichos servicios (por ejemplo, un bucket de Amazon S3 o una cola de Amazon SQS) aparecerán como nodos posteriores en el mapa de rastros en la consola de X-Ray.

Para obtener información acerca de cómo se rastrean las llamadas al SDK de AWS con su lenguaje preferido, consulte los siguientes temas en los SDK correspondientes:

Recuperar el encabezado y el contexto de seguimiento

Si utiliza un consumidor posterior de Lambda, la propagación del contexto de rastro 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)); } }