本篇为杂谈,只谈一个日志采集分析工具实现过程中的关键点。
对于log文件的采集需要支持分布式的集群,从多个集群机器进行日志采集。同时日志采集需要对日志文件进行类似流处理的增量实时采集,类似flume工具的一种实现模式。日志采集不是目的,而基于采集后的日志实时处理,实时处理后的实时分析才是重点。
日志文件本身是一个非结构化的文本文件,但是里面又包含了可以结构化出来的信息,因此对于日志文件是最适合采用mongoDB这种数据库进行存储。首先是对日志文件进行实施的解析和入库,在这里的难点是需要开发对于不同格式的日志文件的解析规则的适配器,如果再做的灵活一点,应该是支持所有日志文件,可以自定义相关的日志解析规则。
对于任何的日志文件,基本都可以采集的发生的时间,日志类型(info,error),日志等级,关键异常,异常详细说明等相关信息。这些信息在结构化出来后需要持久化的存储起来,采用mongoDB这种数据库可以实现本身在数据存储层的灵活水平扩展。
在对采集的日志进行处理并持久化存储入库后,接下来的工作就相当简单,即需要开发相应的日志查询和分析功能,可以根据时间段,日志类型,可以根据具体的异常编码,异常关键字内容等对日志信息进行快速的查询和定位。
在ITIL里面我们经常看到一个功能即问题树和知识库,那么基于日志的分析和处理仍然可以采用该模式,对于关键的日志异常信息的处理,我们可以将实际的处理方法和结果信息直接登记入库,同时关键日常和处理方法建立对应的关联关系,那么这就不仅仅是一个日志采集分析功能,而是一个基于日志快速的解决问题的知识库。
要将该思路实现为一个产品,涉及到诸多的分布式,云计算相关技术的应用。这个选点可能比较小,但是却有实际支撑的业务场景,能够发挥我们说的在大规模分布式集群架构下的实时流处理,实时分析,半结构化数据库的使用等。任何云技术的使用都应该根据目标驱动的方式去思考问题,而不是为了技术而技术。
青春就应该这样绽放 游戏测试:三国时期谁是你最好的兄弟!! 你不得不信的星座秘密