logstash 文档表明您可以使用多行编解码器将 Java 堆栈跟踪日志条目中的多个缩进行折叠成单个事件:
https://www.elastic.co/guide/en/logstash/current/plugins-codecs-multiline.html
input {
syslog {
type => syslog
port => 8514
codec => multiline {
pattern => "^\s"
what => "previous"
}
}
}
这是基于 logstash 在行首找到一个缩进并将其与上一行结合起来的。
但是,logstash 文档是我唯一可以找到参考的地方。一般用户社区似乎正在使用精心制作的 grok 过滤器来达到相同的效果。
我已经尝试过logstash提供的基本缩进模式,但它不起作用。有没有其他人通过匹配缩进模式来实现这个工作?
是的,尽管没有
syslog {}
输入。我已经使用file {}
输入和 Tomcat 日志完成了它。如果堆栈跟踪进入系统日志,每行都有一个新事件,并且仍然具有通常的系统日志前缀 datestamp 等,那么将它们重新组合成一个单一的堆栈转储变得更加困难。它仍然可以完成,但需要更广泛的过滤器。multiline {}
SYSLOGMESSAGE 字段上的过滤器重新组装您的堆栈转储。-w
标志),这是确保收集整个堆栈跟踪的唯一方法。如果可能的话,最好使用堆栈跟踪发送
file {}
到的文件上的编解码器,并使用您已经找到的缩进方法。