logstash 使用 redis input 插件时,要如何支持 redis cluster?

2023-03-20 16:59:51 +08:00
 pedward

看 redis input 插件的文档: 配置 host 的类型是 string,不支持 list 的。 各位有什么好的解决方案

1626 次点击
所在节点    Elasticsearch
11 条回复
ZhaoUncle
2023-03-20 17:54:39 +08:00
list 类型不是已经支持了么?
ZhaoUncle
2023-03-20 17:55:17 +08:00
pedward
2023-03-20 19:40:09 +08:00
@ZhaoUncle 但是我看到 host 类型是 string 的,难道还有其他设置?
pedward
2023-03-20 19:42:47 +08:00
主要是我想 host 可以配置多个 redis 节点
ZhaoUncle
2023-03-21 09:03:04 +08:00
貌似无解,官方没有支持。估计需要自己去改 redis.rb 的插件代码,将 string 改成 arrary 了
coolloves
2023-03-21 09:43:17 +08:00
input 写多个 redis 呢?感觉也是可以满足的吧
pedward
2023-03-21 10:06:06 +08:00
1.虽然 input 写多个 redis 节点 ,可以拿到 redis 集群中数据,但 log 有许多 MOVED ERROR 错误。
2.因为 logstash 的 input redis 插件是没有具备当一个节点返回一个 MOVED ERROR 通知时,自动去找对应的节点里的槽的能力,所以就有好多 MOVED ERROR 。
3.我现在是写了多个 redis 节点。但我是想有没有一个好的做法(没有个 MOVED ERROR 错误并能支持 redis cluster )@coolloves
coolloves
2023-03-21 10:58:26 +08:00
感觉遥遥无期了,已经好几年了,实在需要集群的,就考虑别的队列吧,比如 kafka.
https://github.com/logstash-plugins/logstash-input-redis/issues/10
julyclyde
2023-03-26 19:43:23 +08:00
你需要一个 proxy
pedward
2023-03-27 09:27:47 +08:00
有什么具体的方案
@julyclyde
pedward
2023-03-28 15:28:12 +08:00
研究许多天,总结了几个解决方式:
1.还是写多个 redis input 的节点,将 MOVED 的日志过滤,要改动 log4j2.properties 。好处:改动最少,缺点:真正的问题没有解决
log4j2.properties 的具体配置
appender.rolling.filter.threshold.type = ThresholdFilter
appender.rolling.filter.threshold.level = warn
appender.rolling.filter.moved.type = RegexFilter
appender.rolling.filter.moved.regex = .*MOVED.*
appender.rolling.filter.moved.onMatch = DENY
appender.rolling.filter.moved.onMismatch = ACCEPT
2.加一个 redis 代理,我是用 predixy 。在 input 只写 redis 代理的地址,logstash 可以正常获取数据,但是我对 predixy 还是有保留,主要当其中一个 redis 节点挂了,代理会有问题,有部分数据拿不到。predixy 地址: https://github.com/joyieldInc/predixy
3.在 logstash 和 redis cluster 之间加多一个程序,其实主要作用跟 redis 代理差不多。logstash 通过 http input 从程序拿 redis cluster 的数据,缺点:就是太麻烦了,会做多工作
4.自己写一个 logstash 的插件,支持 redis cluster,但前提需要会 ruby ,这个是难度最高的。官网地址: https://www.elastic.co/guide/en/logstash/current/input-new-plugin.html

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/925606

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX