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.
OpenSearch SQL-Sprache
Dieser Abschnitt enthält eine grundlegende Einführung in das Abfragen von CloudWatch Logs mit OpenSearch SQL. Es bietet eine vertraute Option, wenn Sie es gewohnt sind, mit relationalen Datenbanken zu arbeiten. OpenSearch SQL bietet einen Teil der SQL-Funktionalität und ist daher eine gute Wahl für Ad-hoc-Abfragen und Datenanalyseaufgaben. Mit OpenSearch SQL können Sie Befehle wie SELECT, FROM, WHERE, GROUP BY, HAVING und verschiedene andere SQL-Befehle und -Funktionen verwenden. Sie können JOINs loggruppenübergreifend ausführen, Daten mithilfe von Unterabfragen zwischen Protokollgruppen korrelieren und die umfangreiche Palette von JSON-, mathematischen, Zeichenketten-, bedingten und anderen SQL-Funktionen verwenden, um leistungsstarke Analysen von Protokoll- und Sicherheitsdaten durchzuführen.
Sie können OpenSearch SQL nur für Abfragen von Protokollgruppen in der Standard-Protokollklasse verwenden. Wenn Sie auswählen, welche Protokollgruppen abgefragt werden sollen, können Sie eine einzelne Protokollgruppe, eine Gruppe von Protokollgruppen mit einem gemeinsamen Präfix oder alle Protokollgruppen auswählen
Anmerkung
In der folgenden Tabelle sind die in CloudWatch Logs unterstützten SQL-Befehle und -Funktionen aufgeführt. Informationen zu allen OpenSearch SQL-Befehlen einschließlich Syntax finden Sie unter Unterstützte SQL-Befehle im OpenSearch Service Developer Guide.
Unterstützte SQL-Befehle
Anmerkung
Ersetzen Sie in der Beispielabfragespalte nach
Bedarf, je nachdem, welche Datenquelle Sie abfragen. <logGroup>
Befehl oder Funktion | Beispielabfrage | Beschreibung |
---|---|---|
SELECT |
|
Zeigt projizierte Werte an. |
FROM |
|
Integrierte Klausel, die die Quelltabelle (n) oder Ansicht (en) angibt, aus denen Daten abgerufen werden sollen, und unterstützt verschiedene Arten von Verknüpfungen und Unterabfragen. |
WHERE |
|
Filtert Protokollereignisse auf der Grundlage der angegebenen Feldkriterien. |
GROUP BY |
|
Gruppiert Ereignisse nach Kategorien und ermittelt anhand von Statistiken den Durchschnitt. |
HAVING |
|
Filtert die Ergebnisse anhand der Gruppierungsbedingungen. |
ORDER BY |
|
Sortiert die Ergebnisse auf der Grundlage der Felder in der ORDER BY-Klausel. Sie können entweder in absteigender oder aufsteigender Reihenfolge sortieren. |
JOIN |
|
Verbindet die Ergebnisse für zwei Tabellen auf der Grundlage gemeinsamer Felder. Inner JOIN oder Left Outer Join müssen angegeben werden |
LIMIT |
|
Beschränkt die angezeigten Abfrageergebnisse auf die ersten N Zeilen. |
Zeichenfolgenfunktionen |
|
Integrierte Funktionen in SQL, mit denen Zeichenketten- und Textdaten in SQL-Abfragen bearbeitet und transformiert werden können. Zum Beispiel das Konvertieren von Groß- und Kleinschreibung, das Kombinieren von Zeichenketten, das Extrahieren von Teilen und das Bereinigen von Text. |
Datumsfunktionen |
|
Integrierte Funktionen für die Verarbeitung und Transformation von Datums- und Zeitstempeldaten in SQL-Abfragen. Zum Beispiel date_add, date_format, datediff und current_date. |
Konditionale Funktionen |
|
Integrierte Funktionen, die Aktionen auf der Grundlage bestimmter Bedingungen ausführen oder Ausdrücke bedingt auswerten. Zum Beispiel CASE und IF. |
Funktionen aggregieren |
|
Integrierte Funktionen, die Berechnungen für mehrere Zeilen durchführen, um einen einzigen zusammengefassten Wert zu erzeugen. Zum Beispiel SUM, COUNT, AVG, MAX und MIN. |
JSON-Funktionen |
|
Integrierte Funktionen zum Parsen, Extrahieren, Ändern und Abfragen von Daten im JSON-Format innerhalb von SQL-Abfragen (z. B. from_json, to_json, get_json_object, json_tuple), die die Manipulation von JSON-Strukturen in Datensätzen ermöglichen. |
Array-Funktionen |
|
Integrierte Funktionen für die Arbeit mit Spalten vom Typ Array in SQL-Abfragen, die Operationen wie den Zugriff auf, die Änderung und die Analyse von Array-Daten (z. B. size, explode, array_contains) ermöglichen. |
Fensterfunktionen |
|
Integrierte Funktionen, die Berechnungen für eine bestimmte Gruppe von Zeilen durchführen, die sich auf die aktuelle Zeile (Fenster) beziehen, wodurch Operationen wie Rangfolge, laufende Summen und gleitende Durchschnitte ermöglicht werden. Zum Beispiel ROW_NUMBER, RANK, LAG und LEAD |
Konvertierungs-Funktionen |
|
Integrierte Funktionen zum Konvertieren von Daten von einem Typ in einen anderen innerhalb von SQL-Abfragen, wodurch Datentyptransformationen und Formatkonvertierungen ermöglicht werden. Zum Beispiel CAST, TO_DATE, TO_TIMESTAMP und BINARY. |
Prädikatsfunktionen |
|
Integrierte Funktionen, die Bedingungen auswerten und boolesche Werte (true/false) auf der Grundlage bestimmter Kriterien oder Muster zurückgeben. Zum Beispiel IN, LIKE, BETWEEN, IS NULL und EXISTS. |
Wählen Sie mehrere Protokollgruppen aus |
|
Ermöglicht es Ihnen, mehrere Protokollgruppen in einer SELECT-Anweisung anzugeben |
Unterstütztes SQL für multi-log-group Abfragen
Um den Anwendungsfall für die Abfrage mehrerer Protokollgruppen in SQL zu unterstützen, können Sie den logGroups
Befehl verwenden. Mit dieser Syntax können Sie mehrere Protokollgruppen abfragen, indem Sie sie im Befehl FROM angeben.
Syntax:
`logGroups( logGroupIdentifier: ['LogGroup1','LogGroup2', ...'LogGroupn'] )
In dieser Syntax können Sie bis zu 50 Protokollgruppen im logGroupIdentifier
Parameter angeben. Wenn Sie in einem Monitoring-Konto auf Protokollgruppen verweisen möchten, verwenden Sie ARNs anstelle von LogGroup
Namen.
Beispielabfrage:
SELECT LG1.Column1, LG1.Column2 from `logGroups( logGroupIdentifier: ['LogGroup1', 'LogGroup2'] )` as LG1 WHERE LG1.Column1 = 'ABC'
Die folgende Syntax mit mehreren Protokollgruppen nach der FROM
Anweisung wird bei der Abfrage von CloudWatch Logs NICHT unterstützt.
SELECT Column1, Column2 FROM 'LogGroup1', 'LogGroup2', ...'LogGroupn' WHERE Column1 = 'ABC'
Einschränkungen
Die folgenden Einschränkungen gelten, wenn Sie OpenSearch SQL für Abfragen in CloudWatch Logs Insights verwenden.
-
Sie können nur einen JOIN in eine SELECT-Anweisung aufnehmen.
-
Es wird nur eine Ebene verschachtelter Unterabfragen unterstützt.
-
Abfragen mit mehreren Anweisungen, die durch Semikolons (;) getrennt sind, werden nicht unterstützt.
-
Abfragen mit Feldnamen, die identisch sind, sich aber nur in der Groß- und Kleinschreibung unterscheiden (wie Feld1 und FIELD1), werden nicht unterstützt.
Die folgende Abfrage wird beispielsweise nicht unterstützt:
Select AWSAccountId, AwsAccountId from LogGroup
Die folgende Abfrage wird jedoch unterstützt, da der Feldname (
@logStream
) in beiden Protokollgruppen identisch ist:Select a.`@logStream`, b.`@logStream` from Table A INNER Join Table B on a.id = b.id
-
Funktionen und Ausdrücke müssen mit Feldnamen arbeiten und Teil einer SELECT-Anweisung mit einer in der FROM-Klausel angegebenen Protokollgruppe sein.
Diese Abfrage wird beispielsweise nicht unterstützt:
SELECT cos(10) FROM LogGroup
Diese Abfrage wird unterstützt:
SELECT cos(field1) FROM LogGroup
-
Wenn Sie SQL- oder PPL-Befehle verwenden, schließen Sie bestimmte Felder in Backticks ein, um sie erfolgreich abzufragen. Backticks sind für Felder mit Sonderzeichen (nicht alphabetisch und nicht numerisch) erforderlich. Schließen Sie beispielsweise, und in Backticks
@message
einOperation.Export
.Test::Field
Sie müssen Felder mit rein alphabetischen Namen nicht in Backticks einschließen.Beispielabfrage mit einfachen Feldern:
SELECT SessionToken, Operation, StartTime FROM `LogGroup-A` LIMIT 1000;
Ähnliche Abfrage mit angehängten Backticks:
SELECT `@SessionToken`, `@Operation`, `@StartTime` FROM `LogGroup-A` LIMIT 1000;