【发布时间】:2016-07-01 10:07:58
【问题描述】:
我正在使用 Logstash 从文件中读取和解析日志,并将它们发送到基于 Rest 的 API。我的托运人工作正常,但我遇到了一种奇怪的行为。
Version:
logstash-2.3.2
问题:
当 Logstash shipper 解析第一个日志条目时,它不会发送它,而是将它保存在管道中。当它解析第二个日志条目时,它会将第一个日志条目发送到 API。因此,一条消息始终保留在管道中,并且不会发送到我的 API。
每当我停止我的 Logstash 托运人进程时,它也会发送最后一条剩余的消息。所以,从某种意义上说,没有消息丢失,但托运人总是落后一条消息。
问题: 为什么 Logstash 无法在收到消息后立即刷新其管道并将消息发送到 API。
【问题讨论】:
-
它可能来自多行过滤器/编解码器:过滤器/编解码器将保留该消息,以便在需要时将其与下一个合并。
标签: logstash logstash-grok logstash-configuration logstash-forwarder logstash-file