Leistungsstarkes Monitoring von Cloud-Anwendungen mit Amazon CloudWatch
Amazon CloudWatch
Amazon CloudWatch ist ein Service zum Überwachen und Beobachten von AWS-Ressourcen in Echtzeit. Cloud Anwendungen, die auf AWS-Services wie Amazon Elastic Compute Cloud (EC2) und AWS Lambda basieren, generieren automatisch eine Vielzahl von Daten wie Metriken, Protokolle oder Ereignisse. Zusätzlich können auch benutzerdefinierte Metriken von eigenen Anwendungen und Services veröffentlicht werden.
All diese Daten werden mit Amazon CloudWatch auf einer zentralen Plattform erfasst. Hier können die erfassten Metriken und Ereignisse genutzt werden, um u. a.:
- gesammelte Daten zu visualisieren und einen Einblick auf Leistung und Auslastung von AWS-Ressourcen zu bieten
- Alarme zu definieren, welche bei bestimmten Ereignissen Aktionen ausführen
- Protokolle zu erstellen, um z. B. das Finden und Beheben von Fehlerquellen zu erleichtern
- auf Ereignisse zu reagieren, um einen höheren Grad der Automatisierung zu erreichen
Die Abbildung zeigt einen groben Überblick über die Funktionsweise und Anwendungsfälle von Amazon CloudWatch.
Dashboards
Dashboards dienen der Visualisierung von Metriken von AWS-Ressourcen und benutzerdefinierten Metriken. Die Dashboards werden dabei dynamisch aktualisiert, um die aktuellsten Leistungsmetriken abzubilden. Der abgebildete Zeitraum kann dabei von einer Minute bis hin zu 15 Monaten reichen.
Über die Weboberfläche von Amazon CloudWatch können automatische Dashboards erstellt werden, welche die beobachteten Metriken in Form von Graphen visualisieren. Zum Beispiel generiert ein automatisches Dashboard von AWS Lambda für die Metriken Invocations (Aufrufe), Duration (Laufzeit), Errors (Fehler) und Throttles (Drosselungen) jeweils ein Liniendiagramm und bildet alle Lambda Funktionen darauf ab.
Neben den automatisch generierten Dashboards können auch vollständig benutzerdefinierte Dashboards erstellt werden. Dadurch sind nur die Daten auf einen Blick direkt erkennbar, welche für einen relevant sind.
Dieses Beispiel zeigt ein einfaches benutzerdefiniertes Dashboard für einige Metriken eines Zustandsautomaten (AWS Step Functions). Auf der linken Seite sind die Metriken ExecutionsFailed und ExecutionsSucceeded in Form eines Kuchendiagramms abgebildet, während auf der rechten Seite die Metrik ExecutionTime in Form eines Liniendiagramms zu sehen ist.
Alarme und Aktionen
Eine weitere Funktion von Amazon CloudWatch sind Alarme. Ein CloudWatch-Alarm kann eine oder mehrere automatisierte Aktionen ausführen, wenn eine ausgewählte Metrik einen festgelegten Schwellenwert erreicht oder über-/ unterschreitet.
Ein Beispiel für den Einsatz eines Alarms ist der Service Amazon API Gateway. API Gateway liefert verschiedene Metriken über die eigenen APIs, wie etwa Latenzen oder die Anzahl von Antworten mit 4xx- oder 5xx-HTTP-Statuscodes. Für diese Metriken kann nun ein Alarm erstellt werden, indem eine Metrik gewählt und eine Bedingung für das Auslösen der Alarms definiert wird. Für die Metrik der gesendeten Antworten mit 5xx-HTTP-Statuscodes kann zum Beispiel die Bedingung gewählt werden, dass die Anzahl solcher Antworten in den letzten 5 Minuten einen Schwellenwert von 20 erreicht oder überschritten hat. Darauf können Aktionen konfiguriert werden, welche von dem Alarm ausgeführt werden. Eine Aktion könnte das Versenden einer Email-Benachrichtigung an eine gegebene Email-Adresse sein.
Amazon CloudWatch-Alarme können auch benutzt werden, um die Nutzung von AWS-Ressourcen zu optimieren und somit Betriebskosten einzusparen. Instanzen von Amazon EC2 liefern verschiedene Metriken, unter anderem auch die CPU-Auslastung (CPUUtilization). Ein Alarm für die CPU-Auslastung könnte z. B. auslösen, wenn die Auslastung unter einen Schwellenwert von 30% fällt. Als Aktion kann Auto Scaling ausgewählt werden, um die gering ausgelastete EC2-Instanz aus einer Servergruppe zu entfernen. Genauso kann auch ein Alarm definiert werden für den Fall, dass eine EC2-Instanz mit ihrer CPU-Auslastung einen Schwellenwert überschreitet. Über Auto Scaling könnte dann eine weitere Instanz hinzugefügt werden, um die Auslastung besser zu verteilen.
Logs
Amazon CloudWatch Logs ist ein weiterer Bereich von Amazon CloudWatch und dient zur Speicherung und Überwachung von Protokollen, welche aus verschiedenen Quellen wie Amazon EC2, AWS Lambda und Amazon Elastic Container Service (ECS) stammen. Die verschiedenen Protokolle befinden sich in sogenannten Log Groups und sind nach einem Zeitstempel sortiert, was die Suche nach bestimmten Protokollen sehr erleichtert.
Einige weitere Eigenschaften von Amazon CloudWatch Logs sind:
- die Echtzeit-Überwachung von Anwendungen und Systemen: Protokolle können fast in Echtzeit auf bestimmte Ausdrücke überwacht werden. Dies ermöglicht z. B. das Auslösen eines Alarms, wenn die Anzahl der in den Protokollen gefundenen Fehler einen bestimmten Schwellenwert überschreiten
- die Aufbewahrung von Protokollen: Standardmäßig werden Protokolle auf unbestimmte Zeit aufbewahrt. Für Log Groups kann aber auch individuell festgelegt werden, nach welchem Zeitraum die Protokolle automatisch gelöscht werden
Zusätzlich können über CloudWatch Logs Insights, was eine vollständig in Amazon CloudWatch integrierte Funktion ist, Datenabfragen über die Protokolle durchgeführt werden. Für CloudWatch Logs Insights wird eine spezielle Abfragesprache verwendet, welche einige einfache, aber leistungsstarke Abfragebefehle bietet. Die Abfragen sind dabei unter anderem Aggregationen, Filter, reguläre Ausdrücke und Textsuchen. Zudem können anhand von Trends und Mustern, welche im Laufe der Zeit in den Protokollen auftreten, Visualisierungen generiert werden. Diese Visualisierungen können ebenfalls in Dashboards platziert werden.
Events
Eine weitere Funktion zur Automatisierung von Prozessen stellt Amazon CloudWatch Events zur Verfügung. Hierbei handelt es sich um einen Ereignisstrom, mit dem sich fast in Echtzeit Änderungen in AWS-Ressourcen beschreiben lassen. Es können einfache deklarative Regeln (Rules) definiert werden, mit denen Ereignisse (Events) abgeglichen und eine oder mehrere Aktionen ausgeführt werden.
Eine Regel hat eine Ereignisquelle. Diese kann ein Ereignismuster sein, wie z. B. die Änderung des Ausführungsstatus eines Zustandsautomaten, oder durch einen Zeitplan ausgelöst werden. Trifft ein passendes Ereignis ein, werden die zur Regel gehörenden Aktionen ausgeführt. Dazu zählen u. a. die Ausführung einer Lamdba-Funktion, das Starten oder Stoppen von EC2-Instanzen sowie das Senden von Push-Benachrichtigungen über Amazon Simple Notification Service (SNS).
Fazit
Amazon CloudWatch bietet als AWS-Service eine umfangreiche und zentrale Plattform für das Monitoring von AWS-Ressourcen und benutzerdefinierten Anwendungsdaten. Dank automatisch generierter Daten aus anderen AWS-Services und der Möglichkeit, eigene Metriken zu veröffentlichen, ist ein Einblick über Leistung und Auslastung der entwickelten Anwendungen schnell und einfach möglich.
Durch einen hohen Grad der Automatisierung kann die Leistungsfähigkeit und Ressourcennutzung Ihrer Anwendungen gesteuert und optimiert werden. Zudem lassen sich aus einsehbaren Protokollen Erkenntnisse gewinnen, mit denen z. B. Fehlerquellen schneller ausfindig gemacht und behoben werden können.
Wie überwachen Sie genutzte Ressourcen und Anwendungen und welche Softwarelösungen nutzen Sie dafür?