Boolesche, Vergleichs-, numerische, Datetime- und andere Funktionen - 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.

Boolesche, Vergleichs-, numerische, Datetime- und andere Funktionen

CloudWatch Logs Insights unterstützt viele andere Operationen und Funktionen in Abfragen, wie in den folgenden Abschnitten erläutert.

Arithmetische Operatoren

Arithmetische Operationen akzeptieren numerische Datentypen als Argumente und liefern numerische Ergebnisse. Sie können arithmetische Operationen in den Befehlen filter und fields sowie als Argumente für andere Funktionen verwenden.

Operation Beschreibung

a + b

Addition

a - b

Subtraktion

a * b

Multiplikation

a / b

Division

a ^ b

Potenzierung. 2 ^ 3 gibt 8 zurück

a % b

Rest oder Modulus. 10 % 3 gibt 1 zurück

Boolesche Operatoren

Sie können die booleschen Operatoren and, or, und not verwenden.

Anmerkung

Verwenden Sie boolesche Operatoren nur in Funktionen, die den Wert vonWAHRoderFALSCHaus.

Vergleichsoperatoren

Vergleichsoperationen akzeptieren alle Datentypen als Argumente und liefern ein boolesches Ergebnis. Sie können Vergleichsoperationen im Befehl filter sowie als Argumente für andere Funktionen verwenden.

Operator Beschreibung

=

Gleich

!=

Ungleich

<

kleiner als

>

größer als

<=

kleiner als oder gleich

>=

größer als oder gleich

Numerische Operatoren

Numerische Operationen akzeptieren numerische Datentypen als Argumente und liefern numerische Ergebnisse. Sie können numerische Operationen in den Befehlen filter und fields sowie als Argumente für andere Funktionen verwenden.

Operation Ergebnistyp Beschreibung

abs(a: number)

Zahl

Absoluter Wert

ceil(a: number)

Zahl

Aufrunden (die kleinste ganze Zahl, die größer ist als der Wert von a).

floor(a: number)

Zahl

Abrunden (die größte ganze Zahl, die kleiner ist als der Wert von a).

greatest(a: number, ...numbers: number[])

Zahl

Liefert den größten Wert.

least(a: number, ...numbers: number[])

Zahl

Liefert den kleinsten Wert.

log(a: number)

Zahl

Natürlicher Logarithmus

sqrt(a: number)

Zahl

Quadratwurzel

Strukturtypen

Eine Karte oder Liste ist ein Strukturtyp in CloudWatch Logs Insights, mit dem Sie auf Attribute zugreifen und diese für Abfragen verwenden können.

Beispiel: Um eine Karte oder Liste abzurufen

Wird verwendetjsonParse, um ein Feld, das eine JSON-Zeichenfolge ist, in eine Map oder eine Liste zu parsen.

fields jsonParse(@message) as json_message
Beispiel: Um auf Attribute zuzugreifen

Verwenden Sie den Punktzugriffsoperator (map.attribute), um auf Elemente in einer Map zuzugreifen. Wenn ein Attribut in einer Map Sonderzeichen enthält, verwenden Sie Backticks, um den Attributnamen einzuschließen (map.attributes). `special.char`).

fields jsonParse(@message) as json_message | stats count() by json_message.status_code

Verwenden Sie den Klammer-Zugriffsoperator (list [index]), um ein Element an einer bestimmten Position in der Liste abzurufen.

fields jsonParse(@message) as json_message | filter json_message.users[1].action = "PutData"

Umbrechen Sie Sonderzeichen in Backticks (``), wenn Sonderzeichen im Schlüsselnamen enthalten sind.

fields jsonParse(@message) as json_message | filter json_message.`user.id` = "123"
Beispiel: leere Ergebnisse

Karten und Listen werden für Zeichenketten-, Zahlen- und Datetime-Funktionen als Null behandelt.

fields jsonParse(@message) as json_message | display toupper(json_message)

Der Vergleich von Karte und Liste mit allen anderen Feldern führt zufalse.

Anmerkung

Die Verwendung von Map und List in deduppattern,sort, und wird stats nicht unterstützt.

