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
O AWS X-Ray integra-se ao Amazon Simple Queue Service (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.
O AWS X-Ray é compatível com o rastreamento de aplicações orientados a eventos usando o Amazon SQS e o AWS Lambda. Use o console do CloudWatch para ver uma visualização conectada de cada solicitação à medida que ela é enfileirada com o Amazon SQS e processada por uma função do Lambda subsequente. Os rastreamentos dos produtores de mensagens precedentes são automaticamente vinculados aos rastreamentos dos nós consumidores subsequentes do Lambda, criando uma visão completa da aplicação. Para obter mais informações, consulte Rastrear aplicações orientadas a eventos.

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 da 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çãoSendMessage
ouSendMessageBatch
. Para saber mais sobre o cabeçalho HTTP padrão, consulte Cabeçalho de rastreamento. -
Atributo de sistema
AWSTraceHeader
: oAWSTraceHeader
é um atributo de sistema de mensagens reservado pelo Amazon SQS para transportar o cabeçalho de rastreamento do X-Ray com mensagens na fila. OAWSTraceHeader
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 quando em execução em um host on-premises e ao usar serviços de contêiner, como o AWS Fargate, o Amazon ECS ou o 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 cotas da AWS, 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 de SDK da AWS são instrumentados, eles podem ser rastreados automaticamente por todas as linguagens compatíveis por meio do X-Ray SDK. Os Serviços da AWS rastreados e os recursos que você acessa nesses serviços (por exemplo, um bucket do Amazon S3 ou uma fila do Amazon SQS) são exibidos como nós subsequentes no mapa de serviço no console do X-Ray.
Para saber como rastrear chamadas ao SDK da AWS com a linguagem de sua preferência, consulte os seguintes tópicos nos SDKs compatíveis:
-
Java: Rastrear chamadas de SDK da AWS com o X-Ray SDK para Java
-
Node.js: Rastrear chamadas de SDK da AWS para o X-Ray SDK para Node.js
-
Python: Rastrear chamadas de SDK da AWS para o X-Ray SDK para Python
-
Ruby: Rastreie chamadas de SDK da AWS com o X-Ray SDK para Ruby
-
.NET: Rastrear chamadas do SDK da AWS com o X-Ray SDK para .NET
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 APIReceiveMessage
. -
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)); } }