发明内容
本发明的一个目的是提供一种基于决策树的日志匹配方法和装置,以解决现有的日志匹配方法浪费大量计算资源的问题。
根据本发明的第一方面,提供一种基于决策树的日志匹配方法,包括:
构建决策树;其中,所述决策树的每层包括:属性节点以及与所述属性节点相对应的规则节点;
定位至与日志数据相对应的所述属性节点,以得到该层的与所述属性节点相对应的规则节点;
如果该层的所述规则节点为子树,则根据所述子树的下一层的属性节点继续定位;
如果该层的所述规则节点为叶节点,则确定所述规则节点的规则与所述日志数据相匹配。
进一步,本发明所述的方法,所述构建决策树的步骤包括:
以所述日志数据分类确定所述属性节点;
遍历所有所述属性节点,以与所述属性节点相对应的全部规则作为规则节点;
以权重最大的属性作为所述属性节点中的根节点;
如果所述规则节点包括一个规则,则确定所述规则节点为叶节点;
如果所述规则节点包括至少两个规则,则确定所述规则节点为子树;
选取除上层外的权重最大的属性作为所述子树的下一层的所述属性节点。
进一步,本发明所述的方法,所述构建决策树的步骤还包括:
当所述决策树的深度大于等于属性的数量时,确定该层的所述规则节点为叶节点。
进一步,本发明所述的方法,所述决策树的每层还包括空节点;
所述构建决策树的步骤还包括:
将无法与属性节点相对应的规则作为与所述空节点对应的规则节点。
进一步,本发明所述的方法,所述权重为规则节点的下一层的分支的数量。
进一步,本发明所述的方法,还包括:
对与所述日志数据相匹配的规则进行合并去重。
根据本发明的第二方面,提供一种基于决策树的日志匹配装置,包括:
决策树模块,用于构建决策树;其中,所述决策树的每层包括:属性节点以及与所述属性节点相对应的规则节点;
属性节点模块,用于定位至与日志数据相对应的所述属性节点,以得到该层的与所述属性节点相对应的规则节点;
规则节点模块,用于:
如果该层的所述规则节点为子树,则根据所述子树的下一层的属性节点继续定位;
如果该层的所述规则节点为叶节点,则确定所述规则节点的规则与所述日志数据相匹配。
进一步,本发明所述的装置,所述决策树模块具体用于:
以所述日志数据分类确定所述属性节点;
遍历所有所述属性节点,以与所述属性节点相对应的全部规则作为规则节点;
以权重最大的属性作为所述属性节点中的根节点;
如果所述规则节点包括一个规则,则确定所述规则节点为叶节点;
如果所述规则节点包括至少两个规则,则确定所述规则节点为子树;
选取除上层外的权重最大的属性作为所述子树的下一层的所述属性节点。
进一步,本发明所述的装置,所述决策树模块还用于:
当所述决策树的深度大于等于属性的数量时,确定该层的所述规则节点为叶节点。
进一步,本发明所述的装置,所述决策树的每层还包括空节点;
所述决策树模块还用于:将无法与属性节点相对应的规则作为与所述空节点对应的规则节点。
进一步,本发明所述的装置,所述权重为规则节点的下一层的分支的数量。
进一步,本发明所述的装置,还包括:
去重模块,用于对与所述日志数据相匹配的规则进行合并去重。
根据本发明的第三方面,提供一种存储介质,所述存储介质存储计算机程序指令,所述计算机程序指令根据本发明所述的方法进行执行。
根据本发明的第四方面,提供一种计算设备,包括:用于存储计算机程序指令的存储器和用于执行计算机程序指令的处理器,其中,当该计算机程序指令被该处理器执行时,触发所述计算设备执行本发明所述的方法。
本发明提供的基于决策树的日志匹配方法和装置,可以将现有的o(M)的时间复杂度优化为o(lgN(M))。其中,N表示平均子树宽度。以现有的循环遍历规则的方案为例,一条日志需要100ms的计算时间,而通过本发明的技术方案,一条日志遍历全部规则所需的时间约为100us,其计算性能相比于现有技术方案提高了1000倍,可以极大地提升运行效率。
具体实施方式
下面结合附图对本发明作进一步详细描述。
图1为本发明实施例一的基于决策树的日志匹配方法的流程示意图,如图1所示,本发明实施例一提供的基于决策树的日志匹配方法,包括:
步骤S101,构建决策树;其中,所述决策树的每层包括:属性节点以及与所述属性节点相对应的规则节点。
步骤S102,定位至与日志数据相对应的所述属性节点,以得到该层的与所述属性节点相对应的规则节点。
步骤S103,如果该层的所述规则节点为子树,则根据所述子树的下一层的属性节点继续定位。
步骤S104,如果该层的所述规则节点为叶节点,则确定所述规则节点的规则与所述日志数据相匹配。
图2为本发明实施例一的决策树的结构示意图,如图2所示,构建得到的决策树包括若干层,例如第一层和第二层。每一层均包括:属性节点11和规则节点12。其中,每个属性节点11均设有与该属性节点相对应的规则节点12,例如,第一层的属性节点A设有对应的规则节点(r1)、规则节点(r2、r3、r7)、规则节点(r4)等。具体地,属性节点包括若干日志数据。属性节点A的日志数据(a2)设有对应的规则节点(r1),属性节点A的日志数据(a3)设有对应的规则节点(r2、r3、r7)。其中,规则节点分为两类,子树和叶节点。若规则节点仅包括一个规则,该规则节点为叶节点,如规则节点(r1),该规则节点仅包括一个规则r1,该规则节点(r1)为叶节点。叶节点为决策树的一个分支的终点,叶节点的下一层不再具有分支,例如作为叶节点的规则节点(r1)为分支(a2至r1)的终点,规则节点(r1)在下方的第二层的不再具有其他分支。若规则节点包括至少两个规则,该规则节点为子树,如规则节点(r2、r3、r7),该规则节点包括r2、r3和r7共三个规则,该规则节点(r2、r3、r7)为子树。子树的下一层具有另一属性节点的分支,例如,作为子树的规则节点(r2、r3、r7)在下方的第二层具有属性节点C。属性节点C设有对应的规则节点(r2)、规则节点(r3)等。具体地,属性节点C的日志数据(c1)设有对应的规则节点(r2),属性节点C的日志数据(c2)设有对应的规则节点(r2),属性节点C的日志数据(c3)设有对应的规则节点(r3)。属性节点C对应的规则节点(r2)、规则节点(r3)均为叶节点。
例如,有一份日志数据包含4个字段:time,A,b,C。该日志数据具体如下:
2018-04-08 00:00:00,a1,b1,c1
2018-04-08 00:00:00,a2,b2,c3
2018-04-08 00:00:00,a3,b1,c2
2018-04-08 00:00:00,a4,b2,c1
2018-04-08 00:00:00,a2,b1,c1
2018-04-08 00:00:00,a1,b2,c2……
其中,A表示a1、a2、a3、a4的属性,B表示b1、b2的属性,C表示的c1、c2、c3属性,time表示时间。
设与该份日志数据相关的业务规则条件如下:
业务1(r1)A in(a1,a2)and B in(b1)
业务2(r2)A in(a3,a4)and B in(b1)and c in(c1,c2)
业务3(r3)A in(a3)and B in(b2)and C in(c3)
业务4(r4)A in(a4)and C in(c1)
业务5(r5)C in(c2,c3)
业务6(r6)B in(b1)
业务7(r7)A in(a3)
其中,r1、r2、……、r7表示业务规则。
如按照现有技术的匹配方法,当日志数据2018-04-08 00:00:00,a1,b1,c1进入系统,则会循环进行r1-r7的规则匹配,最终得到r1,r6这两个规则匹配这条日志,然后进行计算。当业务规则达到上万级别时,则每条日志会循环上万次进行匹配,浪费了大量计算资源。
而根据本发明实施例一的决策树,当日志数据2018-04-0800:00:00,a2,b2,c3进入系统,根据图2所示的决策树以及日志数据a2的属性A,定位到决策树第一层的属性节点A,对a2匹配得到规则节点(r1),规则节点(r1)为叶节点,则确定日志数据a2与规则节点(r1)的规则r1相匹配。当日志数据2018-04-08 00:00:00,a3,b1,c2进入系统,根据图2所示的决策树以及日志数据a3的属性A,定位到决策树第一层的属性节点A,对a3匹配得到规则节点(r2、r3、r7)。规则节点(r2、r3、r7)为子树,则继续定位至规则节点(r2、r3、r7)下方决策树第二层的属性节点C,对c2匹配得到属性节点C对应的规则节点(r2),属性节点C对应的规则节点(r2)为叶节点,进而确定日志数据c2与决策树第二层的属性节点C对应的规则节点(r2)的规则r2相匹配。
以现有的循环遍历规则的方案为例,一条日志需要100ms的计算时间,而通过本发明的技术方案,一条日志遍历全部规则所需的时间约为100us,其计算性能相比于现有技术方案提高了1000倍。
可选地,本发明实施例一提供的基于决策树的日志匹配方法还包括:对与所述日志数据相匹配的规则进行合并去重。
可选地,图2所示的决策树还包括空节点(null),将无法与属性节点相对应的规则作为与所述空节点对应的规则节点。例如属性节点A对应的日志数据包括:a1、a2、a3、a4,而业务规则r5、r6无法与属性A相匹配,也无法与属性节点A相对应,则将规则节点(r5、r6)作为与第一层的空节点(null)对应的规则节点。同理,第二层的空节点(null)具有对应的规则节点(r7)。第一层的规则节点(r5、r6)为子树,规则节点(r5、r6)下一层同样设有属性节点C。
其中,当日志数据2018-04-08 00:00:00,a2,b2,c3进入系统,根据图2所示的决策树以及日志数据a2的属性A,定位到决策树第一层的属性节点A,对a2匹配得到规则节点(r1)。并且根据第一层的空节点(null),匹配得到规则节点(r5、r6)。根据规则节点(r5、r6)下方第二层的属性节点C对应的日志数据c3,匹配得到规则节点(r5)。根据第二层的空节点(null)匹配得到规则节点(r6)。最终得到日志数据2018-04-0800:00:00,a2,b2,c3的匹配规则为r1、r5和r6。
当日志数据2018-04-08 00:00:00,a3,b1,c2进入系统,根据图2所示的决策树以及日志数据a3的属性A,定位到决策树第一层的属性节点A,对a3匹配得到规则节点(r2、r3、r7)。继续定位至规则节点(r2、r3、r7)下方决策树第二层的属性节点C,对c2匹配得到属性节点C对应的规则节点(r2),对规则节点(r2、r3、r7)下方属性节点C对应的空节点(null)匹配得到规则节点(r7)。并且根据第一层的空节点(null),匹配得到规则节点(r5、r6)。根据规则节点(r5、r6)下方第二层的属性节点C对应的日志数据c2,匹配得到规则节点(r5),根据规则节点(r5、r6)下方第二层的空节点(null)匹配得到规则节点(r6)。根据决策树以及实际日志,将各个叶节点(规则节点r2、规则节点r7、规则节点r5和规则节点r6)的规则合并后生成匹配集合,并对匹配集合做去重处理,最终得到日志数据2018-04-08 00:00:00,a3,b1,c2的匹配规则为r2、r7、r5和r6。
图3为本发明实施例三的构建决策树步骤的流程示意图,如图3所示,本发明实施例三的构建决策树的步骤包括:
步骤S301,以所述日志数据分类确定所述属性节点。
例如,对于如下日志数据:
2018-04-08 00:00:00,a1,b1,c1
2018-04-08 00:00:00,a2,b2,c3
2018-04-08 00:00:00,a3,b1,c2
2018-04-08 00:00:00,a4,b2,c1
2018-04-08 00:00:00,a2,b1,c1
2018-04-08 00:00:00,a1,b2,c2……
其中,a1、a2、a3、a4具有共同属性,则以基于共同属性的数据分类设立属性节点A。同理,基于b1、b2的共同属性设立属性节点B,基于c1、c2、c3的共同属性设立属性节点C。
步骤S302,遍历所有所述属性节点,以与所述属性节点相对应的全部规则作为规则节点。
例如,上述日志数据相关的业务规则如下:
业务1(r1)A in(a1,a2)and B in(b1)
业务2(r2)A in(a3,a4)and B in(b1)and c in(c1,c2)
业务3(r3)A in(a3)and B in(b2)and C in(c3)
业务4(r4)A in(a4)and C in(c1)
业务5(r5)C in(c2,c3)
业务6(r6)B in(b1)
业务7(r7)A in(a3)
图4为本发明实施例的属性节点和规则节点的示意图,如图4所示,基于属性节点A的日志数据a1、a2、a3、a4以及上述业务规则,生成了与属性节点A相对应的规则节点(r1)、规则节点(r2、r3、r7)、规则节点(r4)。基于属性节点B的日志数据b1、b2以及上述业务规则,生成了与属性节点B相对应的规则节点(r1、r2、r6)、规则节点(r3)。基于属性节点C的日志数据c1、c2、c3以及上述业务规则,生成了与属性节点C相对应的规则节点(r2、r4)、规则节点(r2、r5)、规则节点(r3、r5)。
可选地,将无法与属性节点A相对应的规则r5、r6作为与属性节点A的空节点(null)对应的规则节点(r5、r6)。将无法与属性节点B相对应的规则r4、r5、r7作为与属性节点B的空节点(null)对应的规则节点(r4、r5、r7)。将无法与属性节点C相对应的规则r6、r7作为与属性节点C的空节点(null)对应的规则节点(r6、r7)。
步骤S303,以权重最大的属性作为所述属性节点中的根节点。
其中,可以定义权重函数,以确定各属性节点之间的层级关系。本发明实施例的方法采用属性节点下的规则节点的数量作为权重。如图4所示,属性节点A及其空节点共设有五个规则节点,则属性节点A的权重weight=5。属性节点B及其空节点共设有三个规则节点,则属性节点B的权重weight=3。属性节点C及其空节点共设有四个规则节点,则属性节点C的权重weight=4。此时选取权重最大的属性节点A作为决策树的根节点。
步骤S304,如果所述规则节点包括一个规则,则确定所述规则节点为叶节点。
其中,规则节点分为两类,若规则节点仅包括一个规则,该规则节点为叶节点。如属性节点A的规则节点(r1),该规则节点仅包括一个规则r1,该规则节点(r1)为叶节点。叶节点为决策树的一个分支的终点,叶节点的下一层不再具有分支,例如作为叶节点的规则节点(r1)为分支(a1至r1)的终点,规则节点(r1)在下方的决策树第二层的不再具有其他分支。
步骤S305,如果所述规则节点包括至少两个规则,则确定所述规则节点为子树。
其中,若规则节点包括至少两个规则,该规则节点为子树。如属性节点A的规则节点(r2、r3、r7),该规则节点包括r2、r3和r7共三个规则,该规则节点(r2、r3、r7)为子树。子树的下一层具有另一属性节点的分支,
步骤S306,选取除上层外的权重最大的属性作为所述子树的下一层的所述属性节点。
其中,权重根据定义的权重函数确定。在本发明实施例的方法中,所述权重为规则节点的下一层的分支的数量,即属性节点和空节点共同对应的规则节点的数量。如图4所示,属性节点A及其空节点共设有五个规则节点,则属性节点A的权重weight=5。属性节点B及其空节点共设有三个规则节点,则属性节点B的权重weight=3。属性节点C及其空节点共设有四个规则节点,则属性节点C的权重weight=4。
图5为本发明实施例的规则节点(r2、r3、r7)选择下一层属性节点的示意图,图6为本发明实施例的规则节点(r5、r6)选择下一层属性节点的示意图,如图5所示,属性节点A对应的规则节点(r2、r3、r7)为子树,需要对其下一层属性节点进行选择,由于属性节点A已经作为根节点出现,所以只对属性节点B、C进行选择,如图5所示,属性节点B的权重weight=3,属性节点C的权重weight=4,所以选择属性节点C作为规则节点(r2、r3、r7)下一层的属性节点。同理,如图6所示,属性节点A的空节点(null)对应的规则节点(r5、r6)也为子树,属性节点B的权重weight=2,属性节点C的权重weight=3,因此选择属性节点C作为规则节点(r5、r6)下一层的属性节点,最后得到如图2所示的决策树。
在本发明一个实施例中,当所述决策树的深度大于等于属性的数量时,确定该层的所述规则节点为叶节点。
其中,决策树的深度即为决策树的层数,决策树的层数超过属性节点的数量时,说明决策树具有逻辑错误,所以此时切断决策树向下的决策分支。
在本发明一个实施例中,所述决策树的每层还包括空节点;
所述构建决策树的步骤还包括:
将无法与属性节点相对应的规则作为与所述空节点对应的规则节点。
其中,为每一层的属性节点设置对应的空节点,当有些规则没有通过该层属性节点匹配到对应规则时,例如对于根节点无法匹配的规则,通过空节点进行匹配,进一步提升决策树处理匹配的精确度。
图7为本发明实施例的基于决策树的日志匹配装置的结构示意图,如图7所示,本发明实施例的基于决策树的日志匹配装置,包括:决策树模块71、属性节点模块72和规则节点模块73。
决策树模块71,用于构建决策树;其中,所述决策树的每层包括:属性节点以及与所述属性节点相对应的规则节点。
属性节点模块72,用于定位至与日志数据相对应的所述属性节点,以得到该层的与所述属性节点相对应的规则节点。
规则节点模块73,用于:
如果该层的所述规则节点为子树,则根据所述子树的下一层的属性节点继续定位;
如果该层的所述规则节点为叶节点,则确定所述规则节点的规则与所述日志数据相匹配。
其中,所述决策树模块71具体用于:
以所述日志数据分类确定所述属性节点;
遍历所有所述属性节点,以与所述属性节点相对应的全部规则作为规则节点;
以权重最大的属性作为所述属性节点中的根节点;
如果所述规则节点包括一个规则,则确定所述规则节点为叶节点;
如果所述规则节点包括至少两个规则,则确定所述规则节点为子树;
选取除上层外的权重最大的属性作为所述子树的下一层的所述属性节点。
在本发明一个实施例中,所述决策树模块还用于:
当所述决策树的深度大于等于属性的数量时,确定该层的所述规则节点为叶节点。
在本发明一个实施例中,所述决策树的每层还包括空节点;
所述决策树模块71还用于:将无法与属性节点相对应的规则作为与所述空节点对应的规则节点。
在本发明一个实施例中,所述权重为规则节点的下一层的分支的数量。
在本发明一个实施例中,所述装置还包括:
去重模块74,用于对与所述日志数据相匹配的规则进行合并去重。
本发明实施例图7所示装置为本发明实施例图1和图3所示方法的实现装置,其具体原理与本发明实施例图1和图3所示方法相同,此处不再赘述。
在本发明一个实施例中,还提供一种存储介质,所述存储介质存储计算机程序指令,所述计算机程序指令根据本发明实施例的方法进行执行。
在本发明一个典型的配置中,计算设备均包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flashRAM)。内存是计算机可读介质的示例。
在本发明一个实施例中,还提供一种计算设备,包括:用于存储计算机程序指令的存储器和用于执行计算机程序指令的处理器,其中,当该计算机程序指令被该处理器执行时,触发所述计算设备执行本发明实施例的方法。
计算机可读存储介质包括永久性和非永久性、可移动和非可移动媒体,可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的装置或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。
需要注意的是,本发明可在软件和/或软件与硬件的组合体中被实施,例如,可采用专用集成电路(ASIC)、通用目的计算机或任何其他类似硬件设备来实现。在一些实施例中,本发明的软件程序可以通过处理器执行以实现上文步骤或功能。同样地,本发明的软件程序(包括相关的数据结构)可以被存储到计算机可读记录介质中,例如,RAM存储器,磁或光驱动器或软磁盘及类似设备。另外,本发明的一些步骤或功能可采用硬件来实现,例如,作为与处理器配合从而执行各个步骤或功能的电路。
对于本领域技术人员而言,显然本发明不限于上述示范性实施例的细节,而且在不背离本发明的精神或基本特征的情况下,能够以其他的具体形式实现本发明。因此,无论从哪一点来看,均应将实施例看作是示范性的,而且是非限制性的,本发明的范围由所附权利要求而不是上述说明限定,因此旨在将落在权利要求的等同要件的含义和范围内的所有变化涵括在本发明内。不应将权利要求中的任何附图标记视为限制所涉及的权利要求。此外,显然“包括”一词不排除其他单元或步骤,单数不排除复数。装置权利要求中陈述的多个单元或装置也可以由一个单元或装置通过软件或者硬件来实现。第一,第二等词语用来表示名称,而并不表示任何特定的顺序。