日志采集 Agent 性能大比拼——LoongCollector 性能深度测评

简介: 为了展现 LoongCollector 的卓越性能,本文通过纵向(LoongCollector 与 iLogtail 产品升级对比)和横向(LoongCollector 与其他开源日志采集 Agent 对比)两方面对比,深度测评不同采集 Agent 在常见的日志采集场景下的性能。

1.gif


1. 背景


在数字化转型加速的今天,日志数据已成为企业运维、安全分析和业务决策的核心资产。然而,随着云计算、容器化和微服务架构的普及,传统日志采集 Agent 面临着前所未有的挑战:海量日志的实时采集需求、资源占用与成本控制的平衡难题。


iLogtail 作为阿里巴巴自主研发的高性能日志 Agent,凭借其稳定的性能和丰富的功能,长期服务于阿里云数百万用户,成为企业级日志管理系统的基石。它以低延迟、高吞吐和轻量级资源占用著称,尤其在大规模集群环境中表现卓越。然而,随着技术演进和用户需求升级,日志采集场景的复杂性与性能要求进一步提升,对工具的极致性能、灵活性和智能化提出了更高要求。


正是在这种背景下,LoongCollector 应运而生。作为 iLogtail 的下一代演进产品,它不仅继承了 iLogtail 的稳定性和可靠性,更通过全栈架构优化实现了性能的跨越式提升。


为了展现 LoongCollector 的卓越性能,本文通过纵向(LoongCollector 与 iLogtail 产品升级对比)和横向(LoongCollector 与其他开源日志采集 Agent 对比)两方面对比,深度测评不同采集 Agent 在常见的日志采集场景下的性能。


参与本次的横评的日志采集器如下,版本均采用本文撰写时的最新版本:


日志采集 Agent 版本 仓库地址
LoongCollector

3.0.10

链接

iLogtail 2.1.7 链接
FluentBit 4.0.0 链接
Vector 0.45.0

链接

Filebeat 8.17.4

链接



2. 纵向对比——LoongCollector 自我升级,超越巅峰 80%


iLogtail 已经具备相当强的日志采集能力,而作为 iLogtail 的升级演进产品,LoongCollector 则不能逊色。我们首先对比一下 LoongCollector 与 iLogtail 的极限性能。


基于真实业务场景,我们设计了五种典型日志采集与解析场景(包括单行、多行、正则解析、Json 解析和分隔符解析),并在同等硬件环境下,实测对比两者的极限吞吐量表现。


2.1 环境


机器配置:阿里云 ECS 32C64G

操作系统:Ubuntu 22.02

网络:VPC 内网


2.2 不同解析场景下的数据源


注意日志长度对性能测试的绝对数值影响很大,因此我们选取了两种不同长度的日志进行测试。


极简单行日志:长度为 128B

多行日志:长度为 512B,行首匹配长度为 1,每组多行日志包含了 23 行

复杂正则日志:长度为 512B,日志内容模拟真实的业务日志


[2025-04-03 10:02:06.561793]    [info]  [131172]        /root/stdout-test/server_stdout.go:165  log:ZQsC8JI2l9M6Zum1b09V8QZy7MBk8fI01kmg12XqfHXWxdD4SBYUdGKRH4iRCcjIVIOAXmv8I0TgQlJKtwYxAhJR9O2N1BEirA1v01IqWyGaVsxCxRjCpvhkWQ03wW3CnKUCLCndugLfWYsxiYMJs7YiqYhOlCglTj4XdUQqlOfZTrYdyFNX3fVQk9jwBAO5NEBUAo0VgL7rt86lENPr5wA1UQWNdj2id00ByhsBakCjyRP9tvxDVrTSEq5oEVowKYBYzcjJCK1q56MVDm1BhSfNGrLQifr3nYv5Z8yu1d8EAjK9iQGjVqLxz65IozXKyf40R2TZYR9TS2GAMxMyC7uIvZiMh0TRB4rQL4K4uFeOVkFMGrHG3a3GanWJyrr4wBvFh2ehKh98EGOxo3x7ZVAm3Hz


复杂 Json 日志:长度为 512B,日志内容与正则解析类似,调整为 Json 格式

复杂分隔符日志:长度为 512B,日志内容与正则解析类似,调整为 | 分隔格式


2.3 测试流程


1. 添加采集配置,采集日志文件到 SLS logstore 中(同地域,通过内网传输,避免网络导致的性能瓶颈)

2. 启动日志生成进程,重复向日志文件中写入数据(最高写入流量 1100MB/s)

3. SLS logstore 查询统计流量

4. 计算采集一分钟之后的流量均值



