论文部分内容阅读
随着云计算的发展,现有的云计算平台都有着庞大的组织和复杂的结构。平台中各个节点和组件模块产生的日志数据巨大且分散在不同的地方,同时各个日志源独立地产生不同格式的日志数据,使得日志数据的利用率低下,无法从已有的日志数据中得出有价值的信息。这就加大了云平台开发与维护的难度。本文正是针对这样的现状和需求,围绕云平台中日志数据的管理与分析展开研究,并设计和实现了一个适用于云平台的日志管理系统。从日志的收集到日志的分析以及最后的结果展示,将日志系统划分为日志聚合模块、消息队列模块、日志分析模块以及结果展示模块。对每一个模块都进行了详细的设计和实现,其中日志聚合模块和日志分析模块是最重要的两个模块。针对云平台复杂的架构,在flume的基础上实现了一个满足高可用性、高可靠性、可扩展性以及实时性要求的分布式日志收集模块。并且在实现中针对flume的不足之处做出了相应的改动,包括功能上的改进和性能上的优化两方面。功能改进:(1)使HdfsSink能够主动创建索引,使得写入到HDFS的文件可以根据索引进行切分,从而方便进行并行数据处理;(2)实现通道切换的功能,使得各个日志采集agent发送到中心服务器的日志数据可以自动根据当前情况选择不同的通道写入,提高了吞吐量和稳定性。性能优化:(1)根据实际需求调整flume的基础参数;(2)将HdfsSink细分,提高数据写入存储的效率。日志分析模块首先提出了日志分析的两种方法,分布式调用跟踪法和基于时间滑动窗口的故障日志关联分析法。分布式调用跟踪法提供了一种构建分布式系统中请求调用链路的方法,使得分布式系统中构建特定请求的完整路径、计算特定请求耗时、计算请求中各个处理过程耗时以及分布式调试成为可能。故障日志关联分析是在现有的经典关联分析算法的基础上结合时间滑动窗口的概念形成的一种适合故障日志间关联关系分析的方法。在设计和实现中对滑动窗口的确定方法进行了改进,避免了冲突和截断这两种典型的错误。故障日志关联分析最终输出的结果是故障传播树,利用这棵树可以做到故障预测和故障定位。最后,对系统进行了多方面的测试,实验表明本文设计的日志管理系统能够适应云平台这样的大规模分布式系统,做到高吞吐、高可靠、低延时以及高效率,同时也做到了故障预测与定位,为系统管理员和运维人员提供了有价值的信息。