AWS CloudWatch ist ein nativer Service des Amazon Cloud-Ökosystems, der alle anderen Services in der Amazon Cloud protokolliert und überwacht. Er sammelt und verfolgt Metriken oder Protokolldateien und setzt Alarme für verschiedene daraus extrahierte Aktivitäten.

So erhalten Sie einen systemweiten Einblick in die Anwendungsleistung, die Ressourcenauslastung und den Betriebszustand der Services. Sie können AWS CloudWatch auch verwenden, um anomales Verhalten in Ihren Umgebungen zu erkennen, automatisierte Maßnahmen zu ergreifen, Probleme zu beheben und Erkenntnisse aus den Protokollen zu gewinnen, um Maßnahmen zu ergreifen, die Ihr System oder Ihren Betrieb zum Besseren verändern.

Die Überwachung Ihrer Protokolle hilft bei der Erkennung von Sicherheitsbedrohungen und identifiziert potenzielle Schwachstellen. Indem Sie auf verdächtige Aktivitäten und ungewöhnliches Verhalten achten, können Sie auf verdächtige Aktivitäten reagieren und Maßnahmen ergreifen, um zukünftige Angriffe zu verhindern.

Außerdem ist die Pflege von Protokollen und die Überwachung der Systeme in den meisten Fällen eine Pflichtaktivität für die Einhaltung von Vorschriften. Wenn Sie AWS CloudWatch verwenden, erfüllen Sie diese Anforderungen.

Dies sind alles direkte Vorteile, die Sie aus der Nutzung von AWS CloudWatch ziehen. Sehen wir uns also an, wie Sie mit all dem beginnen können.

Einrichten von AWS CloudWatch für Ihren Service

CloudWatch-Setup
Quelle: aws.amazon.com

Die Einrichtung kann einfach und unkompliziert sein, oder Sie können Wochen damit verbringen, alle Aspekte oder Eigenschaften Ihres Protokollierungs- und Überwachungssystems fein abzustimmen und sind immer noch nicht ganz fertig (was man im Grunde als einen lebendigen Verbesserungsprozess bezeichnen kann).

Aber kurz gesagt, so können Sie beginnen:

  1. Angenommen, Sie haben bereits ein AWS-Konto, dann aktivieren Sie CloudWatch, indem Sie zur CloudWatch-Konsole navigieren und auf die Schaltfläche “Starten” klicken.
  2. Erstellen Sie eine Protokollgruppe, um mit der Sammlung der Protokolle für Ihren Service zu beginnen. Eine Protokollgruppe ist eine Sammlung von Protokollströmen, die die gleichen Einstellungen für Aufbewahrung, Überwachung und Zugriffskontrolle haben. Sie können eine Protokollgruppe erstellen, indem Sie auf die Schaltfläche “Protokollgruppe erstellen” in der CloudWatch-Konsole klicken.
  3. Erstellen Sie einen Log-Stream, um die Log-Ereignisse auf dieselbe Quelle (Dienst) einzugrenzen. Sie können einen Log-Stream erstellen, indem Sie auf die Schaltfläche “Log-Stream erstellen” in der CloudWatch-Konsole klicken.
  4. Wenn Sie Protokolle von EC2-Instanzen sammeln möchten, installieren Sie den CloudWatch-Agent. Der Agent ist ein Stück Software, das auf Ihren Instanzen läuft und Protokolldaten an CloudWatch sendet. Sie können den Agenten über den AWS Systems Manager installieren oder ein Skript auf Ihren Instanzen ausführen.
  5. Erstellen Sie einen Metrikfilter, um Metriken aus Ihren Protokollen zu extrahieren, die auf einem definierten übereinstimmenden Muster basieren. Sie können einen Metrikfilter erstellen, indem Sie auf die Schaltfläche “Metrikfilter erstellen” in der CloudWatch-Konsole klicken.
  6. Schließlich können Sie alle extrahierten Daten an einem Ort sammeln und visualisieren – erstellen Sie ein Dashboard. Ein Dashboard ist eine Widget-Sammlung, die Metriken und andere Daten anzeigt, die Sie dort platzieren. Sie können ein Dashboard erstellen, indem Sie auf die Schaltfläche “Dashboard erstellen” in der CloudWatch-Konsole klicken.

