O que 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á.

O que AWS X-Rayé

AWS X-Ray fornece informações de rastreamento sobre todas as respostas e chamadas recebidas que um aplicativo instrumentado faz, inclusive as seguintes:

  • Recursos downstream AWS

  • Microsserviços

  • Bancos de dados

  • APIs da Web

Use dados de rastreamento e visualizações para obter informações sobre o desempenho do seu aplicativo, identificar problemas e encontrar oportunidades de otimização. Use ferramentas de análise no X-Ray para visualizar, filtrar e investigar detalhes de qualquer solicitação rastreada para seu aplicativo.

Como funciona o X-Ray

Para usar o X-Ray, você deve primeiro instrumentar seu aplicativo para que o X-Ray possa rastrear como seu aplicativo lida com uma solicitação. Adicionar instrumentação ao seu aplicativo permite que o X-Ray envie dados de rastreamento e metadados para solicitações de entrada e saída e outros eventos em seu aplicativo. Por exemplo, você pode instrumentar todas as solicitações HTTP recebidas e chamadas downstream Serviços da AWS que seu aplicativo Java faz. Você também pode instrumentar seu aplicativo automaticamente. Para obter mais informações, consulte Instrumentando seu aplicativo para obter mais informações.

O X-Ray atribui um ID de rastreamento a qualquer solicitação que seu aplicativo instrumentado receba. Se seu aplicativo interagir com outro componente, o X-Ray cria um segmento. Esse segmento está associado ao ID de rastreamento original e rastreia a qualidade da interação com esse componente.

O X-Ray rastreia o ID de rastreamento e os segmentos em todo o fluxo de trabalho do aplicativo. Você pode analisar todo o fluxo de trabalho ou isolar uma peça para uma análise detalhada. Para obter mais informações sobre segmentos, consulte a Conceitos seção a seguir.

O X-Ray rastreia seu aplicativo à medida que ele interage com os nós de serviço, ou componentes, para atender a uma solicitação recebida da seguinte forma:

  1. O X-Ray usa um ID de rastreamento e segmentos para rastrear interações individuais.

  2. Um AWS agente coleta o ID de rastreamento e os segmentos associados e os passa para uma estrutura de rastreamento do SDK ou da API.

  3. O X-Ray também monitora as interações com quaisquer AWS serviços que se integram ao X-Ray.

  4. O agente envia dados para uma GUI do console, onde você pode visualizar informações sobre seus rastreamentos, segmentos e subsegmentos e como esses componentes interagem.

As etapas anteriores são mostradas no diagrama a seguir:

O X-Ray exibe informações detalhadas sobre as solicitações da aplicação.

Como o X-Ray interage com seu aplicativo instrumentado

