日志组件概述

作者:henrystark [email protected] 
Blog:  http://my.oschina.net/hanrui90/blog

日期:20151121 周六
本文遵循CC协议:署名-非商业性使用-禁止演绎 2.5(
https://creativecommons.org/licenses/by-nc-nd/2.5/cn/)。可以自由拷贝,转载。但转载请保持文档的完整性,注明原作者及原链接。如有错讹,烦请指出。
(I like thinker or creater. If you are a good follower and get the key point by learning others, don't say you own it.)

==========================================================

这篇blog写一些关于日志系统设计的思考,涉及许多开源组件,参考了一些文章。


想要搭建一套完善的后台服务体系,日志是必不可少的。基于原始访问日志,可以挖出很多信息。给力的日志系统应包括收集、实时和离线计算组件。

一个适应多种需求的日志系统必然是站在更高的层面来思考的。打比方说,多数网络库设计都提及“event”的概念。同样的,多数日志系统也将日志看做“event”。


一、日志组件设计规则

日志源通常是分散的,而计算和入库需要汇总日志。从概念上拆解,日志处理的关键词有:

    logging 、event streaming、processing

    logging指的是产生日志的源agent,或将日志入库的组件,和日志产生、存储有关。

    event streaming是指日志从产生到最终入库之间发生的事件流。

    processing指日志的过滤、聚合等。

这几个关键词囊括了日志系统设计的关键指向,但不够具体,具体到组件层面,一个完整的日志系统包含有:

    collection、transport、storage、analysis组件

    collection指各个分布的log机对server的日志进行汇总。

    transport指日志传输,包括协议格式、输出和接收。

    storage包括raw日志源存盘和处理后日志入库等。

    analysis就是挖数据了。


二、日志使用场景及相应设计

    日志使用场景可以划分为监控、实时、离线。监控场景关注异常量,指标较少,根据阈值报警,实时性要求高,通常不要求高存储。实时场景关注初步处理后的数据,实时性要求较高。离线场景关注全量数据,可以做任意维度的数据计算。

    实时数据是摘要性的,要求延时尽可能小。离线全量数据可以用来做事后分析,比如复查某些服务状况;离线场景更关注如何挖数据,这涉及到如何存储原始日志文件和建立索引查询、如何进行分析等。

    从上面的叙述中,我们可以得出日志系统组件涉及的大致走向。storm+kafka实现流式订阅、查询、数据汇总,可以通过自定义的etl规则来筛选数据,实时性高,但不关注数据最后的计算。storm+kafka可以满足监控和实时日志汇集的场景。离线全量数据需要高可用的全量日志收集框架。离线日志分析需要hadoop MR计算和日志文件索引组件。

    全量日志收集框架并不难。最简单的实现可以从0开始,只需要完成log机汇总和传输即可。难的是方便的实时和离线查询。实时查询是storm+kafka的长处。离线查询产品splunk、loggly有做。

    后续博文将从日志收集、实时查询、离线查询和计算三个方面展开。

        日志收集组件:logstash、fluentd、flume

        实时查询:storm+kafka

        离线查询和计算:elasticsearch、hadoop

    

引:

【1】http://jasonwilder.com/blog/2013/07/16/centralized-logging-architecture/,

       日志框架

【2】http://jasonwilder.com/blog/2012/01/03/centralized-logging/,日志框架

【3】http://dataunion.org/19045.html,flume+storm+kafka搭建大数据实时系统

【4】http://storm.apache.org/index.html, storm

【5】http://www.searchtb.com/2012/09/introduction-to-storm.html,storm

【6】http://blog.csdn.net/weijonathan/article/details/18301321,flume+storm+kafka

【7】http://www.cnblogs.com/panfeng412/archive/2013/02/21/open-source-real-time-stream-processing-systems.html,storm等

【8】http://blog.sae.sina.com.cn/archives/3183,kafka等

【9】http://tech.meituan.com/mt-log-system-arch.html,美团flume

【10】http://jasonwilder.com/blog/2013/11/19/fluentd-vs-logstash/ ,fluetd

【11】http://blog.csdn.net/pelick/article/details/18193527 ,flume

【12】http://hekad.readthedocs.org/en/v0.9.2/ ,heka日志处理

 

你可能感兴趣的:(hadoop,开源,elasticsearch,Flume,日志系统,日志收集,实时查询,storm+kafka,离线分析)