日志解析方法、装置、设备及计算机可读存储介质与流程

文档序号:17762539发布日期:2019-05-24 21:49阅读:131来源:国知局
日志解析方法、装置、设备及计算机可读存储介质与流程

本发明涉及日志处理技术领域,尤其涉及一种日志解析方法、装置、设备及计算机可读存储介质。



背景技术:

elasticsearch:简称es,是基于lucene(全文搜索引擎)的搜索引擎,它提供了一个分布式,支持多租户的全文搜索引擎,它具有http(hypertexttransferprotocol,超文本传输协议)web界面和无模式json(javascriptobjectnotation,javascript对象简谱)文档。目前通过采用搭建elasticsearch集群来存储业务日志,由于各个业务系统生成的业务日志格式不一致,若要进行业务日志的离线分析,需要各个业务系统将业务日志解析成特定的字段数据发送给elasticsearch集群,而业务系统在将解析后的字段数据发送给elasticsearch集群过程,容易出现数据丢失,数据被篡改等,导致日志离线分析准确率低下。



技术实现要素:

本发明的主要目的在于提供一种日志解析方法、装置、设备及计算机可读存储介质,旨在解决现有的日志离线分析准确率低下的技术问题。

为实现上述目的,本发明提供一种日志解析方法,所述日志解析方法包括步骤:

当通过日志解析进程接收到业务日志后,获取所述业务日志对应的日志标识;

通过所述日志标识在所述日志解析进程中获取与所述业务日志对应的日志配置信息;

遍历所述日志配置信息中各个解析分支,根据各个解析分支对应的日志解析格式解析所述业务日志,得到所述业务日志对应的日志数据。

优选地,所述遍历所述日志配置信息中各个解析分支,根据各个解析分支对应的日志解析格式解析所述业务日志,得到所述业务日志对应的日志数据的步骤之后,还包括:

通过所述日志解析进程将所述日志数据中的解析参数存储至预设存储表中,并将所述解析参数的字段名称映射到所述存储表对应的字段名称中,得到存储表文件;

若确定所述存储表文件需要发送至hive中,则在检测到与所述日志解析进程对应的定时任务进程启动时,将所述存储表文件发送给所述定时任务进程,以供所述定时任务进程将所述存储表文件发送至所述hive中。

优选地,所述当通过日志解析进程接收到业务日志后,获取所述业务日志对应的日志标识的步骤之前,还包括:

当通过数据解析系统的主进程接收到日志配置系统发送的变更日志配置信息的变更消息后,获取所述变更消息携带的变更后的日志配置信息;

通过所述主进程将变更后的所述日志配置信息发送给由所述主进程创建的定时任务进程和日志解析进程;

在检测到所述定时任务进程当前存储的日志配置信息版本号小于变更后的所述日志配置信息版本号时,控制所述定时任务进程根据变更后的所述日志配置信息更新当前存储的所述日志配置信息;

和/或在检测到所述日志解析进程当前存储的日志配置信息版本号小于变更后的所述日志配置信息版本号时,控制所述日志解析进程根据变更后的所述日志配置信息更新当前存储的所述日志配置信息。

优选地,所述在检测到所述定时任务进程当前存储的日志配置信息版本号小于变更后的所述日志配置信息版本号时,控制所述定时任务进程根据变更后的所述日志配置信息更新当前存储的所述日志配置信息的步骤之后,还包括:

获取变更后的所述日志配置信息对应的日志标识,并根据所述日志标识创建配置树;

在预设的存储系统中按照所述配置树的树形结构创建文件夹,以及在所述日志标识对应文价夹中创建分支文件;

确定所述定时任务进程所在的当前时间;

若所述当前时间与目标时间进行取模运算后的结果等于零,则将分支文件按照变更后的所述日志配置信息中的hive表名称发送至hive中,其中,所述目标时间为变更后的所述日志配置信息中切分间隔对应的时间。

优选地,所述在预设的存储系统中按照所述配置树的树形结构创建文件夹,以及在所述日志标识对应文价夹中创建分支文件的步骤之后,还包括:

在检测到所述定时任务进程当前所在时间为扫描所述存储系统的扫描时间后,检测所述存储系统中的文件夹目录数量是否大于配置树数量;

若所述文件夹目录数量大于所述配置树数量,则确定所述存储系统中不存在对应配置树的文件夹目标目录,并删除所述文件夹目标目录。

优选地,在检测到所述定时任务进程当前所在时间为扫描所述存储系统的扫描时间的步骤之后,还包括:

判断所述存储系统中的分支文件生成时长是否大于所述配置树节点的存活时长;

若所述生成时长大于所述存活时长,则删除大于所述存活时长的生成时长对应的分支文件。

优选地,所述当通过数据解析系统的主进程接收到日志配置系统发送的变更日志配置信息的变更消息后,获取与所述变更消息对应的变更后的日志配置信息的步骤之前,还包括:

