解析多行stacktrace logstash

时间:2019-01-16 13:51:48

标签: elasticsearch logstash logstash-grok

我正在尝试分析自定义日志消息,这些消息还具有跨越多行的错误堆栈跟踪。我的GROK模式无法解析,如果它是多行堆栈跟踪并且我在elasticsearc索引中看到的只是消息的第一行。奇怪的是,如果我使用诸如grokdebugger之类的解析器来测试该模式是否适用于多行。我在logstash配置中缺少什么

以下是我在logstash中的grok模式的摘要:

grok {match => [
        "message" , "%{TIMESTAMP_ISO8601:timestamp} \[%{SPACE}%{DATA:loglevel}\] %{DATA:class} \[%{DATA:operation}\] \(user=%{DATA:userid}\) (?m)%{GREEDYDATA:stacktrace}"
        ]
}

已解析的示例消息:

2018-01-09 21:38:21,414 [    INFO]  abc.xyz.def:444: [Put] [Protect] (user=xyz) Random Message

未解析的消息:

2018-01-09 21:38:21,415 [   ERROR]  abc.xyz.def:41: [Error] (user=xyz) Unhandled exception encountered...
Traceback (most recent call last):
  File "/usr/local/lib/abc/xyz.py", line 113, in some_requestrv = self.dispatch_request() 

1 个答案:

答案 0 :(得分:1)

您确实可以使用多行编解码器:

input {
  file {
    path => "/var/log/someapp.log"
    codec => multiline {
      # Grok pattern names are valid! :)
      pattern => "^%{TIMESTAMP_ISO8601} "
      negate => true
      what => "previous"
    }
  }
}

Here is the link for documentation