基于Flume的分布式日志聚合系统的研究

数码
科技视界
2017年09月05日 22:51

一种基于Flume的分布式日志采集分析系统

陈军

【摘 要】互联网的迅猛发展以及大数据相关技术的兴起,使得日志数据的规模日益剧增,给已有的日志采集及分析系统带来了挑战;本文结合使用Flume、Elasticsearch 以及 Kibana等技术手段提出了一种分布式的日志采集分析系统,从系统设计和架构等方面提出了新的解决思路,并针对Flume的访问日志进行了实时采集和分析及展示。

【关键词】日志采集;Flume;Elasticsearch;Kibana

0 引言

当前随着“互联网+”时代的到来,分布系统需要处理的数据量更大、数据种类更丰富和数据实时性要求更高,面向分布式实时数据的分析技术日趋重要。面对高并发海量数据的实时处理,构建满足负载均衡、高可扩展性、高可用性和持久化多种特性的数据分析系统具有较大挑战。数据采集器在应对高并发的数据推送请求时,应该进行负载均衡,最大程度的减少数据的缓存时间;数据采集系统的高扩展性主要用于实现异构数据源的处理,对结构化和非结构化数据的兼容处理;面向数据流的实时数据分析系统需要通过主-备模式的集群保障系统的高可用;同时要对原始数据和数据分析指标进行持久化,支持高并发的写入。本文以开源的Apache Flume为底层数据采集技术,从数据聚合的视角对分布式日志系统进行研究。

1 日志分析技术国内外研究现状

在大数据时代,日志数据分析的多样化需求催生了多种日志分析技术。Apache Flume、ELK(ElasticSearch+Logstash+Kibana)、Scribe和Chukwa是等到广泛关注和使用的开源日志分析技术。Flume当前是Apache支持的项目,能够为高效的采集、聚合和传输海量日志数据提供分布式、可靠的服务。

Flume采用agent、cllector和storage agent的三层数据采集架构,agent支持console、RPC、text、syslog和tail等多种数据形式,cllector将多个agent的数据汇总后存储到storage中。Flume利用多Master机制保障了高可用性,通过Zookeeper实现了配置数据的一致性。ELK是将ElasticSearch、Logstash和Kibana三种开源技术集成为一体实现数据的采集、过滤、分析和可视化的日志分析技术。Scribe 是由Facebook开发并开源的日志分析采集系统,通过共享队列将多数据源的日志暂存并根据中央存储系统的健康程度选择本地持久化还是推送到中存储系统。Chukwa是一个基于Hadoop的HDFS和mapreduce计算模型的分布式数据采集系统,包括agents、adaptor、cllectors和map/reduce jobs四大部件。

开源日志分析技术涵盖了普适环境下的数据采集模型的多个步骤:数据采集、数据缓冲、数据过滤与转换、数据存储。基于普适环境下的数据采集模型提高数据采集的高可扩展性、数据缓冲的低延迟和数据存储的高可用性将会是数据分析系统的研究热点。

2 基于规则引擎的日志聚合方案

规则引擎是与应用程序相嵌套的一种组件,实现了业务规则和应用程序代码的有效分离,适用于规则推理和业务编排。在日志分析过程中将繁杂的分离规则使用规则引擎进行描述,可以实现分析过程中自动高效的數据路由与聚合。Drools是基于rete算法将分离的匹配项以不同内容动态的构建层次化得匹配树,是当前效率较高、扩展性好的开源规则引擎。

在Flume中,除了agent、channel和sink三种最重要的组件,还有拦截器、channel选择器、sink处理器等增加Flume灵活性的组件。拦截器是位于agent和channel之间的用于拦截来自数据源的各种事件,多个拦截器构成的链条构成了漏斗型的数据过滤工具。Channel选择器用来决定将接收到的事件写入到哪个channel,支持必选和可选两种类型的参数配置。sink处理器通过事先设定的sink组对组内多个sink如何从各自的channel读取事件,进而实现层次化Flume中数据推送的负载均衡和故障转移。在Flume中,所有的组件的集成都是通过读取Context实例化的键值类型的配置信息进行的。因此,为了实现Flume更大程度的灵活性,减少繁琐的配置型信息的管理,有必要探索充分发挥规则引擎规则推理能力的高效方法。

在深入分析interceptor、channel和sink可定制化的基础上,作者对规则引擎如何与Flume多个组件进行结合进行了抽象。这里以channel选择器的数据路由与聚合规则为例,对使用Drools规则引擎定义规则、生成规则摘要、构造规则模型以及规则执行器的处理全过程进行了剖析。提出了具有普适意义的日志聚合规则编程模型。

3 分布式日志聚合系统框架

在分析和研究Flume,以及日志聚合规则的基础上,结合日志分析系统分布式、高并发的特性,将日志聚合系统分成数据采集、聚合服务和数据可视化三个层次。日志采集主要完成对多样化数据源数据的采集,能够对结构化和非结构化数据进行初步的汇总;聚合服务包括高并发请求的转化和分离、数据流服务和日志数据的聚合;数据可视化支持定制化的数据指标显示,实现对应用程序、服务器负载性能和关键业务多维度数据指标的展示。

日志采集层主要采用RPC的形式收集数据,并将数据推送到influxdb实时数据库中,完成数据的初步采集。随着数据源的不断增加,在日志采集末端需要构建层次化的采集模型有效的均衡influxdb接收数据源推送数据的压力。

聚合服务层一方面要对高并发的日志数据分析请求进行转化和分离,提供数据流服务实现负载均衡;另一方面要对实时数据流进行分析,根据聚合规则模型实现日志的分类汇总。Influxdb对时序数据流根据关键词进行初步的过滤,获取目标分析数据。结合基于规则引擎构建的日志聚合方案依据日志信息的上下文对日志进行分类,当前端请求日志分析指标时根据不同维度提供数据流服务。

日志分析指标可视化,该层次首先接收数据流服务提供的实时数据,并基于Granfana实现的日志分析指标展示可定制化。日志分析指标持久化可以实现对历史日志分析指标的存储,便于观察关键指标的长期趋势。

4 总结

论文基于Flume的分布式日志聚合系统研究主要从日志分析技术对比、基于规则引擎的日志聚合方案设计以及日志聚合系统的框架设计与实现三个方面进行了研究。在充分分析现有日志分析技术的基础上,对数据聚合规则如何快速构建的关键问题进行研究,本文提出了基于Drools规则引擎构建聚合规则的普适性的编程模型。并通过构建层次化得分布式日志聚合系统架构对模型进行验证,实验表明规则引擎的引入,简化了配置数据的管理,对Flume扩展性和灵活性有很大提升。

【参考文献】

[1]宋密,王劲松.基于Flume的网络安全可视化系统[J].天津理工大学学报,2015,02:38-42.

[2]马延超,王超,李尚同.基于大数据技术的日志统计与分析系统研究[J].电脑知识与技术,2016,(34):9-11.

[责任编辑:朱丽娜]

家电之家©部分网站内容来自网络,如有侵权请联系我们,立即删除!
数据 日志 规则
你该读读这些:一周精选导览
更多内容...

TOP

More