当侦测到数据解析系统启动时,通过所述数据解析系统的主进程创建所述定时任务进程和所述日志解析进程。

优选地,所述通过所述日志标识在所述日志解析进程中获取与所述业务日志对应的日志配置信息的步骤包括:

通过所述日志标识在所述日志解析进程中获取与所述业务日志对应解析分支的分支文件的文件名;

获取所述文件名对应的哈希表,获取所述哈希表缓存的与所述分支文件对应的文件描述符;

通过所述文件描述符获取与所述业务日志对应的日志配置信息。

此外,为实现上述目的,本发明还提供一种日志解析装置,所述日志解析装置包括:

获取模块,用于当通过日志解析进程接收到业务日志后,获取所述业务日志对应的日志标识;通过所述日志标识在所述日志解析进程中获取与所述业务日志对应的日志配置信息;

遍历模块,用于遍历所述日志配置信息中各个解析分支;

解析模块,用于根据各个解析分支对应的日志解析格式解析所述业务日志,得到所述业务日志对应的日志数据。

此外,为实现上述目的,本发明还提供一种日志解析设备,所述日志解析设备包括存储器、处理器和存储在所述存储器上并可在所述处理器上运行的日志解析程序,所述日志解析程序被所述处理器执行时实现如上所述的日志解析方法的步骤。

此外,为实现上述目的,本发明还提供一种计算机可读存储介质,所述计算机可读存储介质上存储有日志解析程序,所述日志解析程序被处理器执行时实现如上所述的日志解析方法的步骤。

本发明当通过日志解析进程接收到业务日志后,获取业务日志对应的日志标识;通过日志标识在日志解析进程中获取与业务日志对应的日志配置信息;遍历日志配置信息中各个解析分支,根据各个解析分支对应的日志解析格式解析业务日志,得到业务日志对应的日志数据,实现了业务系统无需拆分业务日志,只需要将有其产生的原始业务日志发送给日志解析进程,日志解析进程会自动解析业务日志,得到业务日志对应的日志数据,避免了业务系统在拆分业务日志后,将所拆分的日志数据发送给数据解析过程中出现日志数据丢失、数据被篡改的问题,提高了日志离线分析的准确率。

附图说明

图1是本发明实施例方案涉及的硬件运行环境的结构示意图;

图2是本发明日志解析方法第一实施例的流程示意图;

图3是本发明日志解析方法第二实施例的流程示意图;

图4是本发明日志解析方法第三实施例的流程示意图。

本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。

具体实施方式

应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。

如图1所示,图1是本发明实施例方案涉及的硬件运行环境的结构示意图。

需要说明的是,图1即可为日志解析设备的硬件运行环境的结构示意图。本发明实施例日志解析设备可以是pc,便携计算机等终端设备。

如图1所示,该日志解析设备可以包括:处理器1001,例如cpu,用户接口1003,网络接口1004,存储器1005,通信总线1002。其中,通信总线1002用于实现这些组件之间的连接通信。用户接口1003可以包括显示屏(display)、输入单元比如键盘(keyboard),可选用户接口1003还可以包括标准的有线接口、无线接口。网络接口1004可选的可以包括标准的有线接口、无线接口(如wi-fi接口)。存储器1005可以是高速ram存储器,也可以是稳定的存储器(non-volatilememory),例如磁盘存储器。存储器1005可选的还可以是独立于前述处理器1001的存储装置。

本领域技术人员可以理解,图1中示出的日志解析设备结构并不构成对日志解析设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。

如图1所示,作为一种计算机存储介质的存储器1005中可以包括操作系统、网络通信模块、用户接口模块以及日志解析程序。其中,操作系统是管理和控制日志解析设备硬件和软件资源的程序,支持日志解析程序以及其它软件或程序的运行。

在图1所示的日志解析设备中,用户接口1003主要用于接收业务日志和日志配置信息等;网络接口1004主要用于连接后台服务器,与后台服务器进行数据通信;而处理器1001可以用于调用存储器1005中存储的日志解析程序,并执行以下操作:

当通过日志解析进程接收到业务日志后,获取所述业务日志对应的日志标识;

通过所述日志标识在所述日志解析进程中获取与所述业务日志对应的日志配置信息;

遍历所述日志配置信息中各个解析分支,根据各个解析分支对应的日志解析格式解析所述业务日志,得到所述业务日志对应的日志数据。

进一步地,所述遍历所述日志配置信息中各个解析分支,根据各个解析分支对应的日志解析格式解析所述业务日志,得到所述业务日志对应的日志数据的步骤之后,处理器1001还可以用于调用存储器1005中存储的基于区块链的日志解析程序,并执行以下步骤:

通过所述日志解析进程将所述日志数据中的解析参数存储至预设存储表中,并将所述解析参数的字段名称映射到所述存储表对应的字段名称中,得到存储表文件;

