2016-05-23 8 views
0

Ich habe ein Protokollmuster, das diese Form ist.Grok Filter für Protokollmuster

field1|field2|field3|field4|field5| key1=value1 key2=value2 key3=value3 

Schlüsselwertpaar kann einige in beliebiger Reihenfolge. key2 könnte früher als key1 sein.

Ich bin in der Lage, das field1-field5 zu analysieren. Aber nicht sicher, wie es für Schlüsselwertepaare tun

%{GREEDYDATA:fieldValue1}\|%{GREEDYDATA:fieldValue2}\|%{GREEDYDATA:fieldValue3}\|%{GREEDYDATA:fieldValue4}\|%{GREEDYDATA:fieldValue5}\| 

Kann ich eine Karte von Schlüssel-Wert in grok erstellen und dann bestimmte Tasten senden ??? Irgendwelche Ratschläge?

+0

Wenn es immer drei Schlüssel-Wert-Paare sind, können Sie einfach hinzufügen 3 '\ s * =' ( \ w +?) ( \ w +?): Versuchen '% {GREEDYDATA: fieldValue1} \ |% {GREEDYDATA: fieldValue2} \ |% {GREEDYDATA: fieldValue3} \ |% {GREEDYDATA: fieldValue4} \ |% {GREEDYDATA: fieldValue5} \ | \ s * (? \ w +) = (? \ w +) \ s * (? \ w +) = (? \ w +) \ s * (? \ w +) = (? \ w +) ' –

Antwort

2

Sie können KV-Filter verwenden, um andere Teile zu analysieren. Wie:

grok { 
    match => { "message" => "%{GREEDYDATA:fieldValue1}\|%{GREEDYDATA:fieldValue2}\|%{GREEDYDATA:fieldValue3}\|%{GREEDYDATA:fieldValue4}\|%{GREEDYDATA:fieldValue5}\| %{GREEDYDATA:keyValue}" } 
} 
kv { 
    source => "keyValue" 
} 
+0

Vielen Dank. Perfekt ..!! – user1768610

+0

Froh, dass es geholfen hat :) – alpert