开源项目对比
开源项目对比
| 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以上。