若确定所述存储表文件需要发送至hive中,则在检测到与所述日志解析进程对应的定时任务进程启动时,将所述存储表文件发送给所述定时任务进程,以供所述定时任务进程将所述存储表文件发送至所述hive中。

进一步地,所述当通过日志解析进程接收到业务日志后,获取所述业务日志对应的日志标识的步骤之前,处理器1001还可以用于调用存储器1005中存储的基于区块链的日志解析程序,并执行以下步骤:

当通过数据解析系统的主进程接收到日志配置系统发送的变更日志配置信息的变更消息后,获取所述变更消息携带的变更后的日志配置信息;

通过所述主进程将变更后的所述日志配置信息发送给由所述主进程创建的定时任务进程和日志解析进程;

在检测到所述定时任务进程当前存储的日志配置信息版本号小于变更后的所述日志配置信息版本号时,控制所述定时任务进程根据变更后的所述日志配置信息更新当前存储的所述日志配置信息;

和/或在检测到所述日志解析进程当前存储的日志配置信息版本号小于变更后的所述日志配置信息版本号时,控制所述日志解析进程根据变更后的所述日志配置信息更新当前存储的所述日志配置信息。

进一步地,所述在检测到所述定时任务进程当前存储的日志配置信息版本号小于变更后的所述日志配置信息版本号时,控制所述定时任务进程根据变更后的所述日志配置信息更新当前存储的所述日志配置信息的步骤之后,处理器1001还可以用于调用存储器1005中存储的基于区块链的日志解析程序,并执行以下步骤:

获取变更后的所述日志配置信息对应的日志标识,并根据所述日志标识创建配置树;

在预设的存储系统中按照所述配置树的树形结构创建文件夹,以及在所述日志标识对应文价夹中创建分支文件;

确定所述定时任务进程所在的当前时间;

若所述当前时间与目标时间进行取模运算后的结果等于零,则将分支文件按照变更后的所述日志配置信息中的hive表名称发送至hive中,其中,所述目标时间为变更后的所述日志配置信息中切分间隔对应的时间。

进一步地,所述在预设的存储系统中按照所述配置树的树形结构创建文件夹,以及在所述日志标识对应文价夹中创建分支文件的步骤之后,处理器1001还可以用于调用存储器1005中存储的基于区块链的日志解析程序,并执行以下步骤:

在检测到所述定时任务进程当前所在时间为扫描所述存储系统的扫描时间后,检测所述存储系统中的文件夹目录数量是否大于配置树数量;

若所述文件夹目录数量大于所述配置树数量,则确定所述存储系统中不存在对应配置树的文件夹目标目录,并删除所述文件夹目标目录。

进一步地,在检测到所述定时任务进程当前所在时间为扫描所述存储系统的扫描时间的步骤之后,处理器1001还可以用于调用存储器1005中存储的基于区块链的日志解析程序,并执行以下步骤:

判断所述存储系统中的分支文件生成时长是否大于所述配置树节点的存活时长;

若所述生成时长大于所述存活时长,则删除大于所述存活时长的生成时长对应的分支文件。

进一步地,所述当通过数据解析系统的主进程接收到日志配置系统发送的变更日志配置信息的变更消息后,获取与所述变更消息对应的变更后的日志配置信息的步骤之前,处理器1001还可以用于调用存储器1005中存储的基于区块链的日志解析程序,并执行以下步骤:

当侦测到数据解析系统启动时,通过所述数据解析系统的主进程创建所述定时任务进程和所述日志解析进程。

进一步地,所述通过所述日志标识在所述日志解析进程中获取与所述业务日志对应的日志配置信息的步骤包括:

通过所述日志标识在所述日志解析进程中获取与所述业务日志对应解析分支的分支文件的文件名;

获取所述文件名对应的哈希表,获取所述哈希表缓存的与所述分支文件对应的文件描述符;

通过所述文件描述符获取与所述业务日志对应的日志配置信息。

基于上述的结构,提出日志解析方法的各个实施例。

参照图2,图2为本发明日志解析方法第一实施例的流程示意图。

本发明实施例提供了日志解析方法的实施例,需要说明的是,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。

日志解析方法包括:

步骤s10,当通过日志解析进程接收到业务日志后,获取所述业务日志对应的日志标识。

在dps(dataparsesystem,数据解析系统)中,存在日志解析进程。当dps的日志解析进程接收到业务系统发送的业务日志后,日志解析进程获取业务日志对应的日志标识。在本发明实施例中,每一个业务日志都存在唯一的日志标识。在本发明实施例中不限制日志标识的表现形式。