Quando seu aplicativo instrumentado recebe uma solicitação, o X-Ray faz o seguinte:

  1. Depois que seu aplicativo atende à solicitação, o X-Ray SDK envia dados de rastreamento para um AWS coletor ou agente. Em seguida, o agente coleta o ID de rastreamento e os segmentos. Você pode escolher entre os três agentes a seguir:

  2. Em seguida, o agente envia esses dados para uma estrutura de rastreamento que consiste em uma AWS API ou em um AWS SDK criado com base em uma API. Essa estrutura interage com outros AWS serviços. A API X-Ray fornece acesso a todas as funcionalidades do X-Ray por meio do AWS SDK ou diretamente. AWS Command Line InterfaceHTTPS Use a X-Ray API se você estiver usando uma linguagem ou precisar de uma operação que não seja suportada por um SDK.

    Você pode usar os seguintes SDKs:

    • O ADOT SDK — Use o ADOT SDK para interagir com diferentes agentes de fornecedores não afiliados. AWS O ADOT SDK também oferece suporte a vários serviços de back-end.

    • O X-Ray SDK — Um produto clássico que não está mais adicionando mais recursos ou idiomas. Use o X-Ray SDK se não quiser atualizar o código do aplicativo.

    Se você estiver usando um X-Ray ou ADOT SDK, você tem as seguintes opções, em combinação com um agente:

    • Use o X-Ray ou o ADOT SDK com um CloudWatch agente — recomendado.

    • Use o ADOT SDK com um ADOT Collector — recomendado se você quiser usar um software independente de fornecedor com AWS camadas de segurança e otimização.

    • Use o X-Ray SDK com um CloudWatch agente — O CloudWatch agente é compatível com o X-Ray SDK.

    • Use o X-Ray SDK com o daemon X-Ray — Use isso se quiser continuar usando o X-Ray SDK.

  3. (Opcional) A estrutura de rastreamento pode interagir com outros AWS serviços, HTTP servidores, outros métodos e consultas. Alguns AWS serviços que se integram ao X-Ray incluem Amazon EC2, Amazon SNS e API Gateway. O SDK ou a API rastreiam os dados de rastreamento durante essas interações.

    AWS os serviços que se integram ao X-Ray podem adicionar cabeçalhos de rastreamento às solicitações recebidas, enviar dados de rastreamento para o X-Ray ou executar um agente para coletar dados de rastreamento. Por exemplo, AWS Lambda pode enviar dados de rastreamento sobre solicitações para suas funções do Lambda.

    Para obter mais informações sobre outros serviços que funcionam com o X-Ray, consulteIntegre AWS X-Ray com outros Serviços da AWS.

  4. Você pode visualizar dados no console sobre seus traços, segmentos e subsegmentos em uma interface gráfica do usuário (GUI). Você pode definir as seguintes opções:

    • O https://console.aws.amazon.com/cloudwatch/ — Uma experiência de GUI para visualizar rastreamentos, registros e métricas em um único local. Os mapas do serviço X-Ray e o CloudWatch ServiceLens mapa legado são combinados no mapa de rastreamento do X-Ray no CloudWatch console.

    • O https://console.aws.amazon.com/xray/home — Uma experiência de GUI na qual você pode visualizar informações sobre seus rastreamentos. Você pode visualizar informações que incluem insights sobre seus rastreamentos, um mapa de rastreamento, um mapa de serviços e análises. AWS não está mais desenvolvendo essa experiência de console.

O X-Ray usa dados de rastreamento de AWS recursos com os quais seu aplicativo interage para gerar um mapa de rastreamento detalhado. O mapa de rastreamento mostra o cliente, seu serviço de front-end e os serviços de back-end que seu serviço de front-end chama em uma única solicitação. Use o mapa de rastreamento para identificar gargalos, picos de latência e outros problemas para resolver ou melhorar o desempenho de seus aplicativos.

O X-Ray também gerará um mapa de serviço que fornece uma visão geral de como seu aplicativo interage com seus nós de serviço. As bordas no mapa de serviço conectam os nós de serviço. Eles mostram a frequência com que os nós se comunicam entre si e a latência dessas comunicações.

A imagem a seguir mostra um exemplo de um mapa de serviços, que mostra como seu aplicativo interage com diferentes componentes. Você pode visualizar um mapa de serviço no console. A imagem mostra um aplicativo recebendo uma solicitação de um cliente. Em seguida, a imagem mostra como o aplicativo interage com duas tabelas do DynamoDB e com o Amazon SNS.

O mapa de rastreamento mostra o cliente, o serviço de front-end e os serviços de back-end que seu serviço de front-end chama para processar solicitações e manter dados

A imagem a seguir é um exemplo dos dados disponíveis no console para um único segmento em um rastreamento. A imagem mostra uma linha do tempo listando vários segmentos e a hora de início e a duração em que cada segmento foi executado em relação aos outros. A imagem também mostra o status do segmento e o código de resposta HTTP.

O X-Ray exibe informações detalhadas sobre solicitações de aplicativos, incluindo status, duração e código de resposta HTTP.

Conceitos

AWS X-Ray recebe dados de serviços como segmentos. Em seguida, o X-Ray agrupa segmentos que tenham uma solicitação em comum em rastreamentos. O X-Ray processa os rastreamentos para gerar um gráfico de serviço que apresenta uma representação visual da aplicação.

Segmentos

