V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
wangking
V2EX  ›  程序员

kafka 里的数据如何写到 es 里去 ?

  •  1
     
  •   wangking · 2020-05-10 17:53:19 +08:00 · 4952 次点击
    这是一个创建于 1659 天前的主题,其中的信息可能已经有所发展或是发生改变。

    收集 k8s 日志,打算用 fluent-bit 收集日志,然后 output 到 kafka 中。
    然后 kafka 里的日志如何从 kafka 中存储到 es 里去吗? 难道要单独起一个 logstash 做数据处理吗 ?
    各位大佬们有什么更好的实践吗 ?

    第 1 条附言  ·  2020-05-11 18:18:36 +08:00
    短期方案:使用 filebeat 做个中转
    中长期: 可能会考虑 confluent platform,confluent platform 有 rest 接口,和 connector 做 elasticsearch sink
    20 条回复    2020-05-12 14:12:38 +08:00
    syasuker
        1
    syasuker  
       2020-05-10 18:16:18 +08:00   ❤️ 1
    原来的架构没有 logstash 吗?
    wangking
        2
    wangking  
    OP
       2020-05-10 18:22:35 +08:00
    @syasuker 网上能找到的很多文档都是通过 logstash 去做的 ,我想看看大家伙 又没有使用 connect 之类的其他解决方案
    zhoudaiyu
        3
    zhoudaiyu  
       2020-05-10 18:23:33 +08:00 via iPhone
    我们自己写了一个多进程 python 的转数脚本,就是一个死循环每个进程去 kafka 的某个分区拿数,然后维护一个简单的队列,等队列长度到达某个阈值就用 es 客户端提供的批量插入往 es 写数。
    xuanbg
        4
    xuanbg  
       2020-05-10 19:01:20 +08:00   ❤️ 1
    fluent 直接写 es 啊,要什么 kafka 和 logstash
    hahahahahha
        5
    hahahahahha  
       2020-05-10 19:05:09 +08:00
    kafka 确实有和 es 的 connector 通道, 在 kafka 的 spring-kafka-connector 源码有写的,
    wangking
        6
    wangking  
    OP
       2020-05-10 20:54:43 +08:00
    @zhoudaiyu 这个方案不一定能行 ,还是比较期待有生产级别的工具
    wangking
        7
    wangking  
    OP
       2020-05-10 20:55:20 +08:00
    @xuanbg 解耦,常规操作
    wangking
        8
    wangking  
    OP
       2020-05-10 20:56:24 +08:00
    @hahahahahha 看了一下 , 有个 confluent 的解决方案,没有 google 到合适的方案
    marcolin
        9
    marcolin  
       2020-05-10 21:27:48 +08:00
    fluentd 可以同时写到两个 output 啊
    xuanbg
        10
    xuanbg  
       2020-05-10 21:37:33 +08:00
    这个解耦没多少意义啊,而且平白地增加了复杂度。再说,日志是允许丢的数据,没必要和数据完整性死磕呀。
    @wangking
    syasuker
        11
    syasuker  
       2020-05-10 22:14:06 +08:00
    @wangking EFK + Kafka 么?
    fluent-bit 跟 logstash 是同级别的 看起来应该是 log 直接进 Kafka 然后经由 F 到 ES
    xetv
        12
    xetv  
       2020-05-10 22:15:43 +08:00
    @xuanbg 加一个 kafka 在后续维护的过程中会更加灵活一点。由于 es 和 kafka 的数据落盘机制不同,kafka 性能可能会优于 es 。
    楼主是按照采集-传输-保存这个步骤进行解藕了,我之前做过一样的系统,也是按照这个模式走的,实测 kafka 写入性能比 es 好。后面如果数据量再大一点的话,传输上面有性能瓶颈还是查询上面有瓶颈,可以有针对性的解决。
    wangking
        13
    wangking  
    OP
       2020-05-10 23:51:36 +08:00
    @syasuker 这个其实是跟 logstash 一样的,目前想通过 kafka 的 connector 直接接 es,感觉有点麻烦,后面可能还是你说的这个方案
    wangking
        14
    wangking  
    OP
       2020-05-10 23:52:42 +08:00
    @xetv 是的,同时后面也可能会有多消费者的需求,所以,这些提前准备一下
    limbo0
        15
    limbo0  
       2020-05-11 03:42:29 +08:00 via iPhone
    @xuanbg 业界标准了,es 查询和存储一体,稳定性不如 kafka,而且以后方便扩展一定会上 kafka 的
    这个写 es 直接 Logstash 几分钟就搞定啊,不用那么纠结
    0312birdzhang
        16
    0312birdzhang  
       2020-05-11 08:48:35 +08:00 via iPhone
    @limbo0 +1,有现成的成熟方案还纠结啥
    rafa
        17
    rafa  
       2020-05-11 09:38:18 +08:00
    filebeat 了解下
    pmispig
        18
    pmispig  
       2020-05-11 10:23:48 +08:00
    当然是自己写一个消费者了,日志要做处理
    wangking
        19
    wangking  
    OP
       2020-05-11 18:19:31 +08:00
    @spidermansam0718 现在也没有时间折腾的了,先用 filebeat 顶上
    @pmispig 优先使用工具啊,毕竟是生产
    julyclyde
        20
    julyclyde  
       2020-05-12 14:12:38 +08:00
    啊? filebeat 居然可以读 kafka
    真是名不副实啊!
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5603 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 34ms · UTC 07:05 · PVG 15:05 · LAX 23:05 · JFK 02:05
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.