进一步地,日志解析进程分为接入层、计算层和存储层,接入层用于接收不同上游业务系统发送的业务日志。需要说明的是,由于各个业务系统发送业务日志的通信协议不一样,会导致接入层接收的业务日志的格式是不一样的,因此,在接入层接收到不同业务系统发送的业务日志后,会将业务日志转换成标准格式,即将业务日志转换统一的格式,得到转换格式后的业务日志,接入层将转换格式后的业务日志发送给计算层。其中,标准格式是预先设置好的,如标准格式可设置为:业务标识+业务日志生成时间的时间戳+业务日志解析参数+日志等级。本实施例对标准格式不做具体限制,也可根据需要将标准格式设置为其它形式。业务日志解析参数为该业务日志需要解析出来的内容,如当该业务日志为业务系统的运行日志,则解析参数可能包括业务系统的故障原因,发生故障的故障时间等。日志等级由低到高为debug<info<warn<error<fatal。其中,debug级别最低,对于指出细粒度信息事件对调试应用程序是非常有帮助的,主要用于开发过程中打印一些运行信息;info重要的输出信息,用来反馈业务系统的当前状态给用户;警告warn,此时表示业务系统出现故障,但可修复,业务系统可继续运行下去;错误error,可修复性,但无法确定业务系统是否会正常的工作下去;严重错误fatal,相当严重,可以肯定这种错误已经无法修复,并且如果业务系统继续运行下去的话后果严重。当计算层接收到转换格式后的业务日志后,计算层获取业务日志的业务标识。

步骤s20,通过所述日志标识在所述日志解析进程中获取与所述业务日志对应的日志配置信息。

当获取到日志标识后,日志解析进程通过日志标识获取与业务日志对应的日志配置信息。其中,日志配置信息包括但不限于切分间隔、存活时长,日志等级、推送标识、hive表名称、mysql(关系型数据库管理系统)表名称、输出格式和解析参数。切分间隔是预先设置好的,是对业务日志进行切分的时间间隔,如当切分间隔设置为3小时时,表明每隔3个小时将所接收的业务日志进行切分,即将每3个小时接收的业务日志作为一个文件存储;存活时长为业务日志在ceph上存储的时间长度,存活时长可根据具体需要而设置;推送标识有两个,一个表示要将业务日志推送至hive做离线分析,一个表示不需要将业务日志推送至hive做离线分析,本发明实施例不限制这两个推送标识的表现形式;输出格式为业务日志的输出格式,在本发明实施例中,输出格式为c语言标准格式;解析参数的字段名称与存储表名称是存在映射关系的,存储表名称为hive表名称和/或mysql表名称。

可以理解的是,hive是基于hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供简单的sql(structuredquerylanguage,结构化查询语言)查询功能,可以将sql语句转换为mapreduce任务进行运行。ceph是一种为优秀的性能、可靠性和可扩展性而设计的统一的、分布式文件系统。

需要说明的是,每个业务日志都存在唯一的业务标识,业务标识根据业务日志对应的目标业务和子目标业务进行分类,每个业务标识可对应至少一个解析分支,不同的解析分支对业务日志的解析形式是不一样,如某个解析分支是通过“*”将业务日志进行解析,然后通过“*”将该业务日志的日志配置信息连接起来,另一个解析分支是通过“+”将业务日志进行解析,然后通过“+”将业务日志的日志配置信息连接起来。在本发明实施例中,每个业务日志都存在对应的目标业务和子目标业务,一个目标业务至少对应一个子目标有业务。不同解析分支的分支名称是不一样的,因此通过分支名称即可区分各个解析分支。在本发明实施例中,业务标识和分支名称是存在关联关系的,因此,通过业务标识即可确定业务日志对应的分支名称,通过分支名称即可获取该业务日志对应的日志配置信息。

进一步地,为了提高获取日志配置信息的获取速度,步骤s20包括:

步骤a,通过所述日志标识在所述日志解析进程中获取与所述业务日志对应解析分支的分支文件的文件名。

步骤b,获取所述文件名对应的哈希表,获取所述哈希表缓存的与所述分支文件对应的文件描述符。

步骤c,通过所述文件描述符获取与所述业务日志对应的日志配置信息。

进一步地,在日志解析进程中,每一个解析分支都会存在一个分支文件,该分支文件是用于存储业务日志的日志配置信息的,计算层会根据该分支文件的文件名建立一个哈希表来缓存打开该分支文件的文件描述符,以实现对于一个解析分支对应的分支文件,计算层只要打开一次即可,后续根据哈希表缓存的文件描述符即可在对应分支文件中写入数据或者获取数据,以提高数据获取速度和数据写入速度。需要说明的是,由于一个解析分支存在一个分支文件,因此文件名可用解析分支的分支名称表示,也可采用与分支名称不同的形式表示。

当获取到日志标识后,日志解析进程根据日志标识获取业务日志的解析分支对应分支文件的文件名,获取该文件名对应的哈希表,获取该哈希表缓存的,与分支文件对应的文件描述符,通过文件描述符获取与业务日志对应的日志配置信息。

