一、各中间件对比
序号 | 名称 | 简介 | 架构 | 功能 | 安装环境 | 优势 | 劣势 | 社区活跃程度 |
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.社区活跃度低 |