Ein Expertenleitfaden zur Beherrschung des AWS-Fehlerbehebungs-Workflows

Verwenden Sie einen wiederholbaren AWS-Fehlerbehebungs-Workflow mit CloudWatch, CloudTrail, VPC Flow Logs, AWS Config und Systems Manager.

Ein Expertenleitfaden zur Beherrschung des AWS-Fehlerbehebungs-Workflows

Die AWS-Fehlerbehebung wird einfacher, wenn Sie jedes Mal denselben Workflow befolgen: Symptom definieren, Umfang eingrenzen, aktuelle Änderungen prüfen, Logs und Metriken untersuchen und dann eine wahrscheinliche Ursache nach der anderen testen. Ohne diese Struktur springt man leicht zwischen CloudWatch, IAM, VPC-Einstellungen und Anwendungslogs hin und her, ohne etwas zu beweisen.

Dieser Leitfaden bietet Ihnen einen praktischen AWS-Fehlerbehebungs-Workflow und zeigt, wo CloudWatch, CloudTrail, AWS Config, VPC Flow Logs und Systems Manager einzuordnen sind.

Der Kern-Workflow zur AWS-Fehlerbehebung

Ein effektiver Fehlerbehebungs-Workflow ist keine zufällige Abfolge von Aktionen, sondern eine strukturierte Methodik, die Sie von der Problemerkennung bis zur Lösung und Prävention führt. Die Einführung eines wiederholbaren Prozesses gewährleistet Konsistenz, reduziert Stress und beschleunigt die Incident-Behebung.

1. Problem definieren: Erste Informationen sammeln

Der erste Schritt besteht darin, klar zu verstehen, was passiert. Vermeiden Sie Annahmen. Sammeln Sie so viele objektive Informationen wie möglich.

  • Symptome: Was genau schlägt fehl oder verhält sich unerwartet? (z.B. „API-Aufrufe laufen aus dem Zeitrahmen“, „Website gibt 5xx-Fehler zurück“, „EC2-Instanz ist nicht erreichbar“).
  • Umfang: Wie weit verbreitet ist das Problem? (z.B. einzelne Instanz, bestimmte Anwendung, gesamte Region, bestimmte Benutzer). Betrifft es die Produktion, das Staging oder die Entwicklung?
  • Auswirkung: Welche geschäftlichen Auswirkungen hat das Problem? (z.B. Umsatzverlust, Kundenunzufriedenheit, Sicherheitsrisiko).
  • Letzter bekannter guter Zustand: Wann hat es zuletzt korrekt funktioniert?
  • Fehlermeldungen: Sammeln Sie alle Fehlermeldungen aus Anwendungen, Browser-Konsolen oder direkten AWS-Dienstantworten.

Tipp: Ermutigen Sie Benutzer oder Systeme, spezifische Fehlermeldungen und Zeitstempel bereitzustellen. Diese Daten sind unschätzbar wertvoll.

2. Umfang überprüfen: Betroffene Komponenten isolieren

Sobald das Problem definiert ist, grenzen Sie den potenziellen Schadensradius ein. Dies hilft Ihnen, Ihre Untersuchungsbemühungen zu fokussieren.

  • AWS Health: Überprüfen Sie AWS Health in Ihrem Konto und die öffentliche AWS-Statusseite auf laufende regionale Probleme. Ein weit verbreitetes Service-Ereignis kann oft viele Symptome erklären.
  • Ressource isolieren: Wenn ein Webserver ausgefallen ist, betrifft dies nur eine EC2-Instanz oder alle? Ist die Datenbank von anderen Instanzen aus erreichbar?
  • Reproduktion: Kann das Problem konsistent reproduziert werden? Wenn ja, unter welchen Bedingungen?

3. Aktuelle Änderungen überprüfen: Potenzielle Auslöser identifizieren

Die meisten Probleme werden durch eine Änderung ausgelöst. Dies ist oft der schnellste Weg zur Lösung.

  • Bereitstellungsänderungen: Neue Code-Bereitstellungen, Infrastructure-as-Code (IaC)-Updates.
  • Konfigurationsänderungen: Änderungen an Sicherheitsgruppen, IAM-Richtlinien-Updates, Load-Balancer-Einstellungen, Datenbank-Parametergruppen.
  • Skalierungsereignisse: Auto-Scaling-Aktivitäten, manuelles Skalieren von Diensten.
  • AWS CloudFormation / Terraform: Überprüfen Sie aktuelle Stack-Updates oder Ressourcenänderungen.

