Logstash進(jìn)行日志采集:
在Logstash進(jìn)行日志采集的時候需要使用Filter對數(shù)據(jù)進(jìn)行過濾杆勇,這里可能會出現(xiàn)message無法匹配的問題坷牛,導(dǎo)致message里面存在一些信息如下:
{"@timestamp":"2018-05-26T10:13:58.335Z","beat":{"hostname":"iZm5e2n9hyq2mxqp6jl4m2Z","name":"iZm5e2n9hyq2mxqp6jl4m2Z","version":"5.6.7"},"input_type":"log","message":"[
然后才是message霹期,在使用grok進(jìn)行過濾前昼牛,先使用json對數(shù)據(jù)進(jìn)行格式轉(zhuǎn)換祈噪,后面的正則表達(dá)式才能匹配出來粥鞋,具體filter如下:
filter?{
????if?[type]?==?"pay"?{
????????json?{
?????????????source?=>?"message"
????????}
????????grok?{
????????????match?=>?{
?????????????"message"?=>?"正則"
?????????}
????????overwrite?=>?["message"]
?????}
}
其中 Grok可以使用多個進(jìn)行配置掂为,比如第一個正則里面分離出來了一個字段裕膀,在第二個grok里面,可以直接使用第一個里面的字段進(jìn)行繼續(xù)分離勇哗,如下昼扛,message分離出來msg,msg分離出來method欲诺,method分離出來module:
grok?{
???match?=>?[
????"message","\[(?\d{4}-\d{2}-\d{2}\s\d{2}:\d{2}:\d{2},\d{3})\]\[(?\w*)\s\]\[(?\S*)\]\s(?.*)",
????"message","\[(?\d{4}-\d{2}-\d{2}\s\d{2}:\d{2}:\d{2},\d{3})\]\[(?\w*)\s\]\s(?.*)"
???]
}
grok{
???match?=>?{
??????"msg"?=>?"^(?[A-Za-z0-9$.*]*)"
???}
}
grok?{
???match?=>?{
?????"method"?=>?"[A-Za-z0-9$*]*.[A-Za-z0-9$*]*.(?[A-Za-z0-9$*]*)"
???}
}
轉(zhuǎn)載自:http://blog.goc6.com/view/9