Überwachung mit AWS CloudWatch

Wie bereits erwähnt, können Sie jeden Service in der Amazon Cloud mit AWS Cloudwatch überwachen. Um Ihnen eine genauere Vorstellung davon zu geben, wie eine solche Überwachung aussehen kann, zeigen wir Ihnen hier, wie Sie dies für die gängigsten AWS-Dienste, die Sie höchstwahrscheinlich in Ihrem System verwenden, tun können.

CloudWatch-Monitor
Quelle: docs.aws.amazon.com

EC2-Instanzen

Sie können EC2-Instanzen überwachen, indem Sie Metriken wie die CPU-Auslastung, den Netzwerkverkehr, die Festplattennutzung und die Speichernutzung erfassen. Sie können auch den Status Ihrer EC2-Instanzen überwachen und Benachrichtigungen erhalten, wenn Instanzen anhalten oder beendet werden.

Um EC2-Instanzen zu überwachen, installieren Sie den CloudWatch-Agenten auf Ihren Instanzen und konfigurieren ihn so, dass er Metriken an CloudWatch sendet. In einem nächsten Schritt können Sie dann Alarme erstellen, die Sie benachrichtigen, wenn die Metriken bestimmte Schwellenwerte überschreiten.

RDS-Datenbanken

Sie können Amazon RDS-Datenbanken überwachen, indem Sie Metriken wie die CPU-Auslastung, die Speichernutzung oder die Festplattennutzung der Datenbank erfassen. Sie können auch den Status der Datenbanken überwachen und Benachrichtigungen erhalten, wenn Datenbanken angehalten, pausiert oder beendet werden.

Um RDS-Datenbanken zu überwachen, aktivieren Sie die erweiterte Überwachung und konfigurieren sie so, dass Metriken an CloudWatch gesendet werden. Auch hier können Sie Alarme erstellen, die Sie benachrichtigen, wenn die Metriken nicht stimmen.

Lambda-Funktionen

Sie können AWS Lambda-Funktionen überwachen, indem Sie Metriken wie die Anzahl der Lambda-Aufrufe, die Dauer und die Fehlerrate erfassen. Sie können auch den Status Ihrer Funktionen überwachen und Benachrichtigungen erhalten, wenn Funktionen fehlschlagen.

Um Lambda-Funktionen zu überwachen, müssen Sie CloudWatch Logs aktivieren und Ihre Funktionen so konfigurieren, dass sie Protokolle an CloudWatch senden. Sie können dann Metrikfilter erstellen, um Metriken aus Ihren Protokollen zu extrahieren und Aktionen auf der Grundlage der aus den Protokollen extrahierten Informationen durchzuführen.

Elastic Load Balancers

Die Überwachung von Elastic Load Balancers erfolgt durch die Erfassung von Metriken wie Anzahl der Anfragen, Latenzzeit und HTTP-Antwortcodes. Sie können auch den Status Ihrer Load Balancer überwachen und erhalten Benachrichtigungen, wenn Load Balancer ausfallen.

Um Load Balancer zu überwachen, müssen Sie die Zugriffsprotokolle aktivieren und Ihre Load Balancer so konfigurieren, dass sie Protokolle an CloudWatch senden. Sie können dann Metrikfilter erstellen, um Metriken aus Ihren Protokollen zu extrahieren und Alarme zu erzeugen, wenn die Metriken von Ihrem definierten gesunden Zustand abweichen.

Auto Scaling Gruppen

Sie können Auto Scaling Groups überwachen, indem Sie die Gruppengröße, die CPU-Auslastung und den Netzwerkverkehr erfassen. Außerdem können Sie den Status Ihrer Gruppen überwachen und Benachrichtigungen erhalten, wenn Gruppen hoch- oder herunterskaliert werden.

Um Auto Scaling Groups zu überwachen, müssen Sie die detaillierte Überwachung aktivieren und sie so konfigurieren, dass Metriken an CloudWatch gesendet werden. Sie können dann Alarme erstellen, die Sie benachrichtigen, wenn die Metriken bestimmte Schwellenwerte überschreiten.

Elastic Beanstalk-Anwendungen