Datum-/Uhrzeit-Funktionen

Datum-/Uhrzeit-Funktionen

Sie können die Datums-/Uhrzeit-Funktionen in den Befehlen fields und filter sowie als Argumente für andere Funktionen verwenden. Mit diesen Funktionen können Sie Zeiträume für Abfragen mit Aggregationsfunktionen anlegen. Verwenden Sie Zeiträume, die aus einer Zahl und einem der folgenden Werte bestehen:

  • msfür Millisekunden

  • sfür Sekunden

  • mfür Minuten

  • hstundenlang

Zum Beispiel steht 10m für 10 Minuten und 1h ist 1 Stunde.

Anmerkung

Verwenden Sie die am besten geeignete Zeiteinheit für Ihre Datetime-Funktion. CloudWatch Logs begrenzt Ihre Anfrage auf die von Ihnen gewählte Zeiteinheit. Beispielsweise wird für jede Anfrage, die verwendet, eine Obergrenze von 60 als Maximalwert festgelegts. Wenn Sie also angebenbin(300s), implementiert CloudWatch Logs dies tatsächlich als 60 Sekunden, da 60 die Anzahl der Sekunden in einer Minute ist, sodass CloudWatch Logs keine höhere Zahl als 60 verwendets. Um einen 5-Minuten-Bucket zu erstellen, verwenden Sie bin(5m) stattdessen.

Die Obergrenze für ms ist 1000, die Obergrenzen für s und m sind 60 und die Obergrenze für h ist 24.

Die folgende Tabelle enthält eine Liste der verschiedenen Datetime-Funktionen, die Sie in Ihren Abfragebefehlen verwenden können. Die Tabelle listet den Ergebnistyp jeder Funktion auf und enthält zu jeder Funktion eine Beschreibung.

Tipp

Wenn Sie einen Abfragebefehl erstellen, können Sie mit der Zeitintervallauswahl einen Zeitraum für Ihre Abfrage festlegen. Sie können beispielsweise Intervalle von 5 bis 30 Minuten, Intervalle von 1, 3 und 12 Stunden oder einen benutzerdefinierten Zeitrahmen festlegen. Sie können auch Zeiträume zwischen bestimmten Daten festlegen.

Funktion Ergebnistyp Beschreibung

bin(period: Period)

Zeitstempel

Rundet den Wert von @timestamp auf den angegebenen Zeitraum und kürzt ihn dann. bin(5m) rundet beispielsweise den Wert von @timestamp auf die nächstgelegenen fünf Minuten.

So können mehrere Protokolleinträge in einer Abfrage gruppiert werden. Im folgenden Beispiel wird die Anzahl von Ausnahmen pro Stunde zurückgegeben:

filter @message like /Exception/ | stats count(*) as exceptionCount by bin(1h) | sort exceptionCount desc

Für die Funktion bin werden folgende Zeiteinheiten und Abkürzungen unterstützt. Alle Einheiten und Abkürzungen, die mehr als ein Zeichen enthalten, können durch Hinzufügen von „s“ pluralisiert werden. Somit kann sowohl hr als auch hrs verwendet werden, um Stunden anzugeben.

  • millisecond ms msec

  • second s sec

  • minute m min

  • hour h hr

  • day d

  • week w

  • month mo mon

  • quarter q qtr

  • year y yr

datefloor(timestamp: Timestamp, period: Period)

Zeitstempel

Kürzt den Zeitstempel auf den angegebenen Zeitraum. Zum Beispiel kürzt datefloor(@timestamp, 1h) alle Werte von @timestamp auf die letzte volle Stunde.

dateceil(timestamp: Timestamp, period: Period)

Zeitstempel

Rundet den Zeitstempel auf den angegebenen Zeitraum auf und kürzt ihn dann. Zum Beispiel kürzt dateceil(@timestamp, 1h) alle Werte von @timestamp auf die nächste volle Stunde.

fromMillis(fieldName: number)

Zeitstempel

Interpretiert das Eingabefeld als die Anzahl der Millisekunden seit der Unix-Epoche und konvertiert es in einen Zeitstempel.

