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