日志收集中间件比较

时间:2022-01-31 03:55:08

一、各中间件对比

序号 名称 简介 架构 功能 安装环境 优势 劣势 社区活跃程度
1 Scribe

Scribe是facebook开源的日志系统,用于大规模日志分析处理,通常与Hadoop结合,使用scribe向HDFS中push日志

日志收集中间件比较

scribe从各种数据源上收集数据,放到一个共享队列上,然后push到后端的*存储系统上

开发语言 C

a.安装thrift依赖软件

g++,boost, autoconf, libevent,

Apache ant, JDK

b.安装thrift

c.安装Hadoop

d.安装scribe


1.由于采用了thrift,客户端可以采用各种语言编写

2.scribe为日志收集提供了一种容错且可扩展的方案

3.代码量少

1.维护成本较高

a安装复杂,依赖的包

需要设置的环境变量非常多

b.版本差异较大,各个版

本存在兼容问题

1.代码停止维护

2.社区活跃度低,相关资料较少

2 Flume Flume(NG)是Cloudera开源的一个分布式、可靠的系统,能够将不同数据源的海量日志数据进行高效收集、聚合、移动,最后存储到一个中心化数据存储系统中

日志收集中间件比较

重构后的NG版本,它具有基于流式数据流的简单而灵活的架构,服务可靠性机制和故障转移、恢复机制,容错能力

开发语言 Java

jdk

1.支持集成各种主流系统和框架:Hadoop、HBase、Hive、Kafka、es、Thrift、Avro等

2.代码模块清晰

1.sink在向后端存储输出时,如果后端性能跟不上,agent会有oom的问题

2.消耗内存资源

1.apache *开源项目,文档及社区活跃度还可以。2017年10月4日发布1.8.0release版

2.美团点评等再用

3 Logstash Logstash是一个开源的服务端数据处理管道,可以同时从多个源中获取数据,进行转换,然后将其发送到指定位置

日志收集中间件比较

logstash的input组件可以收集业务日志,安全日志,访问日志等,通过filters组件解析过滤后,由ouput组件存储到指定位置,

开发语言 Jruby

jdk

1.几乎可以访问任何数据,输出源可以和多种外部应用结合file,redis,kafka,mq

2.支持各种自定义插件

3.通常和es、Kibana结合使用,整合较好,ELK的方案比较成熟

4.代码是ruby+java写的

1.运行在Jvm之上

2.消耗CPU和内存资源

3.ruby写的,一些疑难问题需要结合源码排查的需要一些时间

1.社区活跃

2.业内用的比较多,linkedin、斗鱼、挖财等


4

Beats

Filebeat

Filebeat是Elastic Stack的一部分,提供轻量型方法,用于转发日志文件

日志收集中间件比较

定制采集日志文件,主要解决Logstash耗费资源的问题,一般Filebeat进行采集,LogStash去抽取过滤存储到es

开发语言 Golang

 

1.轻量

2.对服务器资源占用低



1.功能单一

2.输入源不同,需要不同的beat去获取数据

1.社区活跃度一般

2.比较新,观望中

5 Chukwa

Chukwa是一个用于监视大型分布式系统的开源数据收集系统。其建立在Hadoop分布式文件系统(HDFS)和Map/Reduce之上,并继承了Hadoop的可扩展性和健壮性

日志收集中间件比较

通过agent采集数据存储到hdfs,经mapreduce计算后分析数据

开发语言 Java

a.hadoop

b.maven

1.大规模日志采集

2.代码量多

1.和其它组件集成不好

2.实时性差

1.apache *开源项目

2.社区活跃度低