Java
用於 Java 堆棧跟踪的 Logstash 多行編解碼器
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 等,那麼將它們重新組合成一個單一的堆棧轉儲變得更加困難。它仍然可以完成,但需要更廣泛的過濾器。
- 輸入編解碼器不是多行的;在每行事件的情況下,多行編解碼器無法處理它。
- Grok 過濾器將 syslog 消息拆分為多個部分,將 SYSLOGMESSAGE 部分放入其自己的欄位中。
- 使用
multiline {}
SYSLOGMESSAGE 欄位上的過濾器重新組裝您的堆棧轉儲。- 使用一個且只有一個 filter-worker(
-w
標誌),這是確保收集整個堆棧跟踪的唯一方法。如果可能的話,最好使用堆棧跟踪發送
file {}
到的文件上的編解碼器,並使用您已經找到的縮進方法。