Koncepty a architektura X-Ray

Monitoring and Troubleshooting AWS

John Q. Martin

Principal Consultant

Výzva distribuovaných systémů

 

Monolitická aplikace

  • Lineární tok, vše v jednom procesu
  • Snadné ladění

 

Distribuovaná aplikace

  • Jeden požadavek prochází více službami, DB a externími API
  • Když selže, která služba za tím stojí?

Velký zamotaný uzel z barevných vláken – znázornění, jak těžké je sledovat jeden požadavek distribuovaným systémem

Monitoring and Troubleshooting AWS

Co je AWS X-Ray?

 

X-Ray je služba pro distribuované trasování, která:

  • Sleduje požadavky napříč službami od začátku do konce
  • Měří latenci a detekuje chyby v každém kroku
  • Vizualizuje architekturu aplikace jako mapu služeb

 

Ukázková cesta požadavku:

  Diagram cesty požadavku procházejícího více službami v distribuovaném trasování

Monitoring and Troubleshooting AWS

Pět klíčových schopností

 

Pět klíčových schopností X-Ray: trasování požadavků, analýza výkonu, detekce chyb, mapa služeb a přehledy

Monitoring and Troubleshooting AWS

Jak trasování funguje

 

Tok distribuovaného trasování: požadavek vstoupí do služby A, která volá službu B a pak C; každá předává Trace ID v HTTP hlavičce; každá služba odesílá segment se stejným Trace ID do X-Ray daemona, který je přeposílá do X-Ray, kde se sestaví do jednoho úplného trasování

Monitoring and Troubleshooting AWS

Trace ID a šíření hlaviček

 

Formát Trace ID:

Formát Trace ID v X-Ray: číslo verze, Unix timestamp v hexadecimálním formátu a jedinečný identifikátor

 

HTTP hlavička:

X-Amzn-Trace-Id:
  Root=1-5e8c1234-...;
  Parent=abc123;
  Sampled=1
  • Root, Trace ID, stejné ve všech službách
  • Parent, ID nadřazeného segmentu
  • Sampled, 0 nebo 1, trasováno nebo přeskočeno
Monitoring and Troubleshooting AWS

X-Ray daemon

 

Co dělá:

  • Naslouchá na UDP portu 2000
  • Přijímá data segmentů z tvé aplikace
  • Ukládá do vyrovnávací paměti, dávkuje a odesílá do X-Ray API
  • Odděluje tvoji aplikaci od služby X-Ray

 

Nasazení podle prostředí:

Nasazení X-Ray daemona podle prostředí: automaticky na Lambda, jako služba na EC2 a jako sidecar na ECS

Monitoring and Troubleshooting AWS

Vzorkování

 

Výchozí pravidlo:

  • První požadavek za sekundu – vždy trasován
  • 5 % dalších požadavků – vzorkováno

Pole vlastního pravidla:

  • fixed_target – počet požadavků/s vždy trasovaných
  • rate – procento dalších požadavků
  • priority – nižší číslo má přednost

 

Ukázková strategie:

Rule 1 (priority 1):
  5xx errors -> 100% sampling

Rule 2 (priority 10):
  Normal traffic -> 5% sampling
Monitoring and Troubleshooting AWS

Segmenty

 

Co segment zaznamenává:

  • Název služby
  • Čas začátku a konce
  • Trace ID
  • Podrobnosti HTTP požadavku a odpovědi
  • Účet AWS a region

 

Stavy segmentu:

Pět stavů segmentu X-Ray: in progress, ok, error, fault a throttle

Monitoring and Troubleshooting AWS

Subsegmenty

 

Srovnání časové osy: bez subsegmentů jeden celkový pruh 800 ms; se subsegmenty stejných 800 ms rozdělených na DynamoDB 50 ms, PaymentService 400 ms jako úzké hrdlo a InventoryService 300 ms

K čemu subsegmenty slouží:

  • Poskytují podrobné časování uvnitř segmentu
  • Sledují volání navazujících služeb
  • Rozdělují celkových 800 ms na:
    • DynamoDB.PutItem: 50 ms
    • Volání PaymentService: 400 ms
    • Volání InventoryService: 300 ms

 

Jmenné prostory:

Tři jmenné prostory subsegmentů: aws pro volání AWS, remote pro externí HTTP a local pro vlastní kód

Monitoring and Troubleshooting AWS

Anotace

 

Klíčové vlastnosti:

  • Indexované páry klíč–hodnota – prohledávatelné a filtrovatelné
  • Limit: 50 indexovaných na trasování
  • Typy: string, number, boolean

Použití pro:

  • user_id, order_id, environment
  • version, příznaky funkcí, kódy chyb

 

Syntaxe filtru:

annotation.user_id = "user-123"
annotation.environment = "production"
AND annotation.version = "1.2.3"
Monitoring and Troubleshooting AWS

Metadata

 

Klíčové vlastnosti:

  • Neindexováno – nelze prohledávat ani filtrovat
  • Bez omezení velikosti
  • Podporuje libovolnou strukturu JSON

Použití pro:

  • Celá těla požadavků a odpovědí
  • Chybové zprávy a stack traces
  • Obchodní kontext (položky objednávky, adresy)

 

Anotace vs. metadata:

Srovnávací tabulka: anotace jsou indexované a prohledávatelné, metadata jsou podrobná a neindexovaná

Monitoring and Troubleshooting AWS

Úplná struktura trasování

 

Úplná struktura trasování se čtyřmi segmenty; externí platební API je nejpomalejší operací

Monitoring and Troubleshooting AWS

Shrnutí lekce

 

  • X-Ray – služba distribuovaného trasování pro viditelnost napříč službami od začátku do konce
  • Mechanismus trasování – šíření Trace ID přes HTTP hlavičky, segmenty sbírané daemonem, konfigurovatelná pravidla vzorkování
  • Komponenty trasování:
    • Segmenty – záznamy práce na úrovni služby
    • Subsegmenty – podrobné časování navazujících operací
    • Anotace – indexované páry klíč–hodnota pro filtrování a vyhledávání
    • Metadata – podrobný kontext, neindexováno
Monitoring and Troubleshooting AWS

Pojďme cvičit!

Monitoring and Troubleshooting AWS

Preparing Video For Download...