Wie behebe ich Drosselungsfehler in meinen CloudWatch-Protokollen?
Ich erhalte die Fehlermeldung „RequestLimitExceeded“ oder „ThrottlingException“, wenn ich mit Amazon CloudWatch-Protokollen arbeite und mein API-Aufruf gedrosselt wird.
Kurzbeschreibung
Wenn du mit CloudWatch-Protokollen arbeitest, überschreitest du möglicherweise das API-Ratenkontingent. In diesem Fall wird der API-Aufruf gedrosselt und du erhältst den Fehler RequestLimitExceeded oder ThrottlingException. Identifiziere, wo und wann Drosselungsfehler auftreten, um diese Fehler zu beheben. Stelle dann fundierte Anforderungen zur Erhöhung des Kontingents.
Lösung
Zeitweilige Drosselungsfehler in CloudWatch Logs, wenn du auf Protokolle zugreifst
Verwende die API-Aufrufe FilterLogEvents oder GetLogEvents, um deine Protokollereignisse oder Protokollstreams aufzulisten. Diese API-Aufrufe kommen nicht für eine Kontingenterhöhung in Frage. Wenn du jedoch die FilterLogEvents-API verwendest, um nach Protokollereignissen aus einer bestimmten Protokollgruppe zu suchen, gibt es ein Kontingent. Das Kontingent beträgt fünf Transaktionen pro Sekunde (TPS) pro AWS-Konto oder AWS-Region. Wenn du dieses Kontingent erreichst, erhältst du den Fehler RateExceeded.
Um diese Drosselungsfehler zu vermeiden, verwende einen Abonnementfilter, um Protokolldaten sofort in Echtzeit aus CloudWatch-Protokollen abzurufen. Weitere Informationen findest du unter Abonnementfilter auf Protokollgruppenebene und Echtzeitverarbeitung von Protokolldaten mit Abonnements.
Es ist auch eine bewährte Methode, CloudWatch Logs Insights zu verwenden, um schnell Protokolldaten aus CloudWatch-Protokollen abzurufen. Um bestimmte Protokollgruppen anzuzeigen, verwende Abfragen zum Filtern der Protokolle. Stelle sicher, dass du Protokolldaten für Stapel-Anwendungsfälle nach Amazon Simple Storage Service (Amazon S3) exportierst.
Hinweis: Die Verarbeitung von Protokolldaten kann bis zu 12 Stunden dauern, bevor du die Daten aus CloudWatch Logs exportieren kannst. Es ist keine bewährte Methode, dieses Verfahren für die Analyse und Verarbeitung in Echtzeit zu verwenden.
ThrottlingException-Fehler, wenn du ein Skript zum Abrufen von CloudWatch-Protokolldaten verwendest
Du kannst ein Sammler-Skript entwickeln, um CloudWatch-Logs zu sammeln. Um Daten aus verschiedenen Protokollstreams oder verschiedenen Zeitrahmen in derselben Protokollgruppe abzurufen, erstelle das Skript, das den API-Aufruf DescribeLogStreams oder GetLogEvents durchführt. API-Aufrufe wie FilterLogEvents, GetLogEvents und DescribeLogStreams sind jedoch für die menschliche Interaktion und nicht für die Automatisierung konzipiert. Wenn du diese APIs in deinem Skript verwendest, wird der API-Aufruf gedrosselt und du erhältst eine Fehlermeldung.
Um Drosselungsfehler in diesem Anwendungsfall zu vermeiden, verwende exponentielles Backoff und Wiederholungsversuche, wenn du einen API-Aufruf tätigst. Weitere Informationen findest du unter Exponentielles Backoff und Jitter und Verhalten bei Wiederholungen. Stelle sicher, dass du API-Aufrufe im Laufe der Zeit verteilst. Plane Aktionen mit Randomisierung so, dass sie über einen bestimmten Zeitraum verteilt werden.
Du kannst Ratenfehler verursachen, wenn du API-Aufrufe in schneller Folge sendest. Füge Ruheintervalle zwischen aufeinanderfolgenden API-Aufrufen hinzu, um dieses Problem zu vermeiden. Füge außerdem eine Verzögerung zwischen API-Aufrufen hinzu, die dasselbe Skript oder dieselbe Anwendung sendet.
Wenn du eine SIEM-Lösung (Security Information and Event Management) wie Splunk verwendest, um Protokolle von CloudWatch abzurufen, kann das Splunk-Plugin Fehler bei der API-Drosselung verursachen. Erstelle einen Abonnementfilter für CloudWatch Logs mit Amazon Data Firehose, um dieses Problem zu vermeiden. Übermittle dann die Protokolldaten an Splunk. Weitere Informationen findest du unter Introduction to the Splunk Add-on for Amazon Web Services (Einführung in das Splunk-Add-On für Amazon Web Services) auf der Splunk-Website.
Drosselungsfehler, wenn du PutLogEvents-API-Aufrufe in eine Lambda-Funktion integrierst
Wenn du PutLogEvents-API-Aufrufe in die AWS Lambda-Funktion integrierst, lädt PutLogEvents Protokolle in Stapeln von 1 MB in einen angegebenen Protokollstream hoch. Diese API hat ein Ratenkontingent von 5000 Transaktionen pro Sekunde, pro Konto, pro Region.
Weitere Informationen als auch das Verfahren zur Anforderung einer Kontingenterhöhung findest du unter CloudWatch Logs-Kontingente.
CloudWatch Logs-Service Quotas verwalten
AWS definiert Kontingente für Services, um die Leistung zu schützen und die Verfügbarkeit sicherzustellen. CloudWatch hat Kontingente für Metriken, Alarme, API-Anfragen und Alarm-E-Mail-Benachrichtigungen. Gehe wie folgt vor, um Service Quotas einzusehen und Alarme einzustellen, wenn du den Schwellenwert erreichst:
- Öffne die Service Quotas-Konsole.
- Wähle im Navigationsbereich AWS-Services aus.
- Suche in der Liste der AWS-Services nach Amazon CloudWatch-Protokollen.
- Die Liste der Service Quotas zeigt dir mehrere Attribute oder Optionen an: den Namen des Service-Kontingents, den angewendeten Wert (falls verfügbar), das AWS-Standardkontingent und ob der Kontingentwert anpassbar ist.
- Um weitere Informationen zu einem Service-Kontingent anzuzeigen, wähle den Kontingentnamen. Wenn du beispielsweise GetLogEvents-Drosselungsgrenzwert für Transaktionen pro Sekunde wählst, werden die folgenden Elemente angezeigt:
Beschreibung
Kontingentcode
Kontingent-ARN
Auslastung: %
Angewandter Kontingentwert
AWS-Standardkontingentwert
Einstellbar: J/N - Wähle im Abschnitt Amazon CloudWatch-Alarme die Option Alarm erstellen aus und gib einen Alarmschwellenwert und einen Alarmnamen ein.
Ähnliche Informationen
Wie vermeide ich Drosselung, wenn ich PutMetricData in der CloudWatch-API aufrufe?
Relevanter Inhalt
- AWS OFFICIALAktualisiert vor einem Monat
- AWS OFFICIALAktualisiert vor 23 Tagen
- AWS OFFICIALAktualisiert vor 2 Jahren
- AWS OFFICIALAktualisiert vor 22 Tagen