Logstashのマルチラインコーデックは、ログの次のパッケージを送信するまで、最後のイベント(行)を無視します。Logstashのマルチラインコーデックは最後のイベント/行を無視します
マイlogstash.conf:
input {
}
http {
port => "5001"
codec => multiline {
pattern => "^\[%{TIMESTAMP_ISO8601}\]"
negate => true
what => previous
auto_flush_interval => 15
}
}
}
filter{
grok {
match => { "message" => "(?m)\[%{TIMESTAMP_ISO8601:timestamp}\]\s\<%{LOGLEVEL:log-level}\>\s\[%{WORD:component}\]\s%{GREEDYDATA:log-message}"
}
}
output {
elasticsearch {
hosts => "elasticsearch:9200"
index => "%{+YYYY-MM-dd}"
}
}
またソリューション auto_flush_interval と動作しません。例えば
:ポストマンを用い
入力:
[2017年7月11日22:32:12.345] [KCU]コンポーネントスレッド "メイン" Javaで 例外を初期化します.lang.NullPointerException at com.example.myproject.Book.getTitle(Book.java:16) [2017-07-11 22:32:16.345]状態1で返される
出力 - 唯一のイベント(2つでなければならない):
[2017年7月11日22:32:12.345] [KCU]コンポーネントスレッド "メイン" java.langの 例外を初期化します。 com.example.myproject.Book.getTitleでNullPointerExceptionが (Book.java:16)
私はこの最後の行を必要としています。
質問: マルチラインコーデックに問題がありますか? - これを修正するには?
私の回答はあなたの質問を解決するのに役立ちましたか? – Phonolog
これと同じ質問が答えを得ました:https://discuss.elastic.co/t/logstash-multiline-codec-ignore-last-event-line/109006 – Jaap