Tracing distribuito con AWS X-Ray e logging strutturato

Distribuire applicazioni su AWS

Dunieski Otano

Amazon Web Services Solutions Architect

La richiesta lenta che nessuno trovava

  • Una richiesta impiega quattro secondi
  • I log di ogni servizio, presi da soli, sembrano ok
  • Nessuno vede l'intero percorso

Una lente d'ingrandimento segue una richiesta lenta su una mappa di servizi distribuiti con un nodo collo di bottiglia in rosso

Distribuire applicazioni su AWS

Cosa risolve il tracing distribuito

Silos di log per servizio isolati in rosso a sinistra rispetto a una timeline di trace tipo Gantt di X-Ray in verde che cuce la stessa richiesta tra API Gateway, Lambda, DynamoDB e API esterna

  • Una richiesta tocca molti servizi
  • I soli log non mostrano il percorso end-to-end
  • Un trace cuce l'intera richiesta
  • Vedi esattamente dove è andato il tempo
Distribuire applicazioni su AWS

Segmenti, subsegmenti e service map

  • Segment: il lavoro svolto da un servizio
  • Subsegment: unità dentro un segmento, es. una chiamata DB
  • Service map: grafo visivo di tutti i segmenti
  • Latenza ed errori compaiono su ogni nodo

Anatomia di un trace X-Ray: segmento per servizio con subsegmenti per chiamate DB, assemblati in una service map che mostra latenza e tasso di errore su ogni nodo

Distribuire applicazioni su AWS

Annotations vs metadata


Annotations

  • Coppie chiave-valore indicizzate, quindi filtrabili
  • Usale per ciò che cercherai, es. livello cliente

Metadata

  • Dettagli extra, non indicizzati
  • Allegali per contesto, ma non ci puoi fare ricerche
Distribuire applicazioni su AWS

Correlare i log con i trace ID

  • Ogni trace ha un trace ID univoco
  • Includi il trace ID nei tuoi log strutturati
  • Passa da un trace lento alle sue esatte righe di log
  • Log e trace diventano un'unica indagine

Riga di log strutturato con campo xray_trace_id evidenziato, freccia dalla vista trace di X-Ray alle righe corrispondenti in CloudWatch Logs per un'analisi correlata

Distribuire applicazioni su AWS

Leggere la service map per trovare il collo di bottiglia

Service map di X-Ray con un nodo ad alta latenza evidenziato, approfondimento nella timeline del trace che mostra il segmento più lungo identificato come collo di bottiglia

  • Parti dalla service map, non dai log
  • Trova il nodo con latenza più alta
  • Entra nella sua timeline del trace
  • Il segmento più lungo è il sospetto
Distribuire applicazioni su AWS

Tracing sull'intera richiesta

  • API Gateway, Lambda e chiamate a valle tutte tracciate
  • Ognuna aggiunge il proprio segment allo stesso trace
  • Un unico trace ID lega log e segmenti
  • Visibilità end-to-end per ogni richiesta

Trace distribuito end-to-end da API Gateway a Lambda fino a DynamoDB e API esterna, un unico trace ID visibile in ogni intestazione di segmento collega tutti i log e i segmenti

Distribuire applicazioni su AWS

Esercitiamoci!

Distribuire applicazioni su AWS

Preparing Video For Download...