Distributed tracing met AWS X-Ray en gestructureerd loggen

Applicaties implementeren op AWS

Dunieski Otano

Amazon Web Services Solutions Architect

De trage request die niemand kon vinden

  • Eén request duurt vier seconden
  • De logs per service lijken los oké
  • Niemand ziet het hele pad

Een vergrootglas volgt één traag request over een gedistribueerde servicemap met een rode bottleneck-node

Applicaties implementeren op AWS

Wat distributed tracing oplost

Geïsoleerde per-service logsilo's in rood links versus een verenigde X-Ray Gantt-tracetijdlijn die hetzelfde request samenvoegt over API Gateway, Lambda, DynamoDB en externe API in groen

  • Eén request raakt veel services
  • Logs alleen tonen niet het end-to-end-pad
  • Een trace naait het hele request aan elkaar
  • Zie precies waar de tijd bleef
Applicaties implementeren op AWS

Segmenten, subsegmenten en de servicemap

  • Segment: het werk van één service
  • Subsegment: een onderdeel binnen een segment, zoals een DB-call
  • Servicemap: een visuele grafiek van alle segmenten
  • Latentie en fouten staan op elke node

X-Ray trace-anatomie: segment per service met subsegmenten voor DB-calls, samengevoegd tot een servicemap-grafiek met latentie en foutpercentage op elke node

Applicaties implementeren op AWS

Annotaties vs. metadata


Annotaties

  • Geïndexeerde key-values, dus filterbaar
  • Gebruik voor zaken waarop je zoekt, zoals klantniveau

Metadata

  • Extra detail, niet geïndexeerd
  • Voeg toe voor context, maar je kunt er niet op zoeken
Applicaties implementeren op AWS

Logs correleren met trace-ID's

  • Elke trace heeft een unieke trace-ID
  • Zet de trace-ID in je gestructureerde logs
  • Spring van een trage trace naar de bijbehorende logregels
  • Logs en traces vormen één onderzoek

Gestructureerde logregel met xray_trace_id-veld gemarkeerd, pijl van X-Ray trace-view naar overeenkomende logregels in CloudWatch Logs voor gecorreleerd onderzoek

Applicaties implementeren op AWS

De servicemap lezen om de bottleneck te vinden

X-Ray-servicemap met een node met hoge latentie gemarkeerd, doorklik naar tracetijdlijn met de langste segmentbalk als bottleneck

  • Begin bij de servicemap, niet de logs
  • Vind de node met de hoogste latentietijd
  • Klik door naar de tracetijdlijn
  • Het langste segment is je verdachte
Applicaties implementeren op AWS

Tracen over de volledige request

  • API Gateway, Lambda en downstream-calls worden allemaal getraced
  • Elk voegt zijn segment toe aan dezelfde trace
  • Eén trace-ID verbindt logs en segmenten
  • End-to-end-inzicht voor elke request

End-to-end gedistribueerde trace van API Gateway via Lambda naar DynamoDB en externe API, één trace-ID zichtbaar in elke segmentheader die alle logs en segmenten verbindt

Applicaties implementeren op AWS

Laten we oefenen!

Applicaties implementeren op AWS

Preparing Video For Download...