Tool-Highlight: AWS CloudTrail ist Ihr primäres Werkzeug hierfür und zeigt, wer was, wann und von wo aus getan hat.

4. AWS-Überwachungstools nutzen: Tief in die Daten eintauchen

Hier nutzen Sie die nativen Observability-Tools von AWS, um empirische Beweise zu sammeln.

  • Amazon CloudWatch: Für Metriken, Logs und Alarme.
  • AWS CloudTrail: Für API-Aktivitäten und Änderungshistorie.
  • VPC Flow Logs: Für Netzwerkverkehrsanalyse.
  • AWS Config: Für Konfigurationshistorie und Compliance.
  • Anwendungslogs: Logs Ihrer Anwendungen, die auf EC2, ECS, Lambda usw. laufen.

5. Hypothesen formulieren und testen: Theorien entwickeln und validieren

Basierend auf den gesammelten Daten entwickeln Sie eine oder mehrere Hypothesen zur Ursache. Testen Sie dann systematisch jede einzelne.

  • Beispielhypothese: „Die EC2-Instanz ist nicht erreichbar, weil ihre Sicherheitsgruppe eingehenden SSH-Verkehr nicht zulässt.“
  • Testen: Überprüfen Sie die Sicherheitsgruppenregeln. Ändern Sie sie bei Bedarf vorübergehend (mit Vorsicht und Rollback-Plan), um zu sehen, ob die Konnektivität wiederhergestellt wird.

6. Lösung implementieren und verifizieren: Korrekturen anwenden und Lösung bestätigen

Sobald eine Hypothese bestätigt ist, wenden Sie die Korrektur an. Tun Sie dies sorgfältig und, wenn möglich, zuerst in einer kontrollierten Umgebung.

  • Korrektur: Aktualisieren Sie eine IAM-Richtlinie, konfigurieren Sie eine Sicherheitsgruppe neu, rollen Sie eine Code-Bereitstellung zurück, skalieren Sie einen Dienst hoch.
  • Verifizierung: Stellen Sie sicher, dass die ursprünglichen Symptome verschwunden sind und keine neuen Probleme aufgetreten sind. Überwachen Sie nach der Korrektur relevante Metriken und Logs.

7. Dokumentieren und lernen: Zukünftige Fehlerbehebung verbessern

Jeder Incident ist eine Lernmöglichkeit. Die Dokumentation des Problems, der Untersuchungsschritte, der Lösung und der vorbeugenden Maßnahmen ist entscheidend.

  • Incident-Bericht: Erstellen Sie einen kurzen Bericht mit Zeitplan, Symptomen, Ursache, Lösung und gewonnenen Erkenntnissen.
  • Wissensdatenbank: Fügen Sie ihn zur Wissensdatenbank Ihres Teams für zukünftige Referenzen hinzu.
  • Vorbeugende Maßnahmen: Implementieren Sie Überwachung, Alarme oder architektonische Änderungen, um ein erneutes Auftreten zu verhindern.
  • Post-Mortem: Führen Sie eine schuldfreie Post-Mortem-Analyse durch, um systemische Schwachstellen zu identifizieren.

Wichtige AWS-Fehlerbehebungstools im Detail

AWS bietet eine leistungsstarke Suite von Tools zur Unterstützung bei der Fehlerbehebung. Das Verständnis ihrer Stärken ist entscheidend.

Amazon CloudWatch

CloudWatch sammelt Überwachungs- und Betriebsdaten in Form von Logs, Metriken und Ereignissen. Es ist unerlässlich, um die Gesundheit und Leistung Ihrer AWS-Ressourcen und Anwendungen zu verstehen.

  • Metriken: Visualisieren Sie Leistungsdaten (CPU-Auslastung, Netzwerk-I/O, Datenträgeroperationen, Datenbankverbindungen, Lambda-Aufrufe/Fehler). Erstellen Sie benutzerdefinierte Metriken für Ihre Anwendungen.
  • Logs: Zentralisieren Sie Logs von EC2-Instanzen (CloudWatch-Agent), Lambda-Funktionen, VPC Flow Logs, CloudTrail-Logs usw. Verwenden Sie CloudWatch Logs Insights für leistungsstarke Abfragen.
  • Alarme: Legen Sie Schwellenwerte für Metriken fest, um Benachrichtigungen (SNS, Lambda) auszulösen, wenn Probleme auftreten.