除此之外,我们还对比了 LoongCollector 和 iLogtail 在不同日志量级下进行极简单行日志采集时的资源占用情况,测试流程如下:


1. 添加采集配置,采集日志文件到 SLS logstore 中

2. 调整不同的日志的生成速率,启动日志生成进程,重复向日志文件中写入数据

3. SLS logstore 查询统计流量

4. 稳定采集一分钟之后,计算两分钟内的 CPU 和内存使用均值


2.4 测试结果


极限性能




LoongCollector
iLogtail
处理线程数

1

4 1 4
单行 338MB/s +78%

766MB/s +84%

190MB/s 416MB/s
多行 130MB/s +12%

490MB/s +416%

116MB/s 95MB/s
正则解析 138MB/s +34%

508MB/s +55%

103MB/s 230MB/s
Json 解析 115MB/s +35%

435MB/s +71%

85MB/s 254MB/s
分隔符解析

166MB/s +35%

625MB/s +88%

123MB/s 332MB/s


从表一中我们可以看到,LoongCollector 在五个常见的日志采集场景下的极致吞吐量都远远高于 iLogtail。尤其是在多线程的情况下,iLogtail 的性能随着处理线程数的增加,所带来的收益逐渐减少。而 LoongCollector 通过一系列优化,减少了多线程进行处理时的锁竞争问题,使得 LoongCollector 能够突破更高的吞吐量极限。


2.5 资源占用



LoongCollector (单核极限 338MB/s) iLogtail (单核极限 190MB/s)
流量(极简单行 512B)

CPU

内存 CPU 内存
1MB/s 0.70% -0%

27.85MB +12%

0.70% 24.93MB
10MB/s 3.65% -35%

28.28MB +2%

5.65% 27.74MB
50MB/s 18.34% -41%

41.42MB +8%

31.04% 38.35MB
100MB/s 35.48% -43%

47.18MB -20%

59.28% 59.27MB
200MB/s

70.72%

46.98 MB

111.19%达到极限 190MB/s

50.01MB

达到极限 190MB/s

400MB/s 120.84%
达到极限
338MB/s
35.13MB达到极限
338MB/s
采集明显延迟 采集明显延迟


从表二中我们可以看到,LoongCollector 和 iLogtail 在不同日志量级下的变化。


在 CPU 方面,LoongCollector 通过使用更低的 CPU,却能够采集比 iLogtail 高一倍的日志流量,展现了强劲的性能优势。


在内存方面,LoongCollector 在低流量下的表现与 iLogtail 相比优势差距不大。这主要是由于 LoongCollector 内部新增一些非数据面,而与稳定性相关的功能,例如更健壮的自监控等等。但随着流量的升高,LoongCollector 的内存增长幅度远低于 iLogtail,体现了 LoongCollector 优秀的内存管理。


从趋势来看,我们可以明显发现 LoongCollector 的 CPU 使用率基本上随着流量呈线性增长,而 iLogtail 的 CPU 使用率则呈现了一定的膨胀。两者之间的差距越来越大。核心原因在于 LoongCollector 通过复用对象池、优化序列化等技术,尽可能减少了数据在 Pipeline 中的重复计算和复杂度。


3. 横向对比——LoongCollector 业界领先,10 倍吞吐,20% 开销


LoongCollector 与自身相比性能存在显著进步的同时,与其他开源 Agent 相比,也保持了持续的领先优势。为了验证 LoongCollector 的采集性能优势,我们选取了其他三种广泛使用的日志采集 Agent:FluentBit、Vector 和 Filebeat 进行端到端的对比。


为了对比的公平性,我们对实验进行了如下的几点设置:


1. 为了验证端到端的采集性能,我们以完整的日志采集解决方案作为对比。

   a. 方案一:LoongCollector 采集日志到 SLS Logstore 中。

   b. 方案二:开源组件,其他开源采集 Agent 采集到 Kafka 中。


2. 为了避免网络和存储端影响测试结果,所有 Agent 均通过 VPC 内网发送数据,存储分区数均提前扩容。


3. 除了调整流控限制之外,所有 Agent 均采用默认的参数配置。


另外,测试流程与数据源与上一章相同,保证资源占用监控的公平性。


3.1 测试结果


极限性能




LoongCollector

FluentBit Vector Filebeat
版本 3.0.10

4.0.0

0.45.0 8.17.4
单行 338MB/s

27MB/s

16MB/s 7MB/s
多行 130MB/s

17MB/s

15MB/s 7MB/s
正则解析 138MB/s

17MB/s

38MB/s 不支持


