开源项目对比

开源项目对比

| Loggie| Filebeat| Fluentd| Logstash| Flume
---|---|---|---|---|---
开发语言| Golang| Golang| Ruby| JRuby| Java
多Pipeline| 支持| 单队列| 单队列| 支持| 支持
多输出源| 支持| 不支持,仅一个Output| 配置copy| 支持| 支持
中转机| 支持| 不支持| 支持| 支持| 支持
日志报警| 支持| 不支持| 不支持| 不支持| 不支持
Kubernetes容器日志采集| 支持容器的stdout和容器内部日志文件| 只支持容器stdout| 只支持容器stdout| 不支持| 不支持
配置下发| Kubernetes下可通过CRD配置,主机场景配置中心陆续支持中| 手动配置| 手动配置| 手动配置| 手动配置
监控| 原生支持Prometheus metrics,同时可配置单独输出指标日志文件、发送metrics等方式| API接口暴露,接入Prometheus需使用额外的exporter| 支持API和Prometheus metrics| 需使用额外的exporter| 需使用额外的exporter
资源占用| 低| 低| 一般| 较高| 较高

基准性能测试与对比

测试环境:

  • 物理机 48C,256G
  • Kafka 3 Broker,挂载SSD盘
  • Filebeat v7.8版本,无配置processor等处理;Loggie默认包含cost、retry、metric interceptor;

测试目的:

Filebeat和Loggie的性能对比

测试思路:

Filebeat和Loggie,均采集日志发送至Kafka,观察相应的资源占用和发送吞吐量

测试详情:

单文件自动生成5000000行日志,每行内容如下所示:

[13/May/2021:10:20:29 +0800] 0.015 10.200.170.107 "GET /static/3tJHS3Ubrf.html?activity_channel_id=22=1_00000&fromMiniapp=1&miniapp_uuid=uEd93lG2eG8Qj5fRXuiJwNt4bmiylkmg HTTP/1.1" 200 138957 "110.183.45.54, 10.200.151.37" act.you.163.com "" "Mozilla/5.0 (Linux; Android 8.1.0; PADM00Build/O11019; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/67.0.3396.87 XWEB/568 MMWEBSDK/190102 Mobile Safari/537.36 MMWEBID/6881 MicroMessenger/7.0.3.1400(0x2700033B) Process/appbrand0 NetType/WIFI Language/zh_CN miniProgram" "" [127.0.0.1:8990] [0.014] [] [] immsg={"st":1553307293614,"sb":138963,"rc":200,"cf":{"sr":1},"if":"default","ut":14,"sv":"static","pd":"activity","qb":764}

配置Filebeat和Loggie采集日志,并发送至Kafka某个Topic,不使用客户端压缩,Kafka Topic配置Partition为3。

在保证Agent规格资源充足的情况下,修改采集的文件个数、发送客户端并发度(配置Filebeat worker和Loggie parallelism),观察各自的CPU、Memory和Pod网卡发送速率。

测试得到如下数据:

Agent 文件大小 日志文件数 发送并发度 CPU MEM (rss) 网卡发包速率
Filebeat 3.2G 1 3 7.5~8.5c 63.8MiB 75.9MiB/s
Filebeat 3.2G 1 8 10c 65MiB 70MiB/s
Filebeat 3.2G 10 8 11c 65MiB 80MiB/s
Loggie 3.2G 1 3 2.1c 60MiB 120MiB/s
Loggie 3.2G 1 8 2.4c 68.7MiB 120MiB/s
Loggie 3.2G 10 8 3.5c 70MiB 210MiB/s

测试结论:

相同压测条件和场景下:

  • Loggie和Filebeat消耗的CPU相比,大概仅为后者的¼,同时发送吞吐量为后者的1.6~2.6倍。

  • Memory相当,均处于较低的水准。

  • Filebeat的极限吞吐量存在瓶颈,80MB/s后很难提升,而Loggie则可以达到200MiB/s以上。