parse - 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.

parse

Verwenden Sie parse, um Daten aus einem Protokollfeld zu extrahieren und ein extrahiertes Feld zu erstellen, das Sie in Ihrer Abfrage verarbeiten können. parse unterstützt sowohl den globalen Modus mit Platzhaltern als auch reguläre Ausdrücke. Hinweise zur Syntax regulärer Ausdrücke finden Sie unterUnterstützte Syntax für reguläre Ausdrücke (Regex).

Sie können verschachtelte JSON Felder mit einem regulären Ausdruck analysieren.

Beispiel: Analysieren eines verschachtelten Felds JSON

Der Codeausschnitt zeigt, wie ein JSON Protokollereignis analysiert wird, das während der Aufnahme reduziert wurde.

{'fieldsA': 'logs', 'fieldsB': [{'fA': 'a1'}, {'fA': 'a2'}]}

Das Code-Snippet zeigt eine Abfrage mit einem regulären Ausdruck, der die Werte für fieldsA und fieldsB extrahiert, um die extrahierten Felder fld und array zu erstellen.

parse @message "'fieldsA': '*', 'fieldsB': ['*']" as fld, array

Benannte Erfassungsgruppen

Wenn Sie parse mit einem regulären Ausdruck verwenden, können Sie benannte Erfassungsgruppen verwenden, um ein Muster in einem Feld zu erfassen. Die Syntax lautet parse @message (?<Name>pattern)..

Im folgenden Beispiel wird eine Erfassungsgruppe in einem VPC Flow-Protokoll verwendet, um das in ein Feld mit dem Namen zu extrahieren. ENI NetworkInterface

parse @message /(?<NetworkInterface>eni-.*?) / | display NetworkInterface, @message
Anmerkung

JSONProtokollereignisse werden während der Aufnahme reduziert. Derzeit wird das Parsen verschachtelter JSON Felder mit einem Glob-Ausdruck nicht unterstützt. Sie können nur JSON Protokollereignisse analysieren, die nicht mehr als 200 Protokollereignisfelder enthalten. Wenn Sie verschachtelte JSON Felder analysieren, müssen Sie den regulären Ausdruck in Ihrer Abfrage so formatieren, dass er dem Format Ihres Protokollereignisses entspricht. JSON

Beispiele des parse-Befehls

Verwenden Sie einen globalen Ausdruck zum Extrahieren der Felder @user, @method und @latency aus dem Protokollfeld @message und zur Rückgabe der durchschnittlichen Latenz für jede eindeutige Kombination aus @method und @user.

parse @message "user=*, method:*, latency := *" as @user, @method, @latency | stats avg(@latency) by @method, @user

Verwenden Sie einen regulären Ausdruck zum Extrahieren der Felder @user2, @method2 und @latency2 aus dem Protokollfeld @message und zur Rückgabe der durchschnittlichen Latenz für jede eindeutige Kombination aus @method2 und @user2.

parse @message /user=(?<user2>.*?), method:(?<method2>.*?), latency := (?<latency2>.*?)/ | stats avg(latency2) by @method2, @user2

Extrahiert die Felder loggingTime, loggingType und loggingMessage, filtert nach Protokollereignissen, die die Zeichenfolgen ERROR oder INFO enthalten, und zeigt dann nur die Felder loggingMessage und loggingType für Ereignisse an, die die Zeichenfolge ERROR enthalten.

FIELDS @message | PARSE @message "* [*] *" as loggingTime, loggingType, loggingMessage | FILTER loggingType IN ["ERROR", "INFO"] | DISPLAY loggingMessage, loggingType = "ERROR" as isError