Os recursos de computação que executam a lógica do aplicativo enviam dados sobre o trabalho como segmentos. Um segmento fornece o nome do recurso, os detalhes sobre a solicitação e os detalhes sobre o trabalho realizado. Por exemplo, quando alcança o aplicativo, uma solicitação HTTP pode registrar os seguintes dados sobre:

  • O host — nome do host, alias ou endereço IP.

  • A solicitação — método, endereço do cliente, caminho, agente do usuário.

  • A resposta — status, conteúdo.

  • O trabalho realizado — horários de início e término, subsegmentos.

  • Problemas que ocorrem: erros, falhas e exceções, incluindo captura automática das pilhas de exceções.

A imagem a seguir é um exemplo de informações gerais retornadas sobre um segmento. A imagem mostra informações sobre um id, horário de início e término, quaisquer erros ou falhas e o código de solicitação e resposta de uma solicitação HTTP:

Segmentar os dados para um rastreamento do X-Ray

A estrutura de rastreamento, que consiste em SDKs ou APIs, reúne informações dos cabeçalhos de solicitação e resposta, do código do aplicativo e dos metadados sobre os AWS recursos nos quais o aplicativo é executado. Você escolhe quais dados o X-Ray coleta modificando a configuração ou o código do seu aplicativo para instrumentar solicitações recebidas, solicitações downstream e serviços. AWS

Solicitações encaminhadas

Se um balanceador de carga ou outro intermediário encaminhar uma solicitação para a aplicação, o X-Ray obterá o IP do cliente do cabeçalho X-Forwarded-For na solicitação em vez do IP de origem no pacote IP. O IP do cliente registrado para uma solicitação encaminhada pode ser falsificado; portanto, não é digno de confiança.

Você pode usar uma estrutura de rastreamento, como um SDK ou uma API, para registrar mais informações, incluindo anotações e metadados. Para obter detalhes sobre a estrutura de segmentos e subsegmentos e informações registradas, consulteDocumentos do segmento X-Ray. Os documentos de segmentos podem ter até 64 kB de tamanho.

Subsegmentos

Você pode dividir um segmento em subsegmentos. Os subsegmentos fornecem informações de temporização mais granulares e detalhes sobre as chamadas downstream que seu aplicativo faz para atender à solicitação original. Um subsegmento contém detalhes adicionais sobre uma chamada para um AWS service (Serviço da AWS), uma API HTTP externa ou um banco de dados SQL. Você também pode definir subsegmentos para instrumentar funções ou linhas de código específicas em seu aplicativo.

Os subsegmentos fornecem informações mais granulares do que os segmentos

O X-Ray usa subsegmentos para gerar segmentos inferidos e nós downstream no mapa de rastreamento para serviços que não enviam seus próprios segmentos, como o Amazon DynamoDB. Os subsegmentos permitem que você veja todas as suas dependências posteriores, mesmo que elas não suportem rastreamento ou sejam externas ao. AWS

Os subsegmentos representam a visualização de seu aplicativo de uma chamada downstream como um cliente. Se o serviço downstream também for instrumentado, seu segmento substituirá o segmento inferido do subsegmento do cliente upstream. O nó no gráfico do serviço usa informações do segmento do serviço, se disponíveis. A borda entre os dois nós usa o subsegmento do serviço upstream.

Por exemplo, quando você chama o DynamoDB com um cliente SDK AWS instrumentado, o X-Ray SDK registra um subsegmento dessa chamada. O DynamoDB não envia um segmento, então o subsegmento contém informações sobre o seguinte:

  • O segmento inferido no traçado.

  • O nó do DynamoDB; no gráfico do serviço.

  • A vantagem entre seu serviço e o DynamoDB.

O diagrama a seguir mostra o mapa de serviços de um aplicativo de exemplo. Na imagem, o cliente faz uma solicitação para uma amostra do aplicativo Scorekeep. O aplicativo Scorekeep faz duas chamadas para o DynamoDB. Uma borda no mapa de serviço representa cada uma dessas chamadas. Selecione uma borda para ver o status de saúde, o número e a frequência das chamadas feitas para uma tabela do DynamoDB. A imagem a seguir mostra traços que correspondem a uma borda filtrada pelo tempo de resposta.

