当 Logstash 向输入源发送 ACK 时
When Logstash sends ACK to input source
我已经阅读了 filebeat 的至少一次交付承诺,我的理解是,直到 filebeat 未收到已发送日志行的确认,该行将再次发送(如果 filebeat 重新-开始)。
现在假设,在我的解决方案中,我使用 Filebeat、Logstash 和 logstash 用于过滤的另一个组件。过滤后,logstash 将行发送到 elasticsearch。
下面是我们可能会丢失数据的检查点:
- Filebeat 没有收到来自 logstash 的确认就关闭了 - 在这种情况下,我们知道该行将由 filebeat 再次发送。
- 假设 Filebeat 发送了一行,logstash 使用外部组件对其进行过滤,然后当它尝试发送到 elasticsearch 并且同时 logstash/elasticsearch 崩溃了,那么我们会丢失这些数据吗?
我的问题是:
基本上 logstash 按以下顺序处理数据:
INPUT --> FILTER --> OUTPUT
所以我想知道logstash会在哪一步发送ACK给filebeat。我想基本上了解 ACKS 是如何发送的以及何时发送。我尝试在google和ELK官网上搜索,但没有得到详细信息。
有人可以帮助我了解这些细节吗?
提前致谢。
当输入将事件推送到管道工作人员的内部队列时,输入将确认。那是插件输入线程认为事件完成的时候。
管道工人会发生什么取决于。如果您配置并启用了持久队列,一旦 logstash 重新启动,这些作业将再次被拾取,并且不应丢失任何数据(如果是,那是一个错误)。如果您没有持久队列,那么该数据将会丢失。
我已经阅读了 filebeat 的至少一次交付承诺,我的理解是,直到 filebeat 未收到已发送日志行的确认,该行将再次发送(如果 filebeat 重新-开始)。 现在假设,在我的解决方案中,我使用 Filebeat、Logstash 和 logstash 用于过滤的另一个组件。过滤后,logstash 将行发送到 elasticsearch。
下面是我们可能会丢失数据的检查点:
- Filebeat 没有收到来自 logstash 的确认就关闭了 - 在这种情况下,我们知道该行将由 filebeat 再次发送。
- 假设 Filebeat 发送了一行,logstash 使用外部组件对其进行过滤,然后当它尝试发送到 elasticsearch 并且同时 logstash/elasticsearch 崩溃了,那么我们会丢失这些数据吗?
我的问题是:
基本上 logstash 按以下顺序处理数据:
INPUT --> FILTER --> OUTPUT
所以我想知道logstash会在哪一步发送ACK给filebeat。我想基本上了解 ACKS 是如何发送的以及何时发送。我尝试在google和ELK官网上搜索,但没有得到详细信息。
有人可以帮助我了解这些细节吗? 提前致谢。
当输入将事件推送到管道工作人员的内部队列时,输入将确认。那是插件输入线程认为事件完成的时候。
管道工人会发生什么取决于。如果您配置并启用了持久队列,一旦 logstash 重新启动,这些作业将再次被拾取,并且不应丢失任何数据(如果是,那是一个错误)。如果您没有持久队列,那么该数据将会丢失。