12

我目前拥有使用 filebeat 作为日志传送器的架构,它将日志发送到日志存储索引器实例,然后发送到 AWS 中的托管弹性搜索。由于持久的 TCP 连接,我无法使用 AWS ELB 多个日志存储索引器实例进行负载平衡,因为 filebeats 总是选择实例并将其发送到那里。所以我决定使用redis。现在看到在 ELK 堆栈中扩展 redis 并使其成为高可用性组件是多么困难,我想问一下 redis 的意义何在。我读了一百万次它充当缓冲区,但是如果 logstash 无法处理负载,filebeats 停止向 logstash 发送日志,为什么我们甚至需要缓冲区。Filebeat 足够聪明,知道停止发送日志。如果弹性搜索失败,Logstash 足够聪明,可以停止将日志发送到弹性搜索。所以管道停止了。我真的不

4

1 回答 1

22

Redis 或 Kafka 或 XYZ 可以用作ELK 堆栈中的缓冲区,正如您正确注意到的那样。

ES 人员昨天发表了一篇关于在管道中使用 Kafka 的博客文章,但它也可能是 Redis 或 XYZ。他们很好地说明了何时需要这种缓冲区以及何时不需要。

拥有这样的缓冲区是个好主意,以便

  1. 处理事件尖峰
  2. 处理可能无法访问的 ES 集群

如果您没有预料到这种行为,即您知道

  1. 您的活动将始终以相同的速度和/或
  2. 如果您需要升级 ES 集群,您可以稍后发送日志

...那么你不需要这样的缓冲区。更重要的是,这将减少您需要管理、监控和维护的软件。

对于 Elastic Stack 生态系统,没有一种万能的方法,它始终取决于您的精确用例和要求。您需要问自己什么对您、您的系统和您的用户来说是重要的,然后相应地设计您的解决方案。

于 2016-05-14T03:47:32.050 回答