ELK 堆栈中的 REDIS 有啥意义?

Posted

技术标签:

【中文标题】ELK 堆栈中的 REDIS 有啥意义?【英文标题】:What is the point of REDIS in ELK stack?ELK 堆栈中的 REDIS 有什么意义? 【发布时间】:2016-09-07 09:08:33 【问题描述】:

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

【问题讨论】:

【参考方案1】:

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

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

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

    处理事件高峰 处理可能无法访问的 ES 集群

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

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

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

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

【讨论】:

当前文档建议不要使用外部队列解决方案:elastic.co/guide/en/logstash/current/…,“建议使用 Logstash 持久队列而不是外部队列层” 那是在 Logstash 支持内部持久队列之前 ;-)

以上是关于ELK 堆栈中的 REDIS 有啥意义?的主要内容,如果未能解决你的问题,请参考以下文章

sh 使用一个用于中央日志服务器(CentOS 6.5)的脚本安装ELK堆栈(使用Redis)。

sh 使用一个用于中央日志服务器(CentOS 6.5)的脚本安装ELK堆栈(使用Redis)。

ELK 堆栈中的 Logstash 和 filebeat

基于弹性堆栈(ELK堆栈)的日志分析存储及展示

在 ELK 堆栈中调试 Filebeat

关于使用Spring Boot Microservices设置ELK堆栈