进一步地,计算层还可设置在预设时间点删除哈希表所缓存的文件描述符,以保证文件描述符不会被无限期占用,即保证分支文件不会一直处于打开状态,造成数据解析系统存储空间的浪费。如可设置为在每天的0点,或者每天的12点等时间点删除哈希表所缓存的文件描述符。

步骤s30,遍历所述日志配置信息中各个解析分支,根据各个解析分支对应的日志解析格式解析所述业务日志,得到所述业务日志对应的日志数据。

当日志解析进程的计算层获取到日志配置信息后,计算层遍历日志配置信息中的各个解析分支,根据各个解析分支对应的日志解析格式解析业务日志,得到业务日志对应的日志数据,可以理解的是,日志数据为日志配置信息对应的具体数据,如切换存活时长具体为多少,日志等级是多少,业务标识具体是怎样的等。

进一步地,若计算层解析到业务日志的解析参数是一个多级字段,如在业务日志中,存在用点号分割的参数,计算层会根据多级字段的层级从前到后递归的解析出对应的参数。如某个多级字段为“a.b.c”,计算层会从先业务日志中解析出a参数,然后再递归从a参数中解析得到b参数,最后再从b参数中解析c参数。

本实施例当通过日志解析进程接收到业务日志后,获取业务日志对应的日志标识;通过日志标识在日志解析进程中获取与业务日志对应的日志配置信息;遍历日志配置信息中各个解析分支,根据各个解析分支对应的日志解析格式解析业务日志,得到业务日志对应的日志数据,实现了业务系统无需拆分业务日志,只需要将有其产生的原始业务日志发送给日志解析进程,日志解析进程会自动解析业务日志,得到业务日志对应的日志数据,避免了业务系统在拆分业务日志后,将所拆分的日志数据发送给数据解析过程中出现日志数据丢失、数据被篡改的问题,提高了日志离线分析的准确率。

进一步地,提出本发明日志解析方法第二实施例。

所述日志解析方法第二实施例与所述日志解析方法第一实施例的区别在于,参照图3,日志解析方法还包括:

步骤s40,通过所述日志解析进程将所述日志数据中的解析参数存储至预设存储表中,并将所述解析参数的字段名称映射到所述存储表对应的字段名称中,得到存储表文件。

在日志解析进程的计算层得到日志数据后,计算层将日志数据发送给存储层,存储层将日志数据中的解析参数存储至预设存储表中,并将日志数据中的解析参数的字段名称映射到存储表对应的字段名称中,得到存储表文件。可以理解的是,由于解析参数的字段名称和存储表的字段名称是存在关联关系的,因此通过该解析参数的字段名称即可知道存储解析参数的存储表文件。

进一步地,在将日志数据中的解析参数存储至预设存储表中时,存储层可根据不同的存储配置选择不同的存储形式,如当预设存储表为mysql表时,存储层将解析参数转换成对应的sql语句存储至mysql表中;当预设存储表为分支文件对应的文件表时,则在确定该文件表的文件名后,将解析参数存储至文件表中。如可通过@t–(t%c)表示文件表的文件名,其中,t表示存储层当前时间所在的小时,c为切分间隔(此时切分间隔以小时为单位),“%”表示取模运算。需要说明的是,当切分间隔c的时间单位为分钟时,t表示存储层当前时间所在的分钟数,即t和c的时间单位是一样的。

步骤s50,若确定所述存储表文件需要发送至hive中,则在检测到与所述日志解析进程对应的定时任务进程启动时,将所述存储表文件发送给所述定时任务进程,以供所述定时任务进程将所述存储表文件发送至所述hive中。

在存储层得到存储表文件后,存储层根据日志数据中的推送标识确定存储表文件是否需要发送至hive中。若根据推送标识确定存储表文件需要发送至hive中,则在检测到日志解析进程对应对的定时任务启动时,存储层将存储表文件发送给定时任务进程。当定时任务进程接收到存储表文件时,定时任务进程将存储表文件发送至hive中。需要说明的是,在本发明实施例中,定时任务进程与hive和ceph连接,ceph可用nas(networkattachedstorage,网络附属存储)盘或其它共享文件系统替换;日志解析进程与ceph和mysql连接,mysql还可用mongodb或tidb替换等。mongodb是一个基于分布式文件存储的数据库。

本实施例通过在得到拆分得到业务日志的解析参数后,存储该解析参数,并在确定存储表文件需要发送至hive中,且检测到与日志解析进程对应的定时任务进程启动时,将存储表文件发送给定时任务进程,以供定时任务进程将存储表文件发送至hive中,通过hive实现业务日志参数的高可靠存储。

进一步地,提出本发明日志解析方法第三实施例。

所述日志解析方法第三实施例与所述日志解析方法第一或第二实施例的区别在于,参照图3,日志解析方法还包括:

