日志采集agent对比

2020-03-17 18:47:57 浏览数 (1)

一、常见agent 对比

功能项

logstash

filebeats

fluentd

logtail(阿里)

loglistener(CLS)

日志读取

轮询

轮询

轮询

事件

事件

日志格式

支持delimiter、key-value、json等主流格式

json、单行和多行

支持delimiter、key-value、json等主流格式

支持delimiter、key-value、json等主流格式

支持delimiter、key-value、json等主流格式

采集源

文件和TCP(Lumberjack和syslog)

文件和TCP(syslog和n分隔符)

文件和TCP(json)

文件和TCP(Lumberjack和syslog)

文件

发送压缩

插件支持

支持

插件支持

支持

支持

热升级

不支持

不支持

不支持

支持

不支持

实现语言

JRuby(JVM)

go

CRuby和C

C/C

C/C

多核支持

支持

支持

支持但受GIL限制

支持

不支持

支持平台

Linux、windows和MAC

Linux、windows和MAC

Linux、windows和MAC

Linux和windows

Linux

备注

可以作为采集agent和server,插件很多ali提供了直接写日志服务的插件

采集agent直接写ES或者支持输出Lumberjack 协议

支持写入到kafka、hdfs等

写入到aliyun日志服务, 或者接收Lumberjack协议的输入

写入到腾讯云CLS

注:beats系列(MetricBeat、PacketBeat、Winlogbeat、Auditbeat、Filebeat、Heartbeat等)

特点对比:

  • Logstash支持所有主流日志类型,插件支持最丰富,可以灵活DIY,但性能较差,JVM容易导致内存使用量高。
  • filebeats 很轻量单支持的特性优先,性能很好
  • Fluentd支持所有主流日志类型,插件支持较多,性能表现较好。
  • Logtail占用机器CPU/内存资源最少,性能吞吐量较好,针对常用日志场景支持全面,但缺少插件等机制,灵活性和可扩展性不如以上两个客户端。

二、协议格式

常用的协议格式有:

  1. syslog(RFC3164和RFC5424)
  2. Lumberjack 文本编码的格式按照kv顺序存储
  3. n 分隔
  4. json
  5. pb : 参考 https://cloud.tencent.com/document/product/614/16907

三、对比loglistener和logtail

监测指标: cpu 、内存、磁盘、网络消耗和 qps情况,监控方式3秒钟一个点求均值。

测试日志格式: nginx 日志 分隔符和单行全文

测试环境: CVM: 2cpu 4Gmem 200Mbps

四、对比结果

  1. 单行全文-10w/s qps

分析: cpu使用率logtail比loglistener低5%左右,但是内存比loglistener高了差不多一倍,网络消耗基本差不多,采集能力基本上都是10w/s没有积压。

2. 分隔符-10w/s qps

分析: 采集能理上loglistener是1.96w/s,logtail是4.93w/s都有积压,cpu logtail 高20%,单内存消耗是loglistener

的3.5倍,网络差不多是4倍。

3. 对比分析

测试项

qps

cpu

内存

网络

单行全文(10w/s)

loglistener

10w/s

30%

40MB

13MB

logtail

10w/s

38%

80MB

13MB

分隔符(10w/s)

loglistener

3.69w/s

80%

40MB

<5MB

logtail

4.93w/s

100%

145MB

20MB

0 人点赞