本发明涉及一种事件进行过滤处理的方法,更具体地是涉及能够对接收到的海量事件进行高效快速过滤的基于哈希算法和正则匹配的时间过滤方法以及事件过滤处理方法。
背景技术:
事件过滤本质上在于在众多事件中,寻找彼此的共同点。将同类事件进行压缩、合并、舍弃等操作,从而减少到达用户端的事件数量,降低信息干扰。
在现有技术中,分析事件共性,目前相关算法有:
欧几里德算法:用于将信息抽象为一个N维空间的点,通过分析点与点之间的欧几里德距离来确定不同信息间的相似度;
余弦相似度算法:用于将信息抽象为一个N维向量,通过分析计算两个向量的余弦值来获得向量夹角值,以夹角值确定不同信息的相似度。
现有技术中上述分析事件共性的相关算法存在以下缺陷:运算量大且复杂;算法相对固定,不具备配置性;并非专用于事件处理系统,故没有充分利用事件信息的特点。
技术实现要素:
鉴于上述问题, 本发明旨在提供一种能够对海量事件进行快速高效过滤的基于哈希算法和正则匹配的时间过滤方法以及事件过滤处理方法。
本发明的基于哈希算法和正则匹配的事件过滤方法,其特征在于,包括下述步骤:
转化处理步骤,将接收到的事件信息转化为N维变量;
匹配哈希树步骤,根据N维变量的值计算得到事件的哈希值,基于哈希值在预设的哈希树中去索引查找正则队列,如果匹配到正则队列,则继续进行下述的匹配正则式步骤,否则将事件直接投递到监控系统;
匹配正则式步骤,将正则队列中的正则式与事件的N维变量进行匹配,如果能匹配则继续下述的时间标签计算步骤,否则将事件直接投递到监控系统;
时间标签计算步骤,根据正则式对应的时间相关度度量值计算时间标签;以及
时间队列处理步骤,查找该正则式关联的时间队列,基于所述时间标签进行时间队列的相应处理。
优选地,在所述转化步骤中,将缺失的维度均设置空值。
优选地,在所述时间队列处理步骤中,如未找到时间队列,则创建时间队列,将当前事件作为标杆事件,通知监控系统发生新的事件;如找到时间队列,但时间队列的时间标签与当前事件的时间标签不一致,则销毁原时间队列,并创建新的时间队列,将当前事件作为标杆事件,通知监控系统发生新的事件;如找到时间队列,且时间队列的时间标签与当前事件的时间标签一致,则将当前事件入队,并通知监控系统该事件被合并。
本发明的事件过滤处理方法,其特征在于,包括下述步骤:
哈希树构建步骤,将事件的若干个固定维度可预见的取值组合分别计算出哈希值,用所述哈希值作为哈希树节点来构建哈希树,其中,在哈希树节点下预先配置正则表达式队列;
匹配哈希树步骤,计算接收到的事件的哈希值,根据哈希值在预设的所述哈希树中去索引查找正则队列,如果匹配到正则队列,则继续进行下述的匹配正则式步骤,否则将事件投递到监控系统;
匹配正则式步骤,用正则队列的每个正则表达式项依次与事件进行匹配,如果匹配到则继续下述事件标签计算步骤,如果未能匹配到,则将事件投递给监控系统;
时间标签计算步骤,根据正则表达式项设置的时间相关度度量值计算时间标签;
时间队列处理步骤,查找该正则式关联的时间队列,基于所述时间标签进行时间队列的相应处理。
优选地,所述哈希树构建步骤包括下述子步骤:
转化提取步骤,将事件信息转化为N维变量,提取事件信息中相对固定的X个维度,其中,X>=1并且X<=N;
正则队列预建步骤,每一个大类下面维护一个正则表达式项的队列;以及
节点构建步骤,将各大类事件取其X个维度的值,通过哈希运算得到该大类对应的哈希值K,用该哈希值K作为键,用该大类下对应的正则队列作为键值V,组成一个<K,V>键值对。将该键值对作为一个节点插入到哈希树中。
优选地,所述正则表达式项包括:匹配维度、正则表达式、时间相关度度量值、时间队列的引用指针、优先级数值。
优选地,在所述时间标签计算步骤中,则根据正则表达式项设置的时间相关度度量值M,其中M的单位为秒,用当前时间 T / M * M 得到一个基于M整倍数值Tm,用Tm时间戳作为时间队列的时间标签。
优选地,所述时间队列处理步骤下述子步骤:
如果正则表达式项的时间队列指针为空,则创建一个时间队列,并将该时间队列打上时间标签,将事件压入该时间队列,并标记为“标杆事件”;如果正则表达式项的时间队列指针不为空,则获取已有时间队列的时间标签,如果时间等于时间标签,则将事件压入时间队列。如果时间不等于时间标签,则将原时间队列销毁,创建新的时间队列,并将该时间队列打上时间标签,将事件压入该时间队列,并标记为“标杆事件”。
本发明的事件过滤方法,其特征在于,包括下述步骤:
内容相关性匹配步骤,对于接收到的事件进行内容相关性匹配,如果事件内容与预设内容相关则继续进行下述步骤,否则将事件直接投递到监控系统;以及
时间相关性匹配步骤,计算与事件相关的时间标签,基于所述时间标签进行时间相关性匹配。
优选地,在所述内容相关性匹配步骤中,利用哈希算法进行内容相关性匹配判定。
根据本发明的事件过滤处理方法,通过利用哈希算法能够将监控系统接收到的海量事件快速高效的进行过滤,并且,利用正则表达式作为事件模板,能够对事件进行精确过滤。由此,能够提出重复、相似的事件信息,筛选出主要的事件内容,方便监控系统及时诊断处理事件。而且,在本发明中,从时间相关性和内容相关性两个方面同时去判断事件的相关性,能够通过调节正则表达式项中的匹配向量、正则表达式、时间相关度量来调整匹配逻辑,在实际应用中可以达到非常好的过滤效果。
附图说明
图1是表示本发明的基于哈希算法和正则匹配的时间过滤方法的流程图。
图2是表示本发明的一实施方式的事件过滤处理方法中正则表达式的组成示意图。
图3是表示本发明的一实施方式的事件过滤处理方法示意图。
具体实施方式
下面介绍的是本发明的多个实施例中的一些,旨在提供对本发明的基本了解。并不旨在确认本发明的关键或决定性的要素或限定所要保护的范围。
在说明本发明的基于哈希算法和正则匹配的时间过滤方法以及事件过滤处理方法之前先对于将要提到的一些概念进行简单介绍。
预建哈希树:指在系统初始化时,将事件几个固定维度可预见的取值组合分别计算出哈希值,用这些哈希值作为树节点来构建哈希树,用于对事件进行首轮的快速分类。
正则队列:预先配置的关联在哈希节点下的正则表达式的队列。每个正则表达式象征着同一类事件。过滤系统基于正则对事件进行分类。
时间相关度度量值:每个正则队列中的正则表达式均对应一个时间相关度度量值,以秒为单位。该值用于决定同类事件需要在时间上满足的相关性,即多少秒内的同类事件认为是同类相关的。默认为负值,表示鉴别同类事件时不考虑时间相关度。
时间队列 (time-queue):在传统队列的基础上,给队列打上了一个时间标签。用于存储具备时间相关度和相似度的事件队列。队列头事件为标杆事件,队内其它事件为同类事件。在系统设计上主要要考虑时间队列的创建、入队、销毁操作。
图1是表示本发明的基于哈希算法和正则匹配的时间过滤方法的流程图。
如图1所示,本发明的基于哈希算法和正则匹配的时间过滤方法的流程图具备包括下述步骤:
步骤S100:接收事件信息。
步骤S200:将事件信息转化为N维变量,即Va,Vb,Vc,..Vx, V1,V2,V3..Vn。其中,缺失的维度均设置空值。
步骤S300:取事件N维变量的其中固定几个维度的值计算得到事件的哈希值。
步骤S400:判断是否匹配哈希树节点,即利用事件哈希值在预设的哈希树中去索引查找正则队列。
步骤S500:如果未能找到正则队列则不能对事件进行压缩过滤,直接将事件投递给监控系统;
步骤S600:如果找到正则队列,则将正则队列中的正则式与事件N维变量依次进行匹配;
步骤S700:判断正则队列中的正则式与事件N维变量是否匹配;如果未能匹配,则不能对事件进行压缩过滤,直接将事件投递给监控系统(即跳至步骤S500);
步骤S800:在匹配正则的情况下,根据对应正则设置的时间相关度度量值计算得到时间标签;
步骤S900:查找该正则表达式已关联的时间队列,如未找到时间队列,则创建时间队列,将当前事件作为标杆事件,通知监控系统发生新的事件;如找到时间队列,但时间队列的时间标签与当前事件的时间标签不一致,则销毁原时间队列,并创建新的时间队列,将当前事件作为标杆事件,通知监控系统发生新的事件;如找到时间队列,且时间队列的时间标签与当前事件的时间标签一致,则将当前事件入队,并通知监控系统该事件被合并。
本发明的基于哈希算法和正则匹配的时间过滤方法中,利用哈希算法可将监控系统接收到的海量事件快速高效的进行分门别类,利用正则表达式作为事件模板,对事件进行精确过滤。从而剔除重复、相似的事件信息,筛选出主要的事件内容,方便监控系统及时诊断处理事件。可从内容相关性和时间相关性两个方面同时去判断事件的相关性, 能够带来过滤精确的技术效果。
接着,对于将上述本发明的基于哈希算法和正则匹配的时间过滤方法应用到事件过滤处理中的实施方式进行说明。
图2是表示本发明的一实施方式的事件过滤处理方法中正则表达式的组成示意图。
图3是表示本发明的一实施方式的事件过滤处理方法示意图。
本发明的一实施方式的事件过滤处理方法包括下述步骤:
步骤一:将事件信息转化为N维变量,如事件缺失某些维度的信息,则该维度的信息设置为空。
步骤二:提取事件信息中相对固定的X个维度(X>=1,X<=N,N取值尽可能大),将它们可能的取值组合(每种取值组合对应一大类事件)通过数据库等方式维护好。
步骤三:在每一个大类下面维护一个正则表达式项的队列,每个正则表达式项对应着不同子类的事件特征模板,该正则队列同样通过数据库等方式进行维护。
如表示本发明的一实施方式的事件过滤处理方法中正则表达式的组成的图2所示,每个正则表达式项由五项数据组成,包括:匹配维度,用于设置针对事件N维信息的哪几个维度的组合来做匹配;正则表达式;时间相关度度量值;时间队列的引用指针,默认为空;优先级数值,该值决定正则表达式匹配事件时的先后顺序。
步骤四:在系统启动时,将各大类事件取其X个维度的值,通过Hash(Va,Vb,..Vx)算法得到该大类对应的哈希值K。用该哈希值K作为键,用该大类下对应的正则队列作为键值V,组成一个<K,V>键值对。将该键值对作为一个节点插入到哈希树中。
因为哈希树节点越多,对应的运算量越大。为了提高运算效率,可考虑将在分布式系统上构建多棵子树。例如通过对K值求模的方式:假设有Y台机器,编号分别为H0,H1,…H(y-1)。用K%Y得到哈希节点应插入的哈希树所在的机器编号。
步骤五:事件被投递到系统后,系统首先提取事件中的X维信息值[Va,Vb,…Vx],并通过哈希运算得到事件的键值Hash(Va,Vb,…Vx) = K,用K值去寻找哈希节点。如果未能找到,则将事件直接投递给监控系统。如果找到则可得到节点的值,即一个正则队列。
步骤六:用正则队列的每个正则表达式项依次同事件进行匹配,如果未能匹配到,则将事件投递给监控系统。如果匹配到,则根据正则表达式项设置的时间相关度度量值M(单位秒),用当前时间 T / M * M 得到一个基于M整倍数值时间,用时间戳作为时间队列的时间标签。
步骤七:如果正则表达式项的时间队列指针为空,则创建一个时间队列,并将该时间队列打上时间标签,将事件压入该时间队列,并标记为“标杆事件”;如果正则表达式项的时间队列指针不为空,则获取已有时间队列的时间标签,如果时间等于时间标签,则将事件压入时间队列。如果时间不等于时间标签,则将原时间队列销毁,创建新的时间队列,并将该时间队列打上时间标签,将事件压入该时间队列,并标记为“标杆事件”。
步骤八:在入队时根据事件是否为标杆事件,通知监控系统做相应的处理。对于标杆事件,监控系统需要创建新的事件。对于非标杆事件,监控系统可能需要记录其被压缩,以及将其和标杆事件进行关联。
根据本发明的事件过滤处理方法,通过利用哈希算法能够将监控系统接收到的海量事件快速高效的进行过滤,并且,利用正则表达式作为事件模板,能够对事件进行精确过滤。由此,能够提出重复、相似的事件信息,筛选出主要的事件内容,方便监控系统及时诊断处理事件。而且,在本发明中,从时间相关性和内容相关性两个方面同时去判断事件的相关性,能够通过调节正则表达式项中的匹配向量、正则表达式、时间相关度量来调整匹配逻辑,在实际应用中可以达到非常好的过滤效果。
以上例子主要说明了本发明的基于哈希算法和正则匹配的时间过滤方法以及事件过滤处理方法。尽管只对其中一些本发明的具体实施方式进行了描述,但是本领域普通技术人员应当了解,本发明可以在不偏离其主旨与范围内以许多其他的形式实施。因此,所展示的例子与实施方式被视为示意性的而非限制性的,在不脱离如所附各权利要求所定义的本发明精神及范围的情况下,本发明可能涵盖各种的修改与替换。