一种基于链式处理的数据收集系统及其方法

文档序号:6385481阅读:244来源:国知局
专利名称:一种基于链式处理的数据收集系统及其方法
技术领域
本发明涉及网络通信及日志收集技术,尤其涉及一种基于链式处理的数据收集系统及其方法,适用于集群系统中性能数据的收集。
背景技术
随着应用规模的增长,系统管理员需要实时监控上线系统的运行情况,也需要了解各服务器的健康状况,监控项目主要包含服务日志、系统负载等。最原始的方式是登录到每个系统进行检查,但服务器较多时工作变得繁琐且无实际意义。当然,现有较多的监控系统,如nagios、cact1、ganglia等,能够实现对系统的实时监控,这在很大程度上可以掌握应用系统状态,但这些监控系统对于数据的收集具有一些局限性:对原始数据依赖性大,难以对多源数据进行融合处理;收集及存储耦合性强,无法对数据进行灵活的自定义处理等。同时,现有一系列的日志收集方法,将应用日志收集至数据中心,从而支持进行离线分析,以便得出一些有价值的应用健康信息。较为成功的如facebook的scribe日志收集系统等,利用了 hadoop的存储及计算资源。由于日志收集技术,大多以文件为对象,需要将数据从各服务器汇总至中央存储系统及进行处理,当中央存储系统的网络或机器出现故障时,scribe会将日志转存到本地或者另一个位置,待中央存储系统恢复后,scribe会将转存的日志重新传输给中央存储系统。因此存在离线带来的滞后性较大的缺点。

发明内容
有鉴于此,本发明的主要目的在于提供一种基于链式处理的数据收集系统及其方法,综合传统监控系统与日志收集系统的优势,将应用系统各台服务器的系统状态、服务信息、日志信息等统一作为数据源;通过提供通用数据格式和通用处理结构,提高数据收集系统的通用性和扩展性,支持多源数据格式的接入和动态扩展的数据处理结点。为达到上述目的,本发明的技术方案是这样实现的:
一种基于链式处理的数据收集系统,所述数据收集系统主要包括服务器集群,其体系架构包含数据采集层即Client端、数据中转层即Transfer端和数据存储层;其中:
所述数据采集层由Client端完成,部署在每台服务器上,用于完成具体的数据采集任务,并将数据传送至Transfer端;
所述数据中转层由Transfer端完成,负责接收数据,并将接收到的数据通过一系列Handler进行链式处理;
所述数据存储层,用于将所述中转层处理过的数据或采集层的原始数据进行存储,作为后续分析展示的存储引擎。其中:所述数据采集层,由Client端提供一个通用接口,其包含三部分:任务读取或接收接口、数据发送接口及通用调度接口 ;其中:
所述任务读取或接收接口,用于与控制端的交互,当用户添加一个收集任务时,任务通过该接口推送至采集端,同时采集端在启动时也通过该接口从控制端读取所有任务;数据发送接口,用于实时将收集到的数据发送至数据中转端;通用调度接口,用于调度具体的收集脚本或程序,实现具体的数据收集。所述数据中转层的Handler链包含数据解析、数据存储、报警转发功能,每个功能通过一个具体的Handler实现。所述Handler之间通过MsgDoc结构体进行数据传递,包含request_handler、analyze_handler 和 storage_hander 的处理引擎。所述MsgDoc定义为一个包含对接收字符串的解析结果的一个结构体;Handler定义为一个基础数据处理引擎,Handler的处理实体是MsgDoc,每个Handler包含一个输入队列和输出队列,用于缓存数据。在所述存储层,采用Hbase作为存储引擎,通过中转层的hbase_handler实现。一种基于链式处理的数据收集方法,该方法包括:
A、编写数据收集脚本,数据收集脚本用于收集具体数据,其运行于目标服务器上;
B、添加任务的步骤:将任务信息发送至Client端,将任务信息同时写入任务信息库,所述任务信息库用于任务管理,同时提供接口供Client主动获取任务信息;
C、定期执行任务的步骤:根据任务信息,运行脚本,收集数据,并将数据发送至中转
端;
D、中转端处理的步骤:中转端基础的处理引擎是request_handler、analyze_handler、storage_handler ;其中,request_handler是一个数据接收接口,将接收到的数据进行一个基本的格式判断,将符合格式要求的数据放入出队列,交给下一个handler处理;analyze_handler用于解析收到的字符串,将其转化为MsgDoc结构体,由于发送端可以批量发送,一个字符串可能解析出多个MsgDoc ;storage_handler用于将数据存储至指定存储引擎。所述步骤D之后进一步包括:
E、通过HBase接口实现对数据的详细处理。步骤C进一步包括:Client端在选择发送的Transfer时,通过zookeeper获取所有Transfer机器并选择一台健康值高的Transfer。本发明所提供的基于链式处理的数据收集系统及其方法,具有以下优点:
该数据收集系统,通过通用的Client框架,支持数据的通用性;通过使用Handler链式结构,支持处理模式及存储引擎的动态扩展及调整。


