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:
-
Die Unterabfrage findet alle
requestIdWerte aus dem Datenbankdienst, bei dem Verbindungstimeouts aufgetreten sind -
Die äußere Abfrage filtert die Protokolle Ihres Hauptdienstes, um nur Anfragen anzuzeigen, die diesen fehleranfälligen Anforderungs-IDs entsprechen
-
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:
-
Die Unterabfrage fasst fehlgeschlagene Zahlungsversuche zusammen und identifiziert Anforderungs-IDs, die mehr als dreimal fehlgeschlagen sind
-
Die äußere Abfrage ruft alle Protokollereignisse für diese problematischen Anforderungs-IDs ab
-
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.