logstash 使用 redis input 插件时,要如何支持 redis cluster? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
pedward
V2EX    Elasticsearch

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

  •  
  •   pedward 2023-03-20 16:59:51 +08:00 2035 次点击
    这是一个创建于 935 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

    11 条回复    2023-03-28 15:28:12 +08:00
    ZhaoUncle
        1
    ZhaoUncle  
       2023-03-20 17:54:39 +08:00
    list 类型不是已经支持了么?
    pedward
        3
    pedward  
    OP
       2023-03-20 19:40:09 +08:00
    @ZhaoUncle 但是我看到 host 类型是 string 的,难道还有其他设置?
    pedward
        4
    pedward  
    OP
       2023-03-20 19:42:47 +08:00
    主要是我想 host 可以配置多个 redis 节点
    ZhaoUncle
        5
    ZhaoUncle  
       2023-03-21 09:03:04 +08:00
    貌似无解,官方没有支持。估计需要自己去改 redis.rb 的插件代码,将 string 改成 arrary 了
    sparkssssssss
        6
    sparkssssssss  
       2023-03-21 09:43:17 +08:00
    input 写多个 redis 呢?感觉也是可以满足的吧
    pedward
        7
    pedward  
    OP
       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
    sparkssssssss
        8
    sparkssssssss  
       2023-03-21 10:58:26 +08:00
    感觉遥遥无期了,已经好几年了,实在需要集群的,就考虑别的队列吧,比如 kafka.
    https://github.com/logstash-plugins/logstash-input-redis/issues/10
    julyclyde
        9
    julyclyde  
       2023-03-26 19:43:23 +08:00
    你需要一个 proxy
    pedward
        10
    pedward  
    OP
       2023-03-27 09:27:47 +08:00
    有什么具体的方案
    @julyclyde
    pedward
        11
    pedward  
    OP
       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
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2979 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 24ms UTC 12:08 PVG 20:08 LAX 05:08 JFK 08:08
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86