Wie bestimme ich die Drosselung in meinen CloudWatch-Protokollen?
Ich erhalte die Fehlermeldung „RequestLimitExceeded“ oder „ThrottlingException“, wenn ich mit Amazon-CloudWatch-Protokollen arbeite, und mein API-Aufruf wird gedrosselt.
Kurzbeschreibung
Wenn Sie mit CloudWatch-Protokollen arbeiten, überschreiten Sie möglicherweise das API-Ratenlimit. In diesem Fall erhalten Sie einen RequestLimitExceeded- oder ThrottlingException-Fehler und Ihr API-Aufruf wird gedrosselt. Sie müssen ermitteln, wo und wann die Drosselung stattfindet, damit Sie diese Fehler beheben und sachkundige Anträge auf Erhöhung der Ratenbegrenzung stellen können.
Auflösung
Zeitweilige Drosselung von CloudWatch-Protokollen beim Zugriff auf Protokolle
Sie können die API-Aufrufe filterLogEvents oder getLogEvents verwenden, um Ihre Protokollereignisse oder Protokollstreams aufzulisten. Diese API-Aufrufe haben ein festes Limit und kommen nicht für eine Limiterhöhung in Frage. Das heißt, wenn Sie die FilterLogEvents-API verwenden, um nach Protokollereignissen aus einer bestimmten Protokollgruppe zu suchen, hat die Standard-QuaAPI ein Standardkontingent. Dieses Angebot umfasst 5 Transaktionen pro Sekunde (TPS) pro Konto oder AWS-Region. Wenn Sie dieses Limit erreichen, erhalten Sie den RateExceeded-Fehler.
Verwenden Sie diese bewährten Methoden, um Drosselungsfehler in diesem Anwendungsfall zu vermeiden:
- Verwenden Sie einen Abonnementfilter, um sofort Protokolldaten aus CloudWatch-Protokollen in Echtzeit abzurufen. Weitere Informationen finden Sie unter Verwenden von CloudWatch-Logs-Abonnementfiltern und Echtzeitverarbeitung von Protokolldaten mit Abonnements.
- Verwenden Sie CloudWatch Logs Insights, um schnell Protokolldaten aus CloudWatch-Protokollen abzurufen. Verwenden Sie Abfragen, um Ihre Protokolle zu filtern, um bestimmte Protokollgruppen anzuzeigen.
- Exportieren Sie Protokolldaten an Amazon Simple Storage Service (Amazon S3) für Batch-Anwendungsfälle.
Hinweis: Es kann bis zu 12 Stunden dauern, bis Protokolldaten für den Export aus CloudWatch Logs verfügbar sind. Daher ist es keine bewährte Methode, diese Methode für die Analyse und Verarbeitung in Echtzeit zu verwenden.
ThrottlingException-Fehler bei der Verwendung einer Anwendung/eines Skripts zum Abrufen von CloudWatch-Protokolldaten
Um CloudWatch-Protokolle zu sammeln, können Sie ein Collector-Skript entwickeln. Dieses Skript versucht, mit einem DescribeLogStream- oder GetLogEvents-API-Aufruf Daten aus verschiedenen Protokollstreams oder verschiedenen Zeitrahmen in derselben Protokollgruppe abzurufen. API-Aufrufe wie FilterLogEvents, GetLogEvents und DescribeLogStreams sind für die menschliche Interaktion und nicht für die Automatisierung konzipiert. Das bedeutet, dass Sie eine Fehlermeldung erhalten und der API-Aufruf gedrosselt wird.
Verwenden Sie diese bewährten Methoden, um eine Drosselung in diesem Anwendungsfall zu vermeiden:
- Verwenden Sie ein exponentielles Backoff und Wiederholungen, wenn Sie einen API-Aufruf tätigen. Weitere Informationen finden Sie unter Exponentielles Backoff und Jitter sowie Fehlerwiederholungen und exponentielles Backoff in AWS.
- Verteilen Sie Ihre API-Aufrufe im Zeitverlauf. Planen Sie Aktionen mit einer gewissen Randomisierung, sodass sie über einen bestimmten Zeitraum verteilt werden.
- Fügen Sie Ruheintervalle zwischen aufeinanderfolgenden API-Aufrufen hinzu. Fügen Sie eine gewisse Verzögerung zwischen API-Aufrufen hinzu, die von demselben Skript oder derselben Anwendung gesendet werden. Wenn Sie API-Aufrufe schnell hintereinander senden, ist es wahrscheinlicher, dass dies zu Ratenfehlern führt.
- In einigen Fällen können Sie eine SIEM-Lösung wie Splunk verwenden, um Protokolle von CloudWatch abzurufen. SIEM-Lösungen werden verwendet, um Daten aus mehreren Systemen zu sammeln und diese Daten zu analysieren, um ungewöhnliches Verhalten zu erkennen. Wenn Sie das Splunk-Plug-In verwenden, kann es zu einer API-Drosselung kommen. Um dieses Problem zu vermeiden, erstellen Sie mit Amazon Kinesis Data Firehose einen Abonnementfilter für CloudWatch-Protokolle und liefern Sie die Protokolldaten an Splunk. Weitere Informationen finden Sie in der Splunk-Dokumentation unter Konfigurieren von Kinesis-Eingaben für das Splunk-Add-on für AWS.
Drosselungsfehler bei der Integration von PutLogEvents-API-Aufrufen mit der Lambda-Funktion
Der PutLogEvents-API-Aufruf wird verwendet, um Protokolle in Batches von 1 MB in einen bestimmten Protokollstream hochzuladen. Diese API hat ein Ratenlimit von 800 TPS pro Konto und Region. Dies gilt mit Ausnahme der folgenden Regionen, in denen das Kontingent 1 500 TPS pro Konto und Region beträgt: USA Ost (Nord-Virginia), USA West (Oregon) und Europa (Irland). Sie können eine Kontingenterhöhung beantragen.
Weitere Informationen dazu und um eine Kontingenterhöhung zu beantragen, finden Sie unter CloudWatch-Logs-Kontingente.
Verwalten von Ihren CloudWatch-Logs-Servicekontingenten
AWS definiert Kontingente für Services, um die Leistung zu schützen und die Verfügbarkeit zu gewährleisten. CloudWatch verfügt über Kontingente für Metriken, Alarme, API-Anfragen und Alarm-E-Mail-Benachrichtigungen. Gehen Sie wie folgt vor, um Ihre Servicekontingente zu visualisieren und Alarme festzulegen, wenn Sie den Schwellenwert erreichen:
1. Öffnen Sie die Service-Quotas-Konsole.
2. Wählen Sie im Navigationsbereich AWS-Services.
3. Suchen Sie in der Liste von AWS-Services nach Amazon CloudWatch Logs.
4. Die Liste der Servicekontingente zeigt Ihnen verschiedene Attribute oder Optionen: Den Namen des Servicekontingents, den angewendeten Wert (falls verfügbar), das AWS-Standardkontingent und ob der Kontingentwert anpassbar ist.
5. Um weitere Informationen zu einem Servicekontingent anzuzeigen, z. B. die Beschreibung, wählen Sie den Kontingentnamen aus.
6. Nachdem Sie den Kontingentnamen ausgewählt haben, können Sie weitere Informationen zu diesem Kontingent sehen. Wenn Sie beispielsweise das Drossellimit für Transaktionen pro Sekunde von GetLogEvents wählen, werden die folgenden Elemente angezeigt:
Beschreibung
Kontingent-Code
Kontingent-ARN
Nutzung: %
Angewendeter Kontingentwert
AWS-Standardkontingentwert
Einstellbar: J/N
7. Wählen Sie im Abschnitt Amazon-CloudWatch-Alarme die Option Create alarm (Alarm erstellen) aus und geben Sie einen Alarm threshold (Alarmschwellenwert) und einen Alarm name (Alarmnamen) ein.
Relevante Informationen
Relevanter Inhalt
- AWS OFFICIALAktualisiert vor einem Jahr
- AWS OFFICIALAktualisiert vor 2 Jahren
- AWS OFFICIALAktualisiert vor 2 Jahren
- AWS OFFICIALAktualisiert vor einem Jahr