步骤s60,当通过数据解析系统的主进程接收到日志配置系统发送的变更日志配置信息的变更消息后,获取所述变更消息携带的变更后的日志配置信息。

在本发明实施例中,日志配置系统与数据解析系统的主进程连接。具体地,日志配置系统可通过tcp(transmissioncontrolprotocol,传输控制协议)与主进程保持实时的长连接。当日志配置系统接收到变更日志配置信息的变更指令后,日志配置系统根据变更指令变更日志配置信息,得到变更后的日志配置信息,并生成变更消息。当日志配置系统得到变更后的日志配置信息后,将变更后的日志配置信息携带在变更消息中发送给数据解析系统的主进程。其中,变更指令可由用户根据需要在日志配置系统中触发,也可由日志配置系统中的定时任务自动触发,当需要增加日志配置信息、更新日志配置信息和/或删除日志配置信息时,就需要触发变更指令。当主进程接收到变更消息后,获取变更消息携带的变更后的日志配置信息。

步骤s70,通过所述主进程将变更后的所述日志配置信息发送给由所述主进程创建的定时任务进程和日志解析进程。

步骤s80,在检测到所述定时任务进程当前存储的日志配置信息版本号小于变更后的所述日志配置信息版本号时,控制所述定时任务进程根据变更后的所述日志配置信息更新当前存储的所述日志配置信息。

当主进程得到变更后的日志配置信息后,主进程将变更后的日志配置信息发送给由主进程创建的定时任务进程和日志解析进程。具体地,主进程通过ipc(inter-processcommunication,进程间通信)将变更后的日志配置信息发送给定时任务进程和日志解析进程。

当定时任务进程接收到变更后的日志配置信息时,获取变更后的日志配置信息对应的版本号,记为第一版本号,并获取其当前存储的日志配置信息的版本号,记为第二版本号。需要说明的是,每一次变更日志配置信息,日志配置信息都会产生新的版本号。在定时任务进程得到第一版本号和第二版本号时,检测第二版本号是否小于第一版本号。若检测到第二版本号小于第一版本号,定时任务进程则根据变更后的日志配置信息更新当前存储的日志配置信息,具体地,由于变更后的日志配置信息包括了所有的日志配置信息,因此,定时任务进程可直接将变更后的日志配置信息替换其当前存储的日志配置信息,或者定时任务进程将变更后的日志配置信息与其当前存储的日志配置信息进行对比,将其当前存储的日志配置信息中与变更后的日志配置信息中不同的部分进行修改,以更新其当前存储的日志配置信息。

进一步地,若检测到第二版本号大于或者等于第一版本号,定时任务进程则不更新其当前存储的日志配置信息。

和/或步骤d,在检测到所述日志解析进程当前存储的日志配置信息版本号小于变更后的所述日志配置信息版本号时,控制所述日志解析进程根据变更后的所述日志配置信息更新当前存储的所述日志配置信息。

当日志解析进程接收到变更后的日志配置信息,且在检测到其当前存储的日志配置信息版本号小于变更后的日志配置信息版本号时,日志解析进程根据变更后的日志配置信息更新其当前存储的日志配置信息。需要说明的是,日志解析进程接收到变更后的日志配置信息,根据变更后的日志配置信息更新其当前存储的日志配置信息与定时任务进程更新其当前存储的日志配置信息的过程类似,在本发明实施例中不再详细赘述。

进一步地,为了保证切分间隔和hive分区保持一致,便于业务日志的离线分析,日志解析方法还包括:

步骤d,获取变更后的所述日志配置信息对应的日志标识,并根据所述日志标识创建配置树。

步骤e,在预设的存储系统中按照所述配置树的树形结构创建文件夹,以及在所述日志标识对应文价夹中创建分支文件。

定时任务获取变更后的日志配置信息对应的日志标识,即获取该业务日志的日志标识。当定时任务进程获取到日志标识后,定时任务进程根据该日志标识创建配置树,并在预设的存储系统中按照配置树的树形结构创建文件夹,以及在日志标识对应文价夹中创建分支文件。

根据日志标识创建配置树的过程为:定时任务进程将日志标识按照目标业务、子目标业务进行分类,并创建目标业务→子目标业务→日志标识→解析分支的树形结构,需要说明的是,该树形结构即为配置树,在配置树中,若目标业务为主树干,则子目标业务为主树干中的子分支树干,目标标识为子分支树干的分支树干。

在存储系统中按照配置树的树形结构创建文件夹的过程为:先建立目标业务对应的目标文件夹,然后在目标文件夹下建立子目标业务对应的子目标文件夹,最后在子目标文件夹中创建日志标识的标识文件夹。当创建标识文件夹后,定时任务进程设置日志标识对应的各个解析分支对应分支文件的文件名,然后根据该文件名在标识文件夹中创建各个解析分支对应的分支文件。具体地,分支文件的文件名可用“解析分支的分支名称@创建文件名的创建时间”表示。需要说明的是,在本发明实施例中,不限制分支文件的文件名的表现形式。

