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

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Amazon SQS e AWS X-Ray

AWS X-Ray integra-se ao Amazon Simple Queue Service (Amazon SQS) (Amazon SQS) para rastrear mensagens que são passadas por uma fila do Amazon SQS. Caso um serviço rastreie solicitações usando o X-Ray SDK, o Amazon SQS pode enviar o cabeçalho de rastreamento e continuar a propagar o rastreamento original do remetente para o consumidor com um ID de rastreamento consistente. Essa continuidade permite que os usuários rastreiem, analisem, e depurem em serviços de downstream.

AWS X-Ray suporta o rastreamento de aplicativos orientados por eventos usando o Amazon SQS e. AWS Lambda Use o CloudWatch console para ver uma visão conectada de cada solicitação conforme ela é enfileirada com o Amazon SQS e processada por uma função Lambda downstream. Os rastreamentos dos produtores de mensagens upstream são automaticamente vinculados aos rastreamentos dos nós consumidores do Lambda downstream, criando uma end-to-end visão do aplicativo. Para obter mais informações, consulte Rastrear aplicações orientadas a eventos.

Mapa de rastreamento do Lambda por meio da fila do Amazon SQS.

O Amazon SQS permite a seguinte instrumentação de cabeçalho de rastreamento:

  • Cabeçalho HTTP padrão — O X-Ray SDK preenche automaticamente o cabeçalho de rastreamento como um cabeçalho HTTP quando você chama o Amazon SQS por meio do SDK. AWS O cabeçalho de rastreamento padrão é carregado pelo X-Amzn-Trace-Id e corresponde a todas as mensagens incluídas em uma solicitação SendMessage ou SendMessageBatch. Para saber mais sobre o cabeçalho HTTP padrão, consulte Cabeçalho de rastreamento.

  • Atributo de sistema AWSTraceHeader: o AWSTraceHeader é um atributo de sistema de mensagens reservado pelo Amazon SQS para transportar o cabeçalho de rastreamento do X-Ray com mensagens na fila. O AWSTraceHeader está disponível para uso mesmo quando a instrumentação automática por meio do X-Ray SDK não está; por exemplo, ao criar um SDK de rastreamento para uma nova linguagem. Quando ambas as instrumentações de cabeçalho são definidas, o atributo do sistema de mensagens substitui o cabeçalho de rastreamento HTTP.

Quando executado no Amazon EC2, o Amazon SQS permite o processamento de uma mensagem por vez. Isso se aplica ao executar em um host local e ao usar serviços de contêiner AWS Fargate, como Amazon ECS ou. AWS App Mesh

O cabeçalho de rastreamento é excluído das cotas de atributos de mensagem e tamanho de mensagem do Amazon SQS. A habilitação do rastreamento do X-Ray não excederá suas cotas do Amazon SQS. Para saber mais sobre AWS cotas, consulte Cotas do Amazon SQS.

Enviar o cabeçalho de rastreamento HTTP

Os componentes do remetente no Amazon SQS podem enviar o cabeçalho de rastreamento automaticamente por meio da chamada SendMessageBatch ou SendMessage. Quando os clientes do AWS SDK são instrumentados, eles podem ser rastreados automaticamente em todas as linguagens suportadas pelo X-Ray SDK. Os recursos rastreados Serviços da AWS e que você acessa nesses serviços (por exemplo, um bucket do Amazon S3 ou uma fila do Amazon SQS) aparecem como nós downstream no mapa de rastreamento no console X-Ray.

Para saber como rastrear chamadas do AWS SDK com seu idioma preferido, consulte os tópicos a seguir nos SDKs compatíveis:

Recuperar o cabeçalho de rastreamento e recuperar o contexto de rastreamento

Se você estiver usando um consumidor subsequente do Lambda, a propagação do contexto de rastreamento será automática. Para dar continuidade à propagação de contexto com os clientes do Amazon SQS, você deverá instrumentar manualmente a transferência para o componente receptor.

Existem três etapas principais para recuperar o contexto de rastreamento:

  • Receber a mensagem da fila para o atributo AWSTraceHeader chamando a API ReceiveMessage.

  • Recuperar o cabeçalho de rastreamento do atributo.

  • Recuperar o ID de rastreamento do cabeçalho. Opcionalmente, adicione mais métricas ao segmento.

Veja a seguir um exemplo de implementação escrito com o X-Ray SDK para Java.

exemplo : Recuperar o cabeçalho de rastreamento e recuperar o contexto de rastreamento
// 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)); } }