1.本发明涉及日志事务异常检测领域,具体是指一种基于日志的事务异常检测方法。
背景技术:2.没有直接针对事务日志检测事务异常的现有方案,其它相关方案是将事务日志当作一般操作日志进行异常检测,一种是日志关键词告警的方式,一种是基于日志模板挖掘的操作日志异常检测方法,这种方法的经典算法是deeplog,其它的方法与deeplog方法的方案在整体思路上差别不大,这类方法的整体思路包含三部分:1,使用日志解析算法挖掘日志模板;2,提取日志模板相关的数据特征;3,基于数据特征进行建模分析。
3.所述的现有技术方案有如下缺点:
4.1、基于日志关键词告警的方式需要专家经验进行维护,存在
5.(1)只能检测已知故障类型,不能检测未知故障类型;
6.(2)误报率高;
7.(3)可迁移性差,即一套系统的关键词告警规则不适用于其它系统;
8.(4)维护成本高。
9.2、基于日志模板挖掘的操作日志异常检测方法存在的缺点
10.(1)没有对系统的事务进行直接有效的建模分析;
11.(2)不能检测出系统事务相关的故障类型。
12.基于上述多个原因,一种基于日志的事务异常检测方法成为整个社会亟待解决的技术问题。
技术实现要素:13.为解决上述技术问题,本发明提供的技术方案为:一种基于日志的事务异常检测方法,包括以下几个阶段,
14.(1)日志收集,将属于同一事务的操作日志汇总为一条事务日志;
15.(2)日志模板聚类,使用日志解析算法从事务日志的操作日志中挖掘日志模板,理想情况下一条日志模板对应软件系统的一条日志打印语句,日志模板是通过保留操作日志中常量部分,并将操作日志的变量部分用通配符替换得到,其中的常量和变量对应系统日志打印语句中写死的部分和变量部分;
16.(3)事务模板聚类,日志模板聚类之后我们可以将一条事务日志中的操作日志和挖掘得到的日志模板进行映射,事务日志的8条操作日志对应5个日志模板;事务模板聚类先将一条事务日志中的所有操作日志映射为日志模板,然后去重排序即可得到一条事务日志对应的事务模板;即事务模板的内容为一条事务日志涉及的所有日志模板,含义是一次事务需要经过哪些操作,即事务模板是不同事务类型所需不同操作的抽象表征;一次事务可能重复多次执行某些操作,所以在进行抽象表征的时候需要去重排序;
17.(4)特征提取,提取日志数据中与日志模板和事务模板相关的数据特征;
18.(5)异常检测,异常检测分为模型训练和在线异常检测两个部分。
19.进一步地,所述步骤(4)中与日志模板相关的特征如下:
20.变量提取,即将日志模板中每个变量部分对应的原始操作日志中的取值提取出来,比如说一个日志模板有三个变量(通配符标识的位置),那么每一条属于这个日志模板的操作日志都能提取出一个长度为三的变量序列p=[“value1”,“value2”,“value3”],其中”value1”,“value2”,“value3”是操作日志中对应日志模板三个变量位置的内容。将日志模板对应的所有操作日志提取的变量序列按照时序堆叠可得日志模板的变量矩阵p=[p1,p2,...,pn],其中n为模板对应的操作日志数量。
[0021]
进一步地,所述步骤(4)中与事务模板相关的数据特征:
[0022]
(1)事务模板维度的日志模板计数向量,后续以模板计数向量v代称,一条事务日志对应一个v,如上图所以的那条事务日志对应的事务模板有5个日志模板,这条事务日志的模板计数向量v是[2,1,2,1,1],其含义是事务模板中每条日志模板在这条事务日志中对应的操作日志的数量;将事务模板对应的所有事务日志的模板计数向量v堆叠得到模板计数矩阵v=[v1,v2,v3,...,vn];
[0023]
(2)事务模板维度的日志模板顺序邻接矩阵m,m是一个n*n的二维矩阵,其中n是事务模板包含日志模板的数量,后续以邻接矩阵m代称,一条事务日志对应一个m,m[i,j]表示事务日志中有多少连续的两个操作日志的日志模板分别与下标i和j对应的日志模板一致。以上图的事务日志为例,其包含8操作日志,(log1,log2,log3,log4,log5,log6,log7,log8),其对应的2-gram数据是[(log1,log2),(log2,log3),...,(log7,log8)],m[i,j]表示2-gram数据中有多少个数据是和(i,j)对应的,i和j是事务模板中日志模板的下标表示;
[0024]
(3)事务模板指标,设定一个时间窗口,记录每个时间窗口中各个事务模板对应的事务日志的数量,以此构建事务模板指标,即一条事务模板对应一条记录其对应原始事务日志数量的模板指标。
[0025]
进一步地,所述步骤(5)中模型训练,从训练数据中训练多维度的无监督算法模型,其中训练数据是通过获取软件系统历史一段时间内的所有正常日志数据然后通过上述模块1即日志收集介绍的方法处理得到的日志数据,包括以下步骤:
[0026]
(1)模板库,包括日志模板库和事务模板库,使用上述日志模板聚类和事务模板聚类介绍的方法从训练数据解析得到的所有日志模板和事务模板构成模板库。模板库表征的是系统稳定运行状态下有哪些正常的操作和有哪些正常的事务类型;
[0027]
(2)日志模板枚举变量模型,从训练数据中提取得到所有的日志模板之后,先通过上述模块4(特征提取)介绍的变量提取方法从训练数据中提取出每个日志模板的变量矩阵p,然后进行枚举变量挖掘,所述枚举变量是指变量对应的不同取值的个数小于一个指定的阈值t,枚举变量挖掘的具体过程是,遍历每个日志模板,通过日志模板的p判断该日志模板是否有变量属于枚举变量类型,具体而言就是遍历p的每一列,如果一列对应的值去重后小于阈值t则认为这列对应的日志模板变量为枚举变量。最后进行枚举变量建模,包括枚举值集合建模和低频枚举值建模,其中枚举值集合建模就是将这个枚举变量在训练集中对应的取值去重之后得到的集合;其中低频枚举值建模过程是,先计算枚举变量各个枚举值再训练数据中的频数,将频数小于设定阈值的tc认为是低频枚举值;
[0028]
(3)事务模板模板计数向量模型,按照特征提取介绍的方法从训练数据中提取每个事务模板的模板计数矩阵v,v[:,i]表示v的第i列数据,u_i=unique(v[:,i])表示对v的第i列去重之后得到的离散值列表(e.g.[1,2,3]),len(u_i)表示u_i中有多少条数据。然后根据v计算得到u=[u_0,u_1,...,u_m],m是事务模板包含日志模板的数量。最后将u中长度大于一定阈值tu的替换空列表,即如果len(u[i])》tu,u[i]=[]。经过上述计算得到的u即是事务模板的模板计数向量模型,其含义是在系统稳定运行状态下某种事务类型中各种操作执行次数的置信区间;
[0029]
(4)事务模板操作顺序模型,按照特征提取介绍的方法从训练数据中提取每个事务模板对应的事务日志的邻接矩阵列表ml=[m_1,m_2,...,m_n],其中n为事务模板对应事务日志的数量,m_i为具体的某个事务日志的邻接矩阵。然后用矩阵加法的方式将这n个邻接矩阵加起来之后再按行做归一化得到m,m便是这个事务模板操作顺序模型,含义就是马尔科夫链中的概率转移矩阵,表示每个操作之后执行其它操作的概率分布;
[0030]
(5)事务模板指标动态阈值模型,按照特征提取的方法从训练数据中提取每个事务模板的模板指标,然后用模板指标给每个事务模板训练一个指标动态阈值模型。不限制具体使用什么指标动态阈值模型,比如说facebook开源的prophet算法、3-sigma算法等。
[0031]
进一步地,所述步骤(5)中在线异常检测部分:
[0032]
(1)数据接入:通过kafka等组件实时接入在线日志数据,然后按照模块1(数据接入)介绍的方式做好数据处理。
[0033]
(2)模板提取:按照模块2和3的方式提取实时日志的操作日志模板和事务模板,并将这些模板和训练阶段的得到模板库进行匹配映射,没有匹配到模板库中的模板标识为新增模板(新增日志模板或者新增事务模板)
[0034]
(3)特征提取:按照模块4(特征提取)介绍的方式提取实时日志的日志模板变量序列、事务模板维度的日志模板计数向量、事务模板维度的日志模板顺序邻接矩阵、事务模板指标值。
[0035]
(4)异常检测.。
[0036]
进一步地,所述步骤(4)中异常检测包括以下几个部分:
[0037]
(1)新增日志模板,有新增的日志模板即触发新增日志模板;
[0038]
(2)新增事务模板,有新增的事务模板即触发新增事务模板;
[0039]
(3)枚举变量异常,检测枚举变量的取值是否在训练阶段建模的对应枚举变量的枚举值集合中,如果不在则触发枚举变量异常;如果在,判断其是否是低频枚举值,如果是,则触发枚举变量异常告警等级低于前者;
[0040]
(4)操作频次异常,通过日志模板计数向量判断事务模板各个操作在实时日志中对应的数量是否在该事务模板对应日志模板的置信区间中,如果不在则触发告警;
[0041]
(5)操作顺序异常,通过实时日志的邻接矩阵m和训练阶段得到顺序模型m进行比较判断是否出现操作顺序异常。一种具体的判断方法是如果m中存在m[i,j]不等于0,而m[i,j]=0的情况则触发告警;
[0042]
(6)事务模板异常,导入训练阶段训练得到的指标动态阈值模型检测实时日志中提取得到的事务模板指标值是否在模型拟合的动态阈值范围内,如果不在则触发告警。
[0043]
发明与现有技术相比的优点在于:
[0044]
(1)将事务级别的故障类型抽象表征为1.1所述的6类;
[0045]
(2)填补了现在没有专门针对事务级别的故障类型的自动异常检测方法;
[0046]
(3)相对于专家规则,本方法可以检测出未知故障类型;
[0047]
(4)提高了事务级别故障类型检测的准确性;
[0048]
(5)本方法具备学习功能和领域通用性;
[0049]
(6)本方法提出的事务模板可以对事务进行有效的聚类分析。
附图说明
[0050]
图1为本发明一种基于日志的事务异常检测方法的模块示意图。
具体实施方式
[0051]
下面结合附图对本发明做进一步的详细说明。
[0052]
结合附图,对本发明进行详细介绍。
[0053]
本发明在具体实施时提供了一种基于日志的事务异常检测方法,
[0054]
1、日志收集,将属于同一事务的操作日志汇总为一条事务日志,如上图所示,一条事务日志由多条操作日志组成(图中所示事务日志由8条操作日志组成)。
[0055]
2、日志模板聚类,使用日志解析算法从事务日志的操作日志中挖掘日志模板,理想情况下一条日志模板对应软件系统的一条日志打印语句,如上图所示,日志模板是通过保留操作日志中常量部分,并将操作日志的变量部分用通配符替换得到,其中的常量和变量对应系统日志打印语句中写死的部分和变量部分。所提的日志解析算法有较多公开的方法,包括但不限于spell、logcluster、drain等。
[0056]
3、事务模板聚类,日志模板聚类之后我们可以将一条事务日志中的操作日志和挖掘得到的日志模板进行映射,如上图所示,图中所示的那条事务日志的8条操作日志对应5个日志模板。事务模板聚类先将一条事务日志中的所有操作日志映射为日志模板,然后去重排序即可得到一条事务日志对应的事务模板。即事务模板的内容为一条事务日志涉及的所有日志模板(去重排序),含义是一次事务需要经过哪些操作(对应日志模板),即事务模板是不同事务类型所需不同操作的抽象表征。一次事务可能重复多次执行某些操作,所以在进行抽象表征的时候需要去重排序。
[0057]
4、特征提取,提取日志数据中与日志模板和事务模板相关的数据特征。
[0058]
a)与日志模板相关的特征
[0059]
(1)变量提取,即将日志模板中每个变量部分对应的原始操作日志中的取值提取出来,比如说一个日志模板有三个变量(通配符标识的位置),那么每一条属于这个日志模板的操作日志都能提取出一个长度为三的变量序列p=[“value1”,“value2”,“value3”],其中”value1”,“value2”,“value3”是操作日志中对应日志模板三个变量位置的内容。将日志模板对应的所有操作日志提取的变量序列按照时序堆叠可得日志模板的变量矩阵p=[p1,p2,...,pn],其中n为模板对应的操作日志数量。
[0060]
b)与事务模板相关的数据特征包括:
[0061]
(1)事务模板维度的日志模板计数向量,后续以模板计数向量v代称,一条事务日志对应一个v,如上图所以的那条事务日志对应的事务模板有5个日志模板,这条事务日志
的模板计数向量v是[2,1,2,1,1],其含义是事务模板中每条日志模板在这条事务日志中对应的操作日志的数量。将事务模板对应的所有事务日志的模板计数向量v堆叠得到模板计数矩阵v=[v1,v2,v3,...,vn]。
[0062]
(2)事务模板维度的日志模板顺序邻接矩阵m,m是一个n*n的二维矩阵,其中n是事务模板包含日志模板的数量,后续以邻接矩阵m代称,一条事务日志对应一个m,m[i,j]表示事务日志中有多少连续的两个操作日志的日志模板分别与下标i和j对应的日志模板一致。以上图的事务日志为例,其包含8操作日志,(log1,log2,log3,log4,log5,log6,log7,log8),其对应的2-gram数据是[(log1,log2),(log2,log3),...,(log7,log8)],m[i,j]表示2-gram数据中有多少个数据是和(i,j)对应的,i和j是事务模板中日志模板的下标表示。
[0063]
(3)事务模板指标,设定一个时间窗口,记录每个时间窗口中各个事务模板对应的事务日志的数量,以此构建事务模板指标,即一条事务模板对应一条记录其对应原始事务日志数量的模板指标。
[0064]
5、异常检测,异常检测分为模型训练和在线异常检测两个部分
[0065]
a)模型训练,从训练数据中训练多维度的无监督算法模型,其中训练数据是通过获取软件系统历史一段时间内的所有正常日志数据然后通过上述模块1(日志收集)介绍的方法处理得到的日志数据。
[0066]
(1)模板库,包括日志模板库和事务模板库,使用上述模块2(日志模板聚类)和3(事务模板聚类)介绍的方法从训练数据解析得到的所有日志模板和事务模板构成模板库。模板库表征的是系统稳定运行状态下有哪些正常的操作(日志模板表征)和有哪些正常的事务类型(事务模板表征)。
[0067]
(2)日志模板枚举变量模型,从训练数据中提取得到所有的日志模板之后,先通过上述模块4(特征提取)介绍的变量提取方法从训练数据中提取出每个日志模板的变量矩阵p,然后进行枚举变量挖掘,所述枚举变量是指变量对应的不同取值的个数小于一个指定的阈值t(比如说10)。枚举变量挖掘的具体过程是,遍历每个日志模板,通过日志模板的p判断该日志模板是否有变量属于枚举变量类型,具体而言就是遍历p的每一列,如果一列对应的值去重后小于阈值t则认为这列对应的日志模板变量为枚举变量。最后进行枚举变量建模,包括枚举值集合建模和低频枚举值建模,其中枚举值集合建模就是将这个枚举变量在训练集中对应的取值去重之后得到的集合;其中低频枚举值建模过程是,先计算枚举变量各个枚举值再训练数据中的频数,将频数小于设定阈值的tc认为是低频枚举值。
[0068]
(3)事务模板模板计数向量模型,按照模块4(特征提取)介绍的方法从训练数据中提取每个事务模板的模板计数矩阵v,v[:,i]表示v的第i列数据,u_i=unique(v[:,i])表示对v的第i列去重之后得到的离散值列表(e.g.[1,2,3]),len(u_i)表示u_i中有多少条数据。然后根据v计算得到u=[u_0,u_1,...,u_m],m是事务模板包含日志模板的数量。最后将u中长度大于一定阈值tu的替换空列表,即如果len(u[i])》tu,u[i]=[]。经过上述计算得到的u即是事务模板的模板计数向量模型,其含义是在系统稳定运行状态下某种事务类型(事务模板)中各种操作(日志模板)执行次数的置信区间。
[0069]
(4)事务模板操作顺序模型,按照模块4(特征提取)介绍的方法从训练数据中提取每个事务模板对应的事务日志的邻接矩阵列表ml=[m_1,m_2,...,m_n],其中n为事务模板对应事务日志的数量,m_i为具体的某个事务日志的邻接矩阵。然后用矩阵加法的方式将这
n个邻接矩阵加起来之后再按行做归一化得到m,m便是这个事务模板操作顺序模型(含义就是马尔科夫链中的概率转移矩阵,表示每个操作(日志模板)之后执行其它操作的概率分布)。
[0070]
(5)事务模板指标动态阈值模型,按照模块4(特征提取)的方法从训练数据中提取每个事务模板的模板指标,然后用模板指标给每个事务模板训练一个指标动态阈值模型。不限制具体使用什么指标动态阈值模型,比如说facebook开源的prophet算法、3-sigma算法等。
[0071]
b)在线异常检测部分
[0072]
(1)数据接入:通过kafka等组件实时接入在线日志数据,然后按照模块1(数据接入)介绍的方式做好数据处理。
[0073]
(2)模板提取:按照模块2和3的方式提取实时日志的操作日志模板和事务模板,并将这些模板和训练阶段的得到模板库进行匹配映射,没有匹配到模板库中的模板标识为新增模板(新增日志模板或者新增事务模板)
[0074]
(3)特征提取:按照模块4(特征提取)介绍的方式提取实时日志的日志模板变量序列、事务模板维度的日志模板计数向量、事务模板维度的日志模板顺序邻接矩阵、事务模板指标值。
[0075]
(4)异常检测:
[0076]
(a)新增日志模板,有新增的日志模板即触发新增日志模板
[0077]
(b)新增事务模板,有新增的事务模板即触发新增事务模板
[0078]
(c)枚举变量异常,检测枚举变量的取值是否在训练阶段建模的对应枚举变量的枚举值集合中,如果不在则触发枚举变量异常;如果在,判断其是否是低频枚举值,如果是,则触发枚举变量异常(告警等级低于前者)。
[0079]
(d)操作频次异常,通过日志模板计数向量判断事务模板各个操作(日志模板)在实时日志中对应的数量是否在该事务模板对应日志模板的置信区间中,如果不在则触发告警。
[0080]
(e)操作顺序异常。通过实时日志的邻接矩阵m和训练阶段得到顺序模型m进行比较判断是否出现操作顺序异常。一种具体的判断方法是如果m中存在m[i,j]不等于0,而m[i,j]=0的情况则触发告警。
[0081]
(f)事务模板异常,导入训练阶段训练得到的指标动态阈值模型检测实时日志中提取得到的事务模板指标值是否在模型拟合的动态阈值范围内,如果不在则触发告警。
[0082]
上诉6种异常检测方式和1.1中所述的6类事务级别的抽象故障类型的对应关系是,1、2对应事务缺少必要操作和事务多出无关操作,3对应事务操作枚举变量异常,4对应事务操作执行次数异常,5对应事务操作执行顺序异常,6对应事务频数异常。
[0083]
以上对本发明及其实施方式进行了描述,这种描述没有限制性,附图中所示的也只是本发明的实施方式之一,实际的结构并不局限于此。总而言之如果本领域的普通技术人员受其启示,在不脱离本发明创造宗旨的情况下,不经创造性的设计出与该技术方案相似的结构方式及实施例,均应属于本发明的保护范围。
技术特征:1.一种基于日志的事务异常检测方法,其特征在于:包括以下几个阶段,(1)日志收集,将属于同一事务的操作日志汇总为一条事务日志;(2)日志模板聚类,使用日志解析算法从事务日志的操作日志中挖掘日志模板,理想情况下一条日志模板对应软件系统的一条日志打印语句,日志模板是通过保留操作日志中常量部分,并将操作日志的变量部分用通配符替换得到,其中的常量和变量对应系统日志打印语句中写死的部分和变量部分;(3)事务模板聚类,日志模板聚类之后我们可以将一条事务日志中的操作日志和挖掘得到的日志模板进行映射,事务日志的8条操作日志对应5个日志模板;事务模板聚类先将一条事务日志中的所有操作日志映射为日志模板,然后去重排序即可得到一条事务日志对应的事务模板;即事务模板的内容为一条事务日志涉及的所有日志模板,含义是一次事务需要经过哪些操作,即事务模板是不同事务类型所需不同操作的抽象表征;一次事务可能重复多次执行某些操作,所以在进行抽象表征的时候需要去重排序;(4)特征提取,提取日志数据中与日志模板和事务模板相关的数据特征;(5)异常检测,异常检测分为模型训练和在线异常检测两个部分。2.根据权利要求1所述的一种基于日志的事务异常检测方法,其特征在于:所述步骤(4)中与日志模板相关的特征如下:变量提取,即将日志模板中每个变量部分对应的原始操作日志中的取值提取出来,比如说一个日志模板有三个变量(通配符标识的位置),那么每一条属于这个日志模板的操作日志都能提取出一个长度为三的变量序列p=[“value1”,“value2”,“value3”],其中”value1”,“value2”,“value3”是操作日志中对应日志模板三个变量位置的内容。将日志模板对应的所有操作日志提取的变量序列按照时序堆叠可得日志模板的变量矩阵p=[p1,p2,...,pn],其中n为模板对应的操作日志数量。3.根据权利要求1所述的一种基于日志的事务异常检测方法,其特征在于:所述步骤(4)中与事务模板相关的数据特征:(1)事务模板维度的日志模板计数向量,后续以模板计数向量v代称,一条事务日志对应一个v,如上图所以的那条事务日志对应的事务模板有5个日志模板,这条事务日志的模板计数向量v是[2,1,2,1,1],其含义是事务模板中每条日志模板在这条事务日志中对应的操作日志的数量;将事务模板对应的所有事务日志的模板计数向量v堆叠得到模板计数矩阵v=[v1,v2,v3,...,vn];(2)事务模板维度的日志模板顺序邻接矩阵m,m是一个n*n的二维矩阵,其中n是事务模板包含日志模板的数量,后续以邻接矩阵m代称,一条事务日志对应一个m,m[i,j]表示事务日志中有多少连续的两个操作日志的日志模板分别与下标i和j对应的日志模板一致。以上图的事务日志为例,其包含8操作日志,(log1,log2,log3,log4,log5,log6,log7,log8),其对应的2-gram数据是[(log1,log2),(log2,log3),...,(log7,log8)],m[i,j]表示2-gram数据中有多少个数据是和(i,j)对应的,i和j是事务模板中日志模板的下标表示;(3)事务模板指标,设定一个时间窗口,记录每个时间窗口中各个事务模板对应的事务日志的数量,以此构建事务模板指标,即一条事务模板对应一条记录其对应原始事务日志数量的模板指标。4.根据权利要求1所述的一种基于日志的事务异常检测方法,其特征在于:所述步骤
(5)中模型训练,从训练数据中训练多维度的无监督算法模型,其中训练数据是通过获取软件系统历史一段时间内的所有正常日志数据然后通过上述模块1即日志收集介绍的方法处理得到的日志数据,包括以下步骤:(1)模板库,包括日志模板库和事务模板库,使用上述日志模板聚类和事务模板聚类介绍的方法从训练数据解析得到的所有日志模板和事务模板构成模板库。模板库表征的是系统稳定运行状态下有哪些正常的操作和有哪些正常的事务类型;(2)日志模板枚举变量模型,从训练数据中提取得到所有的日志模板之后,先通过上述模块4(特征提取)介绍的变量提取方法从训练数据中提取出每个日志模板的变量矩阵p,然后进行枚举变量挖掘,所述枚举变量是指变量对应的不同取值的个数小于一个指定的阈值t,枚举变量挖掘的具体过程是,遍历每个日志模板,通过日志模板的p判断该日志模板是否有变量属于枚举变量类型,具体而言就是遍历p的每一列,如果一列对应的值去重后小于阈值t则认为这列对应的日志模板变量为枚举变量。最后进行枚举变量建模,包括枚举值集合建模和低频枚举值建模,其中枚举值集合建模就是将这个枚举变量在训练集中对应的取值去重之后得到的集合;其中低频枚举值建模过程是,先计算枚举变量各个枚举值再训练数据中的频数,将频数小于设定阈值的tc认为是低频枚举值;(3)事务模板模板计数向量模型,按照特征提取介绍的方法从训练数据中提取每个事务模板的模板计数矩阵v,v[:,i]表示v的第i列数据,u_i=unique(v[:,i])表示对v的第i列去重之后得到的离散值列表(e.g.[1,2,3]),len(u_i)表示u_i中有多少条数据。然后根据v计算得到u=[u_0,u_1,...,u_m],m是事务模板包含日志模板的数量。最后将u中长度大于一定阈值tu的替换空列表,即如果len(u[i])>tu,u[i]=[]。经过上述计算得到的u即是事务模板的模板计数向量模型,其含义是在系统稳定运行状态下某种事务类型中各种操作执行次数的置信区间;(4)事务模板操作顺序模型,按照特征提取介绍的方法从训练数据中提取每个事务模板对应的事务日志的邻接矩阵列表ml=[m_1,m_2,...,m_n],其中n为事务模板对应事务日志的数量,m_i为具体的某个事务日志的邻接矩阵。然后用矩阵加法的方式将这n个邻接矩阵加起来之后再按行做归一化得到m,m便是这个事务模板操作顺序模型,含义就是马尔科夫链中的概率转移矩阵,表示每个操作之后执行其它操作的概率分布;(5)事务模板指标动态阈值模型,按照特征提取的方法从训练数据中提取每个事务模板的模板指标,然后用模板指标给每个事务模板训练一个指标动态阈值模型。不限制具体使用什么指标动态阈值模型,比如说facebook开源的prophet算法、3-sigma算法等。5.根据权利要求1所述的一种基于日志的事务异常检测方法,其特征在于:所述步骤(5)中在线异常检测部分:(1)数据接入:通过kafka等组件实时接入在线日志数据,然后按照模块1(数据接入)介绍的方式做好数据处理。(2)模板提取:按照模块2和3的方式提取实时日志的操作日志模板和事务模板,并将这些模板和训练阶段的得到模板库进行匹配映射,没有匹配到模板库中的模板标识为新增模板(新增日志模板或者新增事务模板)(3)特征提取:按照模块4(特征提取)介绍的方式提取实时日志的日志模板变量序列、事务模板维度的日志模板计数向量、事务模板维度的日志模板顺序邻接矩阵、事务模板指
标值。(4)异常检测。6.根据权利要求6所述的一种基于日志的事务异常检测方法,其特征在于:所述步骤(4)中异常检测包括以下几个部分:(1)新增日志模板,有新增的日志模板即触发新增日志模板;(2)新增事务模板,有新增的事务模板即触发新增事务模板;(3)枚举变量异常,检测枚举变量的取值是否在训练阶段建模的对应枚举变量的枚举值集合中,如果不在则触发枚举变量异常;如果在,判断其是否是低频枚举值,如果是,则触发枚举变量异常告警等级低于前者;(4)操作频次异常,通过日志模板计数向量判断事务模板各个操作在实时日志中对应的数量是否在该事务模板对应日志模板的置信区间中,如果不在则触发告警;(5)操作顺序异常,通过实时日志的邻接矩阵m和训练阶段得到顺序模型m进行比较判断是否出现操作顺序异常。一种具体的判断方法是如果m中存在m[i,j]不等于0,而m[i,j]=0的情况则触发告警;(6)事务模板异常,导入训练阶段训练得到的指标动态阈值模型检测实时日志中提取得到的事务模板指标值是否在模型拟合的动态阈值范围内,如果不在则触发告警。
技术总结本发明公开了一种基于日志的事务异常检测方法,包括以下几个阶段,日志收集,日志模板聚类,事务模板聚类,特征提取和异常检测,本发明与现有技术相比的优点在于:(1)可以检测未知故障类型。(2)误报率低。(3)可迁移性好,适用范围更加广泛,适用于其它系统。(4)维护成本低。低。低。
技术研发人员:沈国鹏 朱品燕
受保护的技术使用者:北京云集智造科技有限公司
技术研发日:2022.07.13
技术公布日:2022/11/1