基于完美哈希的日志解析方法及装置与流程

文档序号:14796979发布日期:2018-06-29 19:39阅读:190来源:国知局

本发明实施例涉及计算机技术领域,尤其涉及一种基于完美哈希的日志解析方法及装置。



背景技术:

计算机系统中任何程序都有可能输出日志:操作系统内核、各种应用服务器等等。日志中包含了安全管理人员、运维人员和业务分析人员感兴趣的大量的信息,例如访问者的IP、访问的时间、来源的地址以及访问者所使用的客户端信息、分析用户行为特征等。

大多数日志为字符串,且固定位置表示一个固定的字段,以防火墙日志为例,这种字符串格式的日志无法满足防火墙日志内容在一定范围内变化的需求,故防火墙上使用键值对的方式发送日志,当监控装置接收到防火墙发送的日志后,传统的方法是使用字符串遍历找出每对键和值,获取到键后,通过关键字匹配获取关键字的类型,其中关键字匹配的时间与关键字的长度成正比,当关键字较多时,处理效率低下,严重影响了对防火墙日志的解析效率。

因此,如何提高对日志的解析效率是现如今亟待解决的课题。



技术实现要素:

针对现有技术存在的问题,本发明实施例提供一种基于完美哈希的日志解析方法及装置。

第一方面,本发明实施例提供一种基于完美哈希的日志解析方法,包括:

获取待解析日志,并根据预设规则对所述待解析日志进行信息提取,获取所述待解析日志包含的至少一个待解析关键字及各待解析关键字对应的值;

根据预先构建的完美哈希函数计算每一待解析关键字对应的第一哈希值;

根据各第一哈希值获得对应的待解析关键字类型,并将所述待解析关键字对应的值存储到待解析关键字类型对应的结构中,以解析获得结构化数据。

第二方面,本发明实施例提供一种基于完美哈希的日志解析装置,包括:

信息提取模块,用于获取待解析日志,并根据预设规则对所述待解析日志进行信息提取,获取所述待解析日志包含的至少一个待解析关键字及各待解析关键字对应的值;

计算模块,用于根据预先构建的完美哈希函数计算每一待解析关键字对应的第一哈希值;

解析模块,用于根据各第一哈希值获得对应的待解析关键字类型,并将所述待解析关键字对应的值存储到待解析关键字类型对应的结构中,以解析获得结构化数据。

第三方面,本发明实施例提供一种电子设备,包括:处理器、存储器和总线,其中,

所述处理器和所述存储器通过所述总线完成相互间的通信;

所述存储器存储有可被所述处理器执行的程序指令,所述处理器调用所述程序指令能够执行第一方面的方法步骤。

第四方面,本发明实施例提供一种非暂态计算机可读存储介质,包括:

所述非暂态计算机可读存储介质存储计算机指令,所述计算机指令使所述计算机执行第一方面的方法步骤。

本发明实施例提供的基于完美哈希的日志解析方法及装置,通过利用完美哈希函数获得待解析关键字对应的第一哈希值,从而获得待解析关键字的类型,将待解析关键字对应的值存储到对应的结构中,以获得结构化数据,从而在识别待解析关键字时,无需对待解析关键字字符的一一匹配,通过哈希查找即可快速得知关键字,从而提高了对日志解析的效率。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为本发明实施例提供的基于完美哈希的日志解析方法流程示意图;

图2为本发明实施例提供的待解析关键字类型对应的结构;

图3为本发明实施例提供的基于完美哈希的日志解析装置结构示意图;

图4为本发明实施例提供的电子设备实体结构示意图。

具体实施方式

为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

图1为本发明实施例提供的基于完美哈希的日志解析方法流程示意图,如图1所示,所述方法,包括:

步骤101:获取待解析日志,并根据预设规则对所述待解析日志进行信息提取,获取所述待解析日志包含的至少一个待解析关键字及待解析关键字对应的值;

具体的,解析装置获取待解析日志,其中获取待解析日志的方式可以是实时获取也可以是周期性获取。在获取到待解析日志后,根据预设规则对待解析日志进行信息提取,获得待解析日志中所包含的所有的待解析关键字以及每一个待解析关键字对应的值。可以理解的是,由于不同程序产生的待解析日志的格式不同,有的是以字符串的形式,有的是以键值对的形式,因此,可以根据待解析日志的格式选择对应的预设规则来进行信息提取。解析装置并不能得知经过信息提取后获得的待解析关键字的具体类型,因此需要对待解析关键字进行识别,具体类型可以为源地址、目的地址、用户名、源端口号、目的端口号等等。

