Distributed Tracing mit AWS X-Ray und strukturiertem Logging

Bereitstellen von Anwendungen auf AWS

Dunieski Otano

Amazon Web Services Solutions Architect

Die langsame Anfrage, die niemand fand

  • Eine Anfrage dauert vier Sekunden
  • Die Logs jedes Dienstes sehen für sich gut aus
  • Niemand sieht den gesamten Pfad

Eine Lupe verfolgt eine langsame Anfrage über eine verteilte Service-Map mit einem roten Flaschenhals-Knoten

Bereitstellen von Anwendungen auf AWS

Was Distributed Tracing löst

Isolierte pro-Service-Log-Silos in Rot links gegenüber einer einheitlichen X-Ray-Gantt-Trace-Zeitleiste, die dieselbe Anfrage über API Gateway, Lambda, DynamoDB und externe API in Grün zusammenführt

  • Eine Anfrage berührt viele Services
  • Nur Logs zeigen nicht den End-to-End-Pfad
  • Ein Trace fügt die gesamte Anfrage zusammen
  • Sieh genau, wo die Zeit hinging
Bereitstellen von Anwendungen auf AWS

Segmente, Subsegmente und die Service-Map

  • Segment: die Arbeit eines Dienstes
  • Subsegment: Einheit im Segment, z. B. ein DB-Call
  • Service-Map: grafische Ansicht aller Segmente
  • Latenz und Fehler erscheinen je Knoten

X-Ray-Trace-Aufbau: Segment pro Service mit Subsegmenten für DB-Calls, zusammengesetzt zu einer Service-Map, die Latenz und Fehlerrate je Knoten zeigt

Bereitstellen von Anwendungen auf AWS

Annotations vs. Metadata


Annotations

  • Indexierte Schlüssel-Werte, daher filterbar
  • Nutze sie für Suchkriterien, z. B. Kundensegment

Metadata

  • Zusatzdetails, nicht indexiert
  • Für Kontext anhängen, aber nicht durchsuchbar
Bereitstellen von Anwendungen auf AWS

Logs mit Trace-IDs korrelieren

  • Jeder Trace hat eine eindeutige Trace-ID
  • Nimm die Trace-ID in deine strukturierten Logs auf
  • Spring von einem langsamen Trace zu den passenden Logzeilen
  • Logs und Traces werden eine gemeinsame Analyse

Strukturierte Logzeile mit hervorgehobenem Feld xray_trace_id, Pfeil vom X-Ray-Trace-View zu passenden Logzeilen in CloudWatch Logs für korrelierte Analyse

Bereitstellen von Anwendungen auf AWS

Über die Service-Map den Flaschenhals finden

X-Ray-Service-Map mit hervorgehobenem High-Latency-Knoten, Drill-down in die Trace-Zeitleiste, die das längste Segment als Flaschenhals zeigt

  • Starte bei der Service-Map, nicht in den Logs
  • Finde den Knoten mit der höchsten Latenz
  • Geh in seine Trace-Zeitleiste
  • Das längste Segment ist der Verdächtige
Bereitstellen von Anwendungen auf AWS

Tracing über die gesamte Anfrage

  • API Gateway, Lambda und Downstream-Calls alle getraced
  • Jeder fügt sein Segment zum selben Trace hinzu
  • Eine Trace-ID verbindet Logs und Segmente
  • End-to-End-Sichtbarkeit für jede Anfrage

End-to-End-Distributed-Trace von API Gateway über Lambda zu DynamoDB und externer API, eine Trace-ID in jedem Segment-Header verbindet alle Logs und Segmente

Bereitstellen von Anwendungen auf AWS

Lass uns üben!

Bereitstellen von Anwendungen auf AWS

Preparing Video For Download...