Fehlerbehebung bei bereitgestellten Anwendungen

Bereitstellen von Anwendungen auf AWS

Dunieski Otano

Amazon Web Services Solutions Architect

Task timed out

  • Eine Funktion schlägt fehl – aber nur manchmal
  • Im Log steht „Task timed out"
  • Die Signatur zeigt auf die eigentliche Ursache

Eine Stoppuhr neben einer Fehler-Logzeile, die eine Lambda-Aufgabe mit Timeout zeigt

Bereitstellen von Anwendungen auf AWS

Häufige Lambda-Fehlersignaturen

2x2-Raster mit Lambda-Fehlersignaturen: Timeout mit „task-timed-out"-Log, Throttled mit TooManyRequestsException, Access Denied mit AccessDeniedException und Out of Memory mit signal-killed-Fehler

  • Timeout: „Task timed out after N seconds"
  • Throttle: TooManyRequestsException
  • IAM-Verweigerung: AccessDenied, nicht autorisiert
  • Out of memory: Laufzeit während der Ausführung beendet
Bereitstellen von Anwendungen auf AWS

Erste Reaktion auf eine fehlschlagende Funktion

  • Lies die Fehlermeldung, bevor du etwas änderst
  • Ordne sie einer bekannten Signatur zu
  • Prüfe die Downstream-Latenz bei Timeouts
  • Ändere eine Sache und teste erneut

Entscheidungsschleife zur Fehlerbehebung: Fehlermeldung lesen, bekannter Signatur zuordnen, Downstream-Latenz prüfen, eine Sache ändern und erneut testen

Bereitstellen von Anwendungen auf AWS

CloudWatch Logs Insights

Eine Logs-Insights-Abfrage nutzt filter zum Eingrenzen und stats zum Aggregieren. Hier werden Fehler pro Minute gezählt:

fields @timestamp, @message
| filter level = "ERROR"
| stats count() as errors by bin(1m)
| sort errors desc
Bereitstellen von Anwendungen auf AWS

Integrationsfehler von beiden Seiten debuggen

  • Ausfälle passieren oft zwischen Services
  • Lies das Log des Aufrufers und des Aufgerufenen
  • Abgleichen per Request-ID oder Trace-ID
  • Die Lücke dazwischen zeigt die Bruchstelle

Aufrufer- und Aufgerufenen-Logs nebeneinander nach Request-ID ausgerichtet; die Lücke dazwischen ist als Integrations-Bruchstelle markiert, an der die Anfrage stoppt

Bereitstellen von Anwendungen auf AWS

Health Checks und Readiness-Probes

Load Balancer leitet Traffic an gesunde Ziele mit grünen Häkchen; ein fehlerhaftes Ziel wird nach aufeinanderfolgenden Health-Check-Fehlschlägen aus der Rotation genommen

  • Health Check: lebt die Instanz und liefert?
  • Load Balancer leiten nur zu gesunden Zielen
  • Readiness: schon bereit für Traffic?
  • Fehlende Checks nehmen ein Ziel aus der Rotation
Bereitstellen von Anwendungen auf AWS

Ein Playbook für die Fehlerbehebung

  • Lesen: Fehler lesen und Signatur zuordnen
  • Abfragen: Logs mit Logs Insights eingrenzen
  • Korrelieren: beide Seiten per Request- oder Trace-ID
  • Eine Sache ändern und verifizieren

Vierstufiges Playbook zur Fehlerbehebung: Fehler lesen und Signatur zuordnen, Logs mit Insights eingrenzen, beide Seiten per Trace-ID korrelieren, eine Sache ändern und verifizieren

Bereitstellen von Anwendungen auf AWS

Lass uns üben!

Bereitstellen von Anwendungen auf AWS

Preparing Video For Download...