Amazon SNS e AWS X-Ray
Você pode usar o AWS X-Ray com o Amazon Simple Notification Service (Amazon SNS) para rastrear e analisar solicitações à medida que elas passam pelos tópicos do SNS até os serviços de assinatura compatíveis com o SNS. Use o rastreamento do X-Ray com o Amazon SNS para analisar latências em mensagens e serviços de back-end, como quanto tempo uma solicitação permanece em um tópico e quanto tempo leva para entregar a mensagem a cada uma das assinaturas do tópico. O Amazon SNS permite o rastreamento do X-Ray para tópicos comuns e FIFO.
Se você publicar em um tópico do Amazon SNS usando um serviço que já está instrumentado com o X-Ray, o Amazon SNS passará o contexto de rastreamento do publicador para os assinantes. Além disso, você pode ativar o rastreamento ativo para enviar dados de segmentos sobre suas assinaturas do Amazon SNS ao X-Ray para mensagens publicadas de um cliente do SNS instrumentado. Ative o rastreamento ativo para um tópico do Amazon SNS usando o console do Amazon SNS ou usando a CLI ou a API do Amazon SNS. Consulte Instrumentar sua aplicação para obter mais informações sobre como instrumentar clientes do SNS.
Configurar o rastreamento ativo do Amazon SNS
Você pode usar o console do Amazon SNS ou a AWS CLI ou o SDK para configurar o rastreamento ativo do Amazon SNS.
Ao usar o console do Amazon SNS, o Amazon SNS tenta criar as permissões necessárias para que o SNS chame o X-Ray. A tentativa poderá ser rejeitada se você não tiver permissões suficientes para modificar as políticas de recursos do X-Ray. Para obter mais informações sobre o controle de acesso do Amazon SNS, consulte Identity and access management in Amazon SNS e Casos de exemplo para o controle de acesso do Amazon SNS no Guia do desenvolvedor do Amazon Simple Notification Service. Para obter mais informações sobre como ativar o rastreamento ativo usando o console do Amazon SNS, consulte Habilitar o rastreamento ativo em um tópico do Amazon SNS no Guia do desenvolvedor do Amazon Simple Notification Service.
Ao utilizar a AWS CLI ou o SDK para ativar o rastreamento ativo, você deve configurar manualmente as permissões usando políticas baseadas em recursos. Use PutResourcePolicy
para configurar o X-Ray com a política baseada em recursos necessária para permitir que o Amazon SNS envie rastreamentos ao X-Ray.
exemplo Exemplo de política baseada em recursos do X-Ray para rastreamento ativo do Amazon SNS
Este exemplo de documento de política especifica as permissões que o Amazon SNS precisa para enviar dados de rastreamento ao X-Ray:
{ Version: "2012-10-17", Statement: [ { Sid: "SNSAccess", Effect: Allow, Principal: { Service: "sns.amazonaws.com", }, Action: [ "xray:PutTraceSegments", "xray:GetSamplingRules", "xray:GetSamplingTargets" ], Resource: "*", Condition: { StringEquals: { "aws:SourceAccount": "
account-id
" }, StringLike: { "aws:SourceArn": "arn:partition
:sns:region
:account-id
:topic-name
" } } } ] }
Use a CLI para criar uma política baseada em recursos que conceda permissões ao Amazon SNS para enviar dados de rastreamento ao X-Ray:
aws xray put-resource-policy --policy-name MyResourcePolicy --policy-document '{ "Version": "2012-10-17", "Statement": [ { "Sid": "SNSAccess", "Effect": "Allow", "Principal": { "Service": "sns.amazonaws.com" }, "Action": [ "xray:PutTraceSegments", "xray:GetSamplingRules", "xray:GetSamplingTargets" ], "Resource": "*", "Condition": { "StringEquals": { "aws:SourceAccount": "
account-id
" }, "StringLike": { "aws:SourceArn": "arn:partition
:sns:region
:account-id
:topic-name
" } } } ] }'
Para usar esses exemplos, substitua
, partition
, region
e account-id
por sua partição, região, ID da conta e nome de tópico do Amazon SNS específicos da AWS. Para conceder permissão a todos os tópicos do Amazon SNS para enviar dados de rastreamento ao X-Ray, substitua o nome do tópico por topic-name
*
.
Visualize rastreamentos de publicadores e assinantes do Amazon SNS no console do X-Ray
Use o console do X-Ray para visualizar um mapa de serviço, um mapa de rastreamento e detalhes de rastreamento que exibem uma visão conectada dos publicadores e assinantes do Amazon SNS. Quando o rastreamento ativo do Amazon SNS é ativado para um tópico, o mapa do serviço do X-Ray e o mapa de rastreamento exibem nós conectados para os publicadores do Amazon SNS, o tópico do Amazon SNS e os assinantes subsequentes:
Depois que você escolhe um rastreamento que abrange um publicador e assinante do Amazon SNS, a página de detalhes do rastreamento X-Ray exibe um mapa de rastreamento e uma linha do tempo de segmento.
exemplo Exemplo de linha do tempo com publicador e assinante do Amazon SNS
Este exemplo mostra uma linha do tempo que inclui um publicador do Amazon SNS que envia uma mensagem a um tópico do Amazon SNS, o qual é processado por um assinante do Amazon SQS.
O exemplo de linha do tempo acima fornece detalhes sobre o fluxo de mensagens do Amazon SNS:
O segmento SNS representa a duração do percurso de ida e volta da chamada de API
Publish
do cliente.O segmento myTopic representa a latência da resposta do Amazon SNS à solicitação de publicação.
O subsegmento SQS representa o tempo de ida e volta que o Amazon SNS leva para publicar a mensagem em uma fila do Amazon SQS.
O tempo entre o segmento myTopic e o subsegmento SQS representa o tempo que a mensagem passa no sistema do Amazon SNS.
exemplo Exemplo de linha do tempo com mensagens em lote do Amazon SNS
Se várias mensagens do Amazon SNS forem agrupadas em um único rastreamento, a linha do tempo do segmento exibirá segmentos que representam cada mensagem processada.