logstash和filebeat都是可以作为日志采集的工具,logstash出现时间要比filebeat早许多。filebeat更轻量,占用资源更少,但logstash 具有filter功能,能过滤分析日志。一般结构都是filebeat采集日志。
logstash是使用Java编写,插件是使用jruby编写,对机器的资源要求会比较高,网上有一篇关于其性能测试的报告。之前自己也做过和filebeat的测试对比。在采集日志方面,对CPU,内存上都要比前者高很多。
filebeat也是elastic.公司开发的,其官方的说法是为了替代logstash-forward。采用go语言开发。代码开源。elastic/beats filebeat是beats的一个文件采集工具。
希望对你有帮助
任何一款采集 agent 进行公司内全面推广前都需要进行性能测试以及资源限制功能测试,以保证:
对于 Filebeat 这款号称 golang 编写,性能强于 logstahs-forwarder 的采集 agent,我们也需要这样进行严谨对待。
硬件选择虚拟机,6cores + 16GB Mem + 175GB SSD + 1000Mbps 带宽;
Filebeat 配置,输出到 console:
Filebeat 配置,输出到 Kafka:
我们开启 Filebeat 的 6060 端口,并使用 python 脚本进行指标采集。
expvar_rates.py ,每秒统计出 Filebeat 指标,主要看:
Step1. 启动 Filebeat (172.16.134.8)
Step2. 启动统计脚本
Step3. 启动 tsar
Step4. 写入压测数据(6个进程写入,6千万条日志)
在 6 进程数据写入日志文件时,我们在开启 python 统计脚本的窗口得到如下稳定的统计数据:
我们在 tsar 看到的统计数据为:
我们在 top 中可以看到 Filebeat 大致占据了 0.8 cores。
在 6 进程数据写入日志文件后,我们在开启 python 统计脚本的窗口得到如下稳定的统计数据:
我们在 tsar 看到的统计数据为:
我们在 top 中可以看到 Filebeat 大致占据了 1.6 cores。
小结:
测试步骤和上述一致,区别在于配置文件需要输出到 Kafka。
在 6 进程数据写入日志文件时,我们在开启 python 统计脚本的窗口得到如下稳定的统计数据:
我们在 tsar 看到的统计数据为:
我们在 top 中可以看到 Filebeat 大致占据了 0.7~0.8 cores。
在 6 进程数据写入日志文件后,我们在开启 python 统计脚本的窗口得到如下稳定的统计数据:
我们在 tsar 看到的统计数据为:
我们在 top 中可以看到 Filebeat 大致占据了 2.0 cores。
小结:
测试步骤和上述一致,区别在于配置文件需要输出到 Kafka。
和上述步骤不同的是,启动 Filebeat 时需要 systemd 限制 CPU、句柄数,根据之前的理论,句柄数限制在 100 已经非常够用,CPU 限制在 1 core。
修改 /usr/lib/systemd/system/filebeat.service :
执行 reload:
对 CPU 进行限制:
确认是否限制成功:
有如下输出表示OK:
在 6 进程数据写入日志文件时,我们在开启 python 统计脚本的窗口得到如下稳定的统计数据:
我们在 tsar 看到的统计数据为:
我们在 top 中可以看到 Filebeat 大致占据了 0.7 ~ 0.8 cores。
在 6 进程数据写入日志文件后,我们在开启 python 统计脚本的窗口得到如下稳定的统计数据:
我们在 tsar 看到的统计数据为:
我们在 top 中可以看到 Filebeat 大致占据了 1.0 cores,限制生效。
小结:
在 6 进程数据写入日志文件时,我们在开启 python 统计脚本的窗口得到如下稳定的统计数据:
我们在 tsar 看到的统计数据为:
我们在 top 中可以看到 Filebeat 大致占据了 0.75 ~ 0.9 cores。
在 6 进程数据写入日志文件后,我们在开启 python 统计脚本的窗口得到如下稳定的统计数据:
我们在 tsar 看到的统计数据为:
我们在 top 中可以看到 Filebeat 大致占据了 1.0 cores,限制生效。
小结:
在 6 进程数据写入日志文件时,我们在开启 python 统计脚本的窗口得到如下稳定的统计数据:
我们在 tsar 看到的统计数据为:
我们在 top 中可以看到 Filebeat 大致占据了 0.7 ~ 0.75 cores。
在 6 进程数据写入日志文件后,我们在开启 python 统计脚本的窗口得到如下稳定的统计数据:
我们在 tsar 看到的统计数据为:
我们在 top 中可以看到 Filebeat 大致占据了 0.9 cores,未达到限制。
小结:
A. FB 全力采集 247B 数据(真实环境类似日志长度),速率为 ~ 40K/s,CPU 开销为 2 cores;
B. FB 在 CPU 限制 1 cores 情况下,采集 247B 数据速率为 ~ 20K/s,可以认为单核采集速率为 ~ 20K/s/core;
C. 日志单行数据越大,吞吐越小,5KB 每行已经非常夸张,即使如此,没有压缩的情况下带宽消耗 35MBps,gzip 压缩率一般为 0.3~0.4,占用带宽为 10.5~14MBps,对于千兆网卡来说压力较小;