2016-05-23 70 views
0

我有一个日志模式是这种形式。格罗克过滤器日志模式

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 +):尝试'%{GREEDYDATA:fieldValue1} \ |%{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

谢谢alpert。完美.. !! – user1768610

+0

很高兴帮助:) – alpert