簡體   English   中英

Logstash多行過濾器配置和Java異常

[英]Logstash multiline filter configuration and java exceptions

我們最近開始收集所有帶有logstash的Java服務器日志。

默認的log4j配置可以正常工作,但是對於異常和sql查詢,我們使用:

http://logstash.net/docs/1.2.2/filters/multiline

filter {
 multiline {
  type => "somefiletype"
  pattern => "^\s"
  what => "previous"
 }
}

但這不能100%精確地工作,某些Exceptions / SQL沒有所需的格式。

可以通過以下方式配置多行插件:

如果行的開頭沒有時間戳,則為多行日志消息?

改用多行編解碼器,文檔甚至提供了針對此確切問題的示例http://logstash.net/docs/1.2.2/codecs/multiline

我終於成功地從日志文件中解析了多行日志消息。 請注意,您的日志消息可能會略有不同,需要更改grok模式。 主要解決方法是將多行過濾器放在grok過濾器之前,並在它和grok過濾器之間進行drop {}。 重要:使用Grok調試器調試grok過濾器。

input {
  stdin {
    type => "log4j"
  }
}

filter {
  if [type] == "log4j" {

    multiline {
      pattern => "^[\d]{4}\-[\d]{2}\-[\d]{2} "
      negate => true
      what => previous
    }
    if "_grokparsefailure" in [tags] {
      drop { }
    } 
    grok {
      match => {
      "message" =>  "(?<logdate>[\d]{4}\-[\d]{2}\-[\d]{2} [\d]{2}:[\d]{2}:[\d]{2},[\d]{3})%{SPACE}%{NUMBER:unknown1}%{SPACE}%{LOGLEVEL:severity}%{SPACE}\[(?<logger>[^\]]+)\]%{SPACE}\((?<thread>[^\)]+)\)%{SPACE}%{GREEDYDATA:message}"
      }
      overwrite => [ "message" ]
    }

    if !("_grokparsefailure" in [tags]) {
      date {
        match => [ "logdate", "YYYY-MM-dd HH:mm:ss,SSS"]
      }
    }
  }
}


output {   
  # Print each event to stdout.
  stdout {
    codec => json
  }
}

暫無
暫無

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

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