Distribuované trasování s AWS X-Ray a strukturované logování

Nasazování aplikací na AWS

Dunieski Otano

Amazon Web Services Solutions Architect

Pomalý požadavek, který nikdo nenašel

  • Jeden požadavek trvá čtyři sekundy
  • Logy každé služby vypadají v pořádku
  • Nikdo nevidí celou cestu

Lupa trasující jeden pomalý požadavek přes mapu distribuovaných služeb s červeným uzlem označujícím úzké místo

Nasazování aplikací na AWS

Co distribuované trasování řeší

Izolované log silos jednotlivých služeb zvýrazněné červeně vlevo versus sjednocená časová osa X-Ray Gantt trasující tentýž požadavek přes API Gateway, Lambda, DynamoDB a externí API zeleně

  • Jeden požadavek prochází mnoha službami
  • Logy samotné celou cestu neukáží
  • Trace spojí celý požadavek dohromady
  • Vidíš přesně, kde čas ubyl
Nasazování aplikací na AWS

Segmenty, subsegmenty a mapa služeb

  • Segment: práce vykonaná jednou službou
  • Subsegment: jednotka uvnitř segmentu, např. volání DB
  • Mapa služeb: vizuální graf všech segmentů
  • Každý uzel zobrazuje latenci a chyby

Anatomie X-Ray trace: segment pro každou službu se subsegmenty pro volání DB, sestavené do grafu mapy služeb zobrazující latenci a chybovost na každém uzlu

Nasazování aplikací na AWS

Anotace vs. metadata


Anotace

  • Indexované páry klíč–hodnota, tedy filtrovatelné
  • Používej je pro atributy, podle nichž budeš hledat, např. zákaznická úroveň

Metadata

  • Další detail, bez indexování
  • Přidávej je pro kontext, ale hledat podle nich nelze
Nasazování aplikací na AWS

Korelace logů s trace ID

  • Každé trace má jedinečné trace ID
  • Zahrň trace ID do svých strukturovaných logů
  • Přejdi přímo z pomalého trace na konkrétní řádky logu
  • Logy a traces se stanou jedním vyšetřováním

Strukturovaný řádek logu se zvýrazněným polem xray_trace_id, šipka ukazuje z pohledu X-Ray trace na odpovídající řádky logů v CloudWatch Logs pro korelované vyšetřování

Nasazování aplikací na AWS

Čtení mapy služeb k nalezení úzkého místa

Mapa služeb X-Ray se zvýrazněným uzlem s vysokou latencí, detail trace timeline ukazující nejdelší segment identifikovaný jako úzké místo

  • Začni u mapy služeb, ne u logů
  • Najdi uzel s nejvyšší latencí
  • Přejdi do jeho trace timeline
  • Nejdelší segment je tvůj podezřelý
Nasazování aplikací na AWS

Trasování celého požadavku

  • API Gateway, Lambda i podřízená volání jsou trasována
  • Každé přidá svůj segment ke stejnému trace
  • Jedno trace ID propojuje logy a segmenty
  • Viditelnost celého požadavku od začátku do konce

Distribuované trace od začátku do konce: od API Gateway přes Lambda k DynamoDB a externímu API, s trace ID viditelným v hlavičce každého segmentu propojujícím všechny logy a segmenty

Nasazování aplikací na AWS

Pojďme cvičit!

Nasazování aplikací na AWS

Preparing Video For Download...