步骤f,确定所述定时任务进程所在的当前时间。

步骤g,若所述当前时间与目标时间进行取模运算后的结果等于零,则将分支文件按照变更后的所述日志配置信息中的hive表名称发送至hive中,其中,所述目标时间为变更后的所述日志配置信息中切分间隔对应的时间。

定时任务进程确定当前时间,并对当前时间和目标时间进行取模运算,其中,目标时间为变更后的日志配置信息中的切分间隔对应的时间。如当切分间隔为每3小时切分一次时,切分间隔对应的时间3,即目标时间为3,若定时任务进程当前所在时间为早上9点30分(以零点为起点开始计算),则当前时间为9。

在对当前时间和目标时间进行取模运算后,定时任务进程判断当前时间和目标时间进行取模运算后的结果是否等于零。若确定当前时间和目标时间进行取模运算后的结果等于零,定时任务进程则将分支文件按照变更后的日志配置信息中的hive表名称发送至hive中。如若变更后的日志配置信息中的hive表名称为a,则将分支文件发送a表中。进一步地,为了区分需要发送至hive中的分支文件和不需要发送至hive中的分支文件,可将需要发送至hive中的分支文件的文件名修改为“分支名称@当前时间-目标时间”,即将需要发送至hive中的分支文件的文件名修改为“分支名称@t-c”。进一步地,若确定当前时间和目标时间进行取模运算后的结果不等于零,定时任务进程则不将分支文件发送至hive中。

进一步地,日志解析方法还包括:

步骤i,当侦测到数据解析系统启动时,通过所述数据解析系统的主进程创建所述定时任务进程和所述日志解析进程。

进一步地,当数据解析系统启动时,数据解析系统的主进程会自动创建定时任务进程和日志解析进程。定时任务进程主要用户维护ceph的目录结构,以及将ceph上的业务日志相关数据推送至hive。

本实施例通过在日志配置系统变更日志配置信息,且检测到主进程创建的子进程(定时任务进程和日志解析进程)当前存储的日志配置信息版本号小于变更后的日志配置信息版本号时,对应控制子进程更新日志配置信息,实现了动态变更业务日志的日志配置信息,以及使变更后的日志配置信息及时生效。

进一步地,提出本发明日志解析方法第四实施例。

所述日志解析方法第四实施例与所述日志解析方法第三实施例的区别在于,日志解析方法还包括:

步骤j,在检测到所述定时任务进程当前所在时间为扫描所述存储系统的扫描时间后,检测所述存储系统中的文件夹目录数量是否大于配置树数量。

步骤k,若所述文件夹目录数量大于所述配置树数量,则确定所述存储系统中不存在对应配置树的文件夹目标目录,并删除所述文件夹目标目录。

当创建分支文件后,定时任务进程检测其当前所在时间是否为扫描存储系统的扫描时间,其中,扫描时间是预先设置好的,如可设置为每隔一个小时扫描一次存储系统;存储系统为ceph、nas或其它共享文件系统等。当定时任务进程检测到其当前所在时间为扫描存储系统的扫描时间后,定时任务系统检测存储系统中的文件夹目录数量是否大于配置树数量。为了便于理解文件夹目录数量,现举例说明文件夹目标数量,如b目标文件夹下有b1和b2两个子目标文件夹,而b1子目标文件夹下又有b11和b12两个标识文件夹,则b→b1→b11为一个文件夹目录,b→b1→b12也为一个文件夹目录。

若检测到存储系统中的文件夹目标数量大于配置树数量,定时任务进程则确定存储系统中存在某些不存在对应配置树的文件夹目录,并将这些不存在对应配置树的文件夹目录记为文件夹目标目录,并删除文件夹目标目录。可以理解的是,通过日志标识即可确定那些文件夹目录不存在对应的配置树,不存在对应配置树的文件夹目录表明对应的日志配置信息已经被删除。

进一步地,若检测到文件夹目录数量小于配置树数量,定时任务进程则确定那些配置树不存在对应的文件夹目录,将不存在对应的文件夹目录的配置树记为目标配置树,并为目标配置树创建对应的文件夹目录。

进一步地,在检测到所述定时任务进程当前所在时间为扫描所述存储系统的扫描时间的步骤之后,还包括:

步骤l,判断所述存储系统中的分支文件生成时长是否大于所述配置树节点的存活时长。

步骤m,若所述生成时长大于所述存活时长,则删除大于所述存活时长的生成时长对应的分支文件。

