一种基于分布式的海量日志采集系统的制作方法

文档序号:6551224
一种基于分布式的海量日志采集系统的制作方法
【专利摘要】本发明公开了一种基于分布式的海量日志采集系统,该系统包括数据源层、分布式缓存层、分布式存储与计算层、业务处理层、可视化展示层和统一调度与管理模块。通过本发明能够有效应对日志采集与高速入库的问题,同时,使用分布式存储与搜索引擎技术,加快查找与检索的速度,从而实现了高速、准确、可靠地对海量日志进行采集与分析。
【专利说明】一种基于分布式的海量日志采集系统
【技术领域】
[0001]本发明涉及计算机【技术领域】,尤其涉及一种基于分布式的海量日志采集系统。
【背景技术】
[0002]随着云计算、移动互联网、物联网的崛起与发展,大数据的时代已经来临。对大数据业务系统进行日志采集与分析,是评价节点主机健康度、对系统出现的问题进行分析、展示各类报表的依据所在。
[0003]开源的海量日志解决方案有很多,例如FaceBook的Scribe、Apache的Chukwa> LinkedIn的Kafka、Cloudera的Flume等,也有综合的解决方案,例如Kibana+Elasticsearch+LogStash、LogAnalyzer+MySQL+RSyslog> Splunk0 这些角军决方案,他们都具备三个基本组件,分别为agent、collector和store,其中agent封装数据源,将数据源中的数据发送给collector,collector接收多个agent的数据,并进行汇总后导入后端的store中,store为中央存储系统,应该具有可扩展性和可靠性,应该支持当前非常流行的HDFS。agent必须安装部署在进行日志采集的主机上面,还要配置相关参数以确定collector所在主机的位置。但是该方法中服务器端的安装部署比较麻烦,大部分都需要使用源代码进行编译安装,而且,开源的软件基本是国外的软件,由于中国大陆对国外大部分网站的封锁以及国外某些网站对中国的封锁,因此,有可能下载依赖软件的时候,会出现拒绝连接的问题。
[0004]Storm是一个实时流计算框架,可以以近实时的速度对输入源进行处理,然后输出。Storm具有如下的特性:
[0005]易于扩展。Storm使用Zookeeper进行集群协调,这样可以充分保证大型集群的良好运行。
[0006]每条消息的处理都可以得到保证。
[0007]Storm集群管理简易。
[0008]Storm的容错机能很好。一旦Topology递交,Storm会一直运行它直到Topology被废除或者被关闭。而在执行中出现错误时,也会由Storm重新分配任务。
[0009]—般使用Java,但是Storm中的Topology可以用任何语言设计。
[0010]但是Storm的Topology的业务逻辑,需要自己写代码实现,一定要在Spout中指定数据来源。

【发明内容】

[0011]本发明为了解决现有技术中的不足和缺陷,提出一种基于分布式的海量日志采集系统,可以有效应对日志采集与高速入库的问题,同时,使用分布式存储与搜索引擎技术,加快查找与检索的速度,从而实现了高速、准确、可靠地对海量日志进行采集与分析。
[0012]一种基于分布式的海量日志采集系统,其通过在目标主机上安装Agent进程,对目标主机的文本、应用程序、数据库等日志信息进行有选择地定向推送到服务器集群的统一访问接口,服务器端采用了分布式缓存与实时流处理框架技术;该系统包括数据源层、分布式缓存层、分布式存储与计算层、业务处理层、可视化展示层和统一调度与管理模块。
[0013]数据源层,由数据采集组件(生产者)模块对各个节点上面的文本、应用程序、数据库等进行采集,推送到分布式缓存层。
[0014]分布式缓存层,由LVS对各个节点的消息队列组件进行负载均衡,提供一个统一的接口来接收并写入数据源节点推送过来的数据,等待分布式存储与计算层的数据采集组件(消费者)来读取。
[0015]分布式存储与计算层,提供存储与计算的功能,包括数据采集组件(消费者)模块、离线计算模块、实时计算模块、分布式存储和搜索引擎;其中,数据采集组件(消费者)模块负责对分布式缓存层进行数据读取;离线计算模块由Hadoop及其生态系统组成;实时计算模块由Storm组成。
[0016]业务处理层,提供统计分析和数据挖掘的功能与服务,由上层进行调用。
[0017]可视化展示层,提供普通查询、全文检索、报表展示、导入导出等功能。
[0018]统一调度与管理模块,对上述5层进行统一的调度与管理,基于工作流,自动化处理。
[0019]本发明技术方案带来的有益效果:
[0020]1、由于使用了 Storm实时流处理框架技术,因此,可以近实时地对Kafka分布式缓存中的消息进行处理并分类。
[0021]2、推送日志与读取日志是异步进行的,可以不用感知相互的存在,只需要往分布式消息队列Kafka里面写入或者读取即可。
[0022]3、每分钟可以处理100万条记录,可以有效应对大数据数据采集的问题,产生经济效益。
[0023]4、系统具有高可靠性,保证每条记录被处理。
【专利附图】

