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

2020-08-29 11:24:36 +08:00
 clancyliu

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

1102 次点击
所在节点    问与答
2 条回复
hcymk2
2020-08-29 12:07:14 +08:00
github.com/syslog-ng/syslog-ng 不知道这个是否满足你的要求。
clancyliu
2020-09-03 17:49:09 +08:00
已经找到方案了,flume 里面有一种 Taildir Source , https://flume.apache.org/releases/content/1.9.0/FlumeUserGuide.html#taildir-source
之前看了很多次文档,都没有注意到这里

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

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

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

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

© 2021 V2EX