Python 版 Filebeat

2016-08-15 21:20:57 +08:00
 iyaozhen

之前一直在用 ELK 那一套,因为 logstash 占用资源较多和 JDK 版本问题不适合部署在业务机器上,于是使用 Filebeat ( go 语言实现, https://www.elastic.co/products/beats/filebeat ),推送日志到线下 logstash 集群,效果很好,很稳定。

但某些老古董机器 glib 版本过低, filebeat 也无法运行,所有用 Python 实现了个“低配版” filebeat 。已在线上跑了几个月了,今天改了一点 bug 发了出来,希望能帮助到需要的小伙伴。

项目地址: https://github.com/iyaozhen/filebeat.py 代码很渣,求指正

5435 次点击
所在节点    分享创造
15 条回复
rale
2016-08-15 22:33:00 +08:00
👍,看完代码了,楼主用 tail 命令实现的,很实用的工具,老古董的机器很适合,以后遇到那些低配的前端机就用这个来收集,期待楼主继续完善功能。。比如第一次监控到存在的文件的时候,看能不能取到全量的数据。
knktc
2016-08-15 23:37:08 +08:00
logstash 有的时候确实太重了
9hills
2016-08-16 00:56:17 +08:00
Lz 思路真广。。。

我是用 TCP 流,直接 NC 就好了
rale
2016-08-16 08:06:12 +08:00
@9hills NC 只适合临时传个文件啥的, 一份文件只传一次比较适合,如果多次,必然很多重复数据,这样反而为后续流程增加了不少麻烦。
9hills
2016-08-16 08:09:14 +08:00
@rale tail 加 nc 加 logstash 的 tcp input
rale
2016-08-16 08:32:15 +08:00
@9hills 嗯,这个方法不错,加 tail 后效果跟这个类似,开始我理解成 nc 传文件过去
tanywei
2016-08-16 09:33:40 +08:00
@knktc 是啊,我装了 logstash ,搬机器的时候真心扛不动。
iyaozhen
2016-08-16 11:13:03 +08:00
@rale 嗯,第一个文件之前的数据会丢失,可以改进下,不过这部分的数据缺失也是可以接受的。
iyaozhen
2016-08-16 11:19:29 +08:00
@9hills 谢谢,之前没使用过 nc 指令。确实更加简单。不过我们这边有些日志会有当前时间戳, shell 的话比较麻烦。还有配置文件,扩展性、代码可维护性等。所以 Python 可能更合适一些。
xi_lin
2016-08-16 12:23:22 +08:00
这个结点。。
iyaozhen
2016-08-16 13:01:02 +08:00
@xi_lin 额,确实好像不对。这个节点好像是 iOS 的。⊙﹏⊙
iyaozhen
2016-08-16 13:08:14 +08:00
@Livid /go/create 麻烦了,感谢
Livid
2016-08-16 14:41:54 +08:00
iyaozhen
2016-08-22 00:54:20 +08:00
@rale "第一次监控到存在的文件的时候,看能不能取到全量的数据。" 通过使用 cat file && tail -F file 解决了此问题
rale
2016-08-22 10:47:21 +08:00
@iyaozhen 赞~

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

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

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

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

© 2021 V2EX