基于日志树和解析树的日志事件提取方法及系统

文档序号:1815874 发布日期:2021-11-09 浏览:15次 >En<

阅读说明:本技术 基于日志树和解析树的日志事件提取方法及系统 (Log event extraction method and system based on log tree and analytic tree ) 是由 傅媛媛 徐建 于 2021-07-11 设计创作,主要内容包括:本发明公开了一种基于日志树和解析树的日志事件提取方法及系统,该方法分为预处理和日志内容解析两个步骤,具体包括:提出并维护一个由正则表达式和启发式规则组成的规则库,抽取小部分日志自动生成日志格式;基于日志格式在线识别日志为日志头部和日志内容;搜索解析树,采用最长公共子串和最长公共子向量分别计算日志树与事件树中静态字段与动态参数的相似度;采用聚类技术匹配日志树与事件树,提取事件与对应参数。本发明为了应对日志内容的复杂性,改进在线事件提取方法中的预处理与日志内容解析步骤。减少人工识别日志格式的工作量,改善已有方法难以识别包含不定数量参数事件的问题,更准确地提取日志事件。(The invention discloses a log event extraction method and a system based on a log tree and an analysis tree, wherein the method comprises two steps of preprocessing and log content analysis, and specifically comprises the following steps: providing and maintaining a rule base consisting of regular expressions and heuristic rules, and extracting a small part of logs to automatically generate a log format; identifying the log as a log head and log content on line based on the log format; searching the analysis tree, and respectively calculating the similarity between static fields and dynamic parameters in the log tree and the event tree by adopting the longest common substring and the longest common subvector; and matching the log tree with the event tree by adopting a clustering technology, and extracting events and corresponding parameters. In order to deal with the complexity of the log content, the invention improves the steps of preprocessing and analyzing the log content in the online event extraction method. The workload of manually identifying the log format is reduced, the problem that the existing method is difficult to identify events containing indefinite number of parameters is solved, and the log events are extracted more accurately.)

基于日志树和解析树的日志事件提取方法及系统

技术领域

本发明属于日志分析事件提取领域,特别是一种基于日志树和解析树的日志事件提取方法及系统。

背景技术

随着当今互联网技术的兴起,计算和通信基础设施规模的扩大,大规模分布式系统应运而生。日志是由程序中嵌入的打印输出代码所产生的文本数据,记录系统当前的运行状态和行为模式。在系统开发与维护过程中,领域专家通过分析日志实现对系统的实时监控、异常检测和故障预测及诊断。日志规模快速扩大,仅凭人工分析日志难以高效识别快速更新的系统中新产生的异常,有效地排除系统故障。因此,日志分析逐步由离线模式转变为在线模式,由依赖领域专家的人工分析转变为自动分析。

事件提取是日志分析的一个重要环节,提取日志事件和原始日志中的参数,为日志下游分析提供结构化数据和关键信息。原始日志包括时间戳、等级等固定字段的日志头部和描述系统当前状态行为的日志内容。事件提取的主要对象为日志内容。在正式解析日志内容之前,预处理过滤字段值多变但字段类型较为固定的日志头部,减少其对事件提取结果的干扰。常见的预处理基于人工定义的日志格式划分日志头部和日志内容,识别头部各个字段。但大规模分布式系统常对应多个异构日志,重新定义不同日志格式将消耗大量人工成本。

日志内容结构松散而复杂,常规的分类或是聚类技术难以直接对其进行提取。传统的日志事件提取方法基于领域知识提取日志事件,难以快速应对多变的异构日志。最新的研究多采用启发式规则和聚类相结合的模式改进事件提取方法。一个事件对应的一组日志具有相同的静态字段和类似的日志结构。启发式规则通常基于对大量日志结构的观察。因此事件提取方法常采用一种或多种启发式规则划分日志,准确地将结构相似的日志划分到同一日志组中,有效地提高算法效率。在划分完成后,对各个日志组进行聚类操作,经相似度计算最终获得符合条件的日志簇与对应的日志事件。这种启发式规则与聚类结合的模式将事件提取过程抽象为一棵解析树。树的内部节点通常是不同启发式规则划分日志组的体现,如日志字段数量、日志某个字段值等等。叶子节点则保存经聚类获得的事件提取的最终目标,即表示为事件的日志簇。通过搜索解析树,将每一条经预处理的日志匹配到对应的日志簇中。然而,已有事件提取方法针对如日志字段数量的全局结构信息或是日志字段类别这类局部内容信息制定启发式规则,忽略了字段间隐藏的内部结构信息。在日志匹配到日志簇后,对比日志和事件的各个字段,不同值的字段直接以通配符替代,提取值为参数,从而更新事件,这种方法同样忽视了原始日志的内部结构信息,易导致静态字段被错误提取为参数,事件粒度过粗。