【附图说明】
[0024]为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它的附图。
[0025]图1是本发明中分布式数据采集系统的系统架构图;
[0026]图2是本发明中数据采集子系统的组成架构图。
【具体实施方式】
[0027]下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0028]本文提出了一种基于分布式的海量日志采集系统,通过在目标主机上安装Agent进程,对目标主机的文本、应用程序、数据库等日志信息进行有选择地定向推送到服务器集群的统一访问接口,服务器端采用了分布式缓存与实时流处理框架技术。通过本发明解决了现有技术中使用传统的日志采集技术,对海量日志进行采集的过程中会出现上传速度超过采集处理入库速度,导致系统假死或者日志记录丢失;使用开源的分布式日志采集组件,需要在各个节点安装与配置Agent,某些Agent需要依赖很多第三方软件,由于网络等原因,无法安装完成的缺点或不足,能够有效应对日志采集与高速入库的问题,同时,使用分布式存储与搜索引擎技术,加快查找与检索的速度,从而实现了高速、准确、可靠地对海量日志进行采集与分析。
[0029]如图1所示为一种基于分布式的海量日志采集系统的系统架构图。
[0030]本系统包括数据源层、分布式缓存层、分布式存储与计算层、业务处理层、可视化展示层和统一调度与管理模块。
[0031]数据源层,由数据采集组件(生产者)模块对各个节点上面的文本、应用程序、数据库等进行采集,推送到分布式缓存层。
[0032]分布式缓存层,由LVS对各个节点的消息队列组件进行负载均衡,提供一个统一的接口来接收并写入数据源节点推送过来的数据,等待分布式存储与计算层的数据采集组件(消费者)来读取。
[0033]分布式存储与计算层,提供存储与计算的功能,包括数据采集组件(消费者)模块、离线计算模块、实时计算模块、分布式存储和搜索引擎。其中,数据采集组件(消费者)模块负责对分布式缓存层进行数据读取;离线计算模块由Hadoop及其生态系统组成;实时计算模块由Storm组成。
[0034]业务处理层,提供统计分析和数据挖掘的功能与服务,由上层进行调用。
[0035]可视化展示层,提供普通查询、全文检索、报表展示、导入导出等功能。
[0036]统一调度与管理模块,对上述5层进行统一的调度与管理,基于工作流,自动化处理。
[0037]数据采集子系统是分布式日志采集系统的核心组成部分,包括数据源层、分布式缓存层、数据处理层和持久化层,其可以独立出来成为一个新的系统。其中,数据源层即分布式日志采集系统的数据源层;分布式缓存层即分布式日志采集系统的分布式缓存层;数据处理层即分布式日志采集系统的分布式存储与计算层的实时计算模块和统一调度与管理模块;持久化层即分布式日志采集系统的分布式存储与计算层的分布式存储模块。
[0038]数据采集子系统的组成,如图2所示。
[0039]数据采集子系统的核心,主要包括位于数据源层的数据采集组件(生产者)模块、分布式缓存层与数据处理层。
[0040]数据源层,包括很多的数据节点主机,每个主机上都安装了数据采集组件(生产者)模块,会启动Agent进程来负责接收服务端的采集指令,把本节点的文本、应用程序、数据库等数据推送到服务器集群中的统一访问接口中。
[0041]分布式缓存层,位于服务器集群里面,其主要由LVS负责把数据自动转发到Kafka集群中的某台节点主机进行写入,负责对外提供统一访问接口和分布式缓存服务。其中统一访问接口包括统一的域名/主机名和端口。
[0042]数据处理层,主要由Storm构成,其中Topology由I个Spout和若干个Bolt构成。KafkaReaderSpout负责读取Kafka集群里面的数据,然后把数据传输给ExecutorBolt,ExecutorBolt根据业务逻辑及日志的类型,往下传送数据到HbaseWriterBolt、HdfsffriterBolt 或者 SolrffriterBolt 中进行持久化存储。其中,HbaseWriterBolt 负责HBase的持久化存储,HdfsffriterBolt负责HDFS的持久化存储、SolrffriterBolt负责Solr-Cloud的持久化存储。
[0043]持久化层,主要由HBase、HDFS和Solr-Cloud组成。HBase主要是键值对存储,存储原始日志、分类处理后的日志;HDFS主要存储原始日志;S0lr-Cl0ud主要对HBase存储的日志进行索引,加快检索速度,可以全文检索。
[0044]数据采集子系统的工作流程:
[0045]首先,数据源的所有节点主机的Agent进程会自动推送本节点的文本、应用程序、数据库等数据到服务器集群中的统一访问接口中。
[0046]接着,统一访问接口接收到数据,由LVS自动转发到某个Kafka节点中并写入数据,等待被读取。
[0047]最后,由实时计算模块Storm中的Topology进行业务处理,其中Topology由I个Spout和若干个Bo11构成。KafkaReaderSpout负责读取Kafka集群中的数据,然后把数据传输给ExecutorBolt, ExecutorBolt根据业务逻辑及日志的类型,往下传送数据到 HbaseWriterBolt、HdfsffriterBolt 或者 SolrWriterBolt 中进行持久化存储。其中,HbaseWriterBolt负责HBase的持久化存储,HdfsffriterBolt负责HDFS的持久化存储、SolrffriterBolt 负责 Solr-Cloud 的持久化存储。
[0048]以上对本发明实施例所提供的一种基于分布式的海量日志采集系统进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在【具体实施方式】及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
【权利要求】
1.一种基于分布式的海量日志采集系统,其特征在于,该系统通过在目标主机上安装Agent进程,对目标主机的文本、应用程序、数据库等日志信息进行有选择地定向推送到服务器集群的统一访问接口,服务器端采用了分布式缓存与实时流处理框架技术;该系统包括数据源层、分布式缓存层、分布式存储与计算层、业务处理层、可视化展示层和统一调度与管理模块; 数据源层,由数据采集组件(生产者)模块对各个节点上面的文本、应用程序、数据库等进行采集,推送到分布式缓存层; 分布式缓存层,由LVS对各个节点的消息队列组件进行负载均衡,提供一个统一的接口来接收并写入数据源节点推送过来的数据,等待分布式存储与计算层的数据采集组件(消费者)来读取; 分布式存储与计算层,提供存储与计算的功能,包括数据采集组件(消费者)模块、离线计算模块、实时计算模块、分布式存储和搜索引擎;其中,数据采集组件(消费者)模块负责对分布式缓存层进行数据读取;离线计算模块由Hadoop及其生态系统组成;实时计算模块由Storm组成; 业务处理层,提供统计分析和数据挖掘的功能与服务,由上层进行调用; 可视化展示层,提供普通查询、全文检索、报表展示、导入导出等功能; 统一调度与管理模块,对上述5层进行统一的调度与管理,基于工作流,自动化处理。
2.根据权利要求1所述的系统,其特征在于,该系统的数据源层、分布式缓存层、分布式存储与计算层的实时计算模块和分布式存储模块、统一调度与管理模块是分布式日志采集系统的核心部分,即数据采集子系统,其包括数据源层、分布式缓存层、数据处理层和持久化层,其可以独立出来成为一个新的系统;其中,数据源层即分布式日志采集系统的数据源层;分布式缓存层即分布式日志采集系统的分布式缓存层;数据处理层即分布式日志采集系统的分布式存储与计算层的实时计算模块和统一调度与管理模块;持久化层即分布式日志采集系统的分布式存储与计算层的分布式存储模块。
3.根据权利要求2所述的系统,其特征在于,数据源层,包括很多的数据节点主机,每个主机上都安装了数据采集组件(生产者)模块,会启动Agent进程来负责接收服务端的采集指令,把本节点的文本、应用程序、数据库等数据推送到服务器集群中的统一访问接口中; 分布式缓存层,位于服务器集群里面,其主要由LVS负责把数据自动转发到Kafka集群中的某台节点主机进行写入,负责对外提供统一访问接口和分布式缓存服务;其中统一访问接口包括统一的域名/主机名和端口; 数据处理层,由Storm构成,其中Topology由I个Spout和若干个Bolt构成。KafkaReaderSpout负责读取Kafka集群里面的数据,然后把数据传输给ExecutorBolt,ExecutorBolt根据业务逻辑及日志的类型,往下传送数据到HbaseWriterBolt、HdfsffriterBolt 或者 SolrWriterBolt 中进行持久化存储;其中,HbaseWriterBolt 负责HBase的持久化存储,HdfsffriterBolt负责HDFS的持久化存储、SolrffriterBolt负责Solr-Cloud的持久化存储; 持久化层,由HBase、HDFS和Solr-Cloud组成。HBase主要是键值对存储,存储原始日志、分类处理后的日志;HDFS主要存储原始日志;Solr-Cloud主要对HBase存储的日志进行索引,加快检索速度,可以全文检索。
4.根据权利要求3所述的系统,其特征在于,数据采集子系统的核心,包括位于数据源层的数据采集组件(生产者)模块、分布式缓存层与数据处理层。
5.根据权利要求3或4所述的系统,其特征在于,数据采集子系统的工作流程为:首先,数据源的所有节点主机的Agent进程会自动推送本节点的文本、应用程序、数据库等数据到服务器集群中的统一访问接口中; 接着,统一访问接口接收到数据,由LVS自动转发到某个Kafka节点中并写入数据,等待被读取; 最后,由实时计算模块Storm中的Topology进行业务处理,其中Topology由I个Spout和若干个Bolt构成;KafkaReaderSpout负责读取Kafka集群中的数据,然后把数据传输给ExecutorBolt, ExecutorBolt根据业务逻辑及日志的类型,往下传送数据到 HbaseWriterBolt、HdfsffriterBolt 或者 SolrWriterBolt 中进行持久化存储;其中,HbaseWriterBolt负责HBase的持久化存储,HdfsffriterBolt负责HDFS的持久化存储、SolrffriterBolt 负责 Solr-Cloud 的持久化存储。
【文档编号】G06F11/34GK104036025SQ201410299857
【公开日】2014年9月10日 申请日期:2014年6月27日 优先权日:2014年6月27日
【发明者】杨育斌, 柯宗贵, 赵必厦 申请人:蓝盾信息安全技术有限公司
再多了解一些
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1