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 verwendet 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 Fehler in nachgelagerten Diensten aufgetreten sind

Dieses Beispiel zeigt, wie Sie mithilfe einer Unterabfrage Anfragen in Ihrem Hauptdienst identifizieren, die zu Fehlern in einem nachgelagerten Dienst geführt haben. Dies ist nützlich für die Behebung kaskadierender Fehler in verteilten Systemen.

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 es zu Verbindungs-Timeouts kam

  2. Die äußere Abfrage filtert die Protokolle Ihres Hauptdienstes, sodass nur Anfragen angezeigt werden, die diesen fehleranfälligen Anfragen entsprechen IDs

  3. Die Ergebnisse zeigen den vollständigen Kontext der Anfragen, die auf nachgelagerter Ebene fehlgeschlagen sind, einschließlich der betroffenen Endgeräte und Benutzer

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

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

Dieses Beispiel zeigt, wie eine Unterabfrage mit Aggregation verwendet wird, um Anfragen zu finden, die wiederholt fehlschlagen, was häufig eher auf systematische Probleme als auf vorübergehende Fehler hindeutet.

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 aggregiert fehlgeschlagene Zahlungsversuche und identifiziert Anfragen IDs , die mehr als dreimal fehlgeschlagen sind

  2. Die äußere Abfrage ruft alle Protokollereignisse für diese problematische Anfrage ab IDs

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

Dies hilft bei der Unterscheidung zwischen vorübergehenden Ausfällen (einmaliges Auftreten) und anhaltenden Problemen (mehrere Ausfälle), die eingehendere Untersuchungen 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 explizit in der Unterabfrage ausgewählt wurden, sind für die äußere Abfrage verfügbar.

Hinweise und Einschränkungen

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

  • Verschachtelte Unterabfragen werden nicht unterstützt.

  • Unterabfragen können die Ausführungszeit und die Kosten für die Ausführung von Abfragen erhöhen.

  • Korrelierte Unterabfragen werden nicht unterstützt.

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

Zugehörige Befehle