2014-01-07 12 views
7

Ich habe eine Logdatei, in der die Daten durch ein Rohrsymbol getrennt sind. "|" Ein Beispiel ist unten. Kann jemand ein GROK-Muster schreiben, um es für logstash zu extrahieren?Grok-Muster für Daten getrennt durch Rohr

2014-01-07 11: 58: 48,7694 | LOGLEVEL | LogSource | LogMessage

Antwort

10

Sie gsub API verwenden können, um das Rohr zu ändern "|" Raum und die GROK verwenden, um es zu extrahieren.

Zum Beispiel:

filter { 
    mutate { 
      gsub => ["message","\|"," "] 
    } 

    grok { 
      match => ["message","%{DATESTAMP:time} %{WORD:LOGLEVEL} %{WORD:LOGSOURCE} %{WORD:LOGMESSAGE}"] 
    } 
} 

Die obige Konfiguration auf mich mit Ihrem Protokoll gearbeitet wird. Hoffe, das kann dir helfen.

+10

grok { match => [ "message", "% {DATESTAMP: Zeit} \ |% {WORD: LOGLEVEL} \ |% {WORD: LogSource} \ |% {WORD: LOGMESSAGE} "] } Das wird auch funktionieren, es hat für mich funktioniert – AD14

3

Verwendung dieser Filter:

es funktioniert für mich. Verwenden Sie diese Website grok Pater, um zu überprüfen, https://grokdebug.herokuapp.com/

(?<date>(([0-9]+)-*)+ ([0-9]+:*)+.*)\|%{WORD:LOGLEVEL}\|%{WORD:LOGSOURCE}\|%{WORD:LOGMESSAGE} 
Verwandte Themen