Sie können AWS Elastic Beanstalk-Anwendungen überwachen, indem Sie Metriken wie die CPU-Auslastung und die Anzahl der Anfragen erfassen. Außerdem können Sie den Status Ihrer Anwendungen überwachen und Benachrichtigungen erhalten, wenn Anwendungen ausfallen.

Um Elastic Beanstalk-Anwendungen zu überwachen, müssen Sie die erweiterte Zustandsberichterstattung aktivieren und sie so konfigurieren, dass Metriken an CloudWatch gesendet werden. Sie können dann Alarme erstellen, um Sie zu benachrichtigen, wenn die Metriken nicht den vordefinierten Schwellenwerten entsprechen.

Verwalten von CloudWatch Alarmen

Es gibt CloudWatch Alarme für die wichtigsten Metriken und jeden Service. Diese können im Vorfeld nach bewährten Verfahren konfiguriert werden und helfen Ihnen bei der Behebung von Problemen, wenn diese auftreten.

Wenn Sie Ihre Alarme effektiv verwalten, werden Sie auf kritische Probleme aufmerksam gemacht und können geeignete Maßnahmen ergreifen, um den Zustand und die Leistung Ihrer AWS-Ressourcen und -Anwendungen zu erhalten.

CloudWatch-Alarms
Quelle: aws.amazon.de

#1. Einrichten von Alarmen für eine Metrik

Um Alarme einzurichten, wählen Sie zunächst die Metrik aus, die Sie überwachen möchten. Dann erstellen Sie einen Alarm auf der Grundlage dieser Metrik, indem Sie einen Schwellenwert und einen Vergleichsoperator angeben.

Sie können beispielsweise einen Alarm erstellen, der ausgelöst wird, wenn die CPU-Auslastung für mehr als 5 Minuten 80% überschreitet. Sobald Sie einen Alarm erstellt haben, konfigurieren Sie die Aktionen, die bei Auslösung des Alarms durchgeführt werden sollen. Zum Beispiel das Senden einer E-Mail an eine bestimmte Liste von Empfängern, das Senden einer SMS-Benachrichtigung oder sogar das Hochfahren Ihrer Systemressourcen.

#2. Konfigurieren von Alarm-Aktionen

Bei der Konfiguration von Alarmaktionen können Sie aus einer Vielzahl von Optionen wählen, darunter das Senden von Benachrichtigungen an ein SNS-Thema, das Auslösen einer AWS Lambda-Funktion (die wiederum in Ihrem Python-Skript alles tun kann, was Sie von der Funktion erwarten), das Anhalten oder Beenden einer EC2-Instanz.

Sie können auch mehrere Aktionen für jeden Alarm konfigurieren und so je nach Schweregrad des Alarms unterschiedliche Maßnahmen ergreifen. So können Sie z.B. bei einem geringfügigen Alarm eine E-Mail-Benachrichtigung versenden und bei einem kritischen Alarm die Instanz beenden.

#3. Best Practices für Alarme

Es ist immer gut, sich an bewährte Verfahren zu halten, um sicherzustellen, dass Alarme effektiv und zuverlässig sind. Einige bewährte Praktiken umfassen:

  • Das Festlegen geeigneter Schwellenwerte auf der Grundlage historischer Daten,
  • die parallele Verwendung mehrerer Metriken, um Probleme zu erkennen,
  • testen Sie Ihre Alarme regelmäßig, um sicherzustellen, dass sie korrekt funktionieren.

Vermeiden Sie es, zu viele Alarme zu erstellen, da dies zu einer Ermüdung der Alarme führen kann, das Überwachungssystem unübersichtlich macht und es schwierig macht, wirklich kritische Probleme zu erkennen.

Wenn Sie Probleme mit CloudWatch-Alarmen haben, können Sie mehrere Schritte zur Fehlerbehebung unternehmen:

  • Überprüfen Sie den Alarmverlauf, um festzustellen, ob zum Zeitpunkt der Auslösung des Alarms irgendwelche Aktionen durchgeführt wurden.
  • Überprüfen Sie die Metrikdaten, um festzustellen, ob es Anomalien oder Spitzen gibt, die den Alarm ausgelöst haben könnten.
  • Wenn die Probleme weiterhin bestehen, können Sie versuchen, den Alarmschwellenwert anzupassen oder zusätzliche Metriken zum Alarm hinzuzufügen, um die Genauigkeit zu verbessern.

