日志处理方法和装置制造方法

文档序号:6541248阅读:176来源:国知局
日志处理方法和装置制造方法
【专利摘要】本发明公开了一种日志处理方法和装置。其中,日志处理方法包括:集群服务器接收用户端的日志文件;集群服务器存储日志文件;集群服务器对日志文件进行分析,得到分析结果;以及集群服务器输出分析结果。通过本发明,达到了提高日志处理效率的效果。
【专利说明】日志处理方法和装置
【技术领域】
[0001 ] 本发明涉及日志处理领域,具体而言,涉及一种日志处理方法和装置。
【背景技术】
[0002]现有的日志处理系统通常采用传统数据库作为大数据载体,将非结构化数据或半结构化数据存储于数据表中,这样日志数据的读写较为复杂,且性能较低,伸缩性差,无法适应业务的快速变化。传统的日志处理系统对海量日志数据的存储和分析的时间很长,且随着日志数据的爆炸式增长,只能一味地靠硬件提高数据处理效率及增加存储量,不仅成本高,处理高维数据的效率也不会提高很多。
[0003]传统架构无法实现日志处理系统的存储性能的线性扩展,当存储性能压力达到存储的极限时,无法快速有效的提升存储的读写性能。随着日志数据的爆炸式增长,现有的日志处理效率低的问题日益严峻。
[0004]针对现有技术中日志处理效率低的问题,目前尚未提出有效的解决方案。

【发明内容】

[0005]本发明的主要目的在于提供一种日志处理方法和装置,以解决日志处理效率低的问题。
[0006]为了实现上述目的,根据本发明的一个方面,提供了 一种日志处理方法。根据本发明的日志处理方法包括:集群服务器接收用户端的日志文件;集群服务器存储日志文件;集群服务器对日志文件进行分析,得到分析结果;以及集群服务器输出分析结果。
[0007]进一步地,集群服务器存储日志文件包括:集群服务器将日志文件拆分成日志数据;以及集群服务器将日志数据传送到分布式消息队列中,其中,集群服务器从分布式消息队列中读取日志数据,并对日志数据进行分析。
[0008]进一步地,在集群服务器将日志数据传送到分布式消息队列中之后,日志处理方法还包括:集群服务器从分布式消息队列中读取日志数据;集群服务器对读取的日志数据进行解析,得到解析结果;集群服务器根据解析结果生成日志数据对应的键值对;以及集群服务器通过将键值对存储到分布式数据库中来存储日志文件。
[0009]进一步地,集群服务器对日志文件进行分析包括:集群服务器从分布式数据库中实时获取增量的日志数据;以及集群服务器对增量的日志数据采用流式计算进行统计。
[0010]进一步地,集群服务器对日志文件进行分析包括:集群服务器按照预设周期从分布式数据库中获取增量的日志数据;以及集群服务器对增量的日志数据进行统计计算。
[0011]为了实现上述目的,根据本发明的另一方面,提供了一种日志处理装置。根据本发明的日志处理装置包括:接收单元,用于使得集群服务器接收用户端的日志文件;存储单元,用于使得集群服务器存储日志文件;分析单元,用于使得集群服务器对日志文件进行分析,得到分析结果;以及输出单元,用于使得集群服务器输出分析结果。
[0012]进一步地,存储单元包括:拆分模块,用于使得集群服务器将日志文件拆分成日志数据;以及传送模块,用于使得集群服务器将日志数据传送到分布式消息队列中,其中,集群服务器从分布式消息队列中读取日志数据,并对日志数据进行分析。
[0013]进一步地,存储单元还包括:读取模块,用于在集群服务器将日志数据传送到分布式消息队列中之后,使得集群服务器从分布式消息队列中读取日志数据;解析模块,用于使得集群服务器对读取的日志数据进行解析,得到解析结果;生成模块,用于使得集群服务器根据解析结果生成日志数据对应的键值对;以及存储模块,用于使得集群服务器通过将键值对存储到分布式数据库中来存储日志文件。
[0014]进一步地,分析单元包括:第一获取模块,用于使得集群服务器从分布式数据库中实时获取增量的日志数据;以及第一计算模块,用于使得集群服务器对增量的日志数据采用流式计算进行统计。
[0015]进一步地,分析单元包括:第二获取模块,用于使得集群服务器按照预设周期从分布式数据库中获取增量的日志数据;以及第二计算模块,用于使得集群服务器对增量的日志数据进行统计计算。
[0016]通过本发明,采用集群服务器来存储和分析的分类处理来达到海量日志处理的高效能,实现了海量日志分析,解决了现有技术中日志处理效率低的问题,达到了提高日志处理效率的效果。
【专利附图】