发明内容

本发明目的在于提供一种能够挖掘日志内部结构信息的基于日志树和解析树的日志事件提取方法及系统,准确提取包含不定数量参数的事件和原始日志行中的参数。

实现本发明目的的技术解决方案为:一种基于日志树和解析树的日志事件提取方法,包括:

提出并维护一个由正则表达式和启发式规则组成的规则库,抽取小部分日志自动生成日志格式;

基于日志格式在线识别日志为日志头部和日志内容;

基于日志结构信息生成日志树;

搜索解析树,采用最长公共子串和最长公共子向量分别计算日志树与事件树中静态字段与动态参数的相似度;采用聚类技术匹配日志树与事件树,提取事件与对应参数。

一种基于日志树和解析树的日志事件提取系统,包括:

第一模块,用于提出并维护一个由正则表达式和启发式规则组成的规则库,抽取小部分日志自动生成日志格式;

第二模块,基于日志格式在线识别日志为日志头部和日志内容;

第三模块,基于日志结构信息生成日志树;

第四模块,搜索解析树,采用最长公共子串和最长公共子向量分别计算日志树与事件树中静态字段与动态参数的相似度;采用聚类技术匹配日志树与事件树,提取事件与对应参数。

与现有技术相比,本发明的显著优点为:(1)以构建正则表达式和启发式规则库的方式自动地提取日志格式,减轻人工识别日志格式的工作量,提高日志预处理效率;(2)将日志转化为日志树从而充分利用日志内部结构进行事件提取,准确地识别包含不定数量参数的事件;(3)基于解析树查找匹配日志树,减少匹配时间,提高匹配准确率,并提取原始日志行中的参数,作为下游异常检测和故障预测的输入。

附图说明

图1为本发明基于日志树和解析树的日志事件提取方法的流程图。

具体实施方式

如图1所示,本发明的一种基于日志树和解析树的日志事件提取方法,采用以下步骤:

步骤1:基于规则库的日志格式自动识别。该步骤基于规则库内的启发式规则和正则表达式,抽取小部分日志自动生成日志格式。

(1)采用空格分割字段并对分割后的字段执行对齐操作;

(2)根据规则1,使用规则库中的正则表达式替换可识别字段。根据规则2计算列字段数量等于行数量的列复杂度。遍历列字段计算列复杂度,公式如下:

式中,当某一列皆为相同值时,该列复杂度为0;否则该列复杂度为可能值的数量。

(3)在计算得到列复杂度之后,根据规则3寻找最大的复杂度为0且数值最大的索引indexmax

其中,规则库中的规则和正则表达式如下:

规则1.原始异构日志头部的部分字段,例如日期、时间、等级以及数字,这些字段可基于有限的正则表达式进行定义。

规则2.每一条日志的头部具有相同数量的字段,并且每个字段类型相同;不同日志行对应的日志内容拥有不同的字段数量,每一字段类型并不总是相同。在对齐日志行之后,计算每一列的复杂度。

规则3.日志内容的第一个字段必然出现在复杂度为0的列之后。定义indexi为每一列的索引,搜索复杂度为0且数值最大的索引indexmax,日志内容的第一个字段索引即为indexmax+1

正则表达式包含日期、时间、等级等多种字段类型。

步骤2:在线预处理。流式处理日志,根据日志格式识别日志头部与日志内容,其中日志头部包括时间戳、等级或其他字段。