步骤102:根据预先构建的完美哈希函数计算每一待解析关键字对应的第一哈希值;

具体的,预先构建一个完美哈希函数,通过完美哈希函数计算每一个待解析关键字对应的第一哈希值,其中应当说明的是,完美哈希函数的构建是根据关键字和第二哈希值构建的,且每一个关键字对应唯一一个第二哈希值,不会发生冲突。

步骤103:根据各第一哈希值获得对应的待解析关键字类型,并将所述待解析关键字对应的值存储到待解析关键字类型对应的结构中,以解析获得结构化数据。

具体的,在经过完美哈希函数计算得到的第一哈希值后,第一哈希值即待解析关键字对应的待解析关键字类型,应当说明的是,预先建立哈希列表,其中哈希列表中包括多个关键字及每个关键字对应的第二哈希值,可以理解的是,第二哈希值就是对应关键字的关键字类型,关键字是预先获取待解析日志中可能出现的所有的关键字,然后为哈希列表中的每一个关键字设置唯一一个第二哈希值。根据关键字及对应的第二哈希值创建完美哈希函数,因此,通过该完美哈希函数即可计算获得待解析关键字对应的待解析关键字类型。每一个待解析关键字类型对应唯一一个结构,根据待解析关键字类型将待解析关键字对应的值存储到对应的结构中。图2为本发明实施例提供的待解析关键字类型对应的结构,如图2所示,被框起来的参数为待解析关键字类型,待解析关键字类型下面就是要填入待解析关键字对应的值,获得结构化数据。当将所有的待解析关键字的值存储到对应的结构中后便完成了对待解析日志的解析,解析出来的日志就可以通过结构来访问或者处理。

本发明实施例通过利用完美哈希函数获得待解析关键字对应的第一哈希值,然后根据第一哈希值从哈希列表中获取匹配成功的第二哈希值对应的关键字,从而获得待解析关键字的类型,将待解析关键字对应的值存储到对应的结构中,以获得结构化数据,从而在识别待解析关键字时,无需对待解析关键字字符的一一匹配,通过哈希查找即可快速得知关键字,从而提高了对日志解析的效率。

在上述实施例的基础上,所述方法,还包括:

预先获取多个关键字及每一关键字对应的第二哈希值,根据所述多个关键字和所述第二哈希值构建所述完美哈希函数。

具体的,根据历史经验获取待解析日志中可能包括的所有关键字,然后为每一个关键字设置一个第二哈希值,应当说明的是,由于是完美哈希,因此,每一个关键字对应的第二哈希值都是唯一的,根据所有的关键字以及各个关键字对应的第二哈希值构建完美哈希函数。可以理解的是,通过任意一个关键字,利用构建的完美哈希函数均可以计算得到与之对应的第二哈希值。因此,假如待解析关键字与哈希列表中的某个关键字相同时,那么通过完美哈希函数的计算,即可根据第一哈希值与第二哈希值的匹配找到该关键字,从而得知待解析关键字的具体类型。应当说明的是,第二哈希值可以是枚举型数值,还可以是其他类型的数值,本发明实施例对此不做具体限定。

应当说明的是,可以将建立的哈希列表和调用接口写到完美哈希函数生成器gperf的输入文件中,由gperf生成对应的包含了完美哈希函数的c文件,通过调用接口即可获取与待解析关键字的第一哈希值匹配成功的第二哈希值对应的关键字,以实现对待解析关键字的识别。

本发明实施例首先通过对待解析日志的信息提取,获取到待解析关键字,但此时并不能确定该待解析关键字具体是什么,通过完美哈希函数计算获得第一哈希值,进而得知待解析关键字类型,并将其解析为结构化数据,通过哈希查找的方法快速的确定了待解析关键字的具体类型,从而提高了解析效率。

在上述实施例的基础上,所述获取待解析日志,并根据预设规则对所述待解析日志进行信息提取,包括:

若所述待解析日志的格式为键值对格式,则遍历所述待解析日志,并根据预定义的键值对格式进行信息提取。