Praktisches Beispiel: Untersuchung einer nicht reagierenden EC2-Instanz

  1. EC2-Instanz-Statusprüfungen überprüfen: Sehen Sie sich in der EC2-Konsole die Statusprüfungen der Instanz an (Systemstatus und Instanzstatus). Wenn eine davon fehlschlägt, ist das ein starkes Indiz.
  2. CloudWatch-Metriken: Navigieren Sie zu den CloudWatch-Metriken für die Instanz.
    • CPUUtilization: Ist die CPU durchgehend bei 100%?
    • NetworkIn/NetworkOut: Gibt es unerwarteten Datenverkehr oder einen plötzlichen Abfall?
    • DiskReadOps/DiskWriteOps: Ist der Datenträger-I/O gesättigt?
    • StatusCheckFailed_Instance / StatusCheckFailed_System: Diese Metriken sind 1, wenn eine Prüfung fehlgeschlagen ist.
  3. CloudWatch Logs: Wenn der CloudWatch-Agent konfiguriert ist, überprüfen Sie /aws/ec2/instance_id/ auf Anwendungs- oder Systemlogs (z.B. syslog, nginx_access_log). Verwenden Sie CloudWatch Logs Insights, um nach Fehlern oder bestimmten Ereignissen zu suchen.
# Beispiel einer CloudWatch Logs Insights-Abfrage nach Fehlern in den Logs einer EC2-Instanz
fields @timestamp, @message
| sort @timestamp desc
| filter @message like /ERROR|FAIL|EXCEPTION/ and @logStream = 'i-0abcdef1234567890'
| limit 50

AWS CloudTrail

CloudTrail zeichnet API-Aufrufe in Ihrem AWS-Konto auf und bietet eine Historie der Aktionen von Benutzern, Rollen oder AWS-Diensten. Es ist entscheidend für Sicherheitsaudits, Compliance und, am wichtigsten, für die Fehlerbehebung bei Änderungen.

  • Ereignisverlauf: Zeigen Sie den Verlauf von Verwaltungsereignissen an (z.B. RunInstances, AuthorizeSecurityGroupIngress, UpdateFunctionConfiguration).
  • Datenereignisse: Konfigurieren Sie Trails, um Datenebenenoperationen für S3-Objekte, Lambda-Funktionsaufrufe usw. zu protokollieren.

Praktisches Beispiel: Diagnose eines IAM-Berechtigungsfehlers (Access Denied)

Eine Anwendung oder ein Benutzer erhält einen „Access Denied“-Fehler beim Versuch, eine AWS-Aktion auszuführen (z.B. s3:GetObject).

  1. Identifizieren Sie die fehlschlagende Aktion: Welcher spezifische AWS-API-Aufruf ist fehlgeschlagen?
  2. Gehen Sie zum CloudTrail-Ereignisverlauf: Filtern Sie Ereignisse nach:
    • Ereignisname: Der genaue API-Aufruf (z.B. GetObject).
    • Benutzername: Der IAM-Benutzer oder die Rolle, die den Aufruf getätigt hat.
    • Ereignisquelle: Der beteiligte AWS-Dienst (z.B. s3.amazonaws.com).
    • Zeitraum: Um den Zeitpunkt, als der Fehler aufgetreten ist.
  3. Untersuchen Sie die Ereignisdetails: Suchen Sie nach Ereignissen mit errorCode: "AccessDenied".
    • Das Feld errorMessage gibt oft Hinweise auf die fehlende spezifische Berechtigung oder eine Verletzung der Ressourcenrichtlinie.
    • Das Feld requestParameters zeigt die übergebenen Argumente, wie den S3-Bucket oder -Schlüssel.
    • Das Feld userIdentity bestätigt, wer die Aktion versucht hat.

Dies zeigt genau, welcher Benutzer oder welche Rolle welche Aktion an welcher Ressource versucht hat und aufgrund von Berechtigungen fehlgeschlagen ist, sodass Sie die entsprechende IAM-Richtlinie oder Ressourcenrichtlinie ändern können.

AWS Config

AWS Config bietet ein detailliertes Inventar Ihrer AWS-Ressourcen, ihrer Konfigurationen und wie sie sich im Laufe der Zeit ändern. Es kann Konfigurationsänderungen anhand gewünschter Einstellungen bewerten.

  • Konfigurationshistorie: Sehen Sie, wie sich die Konfiguration einer Ressource geändert hat (z.B. wann eine Sicherheitsgruppenregel hinzugefügt oder entfernt wurde oder eine S3-Bucket-Richtlinie geändert wurde).
  • Compliance: Definieren Sie Regeln, um Ressourcenkonfigurationen auf Best Practices oder regulatorische Anforderungen zu überprüfen.

