日志聚合方法及装置的制造方法

文档序号:10492004阅读:158来源:国知局
日志聚合方法及装置的制造方法【专利摘要】本发明提供了一种日志聚合方法及装置,该方法包括:根据网络设备生成的日志的种类,将所述日志中需要输出的字段内容封装在结构体中;获取日志被封装之后的结构体的长度,以及封装在结构体内的字段内容,根据所述结构体的长度及字段内容在链表中进行查询;若判断获知链表的节点中已存储有与该日志的结构体的长度及字段内容均相同的结构体,则将该日志的重复次数加1;若判断获知该日志的重复次数大于或等于预设的重复阈值,则将该日志中需要输出的字段内容输出,并将该日志的重复次数清零。与现有技术相比本发明提供的日志聚合方法对日志的格式和类型没有限制,能够适用于各类日志,从而能够对日志进行更好的聚合,优化日志性能。【专利说明】曰志聚合方法及装置
技术领域
[0001]本发明属于计算机
技术领域
,特别涉及一种日志聚合方法及装置。【
背景技术
】[0002]网络设备、系统及服务程序等,在运作时都会产生一个叫Log的事件记录,这里的Log也即日志。每一行日志都记载着日期、时间、使用者及动作等相关操作的描述。网络设备根据防护领域的不同记录的日志多种多样,有实时性较强的攻击日志,也有普通的流量探测和记录日志。普通的流量记录日志往往不具备实时性,但又不可缺少,例如会话日志。会话日志记录了网络安全设备处理的流量信息,主要包括五元组,出接口,入接口等信息。如果流量较大,记录的日志量也是巨大的,且这些日志中存在许多同样的日志。为了防止同样的日志重复输出,这种情况下,就出现了对重复日志进行聚合的日志聚合技术。[0003]现有的日志聚合技术,大多需要根据日志类型以及日志中的有效字段(比如IP地址等)进行hashkey计算,从而对根据hashkey的链表查询结果对在同一链表中日志进行摩人口ο[0004]然而,这种聚合方案只适合特定日志格式或类型,例如含有例如IP地址等字段的日志格式或类型,限制了能够聚合的日志的类型。且现有的日志聚合技术,在日志重复次数达到重复阈值时才将该日志输出,如果没有达到重复阈值,则可能出现日志延迟输出或者一直不输出的情况。【
发明内容】[0005]本发明的目的是,提供一种适用于各类格式及类型的日志、且保证日志能够正常输出的日志聚合方法。[0006]为了达到上述目的,本发明提供了一种日志聚合方法及装置。[0007]第一方面,本发明提供了一种日志聚合方法,包括:[0008]根据网络设备生成的日志的种类,将所述日志中需要输出的字段内容封装在结构体中;[0009]获取日志被封装之后的结构体的长度,以及封装在结构体内的字段内容,根据所述结构体的长度及字段内容在链表中进行查询;[0010]若判断获知链表的节点中已存储有与该日志的结构体的长度及字段内容均相同的结构体,则将该日志的重复次数加I;[0011]若判断获知该日志的重复次数大于或等于预设的重复阈值,则将该日志中需要输出的字段内容输出,并将该日志的重复次数清零。[0012]优选地,所述方法还包括:[0013]若判断获知链表的节点中没有存储与该日志的结构体的长度及字段内容均相同的结构体,则创建新节点,在所述新节点中存储该日志的结构体,并将所述新节点加入链表。[0014]优选地,所述方法还包括:[0015]若判断获知链表的节点当前时间节点与上一次输出字段内容的时间节点的间隔大于或等于预设的超时时间且当前节点的状态为空闲,则判断该节点存储的日志的重复次数;[0016]若判断获知所述日志的重复次数大于0,则将该节点存储的日志中需要输出的字段内容输出。[0017]优选地,所述方法还包括:[0018]若判断获知所述日志的重复次数等于0,则删除该节点。[0019]优选地,所述获取日志被封装之后的结构体的长度,以及封装在结构体内的字段内容,根据所述结构体的长度及字段内容在链表中进行查询的步骤具体包括:[0020]获取日志被封装之后的结构体的长度,以及封装在结构体内的字段内容;[0021]计算所述结构体的长度以及字段内容的哈希关键词;[0022]根据所述哈希关键词在链表中进行查询。[0023]第二方面,本发明提供了一种日志聚合装置,包括:[0024]结构化模块,用于根据网络设备生成的日志的种类,将所述日志中需要输出的字段内容封装在结构体中;[0025]查询模块,用于获取日志被封装之后的结构体的长度,以及封装在结构体内的字段内容,根据所述结构体的长度及字段内容在链表中进行查询;[0026]处理模块,用于若判断获知链表的节点中已存储有与该日志的结构体的长度及字段内容均相同的结构体,则将该日志的重复次数加I;[0027]所述处理模块,还用于若判断获知该日志的重复次数大于或等于预设的重复阈值,则将该日志中需要输出的字段内容输出,并将该日志的重复次数清零。[0028]优选地,其特征在于,[0029]所述处理模块,还用于若判断获知链表的节点中没有存储与该日志的结构体的长度及字段内容均相同的结构体,则创建新节点,在所述新节点中存储该日志的结构体,并将所述新节点加入链表。[0030]优选地,所述处理模块,还用于若判断获知链表的节点当前时间节点与上一次输出字段内容的时间节点的间隔大于或等于预设的超时时间且当前节点的状态为空闲,则判断该节点存储的日志的重复次数;[0031]所述处理模块,还用于若判断获知所述日志的重复次数大于0,则将该节点存储的日志中需要输出的字段内容输出。[0032]优选地,所述处理模块,还用于若判断获知所述日志的重复次数等于0,则删除该节点。[0033]优选地,所述查询模块还用于:[0034]获取日志被封装之后的结构体的长度,以及封装在结构体内的字段内容;[0035]计算所述结构体的长度以及字段内容的哈希关键词;[0036]根据所述哈希关键词在链表中进行查询。[0037]本发明提供的日志聚合方法中通过将日志封装为结构体,再利用结构体中的长度和内容在链表中查找重复日志,并在重复日志次数超过预设阈值时将日志输出,与现有技术相比对日志的格式和类型没有限制,能够适用于各类日志,从而能够对日志进行更好的聚合,优化日志性能。【附图说明】[0038]为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些示例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。[0039]图1是本发明提供的日志聚合方法实施例流程图;[0040]图2是图1中步骤S102方法流程图;[0041]图3是本发明提供的日志聚合方法实施例流程图;[0042]图4是本发明提供的一种优选地日志聚合方法实施例流程图;[0043]图5是本发明提供的日志聚合装置实施例结构示意图。【具体实施方式】[0044]下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。[0045]第一方面,本发明提供了一种日志聚合方法实施例,如图1所示,包括:[0046]S101、根据网络设备生成的日志的种类,将日志中需要输出的字段内容封装在结构体中;[0047]S102、获取日志被封装之后的结构体的长度,以及封装在结构体内的字段内容,根据结构体的长度及字段内容在链表中进行查询;[0048]S103、若判断获知链表的节点中已存储有与该日志的结构体的长度及字段内容均相同的结构体,则将该日志的重复次数加I;[0049]S104、若判断获知该日志的重复次数大于或等于预设的重复阈值,则将该日志中需要输出的字段内容输出,并将该日志的重复次数清零。[0050]本发明实施例提供的日志聚合方法中通过将日志封装为结构体,再利用结构体中的长度和内容在链表中查找重复日志,并在重复日志次数超过预设阈值时将日志输出,与现有技术相比对日志的格式和类型没有限制,能够适用于各类日志,从而能够对日志进行更好的聚合,优化日志性能。[0051]在实际应用时,这里的网络设备可以为网络安全设备,具体可以为路由器、防火墙、IPS(入侵检测),IDP(入侵检测防御)、行为管理器、核心交换机等等。这里的预设的重复阈值可以为用户自定义设置的阈值,也可以为系统默认的重复阈值,本发明对此不做具体限定。[0052]在具体实施时,本发明提供的日志聚合方法实施例在步骤S103之后还包括:若判断获知链表的节点中没有存储与该日志的结构体的长度及字段内容均相同的结构体,则创建新节点,在新节点中存储该日志的结构体,并将新节点加入链表。[0053]也就是说,若遍历了链表节点也没有找到存储有与该日志的结构体的长度及字段内容均相同的结构体,这也就意味着该日志第一次生成没有被存储,或由于某些原因已被删除目前没有相应的存储记录。此时,可以创建新的节点,在该节点中存储该日志的结构体,并将这一新的节点加入到链表中,若在这之后网络设备又生成了与之相同的日志,则该日志的重复次数加I。因此,本发明实施例提供的日志聚合方法中链表节点中能够根据不同的日志情况进行自动更新,从而能够更有效的进行日志聚合。[0054]在具体实施时,如图2所示,步骤S102可以包括:[0055]S1021、获取日志被封装之后的结构体的长度,以及封装在结构体内的字段内容;[0056]S1022、计算所述结构体的长度以及字段内容的哈希关键词;[0057]S1023、根据所述哈希关键词在链表中进行查询。[0058]为了方便理解,下面简单说明一下哈希表以及哈希关键词。哈希表(Hashtable,也叫散列表),是根据哈希关键码值(Keyvalue)而直接进行访问的数据结构。也就是说,它通过把关键码值映射到表中一个位置来访问记录,以加快查找的速度。这个映射函数叫做散列函数,存放记录的数组叫做散列表。给定表M,存在函数f(key),对任意给定的关键字值key,代入函数后若能得到包含该关键字的记录在表中的地址,则称表M为哈希(Hash)表,函数f(key)为哈希(Hash)函数。[0059]因此,本发明实施例提供的日志聚合方法在获取了封装在结构体内的字段内容后,可以计算其哈希关键词,并根据所述哈希关键词在链表中进行,从而加快了查找速度,提供了日志聚合的效率。优选地,这里可以利用jhash算法计算结构体内的字段内容哈希关键词,还可以利用其它算法,本发明对此不做具体限定。[0060]在实际应用时,由于日志的分类不同,很有可能会出现某一种日志产生的数量较少,重复次数一直无法达到阈值,从而延迟输出或不输出,使用户无法及时获取日志内容这样的情况。为了防止这一情况的发生,如图3所示,本发明实施例提供的日志聚合方法中还包括:[0061]S301、若判断获知链表节点的当前时间节点与上一次输出字段内容的时间节点的间隔大于或等于预设的超时时间且当前节点的状态为空闲,则判断该节点存储的日志的重复次数;[0062]S302、若判断获知所述日志的重复次数大于0,则将该节点存储的日志中需要输出的字段内容输出。[0063]本发明实施例提供的日志聚合方法通过设置超时时间,对于链表中的每一节点进行时间监控,当间隔时间大于或等于超时时间时,无论该节点此时存储的日志的重复次数是否大于重复阈值,均将存储的日志输出,从而避免了现有技术中由于重复次数达不到重复阈值导致日志延迟输出或不输出的情况的发生,确保用户能够及时准确的获得日志内容。[0064]需要说明的是,对于同一节点,这里的超时时间判定步骤与步骤S103中的链表节点查询和S104中的重复阈值判定不会同时发生。也就是说在当前时刻对于该节点只可能进行超时判定或查询或重复阈值判定,不可能三者或其中的两者同时进行。但这三者进行没有必然的时间先后顺序,也就是说对于同一节点这三种操作时相互独立的,且互不影响。[0065]可以理解的是,同样地,这里的超时时间也可以为用户自定义设置的阈值或为系统默认的重复阈值,本发明对此不做具体限定。[0066]在具体实施时,本发明实施例提供的日志聚合方法在步骤S301之后还包括:在若判断获知日志的重复次数等于O,则删除该节点。[0067]也就是说,若某一节点当前时刻与上一次日志输出的时间间隔已经超过了超时时间,那么首先判断节点中存储的日志的重复次数,若等于0,也就意味着该节点没有存储日志,则此时没有日志内容可以输出,因此删除该节点,从而释放内存,节约内存空间。[0068]不难理解的是,本发明实施方式提供的日志聚合方法可以将上述所有的优选实施方式组合到一起,具体方法流程图如图4所示,由于在前文已经对每一种实施方式的具体步骤进行了说明,在此不再对组合得到的方法实施例进行赘述。[0069]需要说明的是,上述实施例中的举例说明只是为了便于更好地理解本发明实施例提供的方法,并不能构成对本发明的具体限定。且上述的各个优选实施方式之间不会相互影响,各个优选实施方式之间的任意组合所得到的方案均应该落入本发明的保护范围。[0070]第二方面,本发明提供了一种日志聚合装置,如图5所示,包括:[0071]结构化模块501,用于根据网络设备生成的日志的种类,将所述日志中需要输出的字段内容封装在结构体中;[0072]查询模块502,用于获取日志被封装之后的结构体的长度,以及封装在结构体内的字段内容,根据所述结构体的长度及字段内容在链表中进行查询;[0073]处理模块503,用于若判断获知链表的节点中已存储有与该日志的结构体的长度及字段内容均相同的结构体,则将该日志的重复次数加I;[0074]所述处理模块503,还用于若判断获知该日志的重复次数大于或等于预设的重复阈值,则将该日志中需要输出的字段内容输出,并将该日志的重复次数清零。[0075]在具体实施时,所述处理模块503,还用于若判断获知链表的节点中没有存储与该日志的结构体的长度及字段内容均相同的结构体,则创建新节点,在所述新节点中存储该日志的结构体,并将所述新节点加入链表。[0076]在具体实施时,所述处理模块503,还用于若判断获知链表的节点当前时间节点与上一次输出字段内容的时间节点的间隔大于或等于预设的超时时间且当前节点的状态为空闲,则判断该节点存储的日志的重复次数;所述处理模块,还用于若判断获知所述日志的重复次数大于O,则将该节点存储的日志中需要输出的字段内容输出。[0077]在具体实施时,所述处理模块503,还用于若判断获知所述日志的重复次数等于O,则删除该节点。[0078]在具体实施时,所述查询模块502还用于:[0079]获取日志被封装之后的结构体的长度,以及封装在结构体内的字段内容;[0080]计算所述结构体的长度以及字段内容的哈希关键词;[0081]根据所述哈希关键词在链表中进行查询。[0082]由于本实施例所介绍的日志聚合装置为可以执行本发明实施例中的日志聚合方法的装置,故而基于本发明实施例中所介绍的日志聚合方法,本领域所属技术人员能够了解本实施例的日志聚合装置的【具体实施方式】以及其各种变化形式,所以在此对于该日志聚合装置如何实现本发明实施例中的日志聚合方法不再详细介绍。只要本领域所属技术人员实施本发明实施例中日志聚合方法所采用的装置,都属于本申请所欲保护的范围。[0083]以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。[0084]通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如R0M/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。[0085]应该注意的是上述实施例对本发明进行说明而不是对本发明进行限制,并且本领域技术人员在不脱离所附权利要求的范围的情况下可设计出替换实施例。在权利要求中,不应将位于括号之间的任何参考符号构造成对权利要求的限制。单词“包含”不排除存在未列在权利要求中的元件或步骤。位于元件之前的单词“一”或“一个”不排除存在多个这样的元件。本发明可以借助于包括有若干不同元件的硬件以及借助于适当编程的计算机来实现。在列举了若干装置的单元权利要求中,这些装置中的若干个可以是通过同一个硬件项来具体体现。单词第一、第二、以及第三等的使用不表示任何顺序。可将这些单词解释为名称。[0086]最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。【主权项】1.一种日志聚合方法,其特征在于,包括:根据网络设备生成的日志的种类,将所述日志中需要输出的字段内容封装在结构体中;获取日志被封装之后的结构体的长度,以及封装在结构体内的字段内容,根据所述结构体的长度及字段内容在链表中进行查询;若判断获知链表的节点中已存储有与该日志的结构体的长度及字段内容均相同的结构体,则将该日志的重复次数加I;若判断获知该日志的重复次数大于或等于预设的重复阈值,则将该日志中需要输出的字段内容输出,并将该日志的重复次数清零。2.如权利要求1所述的方法,其特征在于,所述方法还包括:若判断获知链表的节点中没有存储与该日志的结构体的长度及字段内容均相同的结构体,则创建新节点,在所述新节点中存储该日志的结构体,并将所述新节点加入链表。3.如权利要求1所述的方法,其特征在于,所述方法还包括:若判断获知链表节点的当前时间节点与上一次输出字段内容的时间节点的间隔大于或等于预设的超时时间且当前节点的状态为空闲,则判断该节点存储的日志的重复次数;若判断获知所述日志的重复次数大于O,则将该节点存储的日志中需要输出的字段内容输出。4.如权利要求3所述的方法,其特征在于,所述方法还包括:若判断获知所述日志的重复次数等于O,则删除该节点。5.如权利要求1所述的方法,其特征在于,所述获取日志被封装之后的结构体的长度,以及封装在结构体内的字段内容,根据所述结构体的长度及字段内容在链表中进行查询的步骤具体包括:获取日志被封装之后的结构体的长度,以及封装在结构体内的字段内容;计算所述结构体的长度以及字段内容的哈希关键词;根据所述哈希关键词在链表中进行查询。6.—种日志聚合装置,其特征在于,包括:结构化模块,用于根据网络设备生成的日志的种类,将所述日志中需要输出的字段内容封装在结构体中;查询模块,用于获取日志被封装之后的结构体的长度,以及封装在结构体内的字段内容,根据所述结构体的长度及字段内容在链表中进行查询;处理模块,用于若判断获知链表的节点中已存储有与该日志的结构体的长度及字段内容均相同的结构体,则将该日志的重复次数加I;所述处理模块,还用于若判断获知该日志的重复次数大于或等于预设的重复阈值,则将该日志中需要输出的字段内容输出,并将该日志的重复次数清零。7.如权利要求6所述的装置,其特征在于,所述处理模块,还用于若判断获知链表的节点中没有存储与该日志的结构体的长度及字段内容均相同的结构体,则创建新节点,在所述新节点中存储该日志的结构体,并将所述新节点加入链表。8.如权利要求1所述的装置,其特征在于,所述处理模块,还用于若判断获知链表的节点当前时间节点与上一次输出字段内容的时间节点的间隔大于或等于预设的超时时间且当前节点的状态为空闲,则判断该节点存储的日志的重复次数;所述处理模块,还用于若判断获知所述日志的重复次数大于O,则将该节点存储的日志中需要输出的字段内容输出。9.如权利要求8所述的装置,其特征在于,所述处理模块,还用于若判断获知所述日志的重复次数等于O,则删除该节点。10.如权利要求6所述的装置,其特征在于,所述查询模块还用于:获取日志被封装之后的结构体的长度,以及封装在结构体内的字段内容;计算所述结构体的长度以及字段内容的哈希关键词;根据所述哈希关键词在链表中进行查询。【文档编号】H04L12/24GK105847062SQ201610297447【公开日】2016年8月10日【申请日】2016年5月6日【发明人】刘仙凤【申请人】汉柏科技有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1