clancyliu
V2EX  ›  问与答

在 A 机器上有 Nginx,每天生成一个日志文件,如何把这个文件上传到 B 机器的 hdfs 中

  •  
  •   clancyliu · Aug 29, 2020 · 1797 views
    This topic created in 2106 days ago, the information mentioned may be changed or developed.

    现在做法是,A 机器的 Nginx 配置 rsyslog 传到 B 机器,然后 B 机器通过 rsyslog 的 httpfs 插件上传到 hdfs 。但是这种做法,数据量一大就丢数据,或者叫停止写入 hdfs,原因还未找到,求助还有没有其他的方式实现这种功能。有试过 flume,但是它的 Exec -tail 的方式只能监听一个文件,这里是每天生成一个文件,还有就是 spoolDir 方式,它支持丢整个文件到文件夹,不能实时写入。还看过其他的 fluentd,filebeat 等,好像都不太能打到要求,很苦恼。

    2 replies    2020-09-03 17:49:09 +08:00
    hcymk2
        1
    hcymk2  
       Aug 29, 2020
    github.com/syslog-ng/syslog-ng 不知道这个是否满足你的要求。
    clancyliu
        2
    clancyliu  
    OP
       Sep 3, 2020
    已经找到方案了,flume 里面有一种 Taildir Source , https://flume.apache.org/releases/content/1.9.0/FlumeUserGuide.html#taildir-source
    之前看了很多次文档,都没有注意到这里
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   2938 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 28ms · UTC 11:08 · PVG 19:08 · LAX 04:08 · JFK 07:08
    ♥ Do have faith in what you're doing.