Anwendungsfall: Wenn eine Anwendung plötzlich den Zugriff auf eine Datenbank verliert, können Sie mit AWS Config überprüfen, ob die Sicherheitsgruppe der Datenbank kürzlich geändert wurde, wodurch möglicherweise der Zugriff für die Instanzen Ihrer Anwendung entzogen wurde.

VPC Flow Logs

VPC Flow Logs erfassen Informationen über den IP-Verkehr zu und von Netzwerkschnittstellen in Ihrer VPC. Sie sind unverzichtbar für Netzwerkkonnektivitätsprobleme.

  • Verkehrsanalyse: Identifizieren Sie blockierten Verkehr (REJECT-Aktionen), unerwartete Verbindungen oder große Datenmengen zu/von bestimmten IPs.
  • Konnektivität beheben: Stellen Sie fest, ob Sicherheitsgruppen, NACLs oder Routentabellen legitimen Verkehr blockieren.

Anwendungsfall: Ihre EC2-Instanz kann keine Verbindung zu einer externen API herstellen. Überprüfen Sie die Flow Logs auf REJECT-Einträge von der ENI der Instanz zur IP-Adresse der API, was auf eine restriktive Sicherheitsgruppe oder NACL hindeuten könnte.

AWS Systems Manager

Systems Manager bietet eine einheitliche Oberfläche zur Anzeige von Betriebsdaten aus mehreren AWS-Diensten und zur Automatisierung von Betriebsaufgaben. Wichtige Komponenten für die Fehlerbehebung sind:

  • Session Manager: Stellen Sie sicher eine Shell-Verbindung zu EC2-Instanzen her, ohne eingehende Ports (wie SSH-Port 22) zu öffnen, was Sicherheitsrisiken reduziert und den Zugriff vereinfacht.
  • Run Command: Führen Sie Skripte oder Befehle remote auf EC2-Instanzen aus, um Diagnosedaten zu sammeln oder Korrekturen anzuwenden (z.B. einen Dienst neu starten, Logs abrufen).
  • Automation: Erstellen Sie Runbooks, um gängige Fehlerbehebungs- und Behebungsschritte zu automatisieren.

Häufige AWS-Fehlerbehebungsszenarien und Lösungen

Konnektivitätsprobleme

Konnektivitätsprobleme treten häufig auf und können von verschiedenen Netzwerkkomponenten herrühren.

  • Sicherheitsgruppen: Fungieren als virtuelle Firewalls für EC2-Instanzen. Überprüfen Sie eingehende und ausgehende Regeln auf erforderliche Ports und IP-Bereiche.
  • Netzwerkzugriffskontrolllisten (NACLs): Zustandslose Firewalls auf Subnetzebene. Überprüfen Sie eingehende und ausgehende Regeln, achten Sie auf die Regelreihenfolge und explizite DENY-Regeln.
  • Routentabellen: Stellen Sie sicher, dass geeignete Routen vorhanden sind, damit der Verkehr sein Ziel erreicht (z.B. Internet-Gateway für öffentlichen Verkehr, NAT-Gateway für private Instanzen, die auf das Internet zugreifen, VPC-Peering für die Kommunikation zwischen VPCs).
  • DNS-Auflösung: Überprüfen Sie, ob Instanzen Hostnamen auflösen können. Überprüfen Sie die VPC-DNS-Einstellungen und alle benutzerdefinierten DNS-Server.
  • Subnetz-CIDR-Überlappungen: Wenn Sie VPC-Peering oder VPNs verwenden, stellen Sie sicher, dass es keine überlappenden CIDR-Blöcke gibt.

Berechtigungsfehler (Access Denied)