Analysieren und Visualisieren von Metriken mit CloudWatch Dashboards

CloudWatch-Dashboard
Quelle: docs.aws.amazon.com

Die Analyse und Visualisierung von Metriken über Dashboards gibt Ihnen lesbare Einblicke in den Zustand und die Leistung Ihrer AWS-Ressourcen und Anwendungen. CloudWatch Dashboards bieten eine anpassbare Ansicht Ihrer Metriken.

Sie können dort verschiedene Diagramme, Grafiken und andere Visualisierungen platzieren, die die Trends im Laufe der Zeit aufzeigen und auf eventuelle Probleme des Systems hinweisen. Das ultimative Ziel ist es, von den Daten der Protokolldateien zu abstrahieren und die wichtigen Informationen in einem viel besser lesbaren und benutzerfreundlichen Format für jeden bereitzustellen, der den Systemzustand überprüfen und überwachen möchte.

Um ein CloudWatch-Dashboard zu erstellen, können Sie die CloudWatch-Konsole oder die CloudWatch-API verwenden. Fügen Sie dem Dashboard dann einfach Widgets hinzu, die die Metriken anzeigen, die Sie auf dem Dashboard sichtbar haben möchten. Sie können auch Text und Bilder hinzufügen, um Kontext oder zusätzliche Informationen zu liefern.

Sobald Sie ein Dashboard erstellt haben, können Sie es an Ihre speziellen Bedürfnisse anpassen. Sie können die Größe und Anordnung der Widgets ändern, den Zeitbereich der angezeigten Daten ändern und Anmerkungen hinzufügen, um wichtige Ereignisse oder Änderungen hervorzuheben. Sie können Ihr Dashboard auch für andere Benutzer freigeben, so dass diese dieselben Metriken und Visualisierungen sehen können.

Und schließlich können Sie dasselbe Dashboard problemlos in verschiedenen AWS-Konten und -Umgebungen bereitstellen.

Sammeln und Analysieren von Protokollen

Die Analyse der Protokolle erfolgt in der Regel mit der Funktion Logs Insights von CloudWatch.

Sobald Sie die Protokolldaten in CloudWatch Logs gesammelt haben, können Sie mit Logs Insights arbeiten. CloudWatch Logs Insights ermöglicht Ihnen die Abfrage und Visualisierung von Protokolldaten mithilfe einer einfachen, aber leistungsstarken Abfragesprache. Sie ist der SQL Selects-Sprache sehr ähnlich, wenn auch nicht ganz dasselbe. Die Ergebnisse sind jedoch sehr ähnlich.

Sie können Insights verwenden, um nach bestimmten Protokollereignissen zu suchen, Protokolldaten nach bestimmten Kriterien zu filtern und Visualisierungen wie Diagramme und Tabellen zu erstellen. Damit erhalten Sie einen weiteren wertvollen Einblick in das Verhalten Ihrer Anwendungen und Ihrer Infrastruktur, den Sie zur Fehlerbehebung, Leistungsoptimierung oder Verbesserung der Sicherheit nutzen können.

Lesen Sie auch: Wie Sie AWS Logs Insights nutzen, um Dashboard-Metriken aus AWS Services Logs abzufragen

Automatisieren von Aufgaben mit CloudWatch Events

Wenn Sie über genügend Protokolldaten in CloudWatch verfügen, können Sie diese nutzen, um Aktionen auf der Grundlage von Ereignissen auszulösen, die in Ihren AWS-Ressourcen und Anwendungen auftreten. Mit CloudWatch Events können Sie Aufgaben planen und automatisieren, z.B. das Starten oder Stoppen von EC2-Instanzen, wenn die Auslastung der Instanz den normalen Nutzungsbereich verlässt (z.B. das Stoppen der Instanz während der Nacht und das erneute Starten während des Arbeitstages).

Um Aufgaben mit CloudWatch Events zu automatisieren, erstellen Sie eine Regel, die das zu übereinstimmende Ereignismuster und die Aktion, die beim Auftreten des Ereignisses ausgeführt werden soll, festlegt. Sie können dies über die CloudWatch-Konsole oder die CloudWatch Events API tun. Konfigurieren Sie dann ein oder mehrere Ziele für die Regel, wie z.B. eine AWS Lambda-Funktion, ein SNS-Thema oder eine EC2-Instanz.

