【发布时间】:2017-11-24 10:20:47
【问题描述】:
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 的解决方案不起作用。
例如:
输入使用 Postman:
[2017-07-11 22:32:12.345] [KCU] 组件初始化 线程“主”java.lang.NullPointerException 中的异常 在 com.example.myproject.Book.getTitle(Book.java:16) [2017-07-11 22:32:16.345] [KCU] 返回状态 1
输出 - 只有一个事件(应该是两个):
[2017-07-11 22:32:12.345] [KCU] 组件初始化 线程“主”java.lang.NullPointerException 中的异常 在 com.example.myproject.Book.getTitle(Book.java:16)
我需要最后一行。
问题: 我做错了什么还是多行编解码器有问题? - 如何解决这个问题?
【问题讨论】:
-
我的回答是否有助于解决您的问题?
-
同样的问题在这里得到了答案:discuss.elastic.co/t/…
标签: logstash multiline logstash-configuration