具体的,如果待解析日志的格式是键值对的格式,因此,可以遍历待解析日志,然后根据预定义的键值对格式选择对应的预设规则来进行信息提取。一般情况下,键值对中的键和值之间是用“=”来分隔的,因此可以通过识别“=”来提取出键和值,其中,键是指待解析关键字,值是指待解析关键字对应的值。应当说明的是,待解析日志还可以是其他格式,但是均包括有待解析关键字及对应的值,因此,在获知待解析日志的格式后,选择对应的预设规则便可以提取到待解析关键字和值。

本发明实施例通过利用完美哈希函数获得待解析关键字对应的第一哈希值,然后根据第一哈希值从哈希列表中获取匹配成功的第二哈希值对应的关键字,从而获得待解析关键字的类型,将待解析关键字对应的值存储到对应的结构中,以获得结构化数据,从而在识别待解析关键字时,无需对待解析关键字字符的一一匹配,通过哈希查找即可快速得知关键字,从而提高了对日志解析的效率。

图3为本发明实施例提供的基于完美哈希的日志解析装置结构示意图,如图3所示,所述装置,包括:信息提取模块301、计算模块302、匹配模块303和解析模块304,其中:

信息提取模块301用于获取待解析日志,并根据预设规则对所述待解析日志进行信息提取,获取所述待解析日志包含的至少一个待解析关键字及待解析关键字对应的值;计算模块302用于根据预先构建的完美哈希函数计算每一待解析关键字对应的第一哈希值;解析模块303用于根据各第一哈希值获得对应的待解析关键字类型,并将所述待解析关键字对应的值存储到待解析关键字类型对应的结构中,以解析获得结构化数据。

具体的,信息提取模块301获取待解析日志,其中获取待解析日志的方式可以是实时获取也可以是周期性获取。在获取到待解析日志后,信息提取模块301根据预设规则对待解析日志进行信息提取,获得待解析日志中所包含的所有的待解析关键字以及每一个待解析关键字对应的值。可以理解的是,由于不同程序产生的待解析日志的格式不同,有的是以字符串的形式,有的是以键值对的形式,因此,可以根据待解析日志的格式选择对应的预设规则来进行信息提取。解析装置并不能得知经过信息提取后获得的待解析关键字的具体类型,具体类型可以为源地址、目的地址、用户名、源端口号、目的端口号等等。预先构建一个完美哈希函数,计算模块302通过完美哈希函数计算每一个待解析关键字对应的第一哈希值,其中应当说明的是,完美哈希函数的构建是根据关键字和第二哈希值构建的,且每一个关键字对应唯一一个第二哈希值,不会发生冲突。

在经过完美哈希函数计算得到的第一哈希值后,第一哈希值即待解析关键字对应的待解析关键字类型,应当说明的是,预先建立哈希列表,其中哈希列表中包括多个关键字及每个关键字对应的第二哈希值,可以理解的是,第二哈希值就是对应关键字的关键字类型,关键字是预先获取待解析日志中可能出现的所有的关键字,然后为哈希列表中的每一个关键字设置唯一一个第二哈希值。由于根据关键字及对应的第二哈希值创建完美哈希函数,因此,解析模块303通过该完美哈希函数即可计算获得待解析关键字对应的待解析关键字类型。每一个待解析关键字类型对应唯一一个结构,根据待解析关键字类型将待解析关键字对应的值存储到对应的结构中。当将所有的待解析关键字的值存储到对应的结构中后便完成了对待解析日志的解析,解析出来的日志就可以通过结构来访问或者处理。

本发明提供的装置的实施例具体可以用于执行上述各方法实施例的处理流程,其功能在此不再赘述,可以参照上述方法实施例的详细描述。

本发明实施例通过利用完美哈希函数获得待解析关键字对应的第一哈希值,然后根据第一哈希值从哈希列表中获取匹配成功的第二哈希值对应的关键字,从而获得待解析关键字的类型,将待解析关键字对应的值存储到对应的结构中,以获得结构化数据,从而在识别待解析关键字时,无需对待解析关键字字符的一一匹配,通过哈希查找即可快速得知关键字,从而提高了对日志解析的效率。

在上述实施例的基础上,所述装置,还包括:

构建模块,用于预先获取多个关键字及每一关键字对应的第二哈希值,根据所述多个关键字和所述第二哈希值构建所述完美哈希函数。

