著录项信息
专利名称 | 在线日志分析方法 |
申请号 | CN201010221973.X | 申请日期 | 2010-06-30 |
法律状态 | 权利终止 | 申报国家 | 暂无 |
公开/公告日 | 2010-11-17 | 公开/公告号 | CN101888309A |
优先权 | 暂无 | 优先权号 | 暂无 |
主分类号 | H04L12/24 | IPC分类号 | H;0;4;L;1;2;/;2;4;;;H;0;4;L;1;2;/;2;6;;;H;0;4;L;2;9;/;0;6查看分类表>
|
申请人 | 中国科学院计算技术研究所 | 申请人地址 | 北京市海淀区中关村科学院南路6号
变更
专利地址、主体等相关变化,请及时变更,防止失效 |
权利人 | 中国科学院计算技术研究所 | 当前权利人 | 中国科学院计算技术研究所 |
发明人 | 周伟;詹剑锋;王磊;任睿 |
代理机构 | 北京泛华伟业知识产权代理有限公司 | 代理人 | 王勇 |
摘要
本发明提供一种在线日志分析方法,包括:从机群系统的各个节点上在线获取日志文件;根据日志文件定义事件序列与事件关联规则,然后统计一元事件序列,找出频繁的一元事件序列集合,得到二元频繁事件序列候选集C(2);统计C(2)中候选二元频繁事件序列的支持度计数和后验度计数,计算置信度和后验度;生成二元频繁事件序列集合F(2)和二元规则集合R(2);重复这一过程直到得到F(k)和R(k),对F(k)中的k元频繁事件序列进行连接操作,产生F(k+1)元频繁事件序列集合;对在F(k+1)中且不在R(k+1)的元素的属性值进行近似计算,直到产生所有的频繁事件序列;由频繁事件序列找到事件关联规则;根据事件关联规则在线预测日志中的事件。
1.一种在线日志分析方法,包括:
步骤1)、从机群系统的各个节点上在线获取日志文件;
步骤2)、根据所述日志文件定义事件序列与事件关联规则,然后对当前时间帧中的一元事件序列进行统计,找出由频繁的一元事件序列所组成的集合,进而得到二元频繁事件序列候选集C(2);在一定的时间间隔后统计所述C(2)中候选二元频繁事件序列的支持度计数和后验度计数,计算置信度和后验度;根据所述支持度计数生成二元频繁事件序列集合F(2),根据所述支持度计数和置信度生成二元事件规则集合R(2);重复这一过程直到得到F(k)和R(k),对F(k)中的k元频繁事件序列进行连接操作,产生F(k+1)元频繁事件序列集合;对在F(k+1)中且不在R(k+1)的元素的属性值进行近似计算,直到产生所有的频繁事件序列;最后根据频繁事件序列找到事件关联规则;
步骤3)、根据所述的事件关联规则在线预测日志中的事件;
所述步骤2)包括:
步骤2-1)、定义包括时间阈值Tw、事件规则的支持度计数阈值Sth、事件规则的置信度阈值Cth在内的阈值,以及时间帧的大小;
步骤2-2)、计算实时来到当前时间帧中的频繁的一元事件序列候选集C(1)中的已有计数,并据此产生所有的二元频繁事件序列候选集C(2);所述C(2)包括已有的二元事件规则,以及具有相同节点、相同事件类型和相同应用的两个事件组成的事件序列;
步骤2-3)、当事件来到时,将事件保存到当前时间帧中,每隔时间阈值Tw对时间帧中的日志进行分析,统计所有事件的已有计数,统计C(2)中候选的二元频繁事件序列的支持度计数和后验度计数,计算置信度和后验度;
步骤2-4)、当所述C(2)中候选的二元频繁事件序列为已有的二元事件规则时,修改包括支持度计数、置信度、后验度计数、后验度在内的属性;否则,当所述C(2)中候选的二元频繁事件序列的支持度计数达到支持度计数阈值Sth,则加入二元频繁事件序列F(2)中,当支持度计数和置信度分别达到支持度计数阈值Sth阈值和事件规则的置信度阈值Cth时,产生新的二元事件规则,并将其加入到二元事件规则集合R(2)中;
步骤2-5)、依此类推,直到生成F(k)和R(k);
步骤2-6)、对F(k)中的k元频繁事件序列进行连接操作,产生F(k+1)元频繁事件序列候选集,遍历时间帧,对R(k+1)中元素的属性值进行修改;同时遍历时间帧,将其作为日志的一个采样,对在F(k+1)中而不在R(k+1)的元素的所述属性值进行近似计算;
步骤2-7)、重复前一步骤,直到产生所有的频繁事件序列。
2.根据权利要求1所述的在线日志分析方法,其特征在于,在所述的步骤1)和所述的步骤2)之间,还包括:
步骤a)、将来自机群系统中不同节点上的日志文件的格式转换为统一的格式。
3.根据权利要求1或2所述的在线日志分析方法,其特征在于,在所述的步骤1)和所述的步骤2)之间,还包括:
步骤b)、删除所述日志文件中重复、冗余的数据。
4.根据权利要求2所述的在线日志分析方法,其特征在于,所述的步骤a)包括:
步骤a-1)、为日志文件定义统一格式;
步骤a-2)、定义用于描述日志解析过程中所用到的日志格式、日志属性、日志关键字的配置文件;
步骤a-3)、利用所述配置文件对机群系统中各个节点的日志文件加以解析;
步骤a-4)、根据日志文件解析后的内容将各个节点上不同格式的日志文件转换成相同格式的日志文件。
5.根据权利要求3所述的在线日志分析方法,其特征在于,所述的步骤b)包括:
步骤b-1)、删除日志文件中的重复事件,只保留所述重复事件的一条记录;所述重复事件包括被不同的节点重复记录,具有相同的时间戳和内容的事件,或在短时间中重复出现,具有较近的时间戳和内容的事件;
步骤b-2)、对日志文件中的事件做周期性的聚类分析,找出周期性事件,删除所述周期性事件中的多余事件;所述的周期性事件为在固定的时间间隔内循环出现,具有相同内容的事件。
6.根据权利要求1所述的在线日志分析方法,其特征在于,在所述的步骤2-6)中,对所述属性值进行近似计算包括:
对于二元事件规则,直接统计支持度计数和后验度计数,从而计算出置信度和后验度;
对于k+1元候选规则,以时间帧中的置信度和后验度作为其近似值,然后再计算出支持度计数和后验度计数的近似值。
7.根据权利要求1或2或3所述的在线日志分析方法,其特征在于,所述的步骤3)包括:
步骤3-1)、定义预测时间窗口和预测有效期;
步骤3-2)、根据所述的事件关联规则创建失效关联图;
步骤3-3)、基于所述的失效关联图进行日志事件的在线预测。
8.根据权利要求7所述的在线日志分析方法,其特征在于,所述的步骤3-2)包括:
步骤3-2-1)、对所述事件关联规则中的事件数、事件规则的置信度进行排序;
步骤3-2-2)、对所述事件关联规则进行分析,产生对应的顶点和边,并新建一个特殊的顶点ROOT,所述事件关联规则的第一个事件对应的顶点以一个特殊的顶点ROOT作为父顶点,由此产生一个失效关联图;
步骤3-2-3)、如果一个失效关联图中的某个顶点已经存在于另一个失效关联图中,则对这两个失效关联图进行合并操作;
步骤3-2-4)、当所述失效关联图在构造过程中出现环路时,为事件关联规则的后续另设一个备份顶点;
步骤3-2-5)、在内存中保存每个事件对应的ROOT顶点。
9.根据权利要求7所述的在线日志分析方法,其特征在于,所述的步骤3-3)包括:
步骤3-3-1)、定义预测阈值;
步骤3-3-2)、当事件发生时,标识对应的顶点状态,如果超过所述的预测时间窗口,则顶点被取消标识;
步骤3-3-3)、当一条边的尾顶点被标识,则这条边也被标识;
步骤3-3-4)、当所有以一个顶点为头顶点的边都被标识,则该顶点也被标识;
步骤3-3-5)、根据被标识的顶点,计算以其为尾顶点的所有相邻边的头顶点发生的概率;
步骤3-3-6)、如果顶点发生的概率达到所述的预测阈值,则这个顶点对应的事件被预测。
10.一种用于权利要求1所述方法的在线日志分析系统,其特征在于,包括日志代理、日志服务器以及主动管理系统;其中,所述的日志代理搜集机群系统上各个数据节点的日志文件,将所搜集到的日志文件发送到所述的日志服务器上;所述的日志服务器对所述的日志文件进行预处理与过滤,对过滤后的日志文件进行关联分析与挖掘,找出事件关联规则,将这一事件关联规则发送到所述的主动管理系统;所述的主动管理系统根据所述事件关联规则在线预测日志中的事件。
在线日志分析方法\n技术领域\n[0001] 本发明涉及高性能网络领域,特别涉及在线日志分析方法。\n背景技术\n[0002] 机群系统是一组计算机系统(节点)通过高性能网络或者局域网互联而形成的具有单一系统映像的高可用、高性能、高可扩展性的计算机系统。它的每个节点都是一个可以独立工作的完整的计算系统。机群系统自问世以来,以其良好的可扩展性和富有竞争力的性能/价格比,迅速成为高性能计算的主流体系结构,同时机群也在因特网服务、数据库服务等商业领域得到广泛应用。但随着机群系统规模的不断增加,失效已经成为一种常态,而机群系统的软硬件缺陷、负载、环境、用户操作等各种问题使得失效问题更为复杂。已有研究显示,失效对机群系统的性能和运行成本有着重要的影响,因而成为当前的研究热点。\n[0003] 日志是计算机系统对某些对象的某些操作和其操作结果(如用户登录或者用户在系统上的行为)按照时间的先后顺序所形成的有序集合。每一个日志文件由很多的事件记录组成,每条事件记录存储着一次单独的事件。事件记录中包含有时间戳和消息,服务器工作站应用程序运行记录等信息,此外还可能包含有数据库系统等对象的相关活动记录。\n[0004] 日志文件中的记录可提供以下用途:监控系统资源,审计用户行为,确定入侵行为的范围,为恢复系统提供帮助,生成调查报告等。为了维护自身系统资源的运行状况,每一个主机系统自身一般都会有一套比较完整的日志记录系统。日志记录系统中所保存的海量的日志信息是失效分析的重要数据源,从这些日志信息中能够发现前述的失效现象与事件间的特征和规律,失效现象和事件之间的关联等。但因为缺少全局时钟,来自于不同数据源的日志信息通常会有乱序现象,而且内容具有不完整性,因而失效分析成本极高。\n[0005] 目前具有的日志事件关联分析存在的相关方法有:决策树分类,贝叶斯网络模型,半马尔科夫链模型及支持向量机等。它们的共同特点是面向小规模的计算机系统或者是只能分析与特定失效相关联的事件,并不能适应于大规模机群系统的日志事件关联分析。另外,由于系统日志具有与关系数据库不一样的滑动时间窗口模式,并且时间窗口具有重叠性,时间窗口内的事件具有重复性,因此已有的关系数据库关联规则挖掘算法Apriori和FP-tree也不适用于系统日志的分析。\n[0006] 虽然在现有技术中也存在对大规模机群系统的日志事件关联分析方法,但这些方法主要针对日志的离线(offline)分析。考虑到被分析对象日志的海量性,日志格式的多样性和差异性以及日志内容的不完整性,如果要对大规模机群系统的日志做在线分析,存在内存没有足够的空间保存所有数据而只有一部分系统日志能够被保存的问题,现有技术中尚不存在能够对日志做在线分析的方法。\n发明内容\n[0007] 本发明的目的是克服现有技术无法对日志做在线分析的缺陷,从而提供一种在线日志分析方法,包括:\n[0008] 步骤1)、从机群系统的各个节点上在线获取日志文件;\n[0009] 步骤2)、根据所述日志文件定义事件序列与事件关联规则,然后对当前时间帧中的一元事件序列进行统计,找出由频繁的一元事件序列所组成的集合,进而得到二元频繁事件序列候选集C(2);在一定的时间间隔后统计所述C(2)中候选二元频繁事件序列的支持度计数和后验度计数,计算置信度和后验度;根据所述支持度计数生成二元频繁事件序列集合F(2),根据所述支持度计数和置信度生成二元规则集合R(2);重复这一过程直到得到F(k)和R(k),对F(k)中的k元频繁事件序列进行连接操作,产生F(k+1)元频繁事件序列集合;对在F(k+1)中且不在R(k+1)的元素的属性值进行近似计算,直到产生所有的频繁事件序列;最后根据所述的频繁事件序列找到事件关联规则;\n[0010] 步骤3)、根据所述的事件关联规则在线预测日志中的事件。\n[0011] 上述技术方案中,在所述的步骤1)和所述的步骤2)之间,还包括:\n[0012] 步骤a)、将来自机群系统中不同节点上的日志文件的格式转换为统一的格式。\n[0013] 上述技术方案中,在所述的步骤1)和所述的步骤2)之间,还包括:\n[0014] 步骤b)、删除所述日志文件中重复、冗余的数据。\n[0015] 上述技术方案中,所述的步骤a)包括:\n[0016] 步骤a-1)、为日志文件定义统一格式;\n[0017] 步骤a-2)、定义用于描述日志解析过程中所用到的日志格式、日志属性、日志关键字的配置文件;\n[0018] 步骤a-3)、利用所述配置文件对对机群系统中各个节点的日志文件加以解析;\n[0019] 步骤a-4)、根据日志文件解析后的内容将各个节点上不同格式的日志文件转换成相同格式的日志文件。\n[0020] 上述技术方案中,所述的步骤b)包括:\n[0021] 步骤b-1)、删除日志文件中的重复事件,只保留所述重复事件的一条记录;所述重复事件包括被不同的节点重复记录,具有相同的时间戳和内容的事件,或在短时间中重复出现,具有较近的时间戳和内容的事件;\n[0022] 步骤b-2)、对日志文件中的事件做周期性的聚类分析,找出周期性事件,删除所述周期性事件中的多余事件;所述的周期性事件为在固定的时间间隔内循环出现,具有相同内容的事件。\n[0023] 上述技术方案中,所述的步骤2)包括:\n[0024] 步骤2-1)、定义包括时间阈值Tw、事件规则的支持度计数阈值Sth、事件规则的置信度阈值Cth在内的阈值,以及时间帧的大小;\n[0025] 步骤2-2)、计算实时来到当前时间帧中的频繁的一元事件序列候选集C(1)中的已有计数,并据此产生所有的二元频繁事件序列候选集C(2);所述C(2)包括已有的二元事件规则,以及具有相同节点、相同事件类型和相同应用的两个事件组成的事件序列;\n[0026] 步骤2-3)、当事件来到时,将事件保存到当前时间帧中,每隔时间阈值Tw对时间帧中的日志进行分析,统计所有事件的已有计数C(1),统计C(2)中候选的二元频繁事件序列的支持度计数和后验度计数,计算置信度和后验度;\n[0027] 步骤2-4)、当所述C(2)中候选的二元频繁事件序列为已有二元规则时,修改包括支持度计数、置信度、后验度计数、后验度在内的属性;否则,当所述C(2)中候选的二元频繁事件序列的支持度计数达到支持度计数阈值Sth,则加入二元频繁事件序列F(2)中,当支持度计数和置信度分别达到支持度计数阈值Sth阈值和事件规则的置信度阈值Cth时,产生新的二元规则,并将其加入到二元规则集合R(2)中;\n[0028] 步骤2-5)、依此类推,直到生成F(k)和R(k);\n[0029] 步骤2-6)、对F(k)中的k元频繁事件序列进行连接操作,产生F(k+1)元频繁事件序列候选集,遍历时间帧,对R(k+1)中元素的属性值(计数值)进行修改;同时遍历时间帧,将其作为日志的一个采样,对在F(k+1)中而不在R(k+1)的元素的所述属性值进行近似计算;\n[0030] 步骤2-7)、重复前一步骤,直到产生所有的频繁事件序列。\n[0031] 上述技术方案中,在所述的步骤2-6)中,对所述属性值进行近似计算包括:\n[0032] 对于二元规则,直接统计支持度计数和后验度计数,从而计算出置信度和后验度;\n[0033] 对于k+1元候选规则,以时间帧中的置信度和后验度作为其近似值,然后再计算出支持度计数和后验度计数的近似值。\n[0034] 上述技术方案中,所述的步骤3)包括:\n[0035] 步骤3-1)、定义预测时间窗口和预测有效期;\n[0036] 步骤3-2)、根据所述的事件关联规则创建失效关联图;\n[0037] 步骤3-3)、基于所述的失效关联图进行日志事件的在线预测。\n[0038] 上述技术方案中,所述的步骤3-2)包括:\n[0039] 步骤3-2-1)、对所述事件关联规则中的事件数、事件规则的置信度进行排序;\n[0040] 步骤3-2-2)、对所述事件关联规则进行分析,产生对应的顶点和边,并新建一个特殊的顶点ROOT,所述事件关联规则的第一个事件对应的顶点以一个特殊的顶点ROOT作为父顶点,由此产生一个失效关联图;\n[0041] 步骤3-2-3)、如果一个失效关联图中的某个顶点已经存在于另一个失效关联图中,则对这两个失效关联图进行合并操作;\n[0042] 步骤3-2-4)、当所述失效关联图在构造过程中出现环路时,为事件关联规则的后续另设一个备份顶点;\n[0043] 步骤3-2-5)、在内存中保存每个事件对应的ROOT顶点。\n[0044] 上述技术方案中,所述的步骤3-3)包括:\n[0045] 步骤3-3-1)、定义预测时间窗口、预测阈值和预测有效期;\n[0046] 步骤3-3-2)、当事件发生时,标识对应的顶点状态,如果超过所述的预测时间窗口,则顶点被取消标识;\n[0047] 步骤3-3-3)、当一条边的尾顶点被标识,则这条边也被标识;\n[0048] 步骤3-3-4)、当所有以一个顶点为头顶点的边都被标识,则该顶点也被标识;\n[0049] 步骤3-3-5)、根据被标识的顶点,计算以其为尾顶点的所有相邻边的头顶点发生的概率;\n[0050] 步骤3-3-6)、如果顶点发生的概率达到所述的预测阈值,则这个顶点对应的事件被预测。\n[0051] 本发明还提供了一种在线日志分析系统,包括日志代理、日志服务器以及主动管理系统;其中,所述的日志代理搜集机群系统上各个数据节点的日志文件,将所搜集到的日志文件发送到所述的日志服务器上;所述的日志服务器对所述的日志文件进行预处理与过滤,对过滤后的日志文件进行关联分析与挖掘,找出事件关联规则,将这一事件关联规则发送到所述的主动管理系统;所述的主动管理系统根据所述事件关联规则在线预测日志中的事件。\n[0052] 本发明的优点在于:\n[0053] 本发明能对日志做实时在线预测,能对失效日志等进行相关性分析,找出系统失效原因及故障类型,有利于预测系统的行为及提高系统生产率,降低总拥有成本。\n附图说明\n[0054] 图1为采用本发明方法的机群系统的示意图;\n[0055] 图2为本发明方法的总体流程图;\n[0056] 图3为本发明方法中预处理操作的流程图;\n[0057] 图4为本发明方法中对日志文件进行过滤的流程图;\n[0058] 图5为本发明方法中事件关联规则挖掘的流程图。\n具体实施方式\n[0059] 下面结合附图和具体实施方式对本发明加以说明。\n[0060] 如图1所示,在一个已有的机群系统中,各个节点之间通过网络相互连接,每个节点都是一台独立工作的计算机系统,这些节点会各自产生相应的系统日志文件。在本发明中,将机群系统中的这些产生系统日志文件的节点称为数据节点(data node),用数字标记\n1表示。\n[0061] 在上述机群系统的基础上,本发明的在线日志分析系统包括日志代理A(Log agent)、日志服务器S(Log Server)和一个主动管理系统P(proactivemanagement system),其中的日志代理A安装在机群系统中的各个数据节点1上,其作用在于搜集所在数据节点的日志文件。日志服务器S主要用于实现对日志文件的预处理与过滤,并对过滤后的日志进行关联分析与挖掘。主动管理系统P则根据关联分析与挖掘的结果进行失效预测。日志服务器S与主动管理系统P通过在机群系统中的相关节点实现,为了与机群中普通的数据节点相区别,这些用于实现日志分析、管理用的节点被称为管理节点,这些管理节点在图1中可以用数字标记2表示。\n[0062] 下面结合图2对本发明的在线日志分析系统中的各个部分如何完成在线日志分析的过程加以说明。\n[0063] 机群系统中的各个数据节点在运行过程中会随着时间生成相应的日志文件,在步骤S10中,要对这些日志文件加以分析首先要做日志的预处理。所述的日志的预处理包括将半结构化和非结构化的日志转换化为统一的日志格式,并对系统日志进行数据过滤以删除其中的冗余数据。如图3所示,步骤S10具体包括以下步骤。\n[0064] 在步骤S11中,由于机群系统中的数据节点数量庞大,各个数据节点中的系统日志文件也可能有各种格式,如文本文件格式、数据库格式、流文件格式等,因此需要将这些日志文件的格式加以统一。本实施例中用一个九元组来统一地表示日志文件,该九元组包括:(timestamp,log id,nodeid,event id,severity degree,event type,application name,process id,user)。在这一九元组中,timestamp表示事件发生的时间或者事件记录到日志中的时间,典型情况下包括日期以及以秒或一秒的若干分之一为单位的时间。所述Severity degree表示事件的优先级或者重要度,包括INFO(信息)、WARNING(警告)、ERROR(误差)、FAILURE(失效)、FAULT(故障)。所述event type表示事件发生的类型,具体的类型包括HARDWARE(硬件)、SYSTEM(系统)、APPLICATION(应用)、FILESYSTEM(文件系统)、NETWORK(网络)等。所述application name表示生成日志信息的某个具体应用。\n所述process id是指该条日志信息记录的具体应用的进程。所述user是指该条日志信息记录的使用该应用的用户名。所述event id是二元组(severity degree,event type)的映射函数,如果一个新的二元组(severity,event type)出现,一个新的事件号event id赋予给这个事件。所述node id表示事件发生的节点的id,它根据事件发生的node name衍生而来。所述log id表示(node id,event id,application,process id)四元组。相同的log id意味着相同的node id、event id、application和process id。同样的,只有当事件的node id、event id、application和processid四种属性都相同时,log id才相同。上述九元组中的属性可以分为基本属性与扩展属性,如其中的timestamp、node name、application name、processid、user被视为基本属性,而format、keyword、severity degree、event type被视为扩展属性。日志的基本属性表明了日志包含的基本特征和基本内容,通过基本属性能够识别出不同的日志事件;日志的扩展属性则包含了日志的一些额外信息,通过扩展属性能利用更多的事件信息来对日志进行分析。\n[0065] 在步骤S11定义日志文件的统一格式以后,下面对日志文件预处理过程中的格式转化加以说明。在步骤S12中,当进行格式转化时,首先要定义用于描述日志解析过程中所用到的日志格式、日志属性、日志关键字等信息的配置文件,在本实施例中,这些配置文件采用XML实现。在定义配置文件时,定义包括mysql数据库配置信息的Database部分;定义包括诸如timestamp、nodename等属性正则表达式的Definitions部分;定义包括日志的所有可能格式Formats部分;定义包括日志描述中可能用到的关键字信息,这些关键字信息用来区分severity degree和event type的Keywords部分。\n[0066] 在定义了日志解析过程中所要用到的配置文件后,在步骤S13中,就可以对各个数据节点中的已有日志文件加以解析。在日志解析的过程中,首先读取XML配置文件,获得日志属性、日志格式、日志关键字的正则表达式和数据库信息;然后利用日志格式和日志属性的正则表达式,解析出日志中诸如timestamp、node name等日志属性信息和日志描述(description);接着用日志关键字的正则表达式对日志描述进行解析,得到更多的日志相关信息,如severity degree、event type等;最后将所得到的日志属性和日志相关信息保存到数据库中。\n[0067] 在步骤S14中,根据日志文件解析后的内容可将各个数据节点上不同格式的日志文件转换成相同格式的日志文件。在日志格式的转换过程中,根据日志的节点名node name得到node id;根据日志的格式format和关键字keyword自动分配event id;根据node id、event id、application、processid自动分配log id;根据log id可以得出日志属性,如node name、applicationname、process id、severity degree、event type等信息。\n[0068] 对日志文件的预处理除了日志格式的转换外,还包括步骤S15,该步骤包括对转换后日志文件中重复、冗余数据的过滤。系统中具有重复、冗余数据的原因在于:(1)一些多余和不重要的事件被记录了;(2)同一事件会被数据节点通过多条途径记录;(3)同一事件可能会被多个数据节点的不同途径获得;(4)一些周期性的系统或应用进程对系统进行周期性的操作,会产生周期性的事件。\n[0069] 如图4所示,对日志文件进行过滤主要包括对日志文件中两类事件的删除,一是重复事件,二是周期性事件。所谓的重复事件包括两种情况,一种是被不同的子系统重复记录,事情具有相同的时间戳和事件内容;一种是在短时间中重复出现,具有较近的时间戳和事件内容。所谓的周期事件是由于硬件或软件缺陷而导致一些事件在固定的时间间隔内循环出现,每一种周期事件有两个或多个时间间隔,这些事件具有近似固定的时间戳和相同的事件内容。因此,对日志文件的过滤可包括两大步骤,一是对重复事件的删除,二是对周期性事件的删除。在删除重复事件时,对于重复记录的事件,用现有数据库技术进行处理,对具有相同时间戳timestamp和相同log id的记录,只保留其中一条记录。而对于短时间内重复记录的事件,首先定义一个较小的时间间隔阈值,然后用统计方法计算相邻的相同log id事件之间时间戳的时间间隔,当时间戳的时间间隔小于阈值时,则只保留前一条记录。在删除周期性事件时,首先通过对相邻的相同log id事件时间戳的时间间隔的聚类分析,得到事件的周期;然后基于聚类思想对事件做周期性的聚类分析,得到周期事件;最后保留周期事件的第一个事件,减少分析的数据量以及周期性事件对事件分析的干扰。\n[0070] 在上文中所提到的聚类分析(Clustering)又称群分析,它是研究分类问题的一种统计分析方法。将物理或抽象对象的集合分成由类似的对象组成的多个类的过程被称为聚类。由聚类所生成的簇是一组数据对象的集合,这些对象与同一个簇中的对象彼此相似,与其他簇中的对象相异。传统的聚类分析方法有多种,如划分方法(partitioning methods)、层次方 法(hierarchical methods)、基于密 度的方法 (density-based methods)、基于网格的方法(grid-based methods)、基于模型的方法(model-based methods)。在本实施例中可采用基于密度的方法实现聚类分析。所述基于密度的方法就是只要一个区域中的点的密度大过某个阀值,就把它加到与之相近的聚类中去。\n[0071] 由基于密度的方法得到事件的周期包括:首先定义时间间隔误差范围、周期值的计数阈值、周期值的比例阈值;然后对相邻的相同log id事件时间戳的时间间隔进行统计,计算时间间隔落在其误差范围内的同logid事件的计数;最后当时间间隔的计数值和比例超过阈值时,将该时间间隔看作是一个周期。\n[0072] 以上是对日志文件预处理过程的说明,在步骤S20中将根据预处理后的日志文件做日志中的事件的关联挖掘。所述的关联挖掘是要将日志当作一系列事件按照事件发生的时间戳先后顺序所组成的序列,通过定义大规模系统日志的事件序列和事件规则来描述系统日志之间的关联。事件关联挖掘的实现是基于在机群系统的多个数据节点上存在如下事实:(1)出于数据处理方便性的考虑,使得复制这一操作手段在多个数据节点上得到了应用,这也使得相同的错误或软件缺陷会在多个数据节点上出现,从而使得失效事件也可能出现在多个节点上;(2)在机群系统中,数据节点之间通常要进行数据传输和彼此通信,那么一个节点上的失效可能导致其他节点上的相关失效;(3)一个数据节点上的失效可能会改变系统的环境,并可能导致其他数据节点上的失效。\n[0073] 要在日志文件中实现事件的关联挖掘,在步骤S21中,首先要定义事件序列以及事件序列中的相关概念。\n[0074] 在步骤S211中,定义事件序列。所述事件序列是一个由log id组成的序列,事件序列具有严格的时间顺序。假设某一事件序列中有n个事件,则这一事件序列被称为n元事件序列,n元事件序列(n-ary Timed Set ofLogs,可被简写为n-ary TSL)是由n个不同事件按照严格时间顺序组成的序列。n-ary事件序列可以看作是由前(n-1)个事件组成的(n-1)-ary事件序列和最后一个事件组成的序列。(n-1)-ary事件序列称为事件序列的先导(preceding events),最后一个事件称为事件序列的后继(posteriorevent)。比如在\n3-ary事件序列(A,B,C)中,前两个事件组成的事件序列(A,B)被称为事件序列(A,B,C)的先导,事件C被称为事件(A,B,C)的后续。\n[0075] 在定义事件序列后,在步骤S212中再给出时间阈值Tw,由时间阈值Tw可定义事件之间的先后性。如果事件B在事件A之后的时间阈值Tw之内发生,那么认为事件B在事件A之后发生,两者具有先后性。如果一个事件E在事件序列S最后一个事件之后发生,且事件序列中相邻事件都具有先后性,则认为事件E在事件序列S之后发生,两者具有先后性。\n[0076] 在步骤S213中,然后再定义每个事件序列的支持度计数(supportcount)和后验度计数(posterior count)。所述支持度计数表示事件序列的先导的后续事件在事件序列的先导的先导之后、且在事件序列的后续之前出现的次数。所述后验度计数表示事件序列的后续在事件序列的先导之后出现的次数。\n[0077] 在步骤S214中,接着再定义事件序列的置信度(confidence)和后验度(posterior)。所述事件序列的置信度=事件序列的支持度计数/事件序列的先导的后验度计数;所述事件序列的后验度=事件序列的后验度计数/事件序列的后续的支持度计数。\n[0078] 在步骤S215中,再接着定义事件序列的子序列。事件序列A中若干事件(不包括全部事件)按照原有的严格时间顺序组成的事件序列B是事件序列A的子序列。\n[0079] 在步骤S216中,再定义事件序列的频繁模式。如果事件序列的支持度计数不小于(大于或等于)预定的支持度计数阈值(Threshold of supportcount,Sth),且事件序列中相邻事件组成的所有子序列都是频繁的,那么该事件序列属于频繁模式。\n[0080] 所述频繁模式包括三个性质:\n[0081] 性质1:事件序列频繁模式的非空子模式不一定是频繁模式。\n[0082] 性质2:如果n-ary事件序列是频繁的,那么事件序列的前(n-1)个事件组成的事件序列和后(n-1)事件组成的事件序列都是频繁的。\n[0083] 性质3:如果n-ary事件序列的前(n-1)个事件组成的事件序列和后(n-1)事件组成的事件序列都是频繁的,那么n-ary事件序列中相邻事件组成的所有子序列也都是频繁的。\n[0084] 在完成上述对事件序列以及事件序列中相关概念的定义后,在步骤S22中定义日志关联挖掘中的事件关联规则。所谓的事件关联规则是指给定一个交易数据库,其中每个事务(Transaction)t是集合I(I是关于日志记录的集合)的非空子集,即,每一个交易都与一个唯一的标识符TID(Transaction ID)对应。关联规则是形如X→Y的蕴涵式,X和Y分别称为关联规则的先导(antecedent或left-hand-side,LHS)和后继(consequent或right-hand-side,RHS)。关联规则在数据集D中的支持度(support)是D中事务包含的百分比,即概率;置信度(confidence)是包含X的事务中同时包含Y的百分比,即条件概率。\n如果满足最小支持度阈值和最小置信度阈值,则关联规则是强相关的。这些阈值由用户或者专家设定。\n[0085] 在步骤S221中,定义事件规则(event rules),当事件序列是频繁的,且其置信度大于预定的置信度阈值(Threshold of confidence,Cth),则事件序列是一个事件规则(event rules)。所述的事件规则可以分为本地事件规则(local event rules)与分布事件规则(distributed event rules)。如果事件规则由同一个节点上发生的事件组成,则称为本地事件规则。本地事件规则具有传递性,如事件序列(A,B)和(B,C)都是本地事件规则,如果事件序列(A,C)也是事件规则,那么事件序列(A,C)必然是本地事件规则。如果事件规则不是本地事件规则,则称为分布事件规则,分布事件规则也具有传递性。\n[0086] 在步骤S222中,定义事件聚类(event cluster)。如果事件规则的置信度和后验度分别达到更大的阈值(如0.8)以及事件规则的支持度计数达到更大的阈值,则事件规则被称为事件聚类。\n[0087] 步骤S23、采用滑动窗口(Sliding time window)方法对事件序列中的数据进行处理。该步骤具体包括以下步骤:\n[0088] 步骤S231、将滑动窗口中的日志保存在日志缓冲区(log buffer),所述滑动窗口是指从计算时算起,向前追溯的所要被纳入计算范围的N个数据。由于日志流的数据是不断涌现的,所以直观地看,采用一个不变的窗口,当数据随时间的推移经过窗口,出现在窗口内的数据就是被计算的数据集合。\n[0089] 步骤S232、分析日志缓冲区中的日志,统计事件序列的属性,所述属性包括诸如支持度计数和后验度计数等内容。\n[0090] 步骤S233、基于Apriori-SO关联规则挖掘算法在线分析事件规则。所述Apriori-SO关联规则挖掘算法是在现有技术中的Apriori算法的基础上所做的改进。\nApriori-SO算法通过分析日志缓冲区time frame的日志,对规则集进行修改,对已有规则的属性进行修改,同时产生新的规则。Apriori-SO算法需要以下输入值:所有事件的已有计数,包括支持度计数、后验度计数、置信度、后验度等属性在内的已有规则。利用Apriori-SO算法分析事件规则具体包括以下步骤:\n[0091] 步骤a、定义以下阈值:时间阈值Tw、事件规则的支持度计数阈值Sth、事件规则的置信度阈值(the threshold of confidence)Cth,以及时间帧(timeframe)的大小(time frame=N×Tw,定义N值即可)。频繁的1元事件序列候选集C(1)中包括所有事件的已有计数。\n[0092] 步骤b、产生所有的二元频繁事件序列候选集C(2),包括已有的二元事件规则,以及具有相同节点、相同事件类型和相同应用的两个事件组成的事件序列。\n[0093] 步骤c、当事件来到时,将事件保存到时间帧中。每隔时间阈值Tw对时间帧中的日志进行分析。统计所有事件的已有计数C(1),统计C(2)中候选的二元频繁事件序列的支持度计数和后验度计数等属性,计算置信度和后验度等属性。\n[0094] 步骤d、如果C(2)中候选的二元频繁事件序列是已有二元规则,则修改其属性,否则,如果C(2)中候选的二元频繁事件序列的支持度计数达到阈值,则加入二元频繁事件序列F(2)中,如果支持度计数和置信度都达到阈值,则产生新的二元规则,加入到二元规则集合R(2)中。\n[0095] 步骤e、根据F(k)中的k元频繁事件序列,对其进行连接操作,产生F(k+1)元频繁事件序列候选集。遍历时间帧,对R(k+1)中元素的属性值进行修改。同时遍历时间帧,将其作为日志的一个采样sampling,对F(k+1)中而不在R(k+1)的元素属性值进行近似计算。在近似计算时,对于二元规则,直接统计支持度计数和后验度计数,从而计算出置信度和后验度;对于k+1元候选规则,以时间帧中的置信度和后验度作为其近似值,然后再计算出支持度计数和后验度计数的近似值\n[0096] 步骤f、重复前一步骤e,直到产生所有的频繁事件序列(或者可定义事件规则的最大元素数)。\n[0097] 步骤g、当有其它事件来到时,重新执行步骤c。\n[0098] 通过以上步骤,可以对日志进行在线分析,对已有的规则的属性进行修改,并且产生新的事件关联规则。\n[0099] 在得到事件关联规则后,在步骤S30中,就可以根据规则实现对日志的在线预测。\n在传统的离线分析方法中,事件预测是基于对历史日志分析所产生的事件规则进行预测的;而在在线日志关联分析中,事件预测是基于对日志流进行分析所产生的不断变化的事件规则进行预测的,这种事件规则更能正确反映日志中事件之间的关联。其中所述的日志流是指把日志当作特殊的数据流来分析,日志流是一系列事件按照发生的时间戳顺序发生所产生的数据流。日志流继承了数据流的一些特点,在连续的无边界的日志流中,短时间内可能会有大量的日志发生。传统的数据挖掘算法没有足够的时间来遍历完整的数据库或者执行多路遍历。这对在线日志分析方法在处理速度、日志保存、日志遍历上等由此产生了一些新的挑战:(1)算法要能快速的分析日志,至少要超过日志的到来速度。(2)在线处理日志时没有足够的空间来保存所有的日志流。因此只能保存部分日志信息以便处理。(3)由于只能保存部分日志,无法读取所有的系统日志。要求算法只能对所有的系统日志进行一次遍历。\n[0100] 在日志预测中包括有三个重要的时间点:预测时间点、被预测时间点、过期时间点。预测时间点(predicting point)指的是进行预测的时间点。被预测时间点(predicted point)指的是被预测的事件实际发生的时间点。过期时间点(expiration point)指的是预测的过期时间,当超过过期时间点时,这个预测便是无效的。对于每个预测,还包括三个重要的属性值:预测时间窗口、预测时间、预测有效期。通过对预测时间窗口(predictiontime window)内事件的分析,产生事件预测。预测时间(prediction time)表示预测事件的预测时间点(predicting point)与预测事件的实际发生时间(即predicted point)之间的时间间隔。预测有效期(prediction validduration)指的是预测时间点(predicting point)与预测的过期时间点(expiration point)之间的时间间隔。\n[0101] 本发明中在实现日志的在线预测时,通过设置预测时间窗口,利用已经在线获取的事件规则并通过失效关联图表达的事件关系来进行在线预测的,具体包括以下步骤:\n[0102] 步骤S31、定义日志预测结果的度量参数。这些度量参数包括预测正确数(True Positive)、预测错误数(False Positive)、预测准确率(Precisionrate)、预测查全率(Recall rate)、平均预测时间(Average prediction time)以及用于预测准确率和预测查全率的加权调和平均数的F-measure。其中,所述的预测正确数表示预测事件在预测有效期内发生的预测数目;所述的预测错误数表示预测事件没有在预测有效期内发生的预测数目;所述的预测准确率表示预测正确事件在预测中所占的比例,即Precision rate=TP/(TP+FP),预测准确率取值在0和1之间,数值越接近1,预测准确率就越高。所述的预测查全率表示预测正确的事件在事件的比例,即Recall rate=True Positive/所有事件数目,预测查全率取值在0和1之间,数值越接近1,预测查全率就越高。所述的平均预测时间表示正确预测的事件的预测时间的平均值,平均预测时间越大,留给系统处理和主动防范的时间就越长。所述的F-measure表示precision和recall之间的关系。\nF-measure是预测准确率和预测查全率的加权几何平均值,具体表达如下:F-measure=(λ^2+1)×Precision×Recall/(λ^2×Precision+Recall);其中λ是一个预设值,是Precision和Recall的相对权重,当λ大于1时表示Precision更重要,λ小于1时表示Recall更重要,通常设定为1,表示二者同等重要。用F-measure一个数值就可看出系统的好坏,F-measure值也是越接近1越好。\n[0103] 步骤S32、基于事件关联规则进行事件预测。该步骤包括:\n[0104] 步骤S321、定义预测时间窗口(prediction time window)和预测有效期(prediction valid duration)。\n[0105] 步骤S322、根据事件关联规则创建失效关联图。\n[0106] 所述失效关联图是一个有向无环图(Directed Acyclic Graph,DAG),它包括若干顶点(Vertex)和边(Edge)。本发明中用失效关联图中的顶点(Vertex)来表达事件。每个顶点包括了log id,node id,event id,application等属性,以及统计计数count等信息。\n同时,定义了vertex type来标识顶点的类型。Vertex type有Dominant和Recessive两种取值。Dominant表示原始的事件,Recessive则用于扩展表示多元规则中所生成的虚拟的事件。\n[0107] 对于多元的事件规则,本发明中把事件规则的先导看作一个Recessive类型的顶点。如对于事件规则(A,B,C),则A、B、C对应的顶点都是Dominant的顶点,而由此事件规则的先导序列(A,B)所生成的顶点AB就是Recessive的顶点。\n[0108] 失效关联图中的顶点(Vertex)通过边(Edge)来连接。边(Edge)用于表达事件之间的关联(事件规则)。每条边Edge都包括以下属性:尾顶点(tail vertex)、头顶点(head vertex)、支持度计数(support count)、后验度计数(posterior count)、置信度(confidence)、后验度(posterior)等事件规则信息。尾顶点称为头顶点的父顶点(parent),头顶点称为尾顶点的子顶点(child)。同时,定义edge type来标识边的类型。\n同vertex type一样,edgetype有Dominant和Recessive两种取值。Dominant表示二元事件规则,Recessive则用于表示多元规则。如果一条边的某个顶点是Recessive的,那么这条边就是Recessive的。\n[0109] 对于多元的事件规则,本发明中把这个事件规则看作是事件规则的先导对应的Recessive顶点到事件规则的后续的二元规则。如对于事件规则(A,B,C),会扩展产生顶点AB,同时也会扩展生成对应的事件规则A->AB,B->AB。把事件规则(A,B,C)看作是(A,B)->C的二元规则,生成对应的边AB->C,可以看出,A->AB,B->AB和AB->C这三条边都是Recessive的。\n[0110] 步骤S3221、对事件规则中的事件数、事件规则的置信度进行排序。先分析多元规则,按照置信度从高到低分析。\n[0111] 步骤S3222、对事件规则进行分析,产生对应的顶点(Recessive类型)和边(Recessive类型)。新建一个特殊的顶点ROOT,事件规则的第一个事件对应的顶点以一个特殊的顶点ROOT作为父顶点,由此产生一个失效关联图。\n[0112] 步骤S3223、如果失效关联图G1中的某个顶点V已经存在于其它的一个失效关联图G2中,则对两个失效关联图进行合并操作。分三种情况进行合并:\n[0113] i.如果V是G1和G2的ROOT顶点的子顶点,则将G2的ROOT顶点的其它子顶点作为G1的ROOT顶点的子顶点,而且将G2中V的子顶点作为G1中V的子顶点。\n[0114] ii.如果V是G1的ROOT顶点的子顶点,而不是G2的ROOT顶点的子顶点,则将V从G1的ROOT顶点的子顶点中删除,将G2的ROOT顶点的子顶点作为G1的ROOT顶点的子顶点,而且将G2中V的子顶点作为G1中V的子顶点,将G2中V的父顶点作为V的父顶点。\n[0115] iii.如果V不是G1的ROOT顶点的子顶点,也不是G2的ROOT顶点的子顶点。则G2的ROOT顶点的子顶点作为G1的ROOT顶点的子顶点,同时将G2中V的子顶点作为G1中V的子顶点,将G2中V的父顶点作为V的父顶点(可能有多个父顶点)。\n[0116] 步骤S3224、由于事件规则中可能存在循环,如A->B->A,在失效关联图构造时,可能出现环路,这时将事件规则的后续另设一个备份顶点,如A->B->A转换为A->B->A’即可。\n[0117] 步骤S3225、在内存中保存每个事件对应的ROOT顶点。\n[0118] 步骤S323、基于失效关联图,进行日志事件的预测。该步骤包括:\n[0119] 步骤S3231、定义预测时间窗口(prediction time window,Tw)、预测阈值(prediction probability threshold,Pth)和预测有效期(prediction validduration,Tp);\n[0120] 步骤S3232、当事件发生时,标识对应的顶点状态。如果超过预测时间窗口Tw,则顶点被取消标识。\n[0121] 步骤S3233、如果一条Recessive边的尾顶点被标识了,那么这条边也被标识了。\n[0122] 步骤S3234、如果所有以一个Recessive顶点为头顶点的Recessive边都被标识,则这个Recessive顶点也被标识。\n[0123] 步骤S3235、根据被标识的顶点,计算以其为尾顶点的所有相邻边的头顶点发生的概率。在这里假设以一个顶点分别为头顶点和尾顶点的两条边是独立的。如果一个顶点发生的概率具有多个值,只考虑其最大值。\n[0124] 步骤S3236、如果顶点发生的概率达到预测阈值Pth,则这个顶点对应的事件被预测。\n[0125] 在预测时,找到在预测时间窗口中即将来临日志的关联事件;然后基于之前获得的事件规则来获取未来的关联事件。\n[0126] 以上是对本发明在在线日志分析方法的实现过程的说明。从上述说明可以看出,本发明基于日志事件关联规则和滑动时间窗口来处理分析日志流,并进行实时在线预测,能对失效日志等进行相关性分析,找出系统失效原因及故障类型,有利于预测系统的行为及提高系统生产率,降低总拥有成本。\n[0127] 本发明在利用事件关联规则做在线预测时采用了图论知识,较真实地用节点和边表达失效日志之间的关系,具有良好的预测效果。\n[0128] 最后所应说明的是,以上实施例仅用以说明本发明的技术方案而非限制。尽管参照实施例对本发明进行了详细说明,本领域的普通技术人员应当理解,对本发明的技术方案进行修改或者等同替换,都不脱离本发明技术方案的精神和范围,其均应涵盖在本发明的权利要求范围当中。
法律信息
- 2021-06-08
未缴年费专利权终止
IPC(主分类): H04L 12/24
专利号: ZL 201010221973.X
申请日: 2010.06.30
授权公告日: 2012.07.04
- 2012-07-04
- 2010-12-29
实质审查的生效
IPC(主分类): H04L 12/24
专利申请号: 201010221973.X
申请日: 2010.06.30
- 2010-11-17
引用专利(该专利引用了哪些专利)
序号 | 公开(公告)号 | 公开(公告)日 | 申请日 | 专利名称 | 申请人 |
1
| |
2009-04-01
|
2007-09-24
| | |
2
| |
2010-04-21
|
2009-10-29
| | |
3
| |
2009-12-23
|
2009-07-24
| | |
4
| | 暂无 |
2009-05-29
| | |
被引用专利(该专利被哪些专利引用)
序号 | 公开(公告)号 | 公开(公告)日 | 申请日 | 专利名称 | 申请人 | 该专利没有被任何外部专利所引用! |