解析多行堆栈跟踪 logstash
Parsing multiline stacktrace logstash
我正在尝试解析自定义日志消息,这些消息也具有跨多行的错误堆栈跟踪。如果我的 GROK 模式是多行堆栈跟踪并且我在 elasticsearch 索引中看到的只是消息的第一行,我的 GROK 模式将无法解析。奇怪的是,如果我使用像 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()
您确实可以使用多行编解码器,在您的情况下:
input {
file {
path => "/var/log/someapp.log"
codec => multiline {
# Grok pattern names are valid! :)
pattern => "^%{TIMESTAMP_ISO8601} "
negate => true
what => "previous"
}
}
}
我正在尝试解析自定义日志消息,这些消息也具有跨多行的错误堆栈跟踪。如果我的 GROK 模式是多行堆栈跟踪并且我在 elasticsearch 索引中看到的只是消息的第一行,我的 GROK 模式将无法解析。奇怪的是,如果我使用像 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()
您确实可以使用多行编解码器,在您的情况下:
input {
file {
path => "/var/log/someapp.log"
codec => multiline {
# Grok pattern names are valid! :)
pattern => "^%{TIMESTAMP_ISO8601} "
negate => true
what => "previous"
}
}
}