logstash 和filebeat 是什么关系

Python016

logstash 和filebeat 是什么关系,第1张

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,对于千兆网卡来说压力较小;