(1)基于空格分割日志获得字段。

(2)根据日志格式的字段索引识别日志的每个字段。日志被划分为包含时间戳和其他字段的日志头部以及日志内容。

步骤3:基于日志结构信息生成日志树。利用隐藏的静态字段和动态参数的结构信息,将日志内容转化为日志树。

(1)从左向右遍历日志,当日志的第一个字段包含‘:’或被‘[]’包含时,将第一个字段记为根节点,同时也是该日志的指示字段。

(2)然后根据‘,’和空格将日志划分为多个字段,每个字段从右向左匹配‘:’,根据连续的‘:’创建子树,‘:’左边的字段作为‘:’右边字段的父节点。

步骤4:基于解析树匹配日志树并更新事件树。

解析树的结构为根节点为不包含指示字段的特殊的树节点;树节点包含指示字段和子节点索引;叶子节点包含同一指示字段对应的多个日志簇。

匹配日志树的过程如下:

(1)搜索解析树的指示字段。搜索到相同指示字段后执行下一步;否则创建新的指示字段节点及其日志簇子节点。

(2)搜索所有候选日志簇,计算日志树和事件树的相似度Sim,经比较之后选取最大相似度对应的日志簇。相似度由静态字段相似度Sims和动态参数相似度Simd两个部分组成,Sim=Sims+Simd。具体计算步骤如下:

(a)日志树第一层节点字段记作L={tl1,tl2,...,tln},L中包含的字段数量为|L|=n,事件树第一层节点字段记作E={te1,te2,...,tem},E中包含的字段数量|E|=m。

(b)静态字段相似度Common{L,E}使用最长公共子串(LCS)算法获得L和E的最长公共子字段。

(c)动态参数相似度其中,L-Common{L,E}为L中非L与E公共子字段的部分,E-Common{L,E}为E中非L与E公共子字段的部分。对L,E的非公共字段采用最长公共子向量(LCV),获得L,E的非公共字段向量VL={vl1,vl2,...,vlk}和VE={ve1,ve2,...,vej}。k和j分别为L和E的非公共字段数量。

(3)计算得到最大相似度Simmax之后,与相似度阈值St进行比较,当相似度大于St时,日志树匹配成功,执行下一步;当相似度小于等于St时,在当前指示节点下创建新的日志簇。

更新事件树的过程如下:

(1)事件树与日志树的根节点与第一层节点结构相同,存储静态字段,第二层及以下层节点存储动态参数字段和对应的日志ID。

(2)当日志树无法与任何已有事件树匹配时,将日志树直接转化为事件树,日志树的第一层节点保持不变,第二层及以下层的每个节点加入对应的日志ID,每个节点中的数据保存为(logId,data)形式。

(3)当日志树与已有事件树匹配时,将日志树与事件树进行合并。具体步骤如下:

(a)获得第一层中所有节点的最长公共字段,将公共字段保留至事件树的第一层。

(b)将位置相邻的两个公共字段之间的非公共字段,作为前一个字段的子节点,加入到事件树中,同时保留该日志树对应的日志ID。在第二层已存在对应节点的情况下,仅需将(logId,data)添加到旧事件树的节点中,形成新事件树的节点。

进一步的,本发明还提供一种基于日志树和解析树的日志事件提取系统,包括:

第一模块,用于提出并维护一个由正则表达式和启发式规则组成的规则库,抽取小部分日志自动生成日志格式;

第二模块,基于日志格式在线识别日志为日志头部和日志内容;

第三模块,基于日志结构信息生成日志树;

第四模块,搜索解析树,采用最长公共子串和最长公共子向量分别计算日志树与事件树中静态字段与动态参数的相似度;采用聚类技术匹配日志树与事件树,提取事件与对应参数。

上述第一~第四模块的具体实现方式与上述日志事件提取方法的具体过程相同,此处不再赘述。

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

8页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:会议业务日志的管理方法、装置、设备和存储介质

网友询问留言

已有0条留言

还没有人留言评论。精彩留言会获得点赞!

精彩留言,会给你点赞!