1. 性能优势其他日志采集器,在默认配置时,性能均无法满足 50MB/s 的采集速度,与 LoongCollector 形成了显著的差距。


2. 处理能力大多数日志采集 Agent 都提供了一定的日志处理能力。但各方对于处理能力的思考有所不同。例如,Filebeat 在之前旧版本支持通过 grok 进行类似正则解析提取字段,但在新版本中移除了该插件。核心原因在于 Filebeat 在 ELK 体系中更加定位为单纯的采集器,处理能力则交给了下游的 Logstash 或者存储端。


资源占用



场景

流量

LoongCollector FluentBit Vector Filebeat

极简单行128B

1MB/s

0.70%27.85MB

2.95% +321%

27.60MB -1%

27.51% +3830%

137.22MB +393%

58.23% +8219%

151.44MB +444%

5MB/s

2.26%26.91MB

29.95% +1225%

32.89MB +22%

101.28% +4381%

241.16MB +796%

259.82% +11396%

154.45MB +474%

10MB/s

3.65%28.28MB

42.45% +1063%

42.69MB +51%

217.92% +5870%

306.00MB +1003%

性能不足

极简单行512B

1MB/s

0.35%25.80MB

1.57% +349%

28.38MB +10%

0.61% +74%

101.77MB +294%

22.91% +6446%

153.99MB +497%

5MB/s

0.96%25.73 MB

6.16% +542%

38.74MB +51%

31.69% +3201%

144.53MB +462%

93.73% +9664%

156.93MB +510%

10MB/s

3.13%28.24 MB

16.41% +424%

43.21MB +53%

55.12% +1661%

153.75MB +444%

性能不足

极简多行512B

1MB/s

1.22%25.03 MB

4.08% +234%

29.39MB +17%

15.63% +1181%

125.17MB +400%

51.64% +4133%

147.19MB +488%

5MB/s

4.35%25.82 MB

19.19% +341%

39.89MB +54%

69.87% +1506%

159.85MB +519%

272.33% +6160%

148.03MB +473%

10MB/s

8.52%28.30MB

44.69% +425%

43.35MB +53%

129.55% +1420%

175.80MB +578%

性能不足

正则512B

1MB/s

1.04%27.05 MB

4.00% +285%

26.99MB -0.2%

1.65% +59%

134.21MB +396%

不支持
5MB/s

4.00%26.96 MB

20.84% +421%

34.97MB +30%

53.63% +1240%

184.10MB +583%

不支持
10MB/s

8.17%29.26 MB

48.25% +491%

42.50MB +45%

109.36% +1239%

213.32MB +683%

不支持


从测试结果中,我们可以看到 LoongCollector 在资源占用方面遥遥领先于其他采集 Agent,特别是随着日志流量的增大,这种领先优势更加明显。在这些结果中,我们还可以发现很多有意思的现象:


1. 日志长度的影响:Vector 和 Filebeat 在采集 128B 极简单行日志时,表现反而不如多行日志。而所有 Agent 在采集 512B 的日志时性能都优于 128B,说明相同流量下,日志长度越短,数量越多,给采集带来的压力越大。但 LoongCollector 所出现的膨胀要远远低于其他采集 Agent。


2. 编码限制:LoongCollector 使用 Protobuf 序列化数据发往 SLS,其余的采集 Agent 则采用了 plain 编码。从 CPU 层面来看,LoongCollector 在额外多了一次序列化的情况下,仍然能够保证明显的优势。


特殊情况:Vector 在进行正则解析,并发送数据至 Kafka 时,plain text 编码仅支持选取一个字段,无法表达正则解析后的多个字段。所以,在测试中使用了 JSON 编码,但导致了最终写入 Kafka 的流量膨胀了两倍。


4. 展望


在日志采集领域,性能始终是衡量工具价值的核心标尺。通过与 iLogtail 的纵向对比,我们见证了 LoongCollector 在资源利用率、吞吐量和稳定性上的跨越式提升——它不仅继承了 iLogtail 的高效基因,更以更低的 CPU 占用和更高的日志处理并发能力,重新定义了日志采集的性能基准。而横向对比中,LoongCollector 更以实测吞吐量超主流开源工具 3 倍以上的硬核数据,强势登顶日志采集性能榜单。


除此之外,LoongCollector 不仅仅一个日志采集 Agent,更是一个全面的可观测数据采集 Agent,支持 metric、trace 等多种数据类型,Prometheus、eBPF 等数据源。在这些方面,LoongCollector 相较于其他开源项目,也存在着一定的优势。


未来,LoongCollector 将持续进化,以更强大的性能和更开放的生态,助力企业释放数据价值。

作者介绍
目录