簡體   English   中英

Logstash-Grok-多行異常

[英]Logstash - Grok - Exception on multiple lines

我試圖通過grok過濾器解析各種異常,因此我在rubular.com的幫助下編寫了grok過濾器來解析每種類型的異常。 過濾器為:

grok {
match => { message => "^(?<year>\d{4})-(?<month>\d{1,2})-(?<day>\d{1,2})\W(?<hours>\d{2}):(?<minutes>\d{2}):(?<seconds>\d{2})(,)[0-9]*(.*)(?<log_level>(ERROR|INFO)) (?<exception>(.*\n^Axis.*\n.*\n.*\n.*\n.*\n.*\n.*\n.*)|(com.*trying.*\ncom.*is:.*\n.*java.*)|(com.*\n^org.*\n###.*non valido\n\n.*^###.*\n^###.*\n^###.*)|(.*trying.*\n^com.*ServiceException.*\n### Error querying.*\n\n.*\n^###.*\n.*)|(.*trying.*\n^com.*ServiceException.*\n^###.*\n^###.*)|(.*trying.*\n^com.*)|(.*\n^org.*\n###.*Exception.*\n### Cause:.*)|(com.*\n^org.*\n###.*)|(.*\n^java.*CORBA.*\n.*)|(.*\n^java*.*)|(com.*\n^com.*)|(.*null\n^Axis.*\n.*\n.*\n.*\n.*\n.*\n.*\n.*\n.*\n.*\n.*)|(.*\n))"}
}

如您所見,在例外字段中有很多OR條件,並且有許多\\ n可以使用回車符。 問題是,據我了解,Logstash一次只能讀取一行,並且不能匹配多行(因此,即使在rubular上,此模式運行良好,也無法在logstash中使用)。 如何正確過濾異常?

您可以在grok之前多行,例如java例外:

multiline {
    type => %sometype
    pattern => "(^\s)"
    what => previous 
          }

因此,這會將所有以空格開頭的行添加到上一行。 然后,您可以使用grok過濾器。

哦,您可以進行變異以避免多行后出現'\\ n'符號:

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

之后,您就可以過濾多行消息了。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM