现主流的日志分析系统有 logstash 和 flume,结合好多网上前辈的说法,汇总了一下,希望和大家分享与探讨,有不同的想法欢迎留言。

Flume 

Cloudera提供的一个高可用的,高可靠的,分布式的海量日志采集、聚合和传输的系统;

支持定制各类数据发送方,便于收集数据,一般和 kafka 订阅消息系统搭配较多;

目前有两个版本,OG和NG,区别很大,感兴趣的可以去研究一下;

特点:

1、侧重数据传输,有内部机制确保不会丢数据,用于重要日志场景;

2、由java开发,没有丰富的插件,主要靠二次开发;

3、配置繁琐,对外暴露监控端口有数据。

wKiom1jp3WvRAZAqAACg0ITYDGM341.png


logstash 

elastic.co的一个开源的数据收集引擎,可动态的统一不同的数据源的数据至目的地;

目的处理并收集日志格式,搭配elasticsearch进行分析,kibana进行页面展示;

目前最新版本5.3,集成了上述两个搭档,参考官网详解

特点:

1、内部没有一个persist queue,异常情况可能会丢失部分数据;

2、由ruby编写,需要ruby环境,插件很多;

3、偏重数据前期处理,分析方便。

wKiom1jp5cagErcyAAIGKSN7gaA252.png



flume
logstash
结构上
Source、Channel、SinkShipper、Broker、Indexer
简易程度
很繁琐,要分别作source、channel、sink的手工配置,而且涉及到复杂的数据采集环境简洁清晰,三个部分的属性都定义好了,只需选择就好,而且可以自行开发插件
历史背景
最初设计的目的是为了把数据传入HDFS中,侧重传输(多路由),重稳定性侧重对数据的预处理,因为日志的字段需要大量的预处理,为解析做铺垫
对比
像是散装的台式机,使用较麻烦,工具繁多,需要根据业务选择更像是组装好的台式机,使用简单方便,搭配ELK更高效