本发明一般地涉及计算机应用技术领域。更具体地,本发明涉及一种基于日志采集系统的数据完整性校验的方法及设备。
背景技术:
随着计算机技术、网络技术的快速发展,云计算、大数据以及互联网 成为当下新兴的技术,给人们带来了极大的便利。在这种大环境下,数据采集、特别是数据的完整性采集和存储成为热门的话题。
目前大型应用业务系统或者平台产生巨大的日志量,系统日志采集和分析是系统运维维护及用户分析的基础。系统日志一般可分为三大类:用户行为日志,其是系统用户在使用系统的过程中一系列的操作记录日志;业务变更日志,其是为特定业务场所需,采集某用户在某时段使用某种功能,对某业务(对象、数据)进行某操作;系统运行日志,其是对系统运行服务器资源、网络及基础中间件的情况进行定时采集日志分析。日志采集过程中的数据完整性是指数据的精确性和可靠性。它是应防止数据库中存在不符合语义规定的数据和防止因错误信息的输入输出造成无效操作或错误信息而提出的。数据完整性的校验在日志采集过程中显得尤其重要。
由于单机系统通常无法完成日志的采集工作,现有技术采用分布式架构系统进行收集,此架构的系统将业务系统的打点日志分别存放在多台机器上。目前分布式日志采集系统很多种,比如flume系统,filebeat系统以及logstash系统等。但是,这些系统在数据采集过程中,无法保证数据的完整性,同时无法监控到服务采集组件是否正常的服务。
技术实现要素:
考虑到上面存在的技术问题,本发明提出了相应的解决方案,其系统架构主要采用master-salve模式,可以用来实时监控数据采集的完整性和日志采集系统服务的稳定性。
具体地,在一个方面中,本发明提出了一种数据完整性校验的方法,包括:
接收来自日志采集系统所采集到的数据并将其存放于存储介质中;
利用服务进程来定时检测接收到的所述数据的相关信息;
对采集到的所述相关信息进行汇总计算;以及
将计算的结果和存放于存储介质中的数据进行对比分析,以确定所述日志采集系统采集到的数据是否完整。
在一个实施例中,所述日志采集系统对多台服务器上的日志进行采集。
在另一个实施例中,所述相关信息包括日志文件的大小和条数。
在又一个实施例中,所述存储介质是具有分布式文件系统架构的数据库,其配置用来在数据完整性校验过程中存放采集到的数据。
在一个实施例中,所述服务进程包括监控服务进程,该进程用来监测日志采集系统运行的稳定性。
在另一个实施例中,所述存储介质是具有mysql架构的数据库,其配置用来在监控日志采集系统运行稳定性的过程中存放采集到的数据。
在又一个实施例中,在检测日志采集系统稳定性的过程中,该方法进一步包括利用web界面对采集到的数据进行观测。
在另一个实施例中,所述方法的系统架构采用master-salve模式。
在另一方面中,本发明还公开了一种数据完整性校验的设备,包括:
处理器,其配置用于执行程序指令;以及
存储器,其配置用于存储所述程序指令,当所述程序指令由所述处理器加载并执行时,使得所述设备执行:
接收来自日志采集系统所采集到的数据并将其存放于存储介质中;
利用服务进程来定时检测接收到的所述数据的相关信息;
对采集到的所述相关信息进行汇总计算;以及
将计算的结果和存放于存储介质中的数据进行对比分析,以确定所述日志采集系统采集到的数据是否完整。
在又一个方面中,本发明还公开了一种计算机可读存储介质,存储有用于数据完整性校验的程序,当所述程序由处理器执行时,执行以下的操作:
接收来自日志采集系统所采集到的数据并将其存放于存储介质中;
利用服务进程来定时检测接收到的所述数据的相关信息;
对采集到的所述相关信息进行汇总计算;以及
将计算的结果和存放于存储介质中的数据进行对比分析,以确定所述日志采集系统采集到的数据是否完整。
利用本发明提供的方法和设备,不但解决了当前分布式日志采集系统无法保证其所采集的数据的完整性问题,而且还可以监控日志采集系统的服务采集组件是否正常服务,通过计算比较最终实现实时监控采集数据的完整性和日志采集系统服务的稳定性。
附图说明
通过结合附图,可以更好地理解本发明的上述特征,并且其众多目的、特征和优点对于本领域技术人员而言是显而易见的。下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可根据这些附图获得其他的附图,其中相同的附图标记表示相同的元件,并且其中:
图1是示出根据本发明实施例的基于日志采集系统的数据完整性校验方法的流程图;
图2是示出根据本发明实施例的基于日志采集系统的另一数据完整性校验方法的流程图;
图3是示出根据本发明实施例的基于日志采集系统的稳定性监测原理的框图;以及
图4是示出根据本发明实施例的基于日志采集系统的数据完整性校验设备的组成框图。
具体实施方式
本发明实施例提供了一种对日志采集系统数据文件的完整性校验方法及设备,能够简便、高效地对采集的目标文件进行完整性校验。其中日志采集系统是基于分布式的数据采集过程。应当理解,为了说明的简单和清楚,在认为合适的情况下,可以在附图中重复附图标记以指示对应或类似的元件。另外,本申请阐述了许多具体细节以便提供对本发明所述实施例的透彻理解。然而,本领域普通技术人员将理解,可以在没有这些具体细节的情况下实践本发明描述的实施例。在其他情况下,没有详细描述公知的方法、过程和组件,以免模糊本文描述的实施例。而且,该描述不应被视为限制本文描述的实施例的范围。
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
图1是示出根据本发明实施例的基于数据采集系统的数据完整性校验方法100的流程框图。
如图1所示,本发明提供一种数据完整性校验的方法,包括如下步骤:首先方法100执行s101步骤,在此步骤处,方法100接收来自日志采集系统所采集的数据并将其存放于存储介质中。其中所述采集的数据可以包括:用户行为日志、业务变更日志以及系统运行日志等。存储介质可以包括hdfs及hbase等。接着,在步骤s102处,方法100利用相关的服务进程来定时检测接收到的所述数据的相关信息。然后,方法100执行s103步骤,在此步骤处,方法100对采集到的所述信息进行汇总计算。最后,方法100终止于步骤s104,此时将计算的结果和存放于存储介质中的数据进行对比分析,以确定所述日志采集系统采集到的数据是否完整。
在一个实施例中,所述日志采集系统用于进行日志数据的采集,并且该日志采集系统具体可以对多台服务器上的日志进行采集。日志采集系统本身也可以是一个分布式系统,服务端每个节点都支持分布式集群部署,可实现高并发性和高可用性。在一个实施例中,日志采集系统可以由三部分组成:日志采集、日志存储与分析以及结果应用。其中,日志采集主要负责提供多种方式进行采集日志;日志存储与分析主要实现分析统一存储和定制的场景分析日志;结果应用则实现将日志分析结果提供服务接口或者默认的管理功能,以供应用功能使用。
在日志采集后,通过在线或者离线传输到消息队列,由日志消费应用提取后进行存储。然后,根据分析需要定制自动作业任务以实现日志数据抽取、转换及统计,并将结果数据写入关系型数据库,以提供给服务接口或者日志查询默认管理功能进行使用。在微服务构架中,微服务治理能力和服务负载需要依赖于服务日志的采集分析,所以日志采集系统可以是微服务构架的基础支持功能。作为一个具体的实施方式,其中所述日志采集系统可以为flume系统。为了更好的理解本发明的技术方案,下面将简要介绍一下flume系统,其是一个高可用、高可靠以及分布式的海量日志收集聚合传输系统。flume系统可以将应用产生的数据存储到任何集中式存储器中,例如hdfs及hbase等,其中hdfs(“hadoop分布式文件系统”)被设计成适合运行在通用硬件上的分布式文件系统。hdfs有着高容错性的特点,并且设计用来部署在低廉的硬件上。而且hdfs提供高吞吐量来访问应用程序的数据,适合那些有着超大数据集的应用程序。另外,hdfs放宽了posix的要求,这样可以实现流的形式访问文件系统中的数据。
当收集数据的速度超过将写入数据的时候,也就是当收集信息遇到峰值时,收集的信息非常大,甚至超过了系统的写入数据能力,这时候flume系统会在数据生产者和数据收容器间做出调整,保证其能够在两者之间提供平稳的数据。flume系统支持日志系统中定制各类数据发送方,用于收集数据。同时flume系统提供对数据进行简单处理并写到各种数据接收方的能力。flume系统逻辑上分三层架构:agent,collector,storage。当前flume有两个版本,其中flume0.9x版本的统称flume-og,flume1.x版本的统称flume-ng。进一步地,flume-og采用了多master的方式。为了保证配置数据的一致性,flume系统引入了zookeeper,用于保存配置数据,而且zookeeper本身可保证配置数据的一致性和高可用性。另外,在配置数据发生变化时,zookeeper可以通知flumemaster节点。而flume-ng最明显的改动就是取消了集中管理配置的master和zookeeper,变为一个纯粹的传输工具。flume-ng另一个主要的不同点是读入数据和写出数据由不同的工作线程处理。
图2是示出根据本发明实施例的基于日志采集系统的数据完整性校验方法200的流程图。
如图2所示,日志采集系统对客户端的打点日志进行收集,其中的打点日志,可以实现:1)对于不同业务,增加一个业务枚举类以实现接口,其不需要配置日志,即可将日志区分开,从而将日志打到特定的目录下面;2)同一业务枚举下区分子类型,可以用来做数据统计、分类汇总等;3)日志使用统一的分隔符,由于格式统一,以方便切换查询。客户端的打点日志将落地磁盘,其中落地数据就是被持久化的数据,这种数据一般会放在硬盘或是其他的持久化存储设备里,例如:图片、系统日志、在页面上显示的数据以及保存在关系数据库里的数据等。落地数据通常会有一个固定的载体,使得它们不会瞬时消失。而不落地数据一般指存储在内存或者是网络传输里的数据,这些数据是瞬时的,使用完毕就会消失,例如,在浏览器发送给服务器的请求数据以及从数据库读取出来的一直到页面展示前的数据等。
作为一个具体的实施方式,假设客户端打点日志分别落地3台服务器上,此时需要对这3台机器上的日志进行采集,同时监控采集系统的稳定性以及日志文件的完整性。在对所述日志采集系统进行数据完整性校验的过程中,首先,一方面,将打点日志分别落地于3台服务器上,如图2中的步骤201和202。接着,系统会每个小时生成一个文件,如步骤203所指示出的,然后方法200前进到步骤204,此时日志采集系统将监控每个文件的状态,以确定业务是否有错误,是否有性能问题或者是否有流量急跌或暴涨等问题,并且将新的数据进行采集发送到数据采集组件中。随后,方法流程200执行步骤205,在此步骤处,系统将采集到的数据存放到存储介质中。在一个实施例中,所述存储介质例如可以是具有hdfs架构的数据库,其配置用来在数据完整性校验过程中存放采集到的数据。
另外一方面,本发明的方法可以在服务器上部署一个服务进程,该服务进程是一个监控数据完整性的进程,通过此进程定时的检测步骤203所产生的每个文件的相关信息。在一个实施例中,所述相关信息至少包括文件的大小和条数。然后,方法200执行步骤207,系统将上述信息汇报给master主机。接下来方法200执行步骤208,此时,系统在master服务节点上可将三台机器上的日志文件的大小和条数进行汇总计算,例如可以对日志的条数进行求平均的操作。在完成以上两方面的工作后,方法200开始执行步骤209,在此步骤处,系统对经过上述步骤208汇总计算的结果以及步骤205中存入hdfs中的数据进行比较分析。在一定的判决规则下,根据比较分析的结果判断采集的日志数据是否完整。在一个实施例中,例如可以根据汇总计算的结果大于hdfs中的数据,进而判断采集的日志数据是否完整。最后方法200终止于步骤210,在该步骤输出最终的结果。
本发明不仅可以校验日志采集系统采集数据的完整性,而且还可以监测日志采集系统的稳定性。在一个实施例中,所述服务进程可以进一步为监控服务进程,该进程用来监测日志采集系统运行的稳定性。图3是示出根据本发明实施例的基于日志采集系统的稳定性监测原理框图300。如图3所示,所述日志采集系统304对多台服务器上的日志进行采集。日志采集系统对客户端的打点日志进行收集,其中客户端的打点日志将落地磁盘。作为一个具体的实施方式,假设客户端打点日志分别落地3台服务器上,此时需要对这个3台机器上日志进行采集,同时监控采集系统的稳定性。
在另一个实施例中,所述方法的系统架构采用master-salve模式。在此模式下每个采集日志的服务器上都会部署一个监控服务进程。具体地,监控系统稳定性的服务进程303会为客户端打点日志落地(例如301和302)分别部署一个监控服务进程,由其定时检测日志采集系统304的服务状态,然后系统将检测到的服务状态信息汇报给master服务器306,同时日志采集系统将数据存储在存储介质305中,并且可以通过终端进行结果展示,例如可以通过web页面进行结果展示,如307所示。根据此监控服务进程,网管人员可以随时通过服务器端获知任意一台受监控的日志采集系统的运行状态,并在服务器出现异常的情况下(如:服务器意外down机、存储空间不足、cpu利用率过高等),及时的收到server端的报警信息,以此来监测日志采集系统运行的稳定性。
作为一个具体的实施方式,在一个实施例中,例如所述存储介质可以是具有mysql架构的数据库,其配置用来在监控日志采集系统运行稳定性的过程中存放采集到的数据。mysql是一种关系数据库管理系统,关系数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。在另一个实施例中,为了便于观测本发明所述方法的执行效果,该方法进一步包括利用web界面对采集的数据进行观测或对观测的结果进行展现。
从上文可知,本发明一方面提供了一种基于日志采集系统的数据完整性校验的方法。利用该方法,本发明的方案可以实现数据完整性的校验。另一方面,本发明还公开了利用上述方法进行工作的基于日志采集系统数据完整性校验的设备。
图4是示出根据本发明实施例的基于日志采集系统的数据完整性校验设备400组成框图。该设备400依实现的不同,可以具体化为包括计算机系统的服务器或智能客户端。如图4中所示,该设备400可以包括处理器401、存储器402、用户接口403和通信接口404。在一个实施例中,该处理器401可以是通用处理器或专用处理器,并且可以配置成执行计算机程序指令,特别是执行存储于存储器402中的计算机程序指令,以便使得设备400执行根据图1、2以及图3所示的本发明的方法100、200以及300等多个实施例。
存储器402可以是高速随机存取存储器,例如动态随机存取存储器(dram)、静态随机存取存储器(sram)、双倍数据速率随机存取存储器(ddrram)或其他随机存储器。存储器402还可以是访问固态存储设备或非易失性存储器,例如一个或多个磁盘存储设备、光盘存储设备、闪存或其他非易失性固态存储设备。
用户接口403可以包括一个或多个输出设备,其例如可以包括一个或多个扬声器和/或一个或多个视觉显示器。用户接口403还包括一个或多个输入设备,其包括例如键盘、鼠标、语音命令、输入单元或麦克风,触摸屏显示器、触敏平板电脑,姿势捕捉相机,或其他输入按钮或控件。根据本发明,该用户接口403可以接收数据分析人员的指令输入并且向数据分析人员展示运行结果。
通信接口404可以包括网络接口、调制解调器、各类通信端口、总线、通信链路、收发器或其他通信设备。根据本发明的方案,该通信接口可以接收来自于多个客户端的数据,并且向客户端传送各种类型的数据。
下面结合图2和图4详细说明本发明的设备的工作原理。首先,日志采集系统对多台服务器上的打点日志进行采集,其中客户端的打点日志将落地磁盘。作为一个具体的实施方式,假设客户端打点日志分别落地3台服务器上,此时需要对这个3台机器上日志进行采集。接着日志采集系统会每个小时生成一个文件,此时日志采集系统将监控每个文件的状态,将新的数据进行采集并发送到数据采集组件,随之将采集的数据存放到存储介质中。作为一个具体的实施方式,所述存储介质例如可以是具有hdfs架构的数据库,其配置用来在数据完整性校验过程中存放采集到的数据。
本发明的设备首先通过处理器401调取存储器402上面存储的数据采集程序并利用通信接口404控制数据采集组件进行数据采集,并将采集的数据存放于存储介质,然后利用在存储器402上面事先部署的监控数据完整性的进程定时地检测所产生的每个文件的相关信息,在一个实施例中所述的相关信息至少包括数据文件的大小和条数,然后将这些信息汇报给master主机,接着由处理器401通过通信接口404将master服务节点收集的三台机器上的日志文件的大小和条数进行汇总计算,最后将经过上述汇总计算的结果以及存入存储介质(例如可以是hdfs)中的数据进行比较分析,根据比较分析的结果判断采集的日志数据是否完整,最终检验数据是否完整的结果通过用户接口403进行显示。
在又一个方面,在一个实施例中,本发明还公开了一种计算机可读存储介质,该介质存储有用于数据完整性校验的程序,当所述程序由处理器执行时,执行以下的操作:接收来自日志采集系统所采集的数据并将其存放于存储介质;由部署的服务进程定时检测接收到的所述数据的相关信息,然后汇报给主机;主机对采集到的所述信息进行汇总计算;以及将主机计算的结果和存放于存储介质上的数据进行对比分析,最终确定采集到的数据是否完整。
还应当理解,本发明示例的执行指令的任何模块、单元、组件、服务器、计算机、终端或设备可以包括或以其他方式访问计算机可读介质,诸如存储介质、计算机存储介质或数据存储设备(可移除的)和/或不可移动的)例如磁盘、光盘或磁带。计算机存储介质可以包括以用于存储信息的任何方法或技术实现的易失性和非易失性,可移动和不可移动介质,例如计算机可读指令、数据结构、程序模块或其他数据。
计算机存储介质的示例包括ram、rom、eeprom、闪存或其他存储器技术、cd-rom、数字通用盘(dvd)或其他光学存储器、磁带盒、磁带、磁盘存储器或其他磁存储设备,或者可以用于存储所需信息并且可以由应用程序、模块或两者访问的任何其他介质。任何这样的计算机存储介质可以是设备的一部分或可访问或可连接到设备。本发明描述的任何应用或模块可以使用可以由这样的计算机可读介质存储或以其他方式保持的计算机可读/可执行指令来实现。
虽然本发明的实施方式如上,但所述内容只是为便于理解本发明而采用的实施例,并非用以限定本发明的范围和应用场景。任何本发明所述技术领域内的技术人员,在不脱离本发明所揭露的精神和范围的前提下,可以在实施的形式上及细节上作任何的修改与变化,但本发明的专利保护范围,仍须以所附的权利要求书所界定的范围为准。
1.一种数据完整性校验的方法,包括:
接收来自日志采集系统所采集到的数据并将其存放于存储介质中;
利用服务进程来定时检测接收到的所述数据的相关信息;
对采集到的所述相关信息进行汇总计算;以及
将计算的结果和存放于存储介质中的数据进行对比分析,以确定所述日志采集系统采集到的数据是否完整。
2.根据权利要求1所述的方法,其中所述日志采集系统对多台服务器上的日志进行采集。
3.根据权利要求1所述的方法,其中所述相关信息包括日志文件的大小和条数。
4.根据权利要求1所述的方法,其中所述存储介质是具有分布式文件系统架构的数据库,其配置用于在数据完整性校验过程中存放采集到的数据。
5.根据权利要求1所述的方法,其中所述服务进程包括监控服务进程,该进程用来监测日志采集系统运行的稳定性。
6.根据权利要求5所述的方法,其中所述存储介质是具有mysql架构的数据库,其配置用于在监控日志采集系统运行稳定性的过程中存放采集到的数据。
7.根据权利要求6所述的方法,进一步包括利用web界面对采集到的数据进行观测。
8.根据权利要求1~7任意一项所述的方法,其中该方法的系统架构采用master-salve模式。
9.一种数据完整性校验的设备,包括:
处理器,其配置用于执行程序指令;以及
存储器,其配置用于存储所述程序指令,当所述程序指令由所述处理器加载并执行时,使得所述设备执行:
接收来自日志采集系统所采集到的数据并将其存放于存储介质中;
利用服务进程来定时检测接收到的所述数据的相关信息;
对采集到的所述相关信息进行汇总计算;以及
将计算的结果和存放于存储介质中的数据进行对比分析,以确定所述日志采集系统采集到的数据是否完整。
10.一种计算机可读存储介质,存储有用于数据完整性校验的程序,当所述程序由处理器执行时,执行以下的操作:
接收来自日志采集系统所采集到的数据并将其存放于存储介质中;
利用服务进程来定时检测接收到的所述数据的相关信息;
对采集到的所述相关信息进行汇总计算;以及
将计算的结果和存放于存储介质中的数据进行对比分析,以确定所述日志采集系统采集到的数据是否完整。
技术总结