Uma borda conecta um aplicativo instrumentado e uma tabela do DynamoDB.

Quando você chama outro serviço instrumentado com um aplicativo instrumentado, o serviço downstream envia seu próprio segmento. Esse segmento registra sua visualização da mesma chamada que o serviço upstream registrou em um subsegmento. No gráfico de serviços, os nós de ambos os serviços contêm informações de tempo e erro de seus segmentos. A borda entre eles contém informações do subsegmento do serviço upstream. O serviço downstream registra quando começou e terminou o trabalho na solicitação. O serviço upstream registra a latência de ida e volta, incluindo o tempo gasto pela solicitação entre os dois serviços.

A imagem a seguir mostra informações de rastreamento filtradas pelo tempo de resposta de uma borda que corresponde a uma função Lambda upstream.

O tempo de resposta mostrado como um valor ao longo do tempo para uma solicitação de um aplicativo instrumentado chamando outro aplicativo instrumentado.

Gráfico de serviço

O X-Ray usa os dados que a aplicação envia para gerar um gráfico de serviço. Cada AWS recurso que envia dados para o X-Ray aparece como um nó de serviço no gráfico. O Edges conecta os serviços que trabalham juntos para atender às solicitações, conectar clientes ao seu aplicativo e conectar seu aplicativo aos serviços e recursos downstream que ele usa.

Nomes de serviço

O name de um segmento deve corresponder ao nome de domínio ou nome lógico do serviço que gera o segmento. No entanto, isso não é aplicado. Qualquer aplicação que tenha permissão para PutTraceSegments pode enviar segmentos com qualquer nome.

Gráfico de serviço é um documento JSON que contém informações sobre os serviços e os recursos que compõem o aplicativo. O console do X-Ray usa o gráfico de serviço para gerar uma visualização ou um mapa de serviço.

A imagem a seguir mostra um mapa do serviço. O mapa do serviço exibe a relação entre a solicitação do cliente ao seu aplicativo e os serviços com os quais seu aplicativo interage para atender à solicitação. Na imagem a seguir, um exemplo do aplicativo Scorekeep interage com duas tabelas do DynamoDB e com o Amazon SNS.

Mapa de rastreamento

Em um aplicativo distribuído, o X-Ray combina nós de todos os serviços que processam solicitações com o mesmo ID de rastreamento em um único gráfico de serviço. O primeiro serviço com o qual a solicitação interage adiciona um cabeçalho de rastreamento que é propagado entre o front-end e os serviços que ele chama.

Por exemplo, o Scorekeep executa uma API da web que chama uma AWS Lambda função para gerar um nome aleatório. Em seguida, o X-Ray SDK gera o ID de rastreamento e rastreia as chamadas para a função Lambda. AWS Lambda passa os dados de rastreamento e o ID de rastreamento para a função Lambda. O X-Ray SDK também usa o mesmo ID de rastreamento para enviar dados para um agente ou coletor. Como resultado, todos os nós da API, do AWS Lambda serviço e da função Lambda aparecem como nós separados, mas conectados, no mapa de rastreamento.

O gráfico de serviço é retido por trinta dias.

Rastreamentos

Um rastreamento coleta todos os segmentos gerados por uma única solicitação. O rastreamento usa um ID de rastreamento para rastrear o caminho de uma solicitação pelo seu aplicativo. Essa solicitação geralmente é uma solicitação HTTP GET ou POST que passa por um balanceador de carga, interage com o código do aplicativo e gera chamadas downstream para outros AWS serviços ou APIs da web externas. O primeiro serviço compatível com o qual a solicitação HTTP interage adiciona um cabeçalho de ID de rastreamento à solicitação. Em seguida, o serviço propaga o ID de rastreamento a jusante para rastrear a latência, a disposição e outros dados de solicitação.

A imagem a seguir mostra um exemplo de um aplicativo atendendo a uma HTTP solicitação. O resumo do rastreamento contém o código de HTTP resposta, a hora de atender à solicitação e há quanto tempo o aplicativo atendeu à solicitação. A imagem a seguir também mostra uma linha do tempo para cada segmento de rastreamento. A linha do tempo mostra o status, o código de HTTP resposta e o tempo que o segmento levou para ser concluído. Um gráfico mostra a duração, a hora de início e término de cada segmento no traçado em relação aos outros segmentos.