具体的,根据历史经验获取待解析日志中可能包括的所有关键字,然后为每一个关键字设置一个第二哈希值,应当说明的是,由于是完美哈希,因此,每一个关键字对应的第二哈希值都是唯一的,构建模块根据所有的关键字以及各个关键字对应的第二哈希值构建完美哈希函数。可以理解的是,通过任意一个关键字,利用构建的完美哈希函数均可以计算得到与之对应的第二哈希值。因此,假如待解析关键字与哈希列表中的某个关键字相同时,那么通过完美哈希函数的计算,即可根据第一哈希值与第二哈希值的匹配找到该关键字,从而得知待解析关键字的具体类型。应当说明的是,第二哈希值可以是枚举型数值,还可以是其他类型的数值,本发明实施例对此不做具体限定。

本发明实施例首先通过对待解析日志的信息提取,获取到待解析关键字,但此时并不能确定该待解析关键字具体是什么,通过完美哈希函数计算获得第一哈希值,从而得到待解析关键字类型,并将其解析为结构化数据,通过哈希查找的方法快速的确定了待解析关键字的具体类型,从而提高了解析效率。

在上述实施例的基础上,所述信息提取模块,具体用于:

若所述待解析日志的格式为键值对格式,则遍历所述待解析日志,并根据预定义的键值对格式进行信息提取。

具体的,如果待解析日志的格式是键值对的格式,因此,可以遍历待解析日志,然后信息提取模块根据预定义的键值对格式选择对应的预设规则来进行信息提取。一般情况下,键值对中的键和值之间是用“=”来分隔的,因此可以通过识别“=”来提取出键和值,其中,键是指待解析关键字,值是指待解析关键字对应的值。应当说明的是,待解析日志还可以是其他格式,但是均包括有待解析关键字及对应的值,因此,在获知待解析日志的格式后,选择对应的预设规则便可以提取到待解析关键字和值。

本发明实施例通过利用完美哈希函数获得待解析关键字对应的第一哈希值,然后根据第一哈希值从哈希列表中获取匹配成功的第二哈希值对应的关键字,从而获得待解析关键字的类型,将待解析关键字对应的值存储到对应的结构中,以获得结构化数据,从而在识别待解析关键字时,无需对待解析关键字字符的一一匹配,通过哈希查找即可快速得知关键字,从而提高了对日志解析的效率。

图4为本发明实施例提供的电子设备实体结构示意图,如图4所示,所述电子设备,包括:处理器(processor)401、存储器(memory)402和总线403;其中,

所述处理器401和存储器402通过所述总线403完成相互间的通信;

所述处理器401用于调用所述存储器402中的程序指令,以执行上述各方法实施例所提供的方法,例如包括:获取待解析日志,并根据预设规则对所述待解析日志进行信息提取,获取所述待解析日志包含的至少一个待解析关键字及待解析关键字对应的值;根据预先构建的完美哈希函数计算每一待解析关键字对应的第一哈希值;根据各第一哈希值获得对应的待解析关键字类型,并将所述待解析关键字对应的值存储到待解析关键字类型对应的结构中,以解析获得结构化数据。

本实施例公开一种计算机程序产品,所述计算机程序产品包括存储在非暂态计算机可读存储介质上的计算机程序,所述计算机程序包括程序指令,当所述程序指令被计算机执行时,计算机能够执行上述各方法实施例所提供的方法,例如包括:获取待解析日志,并根据预设规则对所述待解析日志进行信息提取,获取所述待解析日志包含的至少一个待解析关键字及待解析关键字对应的值;根据预先构建的完美哈希函数计算每一待解析关键字对应的第一哈希值;根据各第一哈希值获得对应的待解析关键字类型,并将所述待解析关键字对应的值存储到待解析关键字类型对应的结构中,以解析获得结构化数据。

本实施例提供一种非暂态计算机可读存储介质,所述非暂态计算机可读存储介质存储计算机指令,所述计算机指令使所述计算机执行上述各方法实施例所提供的方法,例如包括:获取待解析日志,并根据预设规则对所述待解析日志进行信息提取,获取所述待解析日志包含的至少一个待解析关键字及待解析关键字对应的值;根据预先构建的完美哈希函数计算每一待解析关键字对应的第一哈希值;根据各第一哈希值获得对应的待解析关键字类型,并将所述待解析关键字对应的值存储到待解析关键字类型对应的结构中,以解析获得结构化数据。

本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于一计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。

以上所描述的装置等实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。

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

最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。

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