实时日志分析系统实现
目前网上搜索开源日志,大多只有一篇:http://dongxicheng.org/search-engine/log-systems/
全面的说明了下目前市场上的产品,并列了张表做了清晰的对比:
- scribe:很久不更新,并且需要自己实现数据源(通过thrift,需要开发)
- chukwa:也很久不更新了,主要是围绕hadoop生态圈的设计,不太符合通用的情况
- flume:侧重于日志收集,在整个环节中没有涉及到日志处理分析,也没法将处理环节加入
以上几项都是对于日志收集系统,在Map/Reduce的分布式计算下再对收集的日志进行分析处理
kafka:在系统设计层面更像一个消息发布订阅系统,通过数据源push日志,存储pull日志,通过zookeeper实现分布式可用性,可以充当日志系统的收集层,为实时日志分析提供可能,但没有完善的agent,需要自行开发,在这点上fluentd则能对这块进行很好的补充,并且更加灵活
fluentd和kafka实际上功能点是重复的,但2者的侧重点是不同的
- fluentd更擅长链接不同的数据源和存储层,通过通用的json格式传递数据
- kafka更擅长在于提供复杂的日志集群基础,用完善的架构体系来保证数据传输
fluentd可以将数据同时提交到多个数据收集器:如MongoDB,Redis,HDFS还有kafka,以及splunk(日志过滤分析器),如果是基本的日志运维,fluentd+splunk已经能满足需要了
如何对日志进行实时分析,在收集完后还需要一个实时计算框架,这里选择storm
storm和kafka的集成也已经有了案例
小米运维团队做了更全面的介绍:http://noops.me/?p=1325
实时日志分析系统:fluentd + kafka + storm + Mongodb(日志存储,分析数据存储)