Visualização do cronograma de um rastreamento, que coleta todos os segmentos gerados por uma única solicitação

Para obter mais informações sobre como o X-Ray fatura a coleta de rastreamento, consulte os AWS X-Ray preços para obter informações sobre como os traços de X-Ray são cobrados. Os dados de rastreamento são retidos por trinta dias.

Amostragem

O X-Ray SDK aplica um algoritmo de amostragem para garantir um rastreamento eficiente e fornecer uma amostra representativa das solicitações que seu aplicativo atende. Esse algoritmo determina quais solicitações são rastreadas. Por padrão, o X-Ray SDK registra a primeira solicitação recebida no início de cada segundo e cinco por cento de todas as solicitações adicionais.

Para evitar cobranças incorridas para o serviço quando você está começando a usá-lo, a taxa de amostragem padrão é conservadora. Você pode configurar o X-Ray para alterar a taxa de amostragem padrão e configurar regras adicionais que aplicam a amostragem com base nas propriedades do serviço ou da solicitação.

Por exemplo, pode ser conveniente desabilitar a amostragem e rastrear todas as solicitações para chamadas que modificam um estado ou lidam com usuários ou transações. Para chamadas somente para leitura de alto volume, como pesquisa em segundo plano, verificações de integridade ou manutenção de conexão.

Para obter mais informações, consulte Configurar regras de amostragem e a CreateSamplingRuleAPI.

Cabeçalho de rastreamento

Todas as solicitações são rastreadas, até um número mínimo, que você pode configurar. Depois de atingir esse mínimo, o X-Ray rastreia apenas uma porcentagem das solicitações para evitar custos extras. O X-Ray adiciona a decisão de amostragem e o ID de rastreamento às solicitações HTTP nos cabeçalhos de rastreamento que começam com. X-Amzn-Trace-Id O X-Ray adiciona esses cabeçalhos quando uma solicitação interage com o primeiro AWS serviço que se integra ao X-Ray. O X-Ray SDK lê esses cabeçalhos e os inclui na resposta.

exemplo Cabeçalho de rastreamento com ID de rastreamento raiz e decisão de amostragem
X-Amzn-Trace-Id: Root=1-5759e988-bd862e3fe1be46a994272793;Sampled=1
Segurança do cabeçalho de rastreamento

Um cabeçalho de rastreamento pode ser originado do X-Ray SDK, de um ou da AWS service (Serviço da AWS) solicitação do cliente. O aplicativo pode remover X-Amzn-Trace-Id de solicitações de entrada para evitar problemas causados por usuários adicionando IDs de rastreamento ou decisões de amostragem às solicitações.

O cabeçalho de rastreamento também podem conter um ID de segmento pai se a solicitação tiver se originado de um aplicativo instrumentado. Por exemplo, se sua aplicação chamar uma API da web HTTP subsequente com um cliente HTTP instrumentado, o X-Ray SDK adicionará o ID do segmento da solicitação original ao cabeçalho de rastreamento da solicitação subsequente. Um aplicativo instrumentado que atende à solicitação downstream usa o ID do segmento principal para conectar as duas solicitações.

exemplo Cabeçalho de rastreamento com ID de rastreamento de raiz, ID de segmento pai e decisão de amostragem
X-Amzn-Trace-Id: Root=1-5759e988-bd862e3fe1be46a994272793;Parent=53995c3f42cd8ad8;Sampled=1

O Lambda ou outro Serviços da AWS pode acrescentar parte de um cabeçalho que começa com Lineage como parte de seus mecanismos de processamento. Você não deve usar diretamente a parte anexada do cabeçalho de rastreamento.

exemplo Rastrear cabeçalho com Lineage
X-Amzn-Trace-Id: Root=1-5759e988-bd862e3fe1be46a994272793;Sampled=1;Lineage=a87bd80c:1|68fd508a:5|c512fbe3:2

Expressões de filtro

