DevOps之 日志采集agent 性能对比

日志采集agent 性能对比

Posted by 董江 on Monday, March 6, 2023

开源项目对比

Promtail Loggie Filebeat Fluentd Logstash Flume
开发语言 Golang Golang Golang Ruby JRuby Java
多Pipeline 不支持 支持 单队列 单队列 支持 支持
多输出源 不支持,仅一个Output 支持 不支持,仅一个Output 配置copy 支持 支持
中转机 不支持 支持 不支持 支持 支持 支持
日志报警 支持 支持 不支持 不支持 不支持 不支持
Kubernetes容器日志采集 只支持容器stdout 支持容器的stdout和容器内部日志文件 只支持容器stdout 只支持容器stdout 不支持 不支持
配置下发 手动配置 Kubernetes下可通过CRD配置,主机场景配置中心陆续支持中 手动配置 手动配置 手动配置 手动配置
监控 原生支持Prometheus metrics 原生支持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;Promtail v2.7.4,

测试目的:

Filebeat、Promtail和Loggie的性能对比

测试思路:

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

测试详情:

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

[5/Mar/2023:11: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}

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

在保证Agent规格资源充足的情况下,修改采集的文件个数、发送客户端并发度(配置Filebeat workerLoggie 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
Promtail 3.2G 1 - 1.3c 58MiB 127MiB/s
Promtail 3.2G 1 - 1.4c 70.3MiB 128MiB/s
Promtail 3.2G 10 - 1.1c 71MiB 215MiB/s

测试结论:

相同压测条件和场景下:

  • Promtail、Loggie消耗的CPU大概是 Filebeat的1/10,同时发送吞吐量为1.6~2.9倍。

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

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

「如果这篇文章对你有用,请随意打赏」

Kubeservice博客

如果这篇文章对你有用,请随意打赏

使用微信扫描二维码完成支付