ELK堆栈中的REDIS有什么意义?

What is the point of REDIS in ELK stack?

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

正如您正确注意到的那样,Redis 或 Kafka 或 XYZ 可以用作 buffer in the ELK stack

ES 人员昨天发布了一篇关于在管道中使用 Kafka 的 blog post,但它也可能是 Redis 或 XYZ。他们很好地说明了 何时 可能需要和何时不需要这样的缓冲区。

为了

有这样一个缓冲区是个好主意
  1. 处理事件峰值
  2. 处理可能无法访问的 ES 集群

如果您没有预料到此类行为,即您知道

  1. 您的事件将始终以相同的速度发生 and/or
  2. 如果你需要升级你的 ES 集群,你可以稍后发送你的日志

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

谈到 Elastic Stack 生态系统时,没有放之四海而皆准的方法,它始终取决于您的具体用例和要求。您需要问问自己什么对您、您的系统和您的用户来说是重要的,然后相应地设计您的解决方案。