Sergey Nivens - Fotolia

CloudWatch: so holen Sie das meiste aus Ihren AWS-Logs

AWS CloudWatch sind ein wichtiges Tool zum Überwachen von Public-Cloud-Umgebungen. Wir erklären, wie Sie die strengen Beschränkungen für das verarbeitbare Datenvolumen umgehen.

CloudWatch Logs ist ein unverzichtbares Tool zum Umsetzen von Monitoring Best Practices in AWS. Der Dienst bietet Speicher-, Analyse- und Verarbeitungsfunktionen für Protokolle aus verschiedenen Quellen, einschließlich lokaler Server und EC2-Instanzen.

Obwohl es sich um einen nützlichen und skalierbaren Service handelt, haben CloudWatch Logs ihre Macken. Amazon schränkt die Nutzung des Dienstes ein, beispielsweise beim Einspeisen von Protokolldateien, der Gleichzeitigkeit, Zeitüberschreitungen und dem Parsen von Feldern. Sie sollten diese Limits kennen, bevor Sie CloudWatch Logs verwenden, und überlegen, ob und wie Sie Workarounds umsetzen.

Einschränkungen bei Dateigrößen

Um Protokolldaten in CloudWatch Logs zu exportieren, rufen Anwendungen die PutLogEvents API auf, die ein Array von Protokollereignissen als Batch in einen Protokoll-Stream hochlädt. Die Größe des Batches basiert auf der Anzahl und Größe der eingereichten Log-Ereignisse. Jedes Protokollereignis kann maximal 256 KB groß sein, und die Gesamtgröße des Stapels darf maximal 1 MB betragen. Da sich diese Grenzen nicht erhöhen lassen, sollten Sie die Größe genau überwachen, wenn Sie Protokollereignisse in einen Protokoll-Stream senden.

Der CloudWatch Logs-Agent ist das Standard-Tool für den Export von Protokollen. Der Agent überspringt Protokollereignisse, die eine Größe von 256 KB überschreiten. Er passt außerdem automatisch die Länge jedes Stapels an, um die Beschränkung von 1 MB einzuhalten.

Für umfangreichere Anwendungen oder Aufgaben, die den Export einer großen Datenmenge in CloudWatch Logs erfordern, hat die PutLogEvents API ein Limit von fünf Anfragen pro Sekunde pro Log Stream. Diese Grenze – die ebenfalls nicht erhöht werden kann – reicht für die meisten Aufgaben aus, doch es gibt Situationen, in denen ein Log-Exportjob diese Grenze ausreizt. Erstellen Sie in diesen Fällen mehrere Protokollströme und nehmen Sie die Daten gleichzeitig auf, um den Durchsatz zu erhöhen. Auf diese Weise umgehen Sie das Limit und erreichen eine schnellere Verarbeitung.

Zeit- und Abfragengrenzen in CloudWatch Logs Insights

CloudWatch Logs Insights ist ein nützliches Tool für die Fehlersuche und das Extrahieren von Betriebsdaten. Es ermöglicht Entwicklern, Protokolldaten mit einer vordefinierten Abfragesprache zu analysieren und zu aggregieren. Dabei müssen Sie aber beachten, dass CloudWatch Logs Insights für Abfragen ein Zeitlimit von 15 Minuten haben.

Um dies zu umgehen, schränken Sie den Zeitstempelbereich ein. Dadurch verkleinern Sie das zu analysierende Zeitfenster. Alternativ teilen Sie die Daten in mehrere Protokollströme auf, so dass die Abfragen kleinere Datenmengen abdecken und unterhalb der Zeitbeschränkung bearbeitet werden. Führen Sie dann die Ergebnisse aus mehreren Abfrageausführungen zusammen, um den gewünschten Datenbereich abzudecken.

CloudWatch Logs Insights erlaubt die gleichzeitige Abfrage mehrerer Protokollgruppen. Obwohl dies eine nützliche Funktion zur Analyse von Protokolldaten ist, können Entwickler auf maximal 20 Protokollgruppen in einer einzigen Abfrage zugreifen.

Wenn eine Anwendung mehr als 20 Protokollgruppen abfragen muss, sollten Sie die Abfragen aufteilen und dann die Daten aus mehreren Abfragen aggregieren. CloudWatch Logs Insights unterstützt maximal zehn Abfragen gleichzeitig.

Behalten Sie die Servicequoten im Überblick

Die in diesem Artikel erwähnten CloudWatch Logs-Quoten gehören zum Veröffentlichungszeitpunkt zu den wichtigsten für Cloud-Administratoren. Die vollständige und aktuelle Liste der Servicequoten finden Sie in der AWS-Dokumentation. Schlagen Sie diese nach, bevor Sie die Tipps aus dieser Anleitung umsetzen, damit Sie beim Aufbau und Betrieb skalierbarer Cloud-Anwendungen nicht feststellen müssen, dass veränderte Obergrenzen Sie blockieren.

Beschränkungen für Filter

Metrikfilter sind eine Funktion von CloudWatch Logs, mit der Entwickler Text in Protokolldaten analysieren und Muster in CloudWatch-Metriken umwandeln. Dies ist ein bequemer Weg, um Anwendungsereignisse zu überwachen und Aktionen wie Benachrichtigungen, Warnungen oder benutzerdefinierte Logik zu automatisieren. Es gibt ein Limit von 100 metrischen Filtern pro Protokollgruppe. Sie sollten ausreichen, um eine breite Palette von Filtern für Protokollereignisse zu implementieren. Ansonsten teilen Sie am besten Ihre Daten in mehrere Protokollgruppen auf, um eine höhere Anzahl von Filtern zu konfigurieren.

Abonnementfilter ermöglichen das Einspeisen eingehender Protokolldaten in andere AWS-Services, wie Lambda, Kinesis Firehose oder Kinesis Data Streams. Es gibt eine feste Quote, die jede Protokollgruppe auf maximal zwei Abonnementfilter begrenzt. Wenn Sie mehr benötigen, nutzen Sie Kinesis Streams oder Lambda-Funktionen für weitere AWS-Services, die über die Quote in CloudWatch hinausgehen. Dadurch exportieren Sie Protokolldaten in eine beliebige Anzahl von AWS-Services.

API-Drosselung

AWS drosselt außerdem CloudWatch Logs APIs, einschließlich der folgenden:

  • CreateLogGroup
  • CreateLogStream
  • DeleteLogGroup
  • DescribeLogGroups
  • DescribeLogStreams
  • FilterLogEvents
  • GetLogEvents
  • GetLogEvents
  • PutLogEvents

Jede API hat ihr eigenes Limit in Bezug auf die Anzahl der Anfragen pro Sekunde, das je nach Region variiert.

Erfahren Sie mehr über Cloud Computing