我已经了解了filebeat的至少一次交付承诺,我理解的是,在filebeat没有收到发送日志的确认之前,该行将再次发送(如果filebeat重新启动) )。 现在说,在我的解决方案中,我使用的是Filebeat,Logstash以及logstash用于过滤的另一个组件。过滤后,logstash会将该行发送到elasticsearch。
现在这里是我们可以丢失数据的检查点:
我的问题是:
基本上logstash按以下顺序处理数据:
INPUT --> FILTER --> OUTPUT
所以我想知道logstash将把ACK发送到filebeat的步骤。我想基本了解ACKS的发送方式和时间。我试图在谷歌和ELK官方网站上搜索它,但没有得到详细信息。
有人可以帮我理解这些细节吗? 提前谢谢。
答案 0 :(得分:1)
当输入将事件推送到管道工作者的内部队列时,输入将为ACK。那是插件输入线程认为事件要完成的时候。
管道工人的情况取决于什么。如果您已配置并启用了持久性队列,则一旦logstash重新启动并且不会丢失任何数据(如果是,那就是错误),将再次拾取这些作业。如果您没有持久队列,那么该数据将会丢失。