现主流的日志分析系统有 logstash 和 flume,结合好多网上前辈的说法,汇总了一下,但愿和你们分享与探讨,有不一样的想法欢迎留言。java
Flume
ruby
Cloudera提供的一个高可用的,高可靠的,分布式的海量日志采集、聚合和传输的系统;elasticsearch
支持定制各种数据发送方,便于收集数据,通常和 kafka 订阅消息系统搭配较多;分布式
目前有两个版本,OG和NG,区别很大,感兴趣的能够去研究一下;ide
特色:工具
一、侧重数据传输,有内部机制确保不会丢数据,用于重要日志场景;spa
二、由java开发,没有丰富的插件,主要靠二次开发;插件
三、配置繁琐,对外暴露监控端口有数据。设计
logstash
日志
elastic.co的一个开源的数据收集引擎,可动态的统一不一样的数据源的数据至目的地;
目的处理并收集日志格式,搭配elasticsearch进行分析,kibana进行页面展现;
目前最新版本5.3,集成了上述两个搭档,参考官网详解。
特色:
一、内部没有一个persist queue,异常状况可能会丢失部分数据;
二、由ruby编写,须要ruby环境,插件不少;
三、偏重数据前期处理,分析方便。
flume |
logstash |
|
结构上 |
Source、Channel、Sink | Shipper、Broker、Indexer |
简易程度 |
很繁琐,要分别做source、channel、sink的手工配置,并且涉及到复杂的数据采集环境 | 简洁清晰,三个部分的属性都定义好了,只需选择就好,并且能够自行开发插件 |
历史背景 |
最初设计的目的是为了把数据传入HDFS中,侧重传输(多路由),重稳定性 | 侧重对数据的预处理,由于日志的字段须要大量的预处理,为解析作铺垫 |
对比 |
像是散装的台式机,使用较麻烦,工具繁多,须要根据业务选择 | 更像是组装好的台式机,使用简单方便,搭配ELK更高效 |