2016-05-23 11 views
0

私はこの形式のログパターンを持っています。ログパターン用grokフィルタ

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

任意の順序でいくつかの値を設定できます。 key2は、そのkey1より早いかもしれません。

私はfield1-field5を解析することができます。しかし、キーと値のペアのために

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

をそれを行う方法がわからない私はgrokにキーと値のマップを作成し、特定のキーを送ることができます? アドバイスはありますか?

+0

3のキーと値のペアが常に存在している場合は、わずか3 '\ sの*を追加することができます=':同様( + W \?)(W + \ ?):{:fieldValue1 GREEDYDATA} '%を試してみてください\ |%{GREEDYDATA:fieldValue2} \ |%{GREEDYDATA:fieldValue3} \ |%{GREEDYDATA:fieldValue4} \ |%{GREEDYDATA:fieldValue5} \ | \ s *(? \ w +)=(? \ w +) \ s *(? \ w +)=(? \ w +)\ s *(? \ w +)=(? \ w +) ' –

答えて

2

kvフィルタを使用して、他の部分を解析することができます。

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

ありがとうございます。完璧な.. !! – user1768610

+0

うれしかったよ:) – alpert

関連する問題