图1为本发明基于链式处理的数据收集系统层架构 图2为本发明的数据收集中转处理层总体架构 图3为本发明数据收集的基本流程示意图。
具体实施例方式下面结合附图及本发明的实施例对本发明的系统及其方法作进一步详细的说明。本发明的基本思想在于:实时收集集群系统的性能数据、日志数据,提供实时、集中式处理;提供通用数据格式和通用处理结构,支持多源数据格式的接入和动态扩展的数据处理结点。本发明以基于Iinux平台、采用链式处理的数据收集过程为例,说明本发明基于链式处理的数据收集系统及其方法的实施过程。本发明的数据收集系统,主要包括服务器集群,服务器可采用Iinux操作系统,其体系架构包含数据采集层(Client端)、数据中转层(Transfer端)、数据存储层。其中;
所述数据采集层由Client端完成,部署在每台服务器上,用于完成具体的数据采集任务,并将数据传送至Transfer端。所述数据中转层由Transfer端完成,负责接收数据,并将接收到的数据通过一系列Handler进行链式处理。Handler链包含数据解析、数据存储、报警转发等功能,每个功能通过一个具体的Handler实现。所述数据存储层,主要负责将中转层处理过的数据或采集层的原始数据进行存储,作为后续分析展示的存储引擎。其具体的工作流程如下:
(I)在数据采集层,由Client端提供一个通用接口,如附图1所示,其包含三部分:任务读取或接收接口、数据发送接口及通用调度接口。这里,所述任务读取或接收接口,用于与控制端的交互,当用户添加一个收集任务时,任务通过该接口推送至采集端,同时采集端在启动时也通过该接口从控制端读取所有任务。数据发送接口,用于实时将收集到的数据发送至数据中转端。通用调度接口,用于调度具体的收集脚本或程序,实现具体的数据收集。其中,对于通用 接口定义如下。a)发送给Client的任务命令字符串:
“O I s erV i c e_name | command| interval | timeout |ho s t_name |ho s t_ip I type I priority | return_fast”,其中,“0”表示数据收集的标识项,用于支持Client的扩展;service_name表示任务名称,作为任务的唯一表示;command表示任务所要执行的命令;interVal表示收集命令运行的周期,由数字表示,单位为秒,O表示仅运行一次程序不退出;timeout表示命令运行的超时时间,O表示不超时;host_name与host_ip表示收集命令运行的主机名与IP地址;type表示收集的类型,如基础收集、日志收集等分类;priority表示任务优先级;retUrn_faSt表示收集数据的实时性要求,O表示数据在处理时可以被缓存以批量处理。b) Client发往Transfer的数据字符串:
“O I s erV i c e_name | command| interval | timeout |ho s t_name |ho s t_ip I type I priority I return_fast I * I * I timestamp I return_code I result,,,其中,分隔符“ |*|*| ”之前为Client收到的命令字符串,分隔符之后timestamp表示时间戳,用于记录收集的时间;return_code表示命令程序的返回值;result表示命令的结果,即要收集的数据。(2)在数据中转层,接收由采集层发回的数据,接收到的数据通过Handler链进行数据处理,Handler之间通过MsgDoc结构体进行数据传递,包含request_handler、analyze_handler、storage_hander 等基础的处理引擎。
如附图2所示,Handler作为处理引擎可以与多种外部系统交互,如将数据发送至storm实时计算模块并接收计算结果、将报警信息发往alarm报警系统进行监控报警、发送至存储系统进行数据存储等。其中,MsgDoc定义为一个包含对接收字符串的解析结果的一个结构体;Handler定义为一个基础数据处理引擎,Handler的处理实体是MsgDoc,每个Handler包含一个输入队列和输出队列,用于缓存数据。另外,中转层由多个Transfer端组成,为了实现负载均衡,每个Transfer提供健康值,Client端在选择Transfer时可以参考健康值,支持Client端自适应调整发送速率及选择健康值高的Transfer。(3)在存储层,默认采用Hbase作为存储引擎,通过中转层的hbase_handler实现,Hbase中,根据数据的类型,设计不同的数据表结构,利用HBase作为存储引擎可以实现分布式及可伸缩性。图3为本发明数据收集的基本流程示意图。如图3所示,该基于链式处理的数据收集方法主要包括如下步骤:
步骤31:编写数据收集脚本,数据收集脚本用于收集具体数据,其运行于目标服务器上。所述脚本的输出为Result,其格式定义为:“tagel=valuel tag2=value2…tagN=valueN result”。其中Result的前一部分为key-value对组成的tag, tag是可选项,这些tag用于为输出结果打标签,方便后续的处理;同时,一个脚本可以输出多条数据,发送接口支持批量发送。步骤32:添加任务的步骤。将任务信息发送至Client端,将任务信息同时写入任务信息库,其格式为:“O Iservice_nameI command I interval ItimeoutIhost_nameIhost_ip I type | priority | return_fast任务信息库的目的是用于任务管理,同时提供接口供Client主动获取任务信息。步骤33:定期执行任务。根据任务信息,运行脚本,收集数据,并将数据发送至中转端。数据格 式“O Iservice_nameI command I interval ItimeoutI host_nameI host_ip I type|priority|return_fast |*|*|timestamp|return_code|result,,。Client 端在选择发送的Transfer时,通过zookeeper获取所有Transfer机器并选择一台健康值高的Transfer。步骤34:中转端处理的步骤。中转端基础的处理引擎是request—handler、analyze—handler、storage—handler。其中,request—handler 是一个数据接收接口,将接收到的数据进行一个基本的格式判断,将符合格式要求的数据放入出队列,交给下一个handler处理;analyze_handler用于解析收到的字符串,将其转化为MsgDoc结构体,由于发送端可以批量发送,一个字符串可能解析出多个MsgDoc ;storage_handler用于将数据存储至指定存储引擎,默认为HBase。另外,根据需求可以编写多个特定数据处理格式的handler。至此,数据脚本的编写到数据的收集存储过程完成,后续,对于数据的详细处理通过HBase接口实现。数据分析和展示的过程为现有技术,此处不再赘述。
以上所述,仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。
权利要求
1.一种基于链式处理的数据收集系统,其特征在于,所述数据收集系统主要包括服务器集群,其体系架构包含数据采集层即Client端、数据中转层即Transfer端和数据存储层;其中: 所述数据采集层由Client端完成,部署在每台服务器上,用于完成具体的数据采集任务,并将数据传送至Transfer端; 所述数据中转层由Transfer端完成,负责接收数据,并将接收到的数据通过一系列Handler进行链式处理; 所述数据存储层,用于将所述中转层处理过的数据或采集层的原始数据进行存储,作为后续分析展示的存储引擎。
2.根据权利要求1所述基于链式处理的数据收集系统,其特征在于,所述数据采集层,由Client端提供一个通用接口,其包含三部分:任务读取或接收接口、数据发送接口及通用调度接口 ;其中: 所述任务读取或接收接口,用于与控制端的交互,当用户添加一个收集任务时,任务通过该接口推送至采集端,同时采集端在启动时也通过该接口从控制端读取所有任务;数据发送接口,用于实时将收集到的数据发送至数据中转端;通用调度接口,用于调度具体的收集脚本或程序,实现具体的数据收集。
3.根据权利要求1所述基于链式处理的数据收集系统,其特征在于,所述数据中转层的Handler链包含数据解析、数据存储、报警转发功能,每个功能通过一个具体的Handler实现。
4.根据权利要求1或3所述基于链式处理的数据收集系统,其特征在于,所述Handler之间通过MsgDoc结构体进行数据传递,包含request_handler、analyze_handler和storage_hander的处理引擎。
5.根据权利要求4所述基于链式处理的数据收集系统,其特征在于,所述MsgDoc定义为一个包含对接收字符串的解析结果的一个结构体;Handler定义为一个基础数据处理引擎,Handler的处理实体是MsgDoc,每个Handler包含一个输入队列和输出队列,用于缓存数据。
6.根据权利要求1所述基于链式处理的数据收集系统,其特征在于,在所述存储层,采用Hbase作为存储引擎,通过中转层的hbase_handler实现。
7.一种基于链式处理的数据收集方法,其特征在于,该方法包括: A、编写数据收集脚本,数据收集脚本用于收集具体数据,其运行于目标服务器上; B、添加任务的步骤:将任务信息发送至Client端,将任务信息同时写入任务信息库,所述任务信息库用于任务管理,同时提供接口供Client主动获取任务信息; C、定期执行任务的步骤:根据任务信息,运行脚本,收集数据,并将数据发送至中转端; D、中转端处理的步骤:中转端基础的处理引擎是request_handler、analyze_handler、storage_handler ;其中,request_handler是一个数据接收接口,将接收到的数据进行一个基本的格式判断,将符合格式要求的数据放入出队列,交给下一个handler处理;analyze_handler用于解析收到的字符串,将其转化为MsgDoc结构体,由于发送端可以批量发送,一个字符串可能解析出多个MsgDoc ;storage_handler用于将数据存储至指定存储引擎。
8.根据权利要求7所述基于链式处理的数据收集方法,其特征在于,步骤D之后进一步包括: E、通过HBase接口实现对数据的详细处理。
9.根据权利要求7所述基于链式处理的数据收集方法,其特征在于,步骤C进一步包括:Client端在选择发送 的Transfer时,通过zookeeper获取所有Transfer机器并选择一台健康值高的Transfe r。
全文摘要
本发明公开一种基于链式处理的数据收集系统及其方法,主要包括服务器集群,其体系架构包含数据采集层即Client端、数据中转层即Transfer端和数据存储层;其中所述数据采集层由Client端完成,部署在每台服务器上,用于完成具体的数据采集任务,并将数据传送至Transfer端;所述数据中转层由Transfer端完成,负责接收数据,并将接收到的数据通过一系列Handler进行链式处理;所述数据存储层,用于将所述中转层处理过的数据或采集层的原始数据进行存储,作为后续分析展示的存储引擎。采用本发明,通过提供通用数据格式和通用处理结构,提高数据收集系统的通用性和扩展性,支持多源数据格式的接入和动态扩展的数据处理结点。
文档编号G06F17/30GK103150324SQ20121057331
公开日2013年6月12日 申请日期2012年12月26日 优先权日2012年12月26日
发明者黄福鑫 申请人:人民搜索网络股份公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1