Rastreamento distribuído com AWS X-Ray e logs estruturados

Implantando Aplicações na AWS

Dunieski Otano

Amazon Web Services Solutions Architect

A requisição lenta que ninguém encontrou

  • Uma requisição leva quatro segundos
  • Os logs de cada serviço parecem ok isoladamente
  • Ninguém enxerga o caminho completo

Uma lupa rastreando uma requisição lenta em um mapa de serviços distribuídos, com um nó gargalo em vermelho

Implantando Aplicações na AWS

O que o rastreamento distribuído resolve

Silos de logs por serviço isolados em vermelho à esquerda versus uma linha do tempo de rastreamento tipo Gantt do X-Ray unificando a mesma requisição em API Gateway, Lambda, DynamoDB e API externa em verde

  • Uma requisição toca muitos serviços
  • Só logs não mostram o caminho de ponta a ponta
  • Um trace costura a requisição inteira
  • Veja exatamente onde o tempo foi gasto
Implantando Aplicações na AWS

Segmentos, subsegmentos e o service map

  • Segment: o trabalho feito por um serviço
  • Subsegment: uma unidade dentro do segmento, como uma chamada ao BD
  • Service map: um grafo visual de todos os segmentos
  • Latência e erros aparecem em cada nó

Anatomia do trace no X-Ray: segmento por serviço com subsegmentos para chamadas ao BD, montados em um grafo do mapa de serviços mostrando latência e taxa de erro em cada nó

Implantando Aplicações na AWS

Anotações vs. metadados


Anotações

  • Pares chave-valor indexados, então são filtráveis
  • Use para o que você vai pesquisar, como nível de cliente

Metadados

  • Detalhe extra, não indexado
  • Anexe para contexto, mas não dá para pesquisar por isso
Implantando Aplicações na AWS

Correlacionando logs com trace IDs

  • Cada trace tem um trace ID único
  • Inclua o trace ID nos seus logs estruturados
  • Pule de um trace lento para suas linhas de log exatas
  • Logs e traces viram uma única investigação

Linha de log estruturado com o campo xray_trace_id em destaque, seta apontando da visão do trace no X-Ray para as linhas de log correspondentes no CloudWatch Logs para investigação correlacionada

Implantando Aplicações na AWS

Lendo o service map para achar o gargalo

Mapa de serviços do X-Ray com um nó de alta latência em destaque, detalhamento na linha do tempo do trace mostrando o maior segmento identificado como gargalo

  • Comece pelo service map, não pelos logs
  • Ache o nó com maior latência
  • Aprofunde na sua linha do tempo do trace
  • O segmento mais longo é o suspeito
Implantando Aplicações na AWS

Rastreando toda a requisição

  • API Gateway, Lambda e chamadas downstream todas rastreáveis
  • Cada uma adiciona seu segment ao mesmo trace
  • Um trace ID une logs e segmentos
  • Visibilidade de ponta a ponta para cada requisição

Trace distribuído de ponta a ponta do API Gateway passando por Lambda até DynamoDB e API externa, um trace ID visível em cada cabeçalho de segmento unindo todos os logs e segmentos

Implantando Aplicações na AWS

Vamos praticar!

Implantando Aplicações na AWS

Preparing Video For Download...