View a markdown version of this page

Unterabfragen - CloudWatch Amazon-Protokolle

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Unterabfragen

Eine Unterabfrage ist eine verschachtelte Logs Insights-Abfrage, die als Eingabe für eine andere Abfrage verwendet werden kann. Unterabfragen können verwendet werden, um Zwischenergebnismengen abzuleiten, die dann von nachfolgenden Befehlen verarbeitet werden.

Syntax

Unterabfrage im Filter

filter <field> in ( <subquery> )
Parameters

  • <subquery>— Eine gültige Logs Insights-Abfrage, die eine Ergebnismenge zurückgibt. Die Unterabfrage muss Felder erzeugen, auf die von der äußeren Abfrage verwiesen wird.

Beispiele

Beispiel Beispiel 1: Suchen Sie nach Anfragen, bei denen in nachgelagerten Diensten Fehler aufgetreten sind

Dieses Beispiel zeigt, wie Sie mithilfe einer Unterabfrage Anfragen in Ihrem Hauptdienst identifizieren, die zu Fehlern in einem Downstream-Service geführt haben. Dies ist nützlich, um kaskadierende Fehler in verteilten Systemen zu beheben.

filter requestId in ( SOURCE '/aws/lambda/database-service' | filter errorType = "DatabaseConnectionTimeout" | fields requestId ) | fields @timestamp, requestId, endpoint, userId, responseTime | sort @timestamp desc

Diese Abfrage:

  1. Die Unterabfrage findet alle requestId Werte aus dem Datenbankdienst, bei dem Verbindungstimeouts aufgetreten sind

  2. Die äußere Abfrage filtert die Protokolle Ihres Hauptdienstes, um nur Anfragen anzuzeigen, die diesen fehleranfälligen Anforderungs-IDs entsprechen

  3. Die Ergebnisse zeigen den vollständigen Kontext der Anfragen, die im Downstream fehlgeschlagen sind, einschließlich der betroffenen Endpunkte und Benutzer

Dieses Muster hilft Ihnen, die Upstream-Auswirkungen von Downstream-Ausfällen zu verstehen.

Beispiel Beispiel 2: Identifizieren Sie häufig fehlgeschlagene Anfragen für gezielte Untersuchungen

Dieses Beispiel zeigt die Verwendung einer Unterabfrage mit Aggregation, um Anfragen zu finden, die wiederholt fehlschlagen. Dies deutet oft eher auf systematische Probleme als auf vorübergehende Fehler hin.

filter requestId in ( SOURCE '/aws/lambda/payment-processor' | filter status = "FAILED" | stats count(*) as failureCount by requestId | filter failureCount > 3 | fields requestId ) | fields @timestamp, requestId, customerId, amount, failureReason | sort @timestamp asc

Diese Abfrage:

  1. Die Unterabfrage fasst fehlgeschlagene Zahlungsversuche zusammen und identifiziert Anforderungs-IDs, die mehr als dreimal fehlgeschlagen sind

  2. Die äußere Abfrage ruft alle Protokollereignisse für diese problematischen Anforderungs-IDs ab

  3. Die Ergebnisse sind chronologisch sortiert, um den Verlauf der Wiederholungsversuche anzuzeigen

Dies hilft bei der Unterscheidung zwischen vorübergehenden Fehlern (einmaliges Auftreten) und anhaltenden Problemen (mehrere Ausfälle), die eine eingehendere Untersuchung erfordern.

Behavior

  • Unterabfragen werden unabhängig von der äußeren Abfrage ausgeführt.

  • Die Ergebnisse werden materialisiert, bevor sie von der äußeren Abfrage verarbeitet werden.

  • Nur Felder, die in der Unterabfrage explizit ausgewählt wurden, sind für die äußere Abfrage verfügbar.

Hinweise und Einschränkungen

  • Unterabfragen müssen Felder zurückgeben, auf die von der äußeren Abfrage verwiesen wird.

  • Verschachtelte Unterabfragen werden nicht unterstützt.

  • Unterabfragen können die Ausführungszeit und die Kosten der Abfrage erhöhen.

  • Korrelierte Unterabfragen werden nicht unterstützt.

  • Die Ausführung innerer Abfragen ist auf 30 Sekunden begrenzt.

Zugehörige Befehle