当定时任务进程检测到其当前所在时间为扫描存储系统的扫描时间后,定时任务进程判断存储系统中的分支文件生成时长是否大于配置树节点的存活时长,其中,配置树节点为配置树中的解析分支,配置树节点的存活时长是预先设置好的,本发明实施例不限制存活时长的大小。分支文件的生成时长是从创建分支文件后开始起算,一直到当前时间的时长。若确定分支文件的生成时长大于配置树节点的存活时长,定时任务进程则删除大于存活时长的生成时长对应的分支文件。需要说明的是,大于存活时长的生成时长对应的分支文件为已经过期的分支文件。进一步地,若确定分支文件的生成时长等于或者小于配置树节点的存活时长,定时任务进程则不删除小于或者等于存活时长的生成时长对应的分支文件。

本实施例通过删除存储系统中无用的文件夹目录或分支文件,降低了存储系统的存储压力。

此外,本发明实施例还提出一种日志解析装置,所述日志解析装置包括:

获取模块,用于当通过日志解析进程接收到业务日志后,获取所述业务日志对应的日志标识;通过所述日志标识在所述日志解析进程中获取与所述业务日志对应的日志配置信息;

遍历模块,用于遍历所述日志配置信息中各个解析分支;

解析模块,用于根据各个解析分支对应的日志解析格式解析所述业务日志,得到所述业务日志对应的日志数据。

进一步地,所述日志解析装置还包括:

存储模块,用于通过所述日志解析进程将所述日志数据中的解析参数存储至预设存储表中;

映射模块,用于将所述解析参数的字段名称映射到所述存储表对应的字段名称中,得到存储表文件;

第一发送模块,用于若确定所述存储表文件需要发送至hive中,则在检测到与所述日志解析进程对应的定时任务进程启动时,将所述存储表文件发送给所述定时任务进程,以供所述定时任务进程将所述存储表文件发送至所述hive中。

进一步地,所述获取模块还用于当通过数据解析系统的主进程接收到日志配置系统发送的变更日志配置信息的变更消息后,获取所述变更消息携带的变更后的日志配置信息;

所述日志解析装置还包括:

第二发送模块,用于通过所述主进程将变更后的所述日志配置信息发送给由所述主进程创建的定时任务进程和日志解析进程;

控制模块,用于在检测到所述定时任务进程当前存储的日志配置信息版本号小于变更后的所述日志配置信息版本号时,控制所述定时任务进程根据变更后的所述日志配置信息更新当前存储的所述日志配置信息;和/或在检测到所述日志解析进程当前存储的日志配置信息版本号小于变更后的所述日志配置信息版本号时,控制所述日志解析进程根据变更后的所述日志配置信息更新当前存储的所述日志配置信息。

进一步地,所述获取模块还用于获取变更后的所述日志配置信息对应的日志标识;

所述日志解析装置还包括:

第一创建模块,用于并根据所述日志标识创建配置树;在预设的存储系统中按照所述配置树的树形结构创建文件夹,以及在所述日志标识对应文价夹中创建分支文件;

确定模块,用于确定所述定时任务进程所在的当前时间;

所述第二发送模块还用于若所述当前时间与目标时间进行取模运算后的结果等于零,则将分支文件按照变更后的所述日志配置信息中的hive表名称发送至hive中,其中,所述目标时间为变更后的所述日志配置信息中切分间隔对应的时间。

进一步地,所述日志解析装置还包括:

检测模块,用于在检测到所述定时任务进程当前所在时间为扫描所述存储系统的扫描时间后,检测所述存储系统中的文件夹目录数量是否大于配置树数量;

所述确定模块还用于若所述文件夹目录数量大于所述配置树数量,则确定所述存储系统中不存在对应配置树的文件夹目标目录;

所述日志解析装置还包括:

删除模块,用于删除所述文件夹目标目录。

进一步地,所述日志解析装置还包括:

判断模块,用于判断所述存储系统中的分支文件生成时长是否大于所述配置树节点的存活时长;

所述删除模块还用于若所述生成时长大于所述存活时长,则删除大于所述存活时长的生成时长对应的分支文件。

进一步地,所述日志解析装置还包括:

第二创建模块,用于当侦测到数据解析系统启动时,通过所述数据解析系统的主进程创建所述定时任务进程和所述日志解析进程。

进一步地,所述获取模块还用于通过所述日志标识在所述日志解析进程中获取与所述业务日志对应解析分支的分支文件的文件名;获取所述文件名对应的哈希表,获取所述哈希表缓存的与所述分支文件对应的文件描述符;通过所述文件描述符获取与所述业务日志对应的日志配置信息。

本发明日志解析装置具体实施方式与上述日志解析方法各实施例基本相同,在此不再赘述。

此外,本发明实施例还提出一种计算机可读存储介质,所述计算机可读存储介质上存储有日志解析程序,所述日志解析程序被处理器执行时实现如上所述的日志解析方法的步骤。

本发明计算机可读存储介质具体实施方式与上述日志解析方法各实施例基本相同,在此不再赘述。

需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。

上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。

通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如rom/ram、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,空调器,或者网络设备等)执行本发明各个实施例所述的方法。

以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1