Filtermustersyntax für Metrikfilter, Abonnementfilter, Filterprotokollereignisse und Live Tail - 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.

Filtermustersyntax für Metrikfilter, Abonnementfilter, Filterprotokollereignisse und Live Tail

Anmerkung

Informationen darüber, wie Sie Ihre Protokollgruppen mit der Abfragesprache von Amazon CloudWatch Logs Insights abfragen, finden Sie unterCloudWatch Syntax der Logs Insights-Abfrage.

Mit CloudWatch Logs können Sie Metrikfilter verwenden, um Protokolldaten in aussagekräftige Metriken umzuwandeln, Abonnementfilter, um Protokollereignisse an andere AWS Dienste weiterzuleiten, Protokollereignisse filtern, um nach Protokollereignissen zu suchen, und Live Tail, um Ihre Protokolle interaktiv in Echtzeit anzuzeigen, während sie aufgenommen werden.

Filtermuster bilden die Syntax, die Metrikfilter, Abonnementfilter, Filterprotokollereignisse und Live Tail verwenden, um Begriffe in Protokollereignissen zu finden. Begriffe können Wörter, exakte Phrasen oder numerische Werte sein. Reguläre Ausdrücke (Regex) können verwendet werden, um eigenständige Filtermuster zu erstellen, oder sie können in JSON- und durch Leerzeichen getrennte Filtermuster integriert werden.

Erstellen Sie Filtermuster mit den Begriffen, die Sie abgleichen möchten. Filtermuster geben nur die Protokollereignisse zurück, die die von Ihnen definierten Begriffe enthalten. Sie können Filtermuster in der Konsole testen. CloudWatch

Unterstützte Syntax für reguläre Ausdrücke (Regex)

Wenn Sie Regex zum Suchen und Filtern von Protokolldaten verwenden, müssen Sie Ihre Ausdrücke mit % umgeben.

Filtermuster mit Regex können nur Folgendes enthalten:

  • Alphanumerische Zeichen – Ein alphanumerisches Zeichen ist ein Zeichen, das entweder ein Buchstabe (von A bis Z oder A bis Z) oder eine Ziffer (von 0 bis 9) ist.

  • Unterstützte Symbolzeichen – Dazu gehören: '_', '#', '=', '@','/', ';', ',' und '-'. %something!% würde beispielsweise abgelehnt werden, da '!' nicht unterstützt wird.

  • Unterstützte Operatoren – Dazu gehören: '^', '$', '?', '[', ']', '{', '}', '|', '\', '*', '+' und '.'.

Die Operatoren ( und ) werden nicht unterstützt. Sie dürfen keine Klammern verwenden, um ein Untermuster zu definieren.

Multi-Byte-Zeichen werden nicht unterstützt.

Anmerkung

Kontingente

Bei der Erstellung von metrischen Filtern oder Abonnementfiltern können Sie für jede Protokollgruppe maximal 5 Filtermuster mit Regex verwenden.

Es gibt ein Limit von 2 Regex für jedes Filtermuster, wenn Sie ein abgegrenztes oder JSON-Filtermuster für metrische Filter und Abonnementfilter erstellen oder wenn Sie Protokollereignisse oder Live Tail filtern.