toMillis(fieldName: Timestamp)

Zahl

Konvertiert den im benannten Feld gefundenen Zeitstempel in eine Zahl, die die Millisekunden seit der Unix-Epoche darstellt. Beispiel: toMillis(@timestamp) konvertiert den Zeitstempel 2022-01-14T13:18:031.000-08:00 zu 1642195111000.

now()

Zahl

Gibt die Uhrzeit in Epochensekunden zurück, zu der die Abfrageverarbeitung gestartet wurde. Diese Funktion akzeptiert keine Argumente.

Sie können dies verwenden, um Ihre Abfrageergebnisse nach der aktuellen Uhrzeit zu filtern.

Die folgende Abfrage gibt beispielsweise alle 4xx-Fehler der letzten zwei Stunden zurück:

parse @message "Status Code: *;" as statusCode\n | filter statusCode >= 400 and statusCode <= 499 \n | filter toMillis(@timestamp) >= (now() * 1000 - 7200000)

Das folgende Beispiel gibt alle Protokolleinträge der letzten fünf Stunden zurück, die entweder das Wort error oder enthalten failure

fields @timestamp, @message | filter @message like /(?i)(error|failure)/ | filter toMillis(@timestamp) >= (now() * 1000 - 18000000)
Anmerkung

Derzeit unterstützt CloudWatch Logs Insights das Filtern von Protokollen mit menschenlesbaren Zeitstempeln nicht.

Allgemeine Funktionen

Allgemeine Funktionen

Sie können allgemeine Funktionen in den Befehlen fields und filter sowie als Argumente für andere Funktionen verwenden.

Funktion Ergebnistyp Beschreibung

ispresent(fieldName: LogField)

Boolesch

Gibt true zurück, wenn das Feld existiert.

coalesce(fieldName: LogField, ...fieldNames: LogField[])

LogField

Liefert den ersten Nicht-Null-Wert aus der Liste.

JSON-Funktionen

JSON-Funktionen

Verwenden Sie JSON-Funktionen in den filter Befehlen fields und und als Argumente für andere Funktionen.

Funktion Ergebnistyp Beschreibung

jsonParse(fieldName: string)

Karte | Liste | Leer

Gibt eine Map oder Liste zurück, wenn die Eingabe eine Zeichenkettendarstellung eines JSON-Objekts oder eines JSON-Arrays ist. Gibt einen leeren Wert zurück, wenn es sich bei der Eingabe nicht um eine der Repräsentationen handelt.

jsonStringify(fieldName: Map | List)

String

Gibt eine JSON-Zeichenfolge aus einer Karte oder Listendaten zurück.

IP-Adressenzeichenfolgen

IP-Adressenzeichenfolgen

Sie können IP-Adressen-Zeichenfolgenfunktionen in den Befehlen filter und fields sowie als Argumente für andere Funktionen verwenden.

Funktion Ergebnistyp Beschreibung

isValidIp(fieldName: string)

boolesch

Gibt zurücktrue, ob das Feld eine gültige IPv4 IPv6 Oder-Adresse ist.

isValidIpV4(fieldName: string)

boolesch

Gibt zurücktrue, ob das Feld eine gültige IPv4 Adresse ist.

isValidIpV6(fieldName: string)

boolesch

Gibt zurücktrue, ob das Feld eine gültige IPv6 Adresse ist.

isIpInSubnet(fieldName: string, subnet: string)

boolesch

Gibt zurücktrue, ob es sich bei dem Feld um eine gültige IPv4 IPv6 Adresse im angegebenen v4- oder v6-Subnetz handelt. Verwenden Sie bei der Angabe des Subnetzes die CIDR-Notation wie 192.0.2.0/24 oder 2001:db8::/32, wobei 192.0.2.0 oder 2001:db8:: der Anfang des CIDR-Blocks ist.

isIpv4InSubnet(fieldName: string, subnet: string)

boolesch

Gibt zurücktrue, ob das Feld eine gültige IPv4 Adresse innerhalb des angegebenen v4-Subnetzes ist. Verwenden Sie bei der Angabe des Subnetzes die CIDR-Notation wie 192.0.2.0/24, wobei 192.0.2.0 der Anfang des CIDR-Blocks ist.