Diese Fehler treten auf, wenn ein IAM-Prinzipal (Benutzer, Rolle) eine Aktion ohne die erforderlichen Berechtigungen versucht.

  • IAM-Richtlinien: Der häufigste Übeltäter. Überprüfen Sie die IAM-Richtlinie, die dem Benutzer oder der Rolle zugeordnet ist. Verwenden Sie den IAM Policy Simulator, um bestimmte Aktionen und Ressourcen zu testen.
  • Ressourcenrichtlinien: Für Dienste wie S3, SQS, KMS und ECR definieren Ressourcenrichtlinien, wer auf die Ressource zugreifen kann. Stellen Sie sicher, dass der aufrufende Prinzipal hier Zugriff hat.
  • Service Control Policies (SCPs): Wenn Sie AWS Organizations verwenden, können SCPs Aktionen auf Konto- oder OE-Ebene einschränken.
  • Permissions Boundary: Eine erweiterte IAM-Funktion, die die maximalen Berechtigungen einschränken kann, die eine IAM-Entität haben kann.
  • Sitzungsrichtlinien: Temporäre Richtlinien, die die effektiven Berechtigungen einer Identität überschreiben oder einschränken können.

Service Limits & Drosselung

AWS-Dienste haben weiche und harte Limits. Das Erreichen dieser Limits kann zu Dienstverschlechterung oder Ausfällen führen.

  • Limits überwachen: Überprüfen Sie regelmäßig Ihre Service-Kontingente über die AWS Service Quotas-Konsole. Erstellen Sie CloudWatch-Alarme für Metriken, die sich kritischen Limits nähern.
  • Erhöhungen beantragen: Die meisten weichen Limits können durch Einreichen eines Support-Tickets bei AWS erhöht werden.
  • Drosselung: Dienste wie Lambda, DynamoDB und API Gateway können Anfragen drosseln, wenn die Aufrufraten die bereitgestellte Kapazität oder Burst-Limits überschreiten. Achten Sie auf TooManyRequestsException- oder ThrottlingException-Fehler in Logs.
  • Skalierung: Stellen Sie sicher, dass Ihre Auto-Scaling-Gruppen, ECS-Dienste oder Datenbank-Read-Replicas so konfiguriert sind, dass sie angemessen für die Nachfrage skalieren.

Best Practices für proaktive Fehlerbehebung

Vorbeugen ist besser als Heilen. Implementieren Sie diese Praktiken, um Incidents zu minimieren und die Lösungsgeschwindigkeit zu erhöhen.

  1. Robustes Monitoring & Alerting implementieren: Konfigurieren Sie CloudWatch-Alarme für kritische Metriken, Systemzustand und Anwendungsfehler. Integrieren Sie Benachrichtigungssysteme (SNS, Slack, PagerDuty).
  2. Zentralisiertes Logging: Konsolidieren Sie alle Anwendungs- und Infrastrukturlogs in CloudWatch Logs oder einer dedizierten Logging-Lösung (z.B. ELK-Stack auf EC2/ECS, Datadog, Splunk).
  3. Infrastructure as Code (IaC): Verwalten Sie Ihre Infrastruktur mit CloudFormation, Terraform oder CDK. Dies bietet Versionskontrolle und vereinfacht Rollbacks.
  4. Prinzip der geringsten Privilegien: Gewähren Sie Benutzern und Rollen nur die notwendigen Berechtigungen. Dies reduziert den Schadensradius potenzieller Sicherheitsvorfälle und vereinfacht die Berechtigungsfehlerbehebung.
  5. IAM-Richtlinien regelmäßig überprüfen: Führen Sie regelmäßig Audits von IAM-Richtlinien auf übermäßig freizügige Anweisungen oder ungenutzte Berechtigungen durch.
  6. Service Limits verstehen: Seien Sie sich der Standard-Service-Kontingente für Ihre Region und Ihr Konto bewusst. Beantragen Sie Erhöhungen proaktiv für erwartetes Wachstum.
  7. Häufige Aufgaben automatisieren: Verwenden Sie AWS Systems Manager Automation oder Lambda-Funktionen, um Diagnoseprüfungen und Behebungen für wiederkehrende Probleme zu automatisieren.
  8. Tagging-Strategie: Implementieren Sie eine konsistente Tagging-Strategie für alle Ihre Ressourcen. Dies hilft bei der Organisation, Kostenverteilung und beim Filtern von Ressourcen während der Fehlerbehebung.
  9. Incident Response üben: Führen Sie regelmäßige Übungen für kritische Incidents durch. Dies hilft Teams, sich mit dem Workflow und den Tools unter Druck vertraut zu machen.

Wichtigste Erkenntnis

Gute AWS-Fehlerbehebung ist diszipliniert, nicht hektisch. Definieren Sie das Problem, überprüfen Sie Umfang und aktuelle Änderungen, nutzen Sie die richtige AWS-Datenquelle und dokumentieren Sie die Lösung, damit der nächste Incident schneller behoben werden kann.