Mesmo que você faça uma amostra de um pequeno subconjunto de dados, um aplicativo complexo pode gerar muitos dados de rastreamento. Use expressões de filtro para encontrar traços específicos, incluindo aqueles para solicitações individuais, caminhos específicos ou usuários.

A imagem a seguir mostra uma caixa de texto no console X-Ray que você pode usar para filtrar por um grupo definido por você. Para obter mais informações sobre grupos, consulte a seção Grupos a seguir.

Selecione um rastreamento para ver detalhes sobre solicitações individuais

Grupos

Você pode usar um grupo dentro de uma expressão de filtro para reduzir a quantidade de dados de rastreamento e focar nos dados que se encaixam nos critérios do grupo.

Use um grupo para gerar gráficos de serviços, rastrear resumos e CloudWatch métricas específicas desse grupo. Você pode ligar pelo nome ou pelo Amazon Resource Name (ARN). O X-Ray verifica os traços recebidos em relação à expressão do filtro de grupo à medida que são armazenados no serviço X-Ray. CloudWatchpublica métricas para rastreamentos que correspondem aos critérios do grupo a cada minuto.

Atualizar a expressão de filtro de um grupo não altera os dados que já estão registrados. A atualização se aplica somente aos rastreamentos subsequentes. Isso pode resultar em um gráfico mesclado das expressões novas e antigas. Para evitar mesclar grupos desconectados em um único gráfico, exclua o grupo atual e https://docs.aws.amazon.com/xray/latest/api/API_CreateGroup.html crie um novo.

nota

A cobrança dos grupos é baseada no número de rastreamentos recuperados que correspondem à expressão do filtro. Para obter mais informações, consulte Preços do AWS X-Ray.

Para obter mais informações sobre grupos, consulte Configurar grupos.

Anotações e metadados

Quando você instrumenta seu aplicativo, o X-Ray SDK registra informações sobre solicitações de entrada e saída. O SDK também registra informações sobre os AWS recursos usados e o próprio aplicativo. É possível adicionar outras informações ao segmento documentado como anotações e metadados. As anotações e os metadados são combinados no nível do rastreamento. Eles podem ser adicionados a qualquer segmento ou subsegmento.

As anotações são pares de valores-chave indexados para uso com expressões de filtro. Use anotações para registrar dados que você deseja usar para agrupar rastreamentos no console ou ao chamar a API GetTraceSummaries.

O X-Ray indexa até cinquenta anotações por rastreamento.

Metadados são pares de valores-chave com valores de qualquer tipo, incluindo objetos e listas, que não são indexados. Use metadados para registrar dados que você deseja armazenar no rastreamento, mas não precisa usar para pesquisar rastreamentos.

Você pode visualizar anotações e metadados na janela de detalhes do segmento ou subsegmento, na página de detalhes do Trace no console. CloudWatch Para obter mais informações, consulte Exibir traços e detalhes de rastreamento emExplore o console X-Ray.

Erros, falhas e exceções

O X-Ray rastreia os erros no código do aplicativo e aqueles retornados pelos serviços downstream.O X-Ray rastreia os seguintes códigos de HTTP resposta das solicitações:

  • Error— Erros do cliente (erros da série 400) indicam que o servidor não conseguiu entender ou processar a solicitação do cliente porque a solicitação em si continha um erro. Esses erros podem ser causados por erros de sintaxe, informações ausentes ou um corpo de solicitação incorreto.

  • Fault— Falhas do servidor (erros da série 500) indicam que o servidor não conseguiu processar uma solicitação válida devido a um problema com o próprio servidor. Esses erros podem ser causados por problemas que incluem falhas no software ou no hardware ou limitações de recursos do servidor.

  • Throttle— Erros de limitação (429 solicitações demais) são um tipo específico de erro do cliente que ocorre quando um cliente envia muitas solicitações para um servidor ou API durante um período de tempo.

Se ocorrer uma exceção enquanto seu aplicativo estiver atendendo a uma solicitação instrumentada, o X-Ray SDK registrará detalhes sobre a exceção, incluindo o ID de rastreamento de pilha, se disponível. Você pode visualizar exceções em Detalhes do segmento no console do X-Ray.