【附图说明】
[0017]构成本申请的一部分的附图用来提供对本发明的进一步理解,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
[0018]图1是根据本发明实施例的日志处理方法的流程图;
[0019]图2是根据本发明实施例一种优选的日志处理方法的流程图;
[0020]图3是根据本发明实施例的日志处理装置的示意图;以及
[0021]图4是根据本发明实施例的一种优选的日志处理装置的示意图。
【具体实施方式】
[0022]需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本发明。
[0023]为了使本【技术领域】的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。
[0024]需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。[0025]本发明实施例还提供了一种日志处理方法。该方法运行在计算机设备上。
[0026]图1是根据本发明实施例的日志处理方法的流程图。如图1所示,该日志处理方法包括步骤如下:
[0027]步骤S102,集群服务器接收用户端的日志文件。
[0028]用户端可以是需要采集日志的服务器,也可以是用户那一侧需要采集日志的客户端。例如,用户通过一台服务器对应客户端,不同的客户端分别运行各自的业务,客户端会产生日志。同时,服务器在为个客户端提供后台服务,服务器在运行过程中也会产生一些日志。集群服务器可以接收服务器或者客户端的发送过来的日志文件,用于对日志文件进行处理。集群服务器可以同时接收多个用户端的日志文件,对不同用户端的日志文件分别进行处理。
[0029]本发明实施例中,可以在需要采集日志的用户端设置或者搭载一个代理模块,用于定时采集日志文件,发送到集群服务器。用户端通过HTTP协议发送请求及其对应的日志文件,集群服务器响应请求后,通过提供的服务接口接收日志文件,以便于将日志文件存储在集群服务器上。
[0030]步骤S104,集群服务器存储日志文件。
[0031]在接收到用户端的日志文件之后,可以将日志文件存储到集群服务器。
[0032]具体地,存储日志文件可以是先将日志文件拆分成多行日志数据,然后将多行日志数据依次传送至分布式消息队列中,例如kafka消息队列,以便于集群服务器从分布式消息队列中读取日志数据进行分析。在将日志数据依次传送至分布式消息队列之后,集群服务器还可以从分布式消息队列中读取日志数据,对读取的日志数据进行解析,并生成键值对(key-value)的形式存储在分布式数据库中。在存储日志文件的同时,可以获取日志文件的描述信息(如日志文件的路径、创建时间等),存放在集群服务器的数据库中。
[0033]步骤S106,集群服务器对日志文件进行分析,得到分析结果。
[0034]当用户端将日志文件传输到集群服务器之后,用户可以访问集群服务器,查询集群服务器对日志文件的分析结果。例如,通过日志分析,可以得到用户端业务的运行状况或者故障状况。对日志文件进行分析可以是对日志文件中的信息进行统计,得到统计结果。
[0035]由于用户对日志文件的分析结果的查询情况的不同,根据查询要求的及时性可以将日志的分析分为实时分析和离线分析。实时分析通常要求在数秒内返回上亿行日志数据的分析,才能达到不影响用户查询分析结果的目的。对日志数据进行实时统计,这部分日志数据量一般不会太大,可以通过流式计算来统计分析,结果暂存数据库例如redis数据库中,处理后再对分析结果进行存储。
[0036]离线分析对统计数据的及时性要求不高,可以隔天或者隔月分析结果进行展示。把解析后的日志数据先存放在分布式数据库如Hbase数据库中,事先根据业务逻辑要求写好任务job,按预设周期定时跑任务来计算统计分析日志。
[0037]步骤S108,集群服务器输出分析结果。
[0038]输出分析结果可以是将分析结果输出给相应的用户端,在用户端可以通过网页或者应用程序对分析结果进行展示,以便于工作人员进行查看。
[0039]本发明实施例中,集群服务器中多个服务器用于接收日志文件,多个服务器用于存储日志文件,以及多个服务器用于分析日志文件,本发明实施例将复杂的运算均分配到各台服务器,实现了整个系统的高并发能力,处理能力可以达到传统架构的10倍以上。通过集群服务器来存储和分析的分类处理来达到海量日志处理的高效能,实现了海量日志分析,解决了现有技术中日志处理效率低的问题,达到了提高日志处理效率的效果。
[0040]本发明实施例可以是采用云计算原理,对日志文件进行处理。其中,云计算(cloudcomputing)是基于互联网的相关服务的增加、使用和交付模式,通常涉及通过互联网来提供动态易扩展且经常是虚拟化的资源。云是网络、互联网的一种比喻说法。过去在图中往往用云来表示电信网,后来也用来表示互联网和底层基础设施的抽象。狭义云计算指IT基础设施的交付和使用模式,指通过网络以按需、易扩展的方式获得所需资源;广义云计算指服务的交付和使用模式,指通过网络以按需、易扩展的方式获得所需服务。这种服务可以是IT和软件、互联网相关,也可是其他服务。它意味着计算能力也可作为一种商品通过互联网进行流通。云计算作为一种新兴的技术理念,其提供的云存储(海量数据分布存储技术)、云计算(hadoop的map reduce、流式实时计算)、云安全等很适用于大数据存储、挖掘、分析、预警、统计等需求,且其高效的性能让数据处理的及时和准确得到保障。基于云计算平台的原理,进行前期日志数据存储的选择和根据数据量和查询实时性的要求做了分类处理,最主要的是做到了一个业务任务分析的并行处理,而不是的多任务的并行处理,大大提升了查询效率和统计结果的正确性。
[0041]本发明实施例的目的在于解决海量日志的云存储,以及海量日志能够得到及时分析和深入分析挖掘的云计算服务,并且保证日志数据的安全性、准确性。同时解决了日志量的增长只要通过新的计算节点来解决,而无需只是一味地靠硬件提高数据处理效率及增加
存储量。
[0042]优选地,集群服务器存储日志文件的步骤包括以下步骤:
[0043]步骤SI,集群服务器将日志文件拆分成日志数据。
[0044]由于不同用户端的日志文件的格式各不相同,而每个日志文件中包含有多个日志记录,将日志文件拆分成日志数据可以是将日志文件拆分成多行日志数据,形成数据行,以便于将不通过格式的日志文件拆分成日志数据传送至分布式消息列中。
[0045]步骤S2,集群服务器将日志数据传送到分布式消息队列中。其中,集群服务器从分布式消息队列中读取日志数据,并对日志数据进行分析。
[0046]分布式消息队列可以是kafka消息队列,kafka的分布式消息队列比较适合简单的消息传递和分发,能支持大数据量,尤其是日志数据,而且与mapreduce结合做实时分析也能达到很好的效果。
[0047]优选地,在集群服务器将日志数据传送到分布式消息队列中的步骤之后,日志处理方法还包括:集群服务器从分布式消息队列中读取日志数据;集群服务器对读取的日志数据进行解析,得到解析结果;集群服务器根据解析结果生成日志数据对应的键值对;以及集群服务器通过将键值对存储到分布式数据库中来存储日志文件。
[0048]具体地,从分布式消息队列中读取日志数据,对每条日志数据进行解析,解析得到日志的关键字,例如mac地址、流量、具体应用等,基于这些解析结果生成日志数据对应的键值对,如利用mac地址为key,其他的解析结果为value,然后得到日志数据的键值对,然后把日志数据映射存储到分布式数据库如hbase数据库中。
[0049]本发明实施例,利用分布式数据库hbase存储日志解析的数据,由于hbase数据库是基于key-value的数据存储模式,扩展性好,从hbase取数进行分析速度够快,而且结果可以任意存储,要继续存储hbase、关系型数据或者redis均可,不会有不兼容的情况出现。
[0050]优选地,集群服务器对日志文件进行分析包括:集群服务器从分布式数据库中实时获取增量的日志数据;以及集群服务器对增量的日志数据采用流式计算进行统计。
[0051]由于日志文件的不断累加,存储在分布式数据库中的日志数据也不断增加,本发明实施例中的实时分析可以是集群服务器实时从分布式数据库中实时获取增量的日志数据,对增量的日志数据进行计算统计,避免对已经计算过的日志数据进行重复计算。实时获取增量的日志数据,采用流式计算对增量的数据进行统计。其中,流式计算是采用storm的bolt来完成,bolt中自带过滤、聚合、查询数据库等一系列操作,其中,过滤操作可以在前期的parse分析中完成,以DB表的形式存放在hbase中,只在流式计算中做了 map映射把需要的数据组织起来进行聚合计算分析。
[0052]具体地,首先,从kafka队列中取出日志数据经过parse解析存放在hbase中,此过程将日志记录进行拆分,映射成DB表的形式存放在hbase中。然后,采用流式计算来进行实时分析统计,流式计算是采用storm的bolt来完成,bolt中自带过滤、聚合、查询数据库等一系列操作,其中,过滤操作可以在前期的parse分析中完成,以DB表的形式存放在hbase中,只在流式计算中做了 map映射把需要的数据组织起来进行聚合计算分析。接着将流式计算统计完的结果存放在数据库如redis数据库中。最后,把存储在redis的结果数据依据实际需要存放在hbase数据库,或者关系型数据库mysql中,供用户查询这些统计数据。
[0053]上述实施例描述了日志分析中的实时分析的一个流程,根据实时分析流程处理海量日志的实时分析,瞬间把结果反馈给客户,提高日志分析结果的及时性。
[0054]优选地,集群服务器对日志文件进行分析包括:集群服务器按照预设周期从分布式数据库中获取增量的日志数据;以及集群服务器对增量的日志数据进行统计计算。
[0055]由于用户对日志文件的分析结果的查询情况的不同可以采用离线分析的方式对日志数据进行分析处理。可以预先设置分析的周期即预设周期,预设周期可以根据需要进行设置,例如一个星期或者一个月等。按照预设周期从分布式数据库中获取增量的日志数据,在对增量的日志数据进行统计计算。
[0056]具体地,可以通过以下步骤实现:
[0057]步骤一,从kafka队列中取出日志数据经过parse解析存放在hbase中,此过程将日志记录进行拆分,映射成DB表的形式存放在hbase中。
[0058]步骤二,根据具体需要创建一个个的作业任务,任务逻辑根据实际的业务逻辑而定。
[0059]步骤三,创建周期性调度Task,就是设置周期性的调度作业任务,比如预先创建任务1,每天零点跑任务I。
[0060]步骤四,到达的调度时间,依据调度内容启动任务。
[0061]步骤五,执行具体的任务逻辑计算统计日志数据。
[0062]步骤六,如果任务执行失败,则通过预先设置的通知模块以短信或者mail的方式通知相关用户,用户在手动排查原因后重启作业任务。
[0063]步骤七,任务执行成功后,把执行结果存放在hbase数据库中,方便用户查询。[0064]步骤八,任务执行成功并且把结果存放在hbase数据库后,可以通过通知模块以短信或者mail的方式通知用户,任务执行成功。
[0065]上述实施例描述了日志分析中的离线分析的一个流程,根据这样的离线分析流程并行处理海量日志的离线分析,并且把结果上报给前端供用户展示。
[0066]图2是根据本发明实施例一种优选的日志处理方法的流程图。如图2所示,该日志处理方法包括步骤如下:
[0067]步骤202,提取用户端的日志文件。提取日志文件可以是提取预设关键字相关的日志文件。通过设计一个脚本类型的agent代理模块,将其搭建在用户端的服务器上,基于业务需要每隔一定时间采集需要的日志。提取用户端的日志文件之后,可以将提取的日志文件推送到集群服务器。
[0068]步骤204,将推送出的日志文件存储在集群服务器。集群服务器上存储日志文件包括:首先是存储日志文件,其次是把日志的描述文件(包括日志存放的路径、大小、时间等)存储在redis中。
[0069]步骤206,集群服务器读取日志数据,把日志数据传送到分布式消息队列中。
[0070]步骤208,集群服务器从分布式消息队列中读取日志数据,并对日志数据进行解析。先进行日志解析,把有用的数据解析出来,解析后的数据存储在hbase相应的表字段中。
[0071]步骤210,读取日志解析后的数据进行分析,得到分析结果。对解析后的数据可以采取实时分析和离线分析两种方式。
[0072]步骤212,把分析结果通过展示在用户端。可以是通过Thrift以网页或者手机APP的形式来展现。
[0073]上述实施例描述了一个日志从采集到分析最后到结果展示整个一个流程,通过集群服务器来存储和分析的分类处理来达到海量日志处理的高效能,实现了海量日志分析。
[0074]下面通过本发明实施例的日志处理方法的一个应用场景来详细描述本发明。
[0075]对于聚合视频流量日志的处理过程包括:首先,采集聚合视频流量日志。然后,集群服务器把采集到的流量日志拆分成日志数据行传送到kfaka队列中。
[0076]在流量日志传送到kfaka队列中之后,集群服务器从kfaka队列中依次读取日志数据,对每条日志进行解析,解析成一些关键字,比如mac地址、流量、具体应用等。
[0077]集群服务器解析后的结果,会形成日志数据对应的key-value的模式,如利用mac为key,其余为value,把日志数据映射存储到hbase中。
[0078]然后可以根据需要,采用实时分析或者离线分析的方式对日志文件进行分析统计。其中,离线分析可以是每2H作为一次调度周期,调度时刻一到启动事先设计好的任务,增量计算这2H的流量情况并且更新每月的流量记录。同时告知用户任务的执行情况。
[0079]实时分析可根据查询指令,迅速查询上一次任务跑完到查询点的流量信息,并把实时查询的结果和上一次任务跑完的统计数据作为实际的流量数据反馈给用户。
[0080]最后,将分析结果界面展示给用户。
[0081]基于云计算平台的原理,进行前期数据存储的选择和根据数据量和查询实时性的要求做了分类处理,最主要的是做到了一个业务任务分析的并行处理,而不是的多任务的并行处理,大大提升了查询效率和统计结果的正确性。[0082]本发明实施例提供了一种日志处理装置,该装置可以通过集群服务器实现其功能。需要说明的是,本发明实施例的日志处理装置可以用于执行本发明实施例所提供的日志处理方法,本发明实施例的日志处理方法也可以通过本发明实施例所提供的日志处理装置来执行。
[0083]图3是根据本发明实施例的日志处理装置的示意图。如图3所示,该日志处理装置包括接收单元10、存储单元30、分析单元50和输出单元70。
[0084]接收单元10用于使得集群服务器接收用户端的日志文件。
[0085]用户端可以是需要采集日志的服务器,也可以是用户那一侧需要采集日志的客户端。例如,用户通过一台服务器对应客户端,不同的客户端分别运行各自的业务,客户端会产生日志。同时,服务器在为个客户端提供后台服务,服务器在运行过程中也会产生一些日志。集群服务器可以接收服务器或者客户端的发送过来的日志文件,用于对日志文件进行处理。集群服务器可以同时接收多个用户端的日志文件,对不同用户端的日志文件分别进行处理。
[0086]本发明实施例中,可以在需要采集日志的用户端设置或者搭载一个代理模块,用于定时采集日志文件,发送到集群服务器。用户端通过HTTP协议发送请求及其对应的日志文件,集群服务器响应请求后,通过提供的服务接口接收日志文件,以便于将日志文件存储在集群服务器上。
[0087]存储单元30用于使得集群服务器存储日志文件。
[0088]在接收到用户端的日志文件之后,可以将日志文件存储到集群服务器。
[0089]具体地,存储日志文件可以是先将日志文件拆分成多行日志数据,然后将多行日志数据依次传送至分布式消息队列中,例如kafka消息队列,以便于集群服务器从分布式消息队列中读取日志数据进行分析。在将日志数据依次传送至分布式消息队列之后,集群服务器还可以从分布式消息队列中读取日志数据,对读取的日志数据进行解析,并生成键值对(key-value)的形式存储在分布式数据库中。在存储日志文件的同时,可以获取日志文件的描述信息(如日志文件的路径、创建时间等),存放在集群服务器的数据库中。
[0090]分析单元50用于使得集群服务器对日志文件进行分析,得到分析结果。
[0091]当用户端将日志文件传输到集群服务器之后,用户可以访问集群服务器,查询集群服务器对日志文件的分析结果。例如,通过日志分析,可以得到用户端业务的运行状况或者故障状况。对日志文件进行分析可以是对日志文件中的信息进行统计,得到统计结果。
[0092]由于用户对日志文件的分析结果的查询情况的不同,根据查询要求的及时性可以将日志的分析分为实时分析和离线分析。实时分析通常要求在数秒内返回上亿行日志数据的分析,才能达到不影响用户查询分析结果的目的。对日志数据进行实时统计,这部分日志数据量一般不会太大,可以通过流式计算来统计分析,结果暂存数据库例如redis数据库中,处理后再对分析结果进行存储。
[0093]离线分析对统计数据的及时性要求不高,可以隔天或者隔月分析结果进行展示。把解析后的日志数据先存放在分布式数据库如Hbase数据库中,事先根据业务逻辑要求写好任务job,按预设周期定时跑任务来计算统计分析日志。
[0094]输出单元70用于使得集群服务器输出分析结果。
[0095]输出分析结果可以是将分析结果输出给相应的用户端,在用户端可以通过网页或者应用程序对分析结果进行展示,以便于工作人员进行查看。
[0096]本发明实施例中,集群服务器中多个服务器用于接收日志文件,多个服务器用于存储日志文件,以及多个服务器用于分析日志文件,本发明实施例将复杂的运算均分配到各台服务器,实现了整个系统的高并发能力,处理能力可以达到传统架构的10倍以上。通过集群服务器来存储和分析的分类处理来达到海量日志处理的高效能,实现了海量日志分析,解决了现有技术中日志处理效率低的问题,达到了提高日志处理效率的效果。
[0097]本发明实施例可以是采用云计算原理,对日志文件进行处理。其中,云计算(cloudcomputing)是基于互联网的相关服务的增力卩、使用和交付模式,通常涉及通过互联网来提供动态易扩展且经常是虚拟化的资源。云是网络、互联网的一种比喻说法。过去在图中往往用云来表示电信网,后来也用来表示互联网和底层基础设施的抽象。狭义云计算指IT基础设施的交付和使用模式,指通过网络以按需、易扩展的方式获得所需资源;广义云计算指服务的交付和使用模式,指通过网络以按需、易扩展的方式获得所需服务。这种服务可以是IT和软件、互联网相关,也可是其他服务。它意味着计算能力也可作为一种商品通过互联网进行流通。云计算作为一种新兴的技术理念,其提供的云存储(海量数据分布存储技术)、云计算(hadoop的map reduce、流式实时计算)、云安全等很适用于大数据存储、挖掘、分析、预警、统计等需求,且其高效的性能让数据处理的及时和准确得到保障。基于云计算平台的原理,进行前期日志数据存储的选择和根据数据量和查询实时性的要求做了分类处理,最主要的是做到了一个业务任务分析的并行处理,而不是的多任务的并行处理,大大提升了查询效率和统计结果的正确性。
[0098]本发明实施例的目的在于解决海量日志的云存储,以及海量日志能够得到及时分析和深入分析挖掘的云计算服务,并且保证日志数据的安全性、准确性。同时解决了日志量的增长只要通过新的计算节点来解决,而无需只是一味地靠硬件提高数据处理效率及增加
存储量。
[0099]优选地,存储单元包括拆分模块和传送模块。
[0100]拆分模块用于使得集群服务器将日志文件拆分成日志数据。
[0101]由于不同用户端的日志文件的格式各不相同,而每个日志文件中包含有多个日志记录,将日志文件拆分成日志数据可以是将日志文件拆分成多行日志数据,形成数据行,以便于将不通过格式的日志文件拆分成日志数据传送至分布式消息列中。
[0102]传送模块用于使得集群服务器将日志数据传送到分布式消息队列中。其中,集群服务器从分布式消息队列中读取日志数据,并对日志数据进行分析。
[0103]分布式消息队列可以是kafka消息队列,kafka的分布式消息队列比较适合简单的消息传递和分发,能支持大数据量,尤其是日志数据,而且与mapreduce结合做实时分析也能达到很好的效果。
[0104]优选地,存储单元还包括读取模块、解析模块、生成模块和存储模块。
[0105]读取模块用于在集群服务器将日志数据传送到分布式消息队列中之后,使得集群服务器从分布式消息队列中读取日志数据。解析模块用于使得集群服务器对读取的日志数据进行解析,得到解析结果。生成模块用于使得集群服务器根据解析结果生成日志数据对应的键值对。存储模块用于使得集群服务器通过将键值对存储到分布式数据库中来存储日志文件。[0106]具体地,从分布式消息队列中读取日志数据,对每条日志数据进行解析,解析得到日志的关键字,例如mac地址、流量、具体应用等,基于这些解析结果生成日志数据对应的键值对,如利用mac地址为key,其他的解析结果为value,然后得到日志数据的键值对,然后把日志数据映射存储到分布式数据库如hbase数据库中。
[0107]本发明实施例,利用分布式数据库hbase存储日志解析的数据,由于hbase数据库是基于key-value的数据存储模式,扩展性好,从hbase取数进行分析速度够快,而且结果可以任意存储,要继续存储hbase、关系型数据或者redis均可,不会有不兼容的情况出现。
[0108]优选地,分析单元包括第一获取模块和第一计算模块。
[0109]第一获取模块用于使得集群服务器从分布式数据库中实时获取增量的日志数据。第一计算模块用于使得集群服务器对增量的日志数据采用流式计算进行统计。
[0110]由于日志文件的不断累加,存储在分布式数据库中的日志数据也不断增加,本发明实施例中的实时分析可以是集群服务器实时从分布式数据库中实时获取增量的日志数据,对增量的日志数据进行计算统计,避免对已经计算过的日志数据进行重复计算。实时获取增量的日志数据,采用流式计算对增量的数据进行统计。其中,流式计算是采用storm的bolt来完成,bolt中自带过滤、聚合、查询数据库等一系列操作,其中,过滤操作可以在前期的parse分析中完成,以DB表的形式存放在hbase中,只在流式计算中做了 map映射把需要的数据组织起来进行聚合计算分析。
[0111]具体地,首先,从kafka队列中取出日志数据经过parse解析存放在hbase中,此过程将日志记录进行拆分,映射成DB表的形式存放在hbase中。然后,采用流式计算来进行实时分析统计,流式计算是采用storm的bolt来完成,bolt中自带过滤、聚合、查询数据库等一系列操作,其中,过滤操作可以在前期的parse分析中完成,以DB表的形式存放在hbase中,只在流式计算中做了 map映射把需要的数据组织起来进行聚合计算分析。接着将流式计算统计完的结果存放在数据库如redis数据库中。最后,把存储在redis的结果数据依据实际需要存放在hbase数据库,或者关系型数据库mysql中,供用户查询这些统计数据。
[0112]上述实施例描述了日志分析中的实时分析的一个流程,根据实时分析流程处理海量日志的实时分析,瞬间把结果反馈给客户,提高日志分析结果的及时性。
[0113]优选地,分析单元包括第二获取模块和第二计算模块。
[0114]第二获取模块用于使得集群服务器按照预设周期从分布式数据库中获取增量的日志数据。第二计算模块用于使得集群服务器对增量的日志数据进行统计计算。
[0115]由于用户对日志文件的分析结果的查询情况的不同可以采用离线分析的方式对日志数据进行分析处理。可以预先设置分析的周期即预设周期,预设周期可以根据需要进行设置,例如一个星期或者一个月等。按照预设周期从分布式数据库中获取增量的日志数据,在对增量的日志数据进行统计计算。
[0116]具体地,可以通过以下步骤实现:
[0117]步骤一,从kafka队列中取出日志数据经过parse解析存放在hbase中,此过程将日志记录进行拆分,映射成DB表的形式存放在hbase中。
[0118]步骤二,根据具体需要创建一个个的作业任务,任务逻辑根据实际的业务逻辑而定。[0119]步骤三,创建周期性调度Task,就是设置周期性的调度作业任务,比如预先创建任务1,每天零点跑任务I。
[0120]步骤四,到达的调度时间,依据调度内容启动任务。
[0121 ] 步骤五,执行具体的任务逻辑计算统计日志数据。
[0122]步骤六,如果任务执行失败,则通过预先设置的通知模块以短信或者mail的方式通知相关用户,用户在手动排查原因后重启作业任务。
[0123]步骤七,任务执行成功后,把执行结果存放在hbase数据库中,方便用户查询。
[0124]步骤八,任务执行成功并且把结果存放在hbase数据库后,可以通过通知模块以短信或者mail的方式通知用户,任务执行成功。
[0125]上述实施例描述了日志分析中的离线分析的一个流程,根据这样的离线分析流程并行处理海量日志的离线分析,并且把结果上报给前端供用户展示。
[0126]图4是根据本发明实施例的一种优选的日志处理装置的示意图。如图4所示,该实施例的日志处理装置包括日志采集模块20、日志存储模块40、日志分析模块60和显示模块80。
[0127]日志采集模块20用于从外部系统上提取相关日志。外部系统可以是需要采集日志的服务器,也可以是用户那一侧需要采集日志的客户端,即,本发明实施例中提供的用户端。具体地,可以是通过设计的一个agent代理,搭载在需要采集日志的服务器上,定时采集相关日志往存储模块传送。
[0128]日志存储模块40用于把采集来的日志存储在collector集群服务器上。日志存储模块40具有两部分功能,一是通过HTTP协议将采集来的日志文件存放在集群服务器上,并且把日志文件的描述信息(例如文件路径、创建时间等)存放在Redis中;二是processor处理过程,通过redis读取日志文件的描述信息把具体日志文件数据传送到kafka消息队列中,供日志分析模块60调用分析。日志存储模块40可以通过本发明实施例中的存储单元来实现其功能。
[0129]日志分析模块60用于计算统计日志相关数据,根据查询要求的及时性分为实时分析和离线分析。日志分析模块60可以通过本发明实施例的分析单元实现其功能。
[0130]实时分析通常要求在数秒内返回上亿行数据的分析,从日志存储模块40中分发出即时的日志数据进行实时统计,这部分数据量一般不会太大,可以通过流式计算来统计分析,结果暂存redis中,处理后往hbase中存放,方便取数前端展示。
[0131]离线分析对统计数据的及时性要求不高,可以隔天或者隔月展示。从日志存储模块中把解析后的日志数据先存放在Hbase数据库中,根据业务逻辑要求预先写好任务job,定时跑任务来计算统计分析日志。
[0132]显示模块80用于将日志分析结果通过网页或者手机APP展示给用户。
[0133]本发明实施例的优点在于:第一,采用可搭可卸的agent代理采集日志,可以方便配置采集日志类型,不需要也可以随时卸载,方便快捷,无需重新定制开发。第二,采用集群存储,作为一个日志中心,可接受所有传送过来的日志,集中进行key-value处理后进行存储,尤其是随着日志量的增长,只要通过增加硬盘、内存等硬件来扩容即可,即方便快捷又节省开销。第三,日志分析模块60针对日志量和实际需求进行分类处理,对大数据量的分析速率较快,且准确性较高,对于结果的反馈可自动通知用户,及时性得到很好的保障。第四,利用hbase存储日志解析的数据,由于hbase是基于key value的数据存储模式,扩展性好,从hbase数据库取数进行分析速度够快,而且结果可以任意存储,要继续存储hbase数据库、关系型数据或者redis数据库均可,不会有不兼容的情况出现。
[0134]综上,本发明具有如下效果:
[0135]高运算能力,将复杂的运算均分配到各台服务器,实现了整个装置的高并发能力,处理能力是传统架构的10倍以上。
[0136]在用户实际应用环境中,各种不同类型的软硬件故障发生的概率较高,如硬件损坏、网络中断、系统崩溃等异常都会引起服务中断,甚至造成数据丢失。本发明实施例是一个构建在云平台之上的海量日志的日志处理装置,因此它可利用云计算环境的多主机冗余来保障服务的高可靠性。
[0137]本发明实施例能够将所有用户端的本地存储做汇总,可支持PB规模的存储容量,且非常容易进行存储扩容,整个扩展过程不会影响服务的持续运行。
[0138]本发明实施例使用的软件产品为开源产品,硬件采用低端的PC-SERVER,总成本较低。
[0139]需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明并不受所描述的动作顺序的限制,因为依据本发明,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本发明所必须的。
[0140]在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
[0141]在本申请所提供的几个实施例中,应该理解到,所揭露的装置,可通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性或其它的形式。
[0142]所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
[0143]另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
[0144]所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可为个人计算机、移动终端、服务器或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、只读存储器(ROM,Read-OnlyMemory)、随机存取存储器(RAM, Random Access Memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
[0145]以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
【权利要求】
1.一种日志处理方法,其特征在于,包括: 集群服务器接收用户端的日志文件; 所述集群服务器存储所述日志文件; 所述集群服务器对所述日志文件进行分析,得到分析结果;以及 所述集群服务器输出所述分析结果。
2.根据权利要求1所述的日志处理方法,其特征在于,所述集群服务器存储所述日志文件包括: 所述集群服务器将所述日志文件拆分成日志数据;以及 所述集群服务器将所述日志数据传送到分布式消息队列中, 其中,所述集群服务器从所述分布式消息队列中读取所述日志数据,并对所 述日志数据进行分析。
3.根据权利要求2所述的日志处理方法,其特征在于,在所述集群服务器将所述日志数据传送到分布式消息队列中之后,所述日志处理方法还包括: 所述集群服务器从所述分布式消息队列中读取所述日志数据; 所述集群服务器对读取的日志数据进行解析,得到解析结果; 所述集群服务器根据所述解析结果生成所述日志数据对应的键值对;以及 所述集群服务器通过将所述键值对存储到分布式数据库中来存储所述日志文件。
4.根据权利要求3所述的日志处理方法,其特征在于,所述集群服务器对所述日志文件进行分析包括: 所述集群服务器从所述分布式数据库中实时获取增量的日志数据;以及 所述集群服务器对所述增量的日志数据采用流式计算进行统计。
5.根据权利要求3所述的日志处理方法,其特征在于,所述集群服务器对所述日志文件进行分析包括: 所述集群服务器按照预设周期从所述分布式数据库中获取增量的日志数据;以及 所述集群服务器对所述增量的日志数据进行统计计算。
6.一种日志处理装置,其特征在于,包括: 接收单元,用于使得集群服务器接收用户端的日志文件; 存储单元,用于使得所述集群服务器存储所述日志文件; 分析单元,用于使得所述集群服务器对所述日志文件进行分析,得到分析结果;以及 输出单元,用于使得所述集群服务器输出所述分析结果。
7.根据权利要求6所述的日志处理装置,其特征在于,所述存储单元包括: 拆分模块,用于使得所述集群服务器将所述日志文件拆分成日志数据;以及 传送模块,用于使得所述集群服务器将所述日志数据传送到分布式消息队列中, 其中,所述集群服务器从所述分布式消息队列中读取所述日志数据,并对所述日志数据进行分析。
8.根据权利要求7所述的日志处理装置,其特征在于,所述存储单元还包括: 读取模块,用于在所述集群服务器将所述日志数据传送到分布式消息队列中之后,使得所述集群服务器从所述分布式消息队列中读取所述日志数据; 解析模块,用于使得所述集群服务器对读取的日志数据进行解析,得到解析结果;生成模块,用于使得所述集群服务器根据所述解析结果生成所述日志数据对应的键值对;以及 存储模块,用于使得所述集群服务器通过将所述键值对存储到分布式数据库中来存储所述日志文件。
9.根据权利要求8所述的日志处理装置,其特征在于,所述分析单元包括: 第一获取模块,用于使得所述集群服务器从所述分布式数据库中实时获取增量的日志数据;以及 第一计算模块,用于使得所述集群服务器对所述增量的日志数据采用流式计算进行统计。
10.根据权利要求8所述的日志处理装置,其特征在于,所述分析单元包括: 第二获取模块,用于使得所述集群服务器按照预设周期从所述分布式数据库中获取增量的日志数据;以及 第二计算模块,用于使得所述集群服务器对所述增量的日志数据进行统计计算。
【文档编号】G06F17/30GK103838867SQ201410106430
【公开日】2014年6月4日 申请日期:2014年3月20日 优先权日:2014年3月20日
【发明者】洪珂, 刘华明, 卢荣斌, 闵杰, 李波, 陈燕华 申请人:网宿科技股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1