我目前使用filebeat作为日志托运者的架构,它将日志发送到日志存储索引器实例,然后发送到AWS中的托管弹性搜索.由于持久的TCP连接,我无法使用AWS ELB多个日志存储索引器实例进行负载平衡,因为filebeats总是选择实例并将其发送到那里.所以我决定使用redis.现在看看在ELK堆栈中扩展redis并使其高度可用的组件是多么困难,我想问一下redis的重点是什么.我读了一百万次它作为一个缓冲区,但如果logbeash停止发送日志到logstash如果logstash无法处理负载,为什么我们甚至需要一个缓冲区.Filebeat非常聪明,可以知道停止发送日志.如果弹性搜索发生故障,Logstash足够聪明,可以停止向弹性搜索发送日志.所以管道停止了.我真的不明白redis在每个标准ELK架构中充当缓冲区.
正如您所注意到的那样,Redis或Kafka或XYZ可用作ELK堆栈中的缓冲区.
ES人们昨天发表了一篇关于在管道中使用Kafka 的博客文章,但它也可能是Redis或XYZ.他们做出一个好点的WHEN可能需要这样的缓冲区,事实并非如此.
为了这样一个缓冲区是一个好主意
处理事件峰值
处理可能无法访问的ES群集
如果你没有预料到这种行为,即你知道
您的活动将始终以相同的速度和/或
如果你需要升级你的ES集群,你可以稍后发货
...那么你不需要这样的缓冲区.更重要的是,这将是您需要管理,监控和维护的一小部分软件.
对于Elastic Stack生态系统而言,没有一种通用的方法,它总是取决于您的精确用例和要求.您需要问问自己对您,您的系统和用户重要的是什么,然后相应地设计您的解决方案.