Verwendung unterstützter Operatoren

  • ^: Verankert die Übereinstimmung am Anfang einer Zeichenfolge. Beispielsweise stimmt %^[hc]at% mit „hat“ und „cat“ überein, aber nur am Anfang einer Zeichenfolge.

  • $: Verankert die Übereinstimmung am Ende einer Zeichenfolge. Beispielsweise stimmt %[hc]at$% mit „hat“ und „cat“ überein, aber nur am Ende einer Zeichenfolge.

  • ?: Entspricht null oder mehr Instanzen des vorherigen Begriffs. So kann %colou?r% sowohl mit „color“ als auch „colour“ übereinstimmen.

  • []: Definiert eine Zeichenklasse. Gleicht die Zeichenliste oder den Zeichenbereich innerhalb der Klammern ab. Zum Beispiel stimmt %[abc]% mit „a“, „b“ oder „c“ überein; %[a-z]% stimmt mit jedem Kleinbuchstaben von „a“ bis „z“ überein; und %[abcx-z]% stimmt mit „a“, „b“, „c“, „x“, „y“ oder „z“ überein.

  • {m, n}: Gleicht den vorhergehenden Begriff mindestens mit m-mal ab, aber nicht öfter als n-mal. %a{3,5}% stimmt beispielsweise nur mit „aaa“, „aaaa“ und „aaaaa“ überein.

    Anmerkung

    Entweder m oder n können weggelassen werden, wenn Sie kein Minimum oder Maximum definieren möchten.

  • |: Boolesches „Oder“, das den Begriff auf beiden Seiten des senkrechten Balkens abgleicht. %gra|ey% stimmt beispielsweise mit „gray“ oder „grey“ überein.

    Anmerkung

    Ein Begriff besteht aus einem einzelnen Zeichen oder einer sich wiederholenden Zeichenklasse, die einen der folgenden Operatoren verwendet: ?, *, + oder {n,m}.

  • \: Escape-Zeichen, mit dem Sie die wörtliche Bedeutung eines Operators anstelle seiner speziellen Bedeutung verwenden können. Zum Beispiel stimmt %\[.\]% mit jedem einzelnen Zeichen überein, das von [ und ] umgeben ist, da die Klammern ausgestellt sind, wie [a], [b], [7], [@], []] und [ ].

    Anmerkung

    %10\.10\.0\.1% ist die richtige Methode, um eine Regex zu erstellen, die der IP-Adresse 10.10.0.1 entspricht.

  • *: Entspricht null oder mehr Instanzen des vorhergehenden Begriffs. So kann %ab*c% beispielsweise mit „ac“, „abc“ und „abbbc“ übereinstimmen; %ab[0-9]*% kann mit „ab“, „ab0“ und „ab129“ übereinstimmen.

  • +: Entspricht einer oder mehreren Instanzen des vorhergehenden Begriffs. %ab+c% kann beispielsweise mit „abc“, „abbc“ und „abbbc“ übereinstimmen, aber nicht mit „ac“.

  • .: Stimmt mit einem beliebigen Einzelzeichen überein. Zum Beispiel stimmt %.at% mit jeder Zeichenfolge mit drei Zeichen überein, die mit „at“ endet, einschließlich „hat“, „cat“, „bat“, „4at“, „#at“ und „ at“ (beginnend mit einem Leerzeichen).

    Anmerkung

    Wenn Sie eine Regex erstellen, die IP-Adressen abgleicht, ist es wichtig, den Operator . auszustellen. Beispielsweise kann %10.10.0.1% mit „10010,051“ übereinstimmen, was möglicherweise nicht der eigentliche Verwendungszweck des Ausdrucks ist.

  • \d, \D: Stimmt mit einer Ziffer bzw. einem Zeichen überein, das keine Ziffer ist. Beispielsweise stimmt %\d% mit %[0-9]% überein und %\D% mit %[^0-9]%.

    Anmerkung

    Der Operator in Großbuchstaben bezeichnet die Umkehrung seines Gegenstücks in Kleinbuchstaben.

  • \s, \S: Stimmt mit einem Leerraumzeichen/einem Nicht-Leerraumzeichen überein.

    Anmerkung

    Der Operator in Großbuchstaben bezeichnet die Umkehrung seines Gegenstücks in Kleinbuchstaben. Zu den Leerraumzeichen gehören Tabulatorzeichen (\t), Leerzeichen ( ) und Zeilenumbruch (\n).

  • \w, \W: Stimmt mit einem alphanumerischen Zeichen/einem nicht-alphanumerischen Zeichen überein. Beispielsweise stimmt %\w% mit %[a-zA-Z_0-9]% überein und %\W% mit %[^a-zA-Z_0-9]%.

    Anmerkung

    Der Operator in Großbuchstaben bezeichnet die Umkehrung seines Gegenstücks in Kleinbuchstaben.

  • \xhh: Stimmt mit der ASCII-Zuordnung für ein zweistelliges hexadezimales Zeichen überein. \x ist die Escape-Sequenz, die angibt, dass die folgenden Zeichen den hexadezimalen Wert für ASCII darstellen. hh gibt die beiden hexadezimalen Ziffern (0–9 und A–F) an, die auf ein Zeichen in der ASCII-Tabelle zeigen.

    Anmerkung

    Sie können \xhh verwenden, um nach Symbolzeichen zu suchen, die vom Filtermuster nicht unterstützt werden. Beispielsweise stimmt %\x3A% mit : überein und %\x28% mit (.

Verwenden von Filtermustern zum Abgleichen von Begriffen mit einem regulären Ausdruck (Regex)

Sie können Begriffe in Ihren Protokollereignissen mit einem Regex-Muster abgleichen, das von % (Prozentzeichen vor und nach dem Regex-Muster) umgeben ist. Der folgende Codeauszug zeigt ein Beispiel für ein Filtermuster, das alle Protokollereignisse mit dem Schlüsselwort AUTHORIZED zurückgibt.

Eine Liste der unterstützten regulären Ausdrücke finden Sie unter Unterstützte reguläre Ausdrücke.

%AUTHORIZED%

Dieses Filtermuster gibt Protokollereignismeldungen wie die folgenden zurück:

  • [ERROR 401] UNAUTHORIZED REQUEST

  • [SUCCESS 200] AUTHORIZED REQUEST

Verwenden von Filtermustern zum Abgleichen von Begriffen in unstrukturierten Protokollereignissen

Die folgenden Beispiele enthalten Codeauszüge, die zeigen, wie Sie Filtermuster verwenden können, um Begriffe in Ihren unstrukturierten Protokollereignissen abzugleichen.

Anmerkung

Filtermuster beachten die Groß-/Kleinschreibung. Schließen Sie exakte Phrasen und Begriffe, die nicht alphanumerische Zeichen enthalten, in doppelte Anführungszeichen ("") ein.

Example: Match a single term

Das folgende Code-Snippet zeigt ein Beispiel für ein begriffsspezifisches Filtermuster, das alle Protokollereignisse zurückgibt, deren Meldungen das Wort ERROR (FEHLER) enthalten.

ERROR

Das Filtermuster gleicht Protokollereignismeldungen ab, z. B. die folgende:

  • [ERROR 400] BAD REQUEST

  • [ERROR 401] UNAUTHORIZED REQUEST

  • [ERROR 419] MISSING ARGUMENTS

  • [ERROR 420] INVALID ARGUMENTS

Example: Match multiple terms

Das folgende Code-Snippet zeigt ein Beispiel für ein Filtermuster für mehrere Begriffe, das alle Protokollereignisse zurückgibt, deren Meldungen die Wörter ERROR (FEHLER) und ARGUMENTS (ARGUMENTE) enthalten.

ERROR ARGUMENTS

Der Filter gibt Protokollereignismeldungen zurück, wie z. B. die folgende:

  • [ERROR 419] MISSING ARGUMENTS

  • [ERROR 420] INVALID ARGUMENTS

Dieses Filtermuster gibt die folgenden Protokollereignismeldungen nicht zurück, da sie nicht beide im Filtermuster angegebenen Begriffe enthalten.

  • [ERROR 400] BAD REQUEST

  • [ERROR 401] UNAUTHORIZED REQUEST

Example: Match optional terms

Mithilfe des Musterabgleichs können Sie Filtermuster erstellen, die Protokollereignisse mit optionalen Begriffen zurückgeben. Setzen Sie ein Fragezeichen („?“) vor die Begriffe, die Sie abgleichen möchten. Das folgende Code-Snippet zeigt ein Beispiel für ein Filtermuster, das alle Protokollereignisse zurückgibt, deren Meldungen das Wort ERROR oder das Wort ARGUMENTS. enthalten.

?ERROR ?ARGUMENTS

Das Filtermuster gleicht Protokollereignismeldungen ab, z. B. die folgende:

  • [ERROR 400] BAD REQUEST

  • [ERROR 401] UNAUTHORIZED REQUEST

  • [ERROR 419] MISSING ARGUMENTS

  • [ERROR 420] INVALID ARGUMENTS

Anmerkung

Sie können das Fragezeichen („?“) nicht mit anderen Filtermustern wie dem Ein- und Ausschließen von Begriffen kombinieren. Wenn Sie „?“ mit anderen Filtermustern kombinieren, wird das Fragezeichen („?“) ignoriert.

Das folgende Filtermuster entspricht beispielsweise allen Ereignissen, die das Wort REQUEST enthalten, aber der Fragezeichenfilter („?“) wird ignoriert und hat keine Wirkung.

?ERROR ?ARGUMENTS REQUEST

Übereinstimmungen von Protokollereignissen

  • [INFO] REQUEST FAILED

  • [WARN] UNAUTHORIZED REQUEST

  • [ERROR] 400 BAD REQUEST

Example: Match exact phrases

Das folgende Code-Snippet zeigt ein Beispiel für ein Filtermuster, das Protokollereignisse zurückgibt, deren Meldungen genau den Ausdruck INTERNAL SERVER ERROR (INTERNER SERVERFEHLER) enthalten.

"INTERNAL SERVER ERROR"

Dieses Filtermuster gibt die folgende Ereignisprotokollmeldung zurück:

  • [ERROR 500] INTERNAL SERVER ERROR

Example: Include and exclude terms

Sie können Filtermuster erstellen, die Protokollereignisse zurückgeben, bei denen Meldungen bestimmte Begriffe enthalten und andere ausschließen. Setzen Sie ein Minuszeichen („-“) vor die Begriffe, die Sie ausschließen möchten. Das folgende Code-Snippet zeigt ein Beispiel für ein Filtermuster, das Protokollereignisse zurückgibt, deren Meldungen den Begriff ERROR (FEHLER) enthalten, nicht aber den Begriff ARGUMENTS (ARGUMENTE).

ERROR -ARGUMENTS

Dieses Filtermuster gibt Protokollereignismeldungen wie die folgenden zurück:

  • [ERROR 400] BAD REQUEST

  • [ERROR 401] UNAUTHORIZED REQUEST

Dieses Filtermuster gibt die folgenden Protokollereignismeldungen nicht zurück, da sie den Begriff ARGUMENTS (ARGUMENTE) enthalten.

  • [ERROR 419] MISSING ARGUMENTS

  • [ERROR 420] INVALID ARGUMENTS

Example: Match everything

Mit doppelten Anführungszeichen können Sie alles in Ihren Protokollereignissen finden. Das folgende Code-Snippet zeigt ein Beispiel für ein Filtermuster, das alle Protokollereignisse zurückgibt.

" "

Verwenden von Filtermustern zum Abgleichen von Begriffen in JSON-Protokollereignissen

Im Folgenden wird beschrieben, wie Sie die Syntax für Filtermuster schreiben, die mit JSON-Begriffen übereinstimmen, die Zeichenfolgen und numerische Werte enthalten.

Writing filter patterns that match strings

Sie können Filtermuster erstellen, um Zeichenfolgen in JSON-Protokollereignissen abzugleichen. Der folgende Codeauszug zeigt ein Syntaxbeispiel für zeichenfolgenbasierte Filtermuster.

{ PropertySelector EqualityOperator String }

Schließen Sie Filtermuster in geschweifte Klammern („{}“) ein. Zeichenfolgenbasierte Filtermuster müssen die folgenden Elemente enthalten:

  • Eigenschaftsselektor

    Kennzeichnen Sie Eigenschaftsselektoren mit einem Dollarzeichen gefolgt von einem Punkt („$.“). Eigenschaftsselektoren sind alphanumerische Zeichenfolgen, die Bindestriche („-“) und Unterstriche („_“) unterstützen. Zeichenketten unterstützen keine wissenschaftliche Notation. Eigenschaftsselektoren verweisen auf Werteknoten in JSON-Protokollereignissen. Werteknoten können Zeichenketten oder Zahlen sein. Platzieren Sie Arrays nach Eigenschaftsselektoren. Für die Elemente in Arrays wird ein nullbasiertes Nummerierungssystem verwendet. Somit ist das erste Element im Array das Element 0, das zweite Element ist das Element 1 und so weiter. Schließen Sie Elemente in Klammern ein („[]“). Wenn ein Eigenschaftsselektor auf ein Array oder Objekt verweist, stimmt das Filtermuster nicht mit dem Protokollformat überein. Wenn die JSON-Eigenschaft einen Punkt (".") enthält, kann die Klammernotation verwendet werden, um diese Eigenschaft auszuwählen.

    Anmerkung

    Platzhalter-Selektor

    Sie können den JSON-Platzhalter verwenden, um ein beliebiges Array-Element oder ein beliebiges JSON-Objektfeld auszuwählen.

    Kontingente

    Sie können in einem Eigenschaftenselektor nur bis zu einen Platzhalter-Selektor verwenden.

  • Equality operator (Gleichheitsoperator)

    Kennzeichnen Sie Gleichheitsoperatoren mit einem der folgenden Symbole: gleich („=“) oder ungleich („!=“). Gleichheitsoperatoren geben einen booleschen Wert zurück („true“ oder „false“).

  • Zeichenfolge

    Sie können Zeichenketten in doppelte Anführungszeichen („“) einschließen. Zeichenketten, die andere Typen als alphanumerische Zeichen und das Unterstrichsymbol enthalten, müssen in doppelte Anführungszeichen gesetzt werden. Verwenden Sie das Sternchen („*“) als Platzhalter, um Text abzugleichen.

    Anmerkung

    Sie können jeden bedingten regulären Ausdruck verwenden, wenn Sie Filtermuster erstellen, um Begriffe in JSON-Protokollereignissen abzugleichen. Eine Liste der unterstützten regulären Ausdrücke finden Sie unter Unterstützte reguläre Ausdrücke.

Der folgende Codeauszug enthält ein Beispiel für ein Filtermuster. Es zeigt, wie Sie ein Filtermuster so formatieren können, dass es einen JSON-Begriff mit einer Zeichenfolge abgleicht.

{ $.eventType = "UpdateTrail" }
Writing filter patterns that match numeric values

Sie können Filtermuster erstellen, um numerische Werte in JSON-Protokollereignissen abzugleichen. Der folgende Codeauszug zeigt ein Beispiel für die Syntax von Filtermustern, die numerische Werte abgleichen.

{ PropertySelector NumericOperator Number }

Schließen Sie Filtermuster in geschweifte Klammern („{}“) ein. Filtermuster, die numerische Werten abgleichen, müssen die folgenden Elemente enthalten:

  • Eigenschaftsselektor

    Kennzeichnen Sie Eigenschaftsselektoren mit einem Dollarzeichen gefolgt von einem Punkt („$.“). Eigenschaftsselektoren sind alphanumerische Zeichenfolgen, die Bindestriche („-“) und Unterstriche („_“) unterstützen. Zeichenketten unterstützen keine wissenschaftliche Notation. Eigenschaftsselektoren verweisen auf Werteknoten in JSON-Protokollereignissen. Werteknoten können Zeichenketten oder Zahlen sein. Platzieren Sie Arrays nach Eigenschaftsselektoren. Für die Elemente in Arrays wird ein nullbasiertes Nummerierungssystem verwendet. Somit ist das erste Element im Array das Element 0, das zweite Element ist das Element 1 und so weiter. Schließen Sie Elemente in Klammern ein („[]“). Wenn ein Eigenschaftsselektor auf ein Array oder Objekt verweist, stimmt das Filtermuster nicht mit dem Protokollformat überein. Wenn die JSON-Eigenschaft einen Punkt (".") enthält, kann die Klammernotation verwendet werden, um diese Eigenschaft auszuwählen.

    Anmerkung

    Platzhalter-Selektor

    Sie können den JSON-Platzhalter verwenden, um ein beliebiges Array-Element oder ein beliebiges JSON-Objektfeld auszuwählen.

    Kontingente

    Sie können in einem Eigenschaftenselektor nur bis zu einen Platzhalter-Selektor verwenden.

  • Numerischer Operator

    Kennzeichnen Sie numerische Operatoren mit einem der folgenden Symbole: größer als („>“), kleiner als („<“), gleich („=“), ungleich („!=“), größer als oder gleich („>=“) oder kleiner als oder gleich („<=“).

  • Zahl

    Sie können Ganzzahlen verwenden, die Plus- („+“) oder Minuszeichen („-“) enthalten und der wissenschaftlichen Notation folgen. Verwenden Sie das Sternchen („*“) als Platzhalter, um Zahlen abzugleichen.

Der folgende Codeauszug enthält Beispiele dafür, wie Sie Formatfiltermuster so formatieren können, dass sie JSON-Begriffe mit numerischen Werten abgleichen.

// Filter pattern with greater than symbol { $.bandwidth > 75 } // Filter pattern with less than symbol { $.latency < 50 } // Filter pattern with greater than or equal to symbol { $.refreshRate >= 60 } // Filter pattern with less than or equal to symbol { $.responseTime <= 5 } // Filter pattern with equal sign { $.errorCode = 400} // Filter pattern with not equal sign { $.errorCode != 500 } // Filter pattern with scientific notation and plus symbol { $.number[0] = 1e-3 } // Filter pattern with scientific notation and minus symbol { $.number[0] != 1e+3 }

Die folgenden Beispiele enthalten Codeauszüge, die zeigen, wie Filtermuster Begriffe in einem JSON-Protokollereignis abgleichen können.

Anmerkung

Wenn Sie die Beispielfiltermuster mit dem Beispiel-JSON-Protokollereignis testen, müssen Sie das Beispiel-JSON-Protokoll in einer einzigen Zeile eingeben.

JSON-Protokollereignis

{ "eventType": "UpdateTrail", "sourceIPAddress": "111.111.111.111", "arrayKey": [ "value", "another value" ], "objectList": [ { "name": "a", "id": 1 }, { "name": "b", "id": 2 } ], "SomeObject": null, "cluster.name": "c" }
Example: Filter pattern that matches string values

Dieses Filtermuster stimmt mit der Zeichenfolge "UpdateTrail" in der Eigenschaft "eventType" überein.

{ $.eventType = "UpdateTrail" }
Example: Filter pattern that matches string values (IP address)

Dieses Filtermuster enthält einen Platzhalter und stimmt mit der Eigenschaft "sourceIPAddress" überein, da sie keine Zahl mit dem Präfix "123.123." enthält.

{ $.sourceIPAddress != 123.123.* }
Example: Filter pattern that matches a specific array element with a string value

Dieses Filtermuster stimmt mit dem Element "value" im Array "arrayKey" überein.

{ $.arrayKey[0] = "value" }
Example: Filter pattern that matches a string using regex

Dieses Filtermuster stimmt mit der Zeichenfolge "Trail" in der Eigenschaft "eventType" überein.

{ $.eventType = %Trail% }
Example: Filter pattern that uses a wildcard to match values of any element in the array using regex

Das Filtermuster enthält Regex, der mit dem Element "value" im Array "arrayKey" übereinstimmt.

{ $.arrayKey[*] = %val.{2}% }
Example: Filter pattern that uses a wildcard to match values of any element with a specific prefix and subnet using regex (IP address)

Dieses Filtermuster enthält Regex, der mit dem Element "111.111.111.111" in der Eigenschaft "sourceIPAddress" übereinstimmt.

{ $.* = %111\.111\.111\.1[0-9]{1,2}% }
Anmerkung

Kontingente

Sie können in einem Eigenschaftenselektor nur bis zu einen Platzhalter-Selektor verwenden.

Example: Filter pattern that matches a JSON property with a period (.) in the key
{ $.['cluster.name'] = "c" }
Example: Filter pattern that matches JSON logs using IS

Sie können Filtermuster erstellen, die Felder in JSON-Protokollen mit der Variable IS abgleichen. Die Variable IS kann Felder abgleichen, die die Werte NULL, TRUE oder FALSE enthalten. Das folgende Filtermuster gibt JSON-Protokolle zurück, bei denen der Wert von SomeObject NULL ist.

{ $.SomeObject IS NULL }
Example: Filter pattern that matches JSON logs using NOT EXISTS

Sie können mit der NOT EXISTS Variablen Filtermuster erstellen, um JSON-Logs zurückzugeben, die keine bestimmten Felder in den Protokolldaten enthalten. Das folgende Filtermuster verwendet NOT EXISTS, um JSON-Protokolle zurückzugeben, die das Feld SomeOtherObject nicht enthalten.

{ $.SomeOtherObject NOT EXISTS }
Anmerkung

Die Variablen IS NOT und EXISTS werden derzeit nicht unterstützt.

Sie können die logischen Operatoren AND („&&“) und OR („||“) in Filtermustern verwenden, um zusammengesetzte Ausdrücke zu erstellen, die Protokollereignisse abgleichen, bei denen zwei oder mehr Bedingungen erfüllt sind. Zusammengesetzte Ausdrücke unterstützen die Verwendung von Klammern („()“) und die folgende Standardreihenfolge von Operationen: () > && > ||. Die folgenden Beispiele enthalten Codeauszüge, die zeigen, wie Sie Filtermuster mit zusammengesetzten Ausdrücken verwenden können, um Begriffe in einem JSON-Objekt abzugleichen.

JSON-Objekt

{ "user": { "id": 1, "email": "John.Stiles@example.com" }, "users": [ { "id": 2, "email": "John.Doe@example.com" }, { "id": 3, "email": "Jane.Doe@example.com" } ], "actions": [ "GET", "PUT", "DELETE" ], "coordinates": [ [0, 1, 2], [4, 5, 6], [7, 8, 9] ] }
Example: Expression that matches using AND (&&)

Das Filtermuster enthält einen zusammengesetzten Ausdruck, der "id" in "user" mit einem numerischen Wert von 1 und "email" im ersten Element des Arrays "users" mit der Zeichenfolge "John.Doe@example.com" abgleicht.

{ ($.user.id = 1) && ($.users[0].email = "John.Doe@example.com") }
Example: Expression that matches using OR (||)

Dieses Filtermuster enthält einen zusammengesetzten Ausdruck, der "email" in "user" mit der Zeichenfolge "John.Stiles@example.com" abgleicht.

{ $.user.email = "John.Stiles@example.com" || $.coordinates[0][1] = "nonmatch" && $.actions[2] = "nonmatch" }
Example: Expression that doesn't match using AND (&&)

Dieses Filtermuster enthält einen zusammengesetzten Ausdruck, der keine Übereinstimmung findet, weil der Ausdruck nicht mit der dritten Aktion in "actions" übereinstimmt.

{ ($.user.email = "John.Stiles@example.com" || $.coordinates[0][1] = "nonmatch") && $.actions[2] = "nonmatch" }
Anmerkung

Kontingente

Sie können in einer Eigenschaftenauswahl nur bis zu einen Platzhalter-Selektor und bis zu drei Platzhalter-Selektoren in einem Filtermuster mit zusammengesetzten Ausdrücken verwenden.

Example: Expression that doesn't match using OR (||)

Dieses Filtermuster enthält einen zusammengesetzten Ausdruck, der keine Übereinstimmung findet, weil der Ausdruck nicht mit der ersten Eigenschaft in "users" oder der dritten Aktion in "actions" übereinstimmt.

{ ($.user.id = 2 && $.users[0].email = "nonmatch") || $.actions[2] = "GET" }

Verwenden von Filtermustern, um Begriffe in Leerzeichen-getrennten Protokollereignissen abzugleichen

Sie können Filtermuster verwenden, um Begriffe in Leerzeichen-getrennten Protokollereignissen abzugleichen. Im Folgenden finden Sie ein Beispiel für ein durch Leerzeichen getrenntes Protokollereignis und es wird beschrieben, wie die Syntax für Filtermuster geschrieben wird, die Begriffe im Leerzeichen-getrennten Protokollereignis abgleichen.

Anmerkung

Sie können jeden bedingten regulären Ausdruck verwenden, wenn Sie Filtermuster erstellen, um Begriffe in Leerzeichen-getrennten Protokollereignissen abzugleichen. Eine Liste der unterstützten regulären Ausdrücke finden Sie unter Unterstützte reguläre Ausdrücke.

Example: Space-delimited log event

Das folgende Code-Snippet zeigt ein Leerzeichen-getrenntes Protokollereignis, das sieben Felder enthält: ip, user, username, timestamp, request, status_code und bytes.

127.0.0.1 Prod frank [10/Oct/2000:13:25:15 -0700] "GET /index.html HTTP/1.0" 404 1534
Anmerkung

Zeichen zwischen Klammern („[]“) und doppelten Anführungszeichen („“) gelten als einzelne Felder.

Writing filter patterns that match terms in a space-delimited log event

Um ein Filtermuster zu erstellen, das mit Begriffen in einem durch Leerzeichen getrennten Protokollereignis übereinstimmt, schließen Sie das Filtermuster in eckige Klammern („[]“) ein und geben Felder mit Namen an, die durch Kommas („,“) getrennt sind. Das folgende Filtermuster analysiert sieben Felder.

[ip=%127\.0\.0\.[1-9]%, user, username, timestamp, request =*.html*, status_code = 4*, bytes]

Sie können numerische Operatoren (>, <, =,! =, >>= oder < =) sowie das Sternchen (*) als Platzhalter oder Regex verwenden, um die Filtermusterbedingungen anzugeben. Im Beispielfiltermuster verwendet ip einen Regex, der auf den IP-Adressbereich 127.0.0.1–127.0.0.9 abgleicht, request enthält einen Platzhalter, der besagt, dass ein Wert mit .html extrahiert werden muss, und status_code enthält einen Platzhalter, der besagt, dass ein Wert mit 4 beginnen muss.

Wenn Sie die Anzahl der Felder, die Sie in einem Leerzeichen-getrennten Protokollereignis analysieren, nicht kennen, können Sie mit Ellipsen (...) auf jedes unbenannte Feld verweisen. Mit Ellipsen können Sie auf so viele Felder wie nötig verweisen. Das folgende Beispiel zeigt ein Filtermuster mit Ellipsen, die die ersten vier unbenannten Felder aus dem vorherigen Beispielfiltermuster darstellen.

[..., request =*.html*, status_code = 4*, bytes]

Sie können auch die logischen Operatoren AND (&&) und OR (||) verwenden, um zusammengesetzte Ausdrücke zu erstellen. Das folgende Filtermuster enthält einen zusammengesetzten Ausdruck, der besagt, dass der Wert von status_code entweder 404 oder 410 sein muss.

[ip, user, username, timestamp, request =*.html*, status_code = 404 || status_code = 410, bytes]

Sie können den Musterabgleich verwenden, um Leerzeichen-getrennte Filtermuster zu erstellen, die Begriffe in einer bestimmten Reihenfolge abgleichen. Geben Sie die Reihenfolge Ihrer Begriffe mit Indikatoren an. Verwenden Sie w1 für den ersten Begriff, w2 für den zweiten und so weiter, um die Reihenfolge der Begriffe abzubilden. Platzieren Sie Kommas („,“) zwischen Ihren Begriffen. Die folgenden Beispiele enthalten Codeauszüge, die zeigen, wie Sie den Musterabgleich mit Leerzeichen-getrennten Filtermustern verwenden können.

Anmerkung

Sie können jeden bedingten regulären Ausdruck verwenden, wenn Sie Filtermuster erstellen, um Begriffe in Leerzeichen-getrennten Protokollereignissen abzugleichen. Eine Liste der unterstützten regulären Ausdrücke finden Sie unter Unterstützte reguläre Ausdrücke.

Beispiel: Leerzeichen-getrenntes Protokollereignis

INFO 09/25/2014 12:00:00 GET /service/resource/67 1200 INFO 09/25/2014 12:00:01 POST /service/resource/67/part/111 1310 WARNING 09/25/2014 12:00:02 Invalid user request ERROR 09/25/2014 12:00:02 Failed to process request
Example: Match terms in order

Das folgende Leerzeichen-getrennte Filtermuster gibt Protokollereignisse zurück, bei denen das erste Wort in den Protokollereignissen ERROR (FEHLER) lautet.

[w1=ERROR, w2]
Anmerkung

Wenn Sie Leerzeichen-getrennte Filtermuster erstellen, die Musterabgleiche verwenden, müssen Sie nach der Angabe der Reihenfolge der Begriffe einen leeren Indikator einfügen. Wenn Sie beispielsweise ein Filtermuster erstellen, der Protokollereignisse zurückgibt, deren erstes Wort ERROR (FEHLER) lautet, fügen Sie einen leeren w2-Indikator nach dem w1-Begriff ein.

Example: Match terms with AND (&&) and OR (||)

Sie können die logischen Operatoren AND („&&“) und OR („||“) verwenden, um Leerzeichen-getrennte Filtermuster zu erstellen, die Bedingungen enthalten. Das folgende Filtermuster gibt Protokollereignisse zurück, bei denen der erste Begriff in den Ereignissen ERROR (FEHLER) oder WARNING (WARNUNG) lautet.

[w1=ERROR || w1=WARNING, w2]
Example: Exclude terms from matches

Sie können Leerzeichen-getrennte Filtermuster erstellen, die Protokollereignisse zurückgeben, die einen oder mehrere Begriffe ausschließen. Setzen Sie ein Ungleichheitszeichen („!=“) vor den Begriff oder die Begriffe, die Sie ausschließen möchten. Der folgende Codeauszug zeigt ein Beispiel für ein Filtermuster, das Protokollereignisse zurückgibt, deren erste Begriffe nicht ERROR (FEHLER) und WARNING (WARNUNG) lauten.

[w1!=ERROR && w1!=WARNING, w2]
Example: Match the top level item in a resource URI

Der folgende Codeauszug zeigt ein Beispiel für ein Filtermuster, das das Element der obersten Ebene in einer Ressourcen-URI mit Regex abgleicht.

[logLevel, date, time, method, url=%/service/resource/[0-9]+$%, response_time]
Example: Match the child level item in a resource URI

Der folgende Codeauszug zeigt ein Beispiel für ein Filtermuster, das das Element der untergeordneten Ebene in einer Ressourcen-URI mit Regex abgleicht.

[logLevel, date, time, method, url=%/service/resource/[0-9]+/part/[0-9]+$%, response_time]