isIpv6InSubnet(fieldName: string, subnet: string)

boolesch

Gibt zurücktrue, ob das Feld eine gültige IPv6 Adresse innerhalb des angegebenen v6-Subnetzes ist. Verwenden Sie bei der Angabe des Subnetzes die CIDR-Notation wie 2001:db8::/32, wobei 2001:db8:: der Anfang des CIDR-Blocks ist.

Zeichenfolgenfunktionen

Zeichenfolgenfunktionen

Sie können Zeichenfolgenfunktionen in den Befehlen fields und filter sowie als Argumente für andere Funktionen verwenden.

Funktion Ergebnistyp Beschreibung

isempty(fieldName: string)

Anzahl

Gibt 1 zurück, wenn das Feld fehlt oder eine leere Zeichenkette ist.

isblank(fieldName: string)

Anzahl

Gibt 1 zurück, wenn das Feld fehlt, eine leere Zeichenkette ist oder nur Leerzeichen enthält.

concat(str: string, ...strings: string[])

Zeichenfolge

Verkettet die Zeichenketten.

ltrim(str: string)

ltrim(str: string, trimChars: string)

Zeichenfolge

Wenn die Funktion kein zweites Argument hat, entfernt sie die Whitespaces von der linken Seite der Zeichenfolge. Wenn die Funktion ein zweites Zeichenfolgen-Argument hat, entfernt sie keine Whitespaces. Stattdessen entfernt sie die Zeichen in trimChars links von str. Beispielsweise gibt ltrim("xyZxyfooxyZ","xyZ") "fooxyZ" zurück.

rtrim(str: string)

rtrim(str: string, trimChars: string)

Zeichenfolge

Wenn die Funktion kein zweites Argument hat, entfernt sie die Whitespaces von der rechten Seite der Zeichenfolge. Wenn die Funktion ein zweites Zeichenfolgen-Argument hat, entfernt sie keine Whitespaces. Stattdessen entfernt sie die Zeichen von trimChars rechts von str. Beispielsweise gibt rtrim("xyZfooxyxyZ","xyZ") "xyZfoo" zurück.

trim(str: string)

trim(str: string, trimChars: string)

Zeichenfolge

Wenn die Funktion kein zweites Argument hat, entfernt sie die Whitespaces von beiden Seiten der Zeichenfolge. Wenn die Funktion ein zweites Zeichenfolgen-Argument hat, entfernt sie keine Whitespaces. Stattdessen entfernt sie die Zeichen aus trimChars von beiden Seiten von str. Beispielsweise gibt trim("xyZxyfooxyxyZ","xyZ") "foo" zurück.

strlen(str: string)

Zahl

Liefert die Länge der Zeichenkette in Unicode-Codepunkten.

toupper(str: string)

Zeichenfolge

Konvertiert die Zeichenkette in Großbuchstaben.

tolower(str: string)

Zeichenfolge

Konvertiert die Zeichenkette in Kleinbuchstaben.

substr(str: string, startIndex: number)

substr(str: string, startIndex: number, length: number)

Zeichenfolge

Gibt eine Teilzeichenkette aus dem durch das Zahlenargument angegebenen Index bis zum Ende der Zeichenkette zurück. Wenn die Funktion ein zweites Zahlenargument hat, enthält sie die Länge der abzurufenden Teilzeichenkette. Beispielsweise gibt substr("xyZfooxyZ",3, 3) "foo" zurück.

replace(fieldName: string, searchValue: string, replaceValue: string)

Zeichenfolge

Ersetzt alle Instances von searchValue in fieldName: string mit replaceValue.

Beispiel: Die Funktion replace(logGroup,"smoke_test","Smoke") sucht nach Protokollereignissen, bei denen das Feld logGroup den Zeichenfolgenwert smoke_test enthält und den Wert durch die Zeichenfolge Smoke ersetzt.

strcontains(str: string, searchValue: string)

Zahl

Gibt 1 zurück, wenn str searchValue enthält; ansonsten 0.