CloudWatch Events unterstützt eine breite Palette von Ereignisquellen, wie AWS-Services, benutzerdefinierte Anwendungen und Services von Drittanbietern. Verwenden Sie also CloudWatch Events, um Aufgaben zu automatisieren, wenn Sie Ressourcen skalieren, Backups auslösen oder auf Sicherheitsvorfälle reagieren müssen.

Durch die Automatisierung von Aufgaben reduzieren Sie manuelle Eingriffe in Ihr System und stellen sicher, dass Ihre AWS-Ressourcen und -Anwendungen immer optimal laufen.

Erweiterte CloudWatch-Funktionen

Es gibt mehrere erweiterte CloudWatch-Funktionen, die Sie einrichten können, um tiefere Einblicke in Ihre AWS-Ressourcen zu erhalten. Eine davon ist der bereits erwähnte Einblick in die Protokolle. Hier sind einige der anderen wichtigen erweiterten Funktionen:

  • CloudWatch Contributor Insights kann die Hauptverantwortlichen für die Auslastung Ihrer Ressourcen identifizieren (z.B. EC2-Instanzen oder Lambda-Funktionen). Mit Contributor Insights können Sie die ressourcenintensivsten Operationen identifizieren und die Ressourcen entsprechend optimieren.
  • CloudWatch Anomaly Detection verwendet Algorithmen des maschinellen Lernens, um automatisch anomales Verhalten in Ihren Metriken zu erkennen. Verwenden Sie Anomaly Detection, um ungewöhnliche Spitzen oder Einbrüche in Ihren Metriken zu erkennen und Maßnahmen zu ergreifen, um diese zu beheben.
  • CloudWatch Synthetics erstellt Canaries, die das Benutzerverhalten simulieren, und kann die Verfügbarkeit und Leistung Ihrer Anwendungen testen. Verwenden Sie Synthetics, um proaktiv Probleme zu erforschen und zu erkennen, bevor es Ihre Geschäftsanwender tun.
  • CloudWatch Logs Insights Query Acceleration beschleunigt Ihre Protokollabfragen um das bis zu 10-fache. Mit Query Acceleration können Sie große Mengen von Protokolldaten schnell und effizient analysieren.

Integration von CloudWatch mit AWS-Diensten

CloudWatch-Integration
Quelle: aws.amazon.com

Wenn Sie ein AWS-System aufbauen, steht die Clodwatch-Integration immer ganz oben auf Ihrer Liste. Nur mit dieser tiefen Integration können Sie Metriken und Protokolle über alle Ihre Dienste oder Systemkomponenten hinweg sammeln und überwachen. Außerdem ist es einfach einzurichten und zu verwenden, und die Integration ist nativ für die meisten AWS-Services. Es gibt also wirklich nur wenige Ausreden, diesen Vorteil nicht für Ihr AWS-Cloud-System zu nutzen.

Sie erhalten einen umfassenden Überblick über Ihre AWS-Ressourcen und -Anwendungen und die Möglichkeit, deren Zustand, Leistung und Verfügbarkeit zu überwachen. Nachdem Sie alle Informationen gesammelt haben, nutzen Sie einfach die bereits vorhandenen Daten, um Alarme einzurichten und Aufgaben auf der Grundlage von Ereignissen in Ihrer AWS-Umgebung zu automatisieren.

Abschließende Worte

AWS CloudWatch ist ein umfassender Cloud-Service, der alle Anforderungen an Protokollierung, Überwachung und Visualisierung des Systemstatus für Ihr Projekt abdeckt.

Wenn Sie solche Komponenten in Ihre Architektur einbeziehen, können Sie Ihre Systeme proaktiv verwalten und deren Zuverlässigkeit sicherstellen. Ich würde sagen, dass Sie dies nicht erst für spätere Phasen priorisieren sollten, sondern bereits in Sprint 1 mit dem Aufbau eines robusten Überwachungssystems beginnen sollten. Sie werden es später zu schätzen wissen.

Als nächstes sollten Sie sich die besten AWS-Überwachungstools ansehen.