1.一种基于程序日志数据的系统异常检测方法,其特征在于,包括如下步骤:
(1) 日志模板抽取:从系统的日志消息中抽取出日志模板;
(2) 日志模版异常检测,具体包括:
(2‑1)从日志消息中根据抽取出的日志模板得到日志消息序列,将日志消息序列转换为日志模板编号序列,并根据系统正常运行过程中采集的日志消息训练日志模板编号预测模型;
日志模板预测模型构建:根据日志模板编号序列 训练一个日志模
板预测模型,其中I1,I2…IN为日志消息M1, M2, …, MN对应的日志模版编号,N为模版序列DSS中的模版数量,具体步骤如下:(2‑1‑1) 采用word2vec模型对DSS进行预训练,得到每个日志模板编号Ik对应的向量表征ek,则DSS转化为日志模板编号表征向量的序列EDSS = ,其中e1,e2…eN为日志模板编号序列DSS中日志模版编号对应的日志模版转化成的表征向量,N为EDSS中表征向量的数量;
(2‑1‑2) 采用大小为w、步长为1的滑动窗口将EDSS划分成多个小序列,其中ei1,ei2…eiw为小序列中日志模版编号对应的日志模版转化成的表征向量,iw为EDSS中表征向量的数量,为每个小序列构建一个训练样本xi = (si, li),其中li为xi的标注部分,取si的下一个时刻的日志模板编号,即li = Ii(w+1),将得到的所有训练样本的集合记为XS;
(2‑1‑3) 采用LSTM模型对XS进行训练,得到一个日志模板预测模型,该模型的输入为一段观测到的日志模板编号序列,输出为预测的下一时刻的日志模板编号;
(2‑2)采用训练后的日志模板编号预测模型对下一条日志消息对应的日志模板进行预测,预测结果和实际的下一条日志消息对应的日志模板进行对比实现异常检测;
(3) 日志参数异常检测,具体包括:
(3‑1)从系统正常运行过程中采集的日志消息集合中抽取所有日志参数及其取值范围,具体包括:(3‑1‑1) 给定一个日志模板Pi和其对应的其中一条日志消息Mj,Pi与Mj不能匹配的词即为日志参数,其中,不能匹配的词的个数对应Pi的日志参数的个数,不能匹配的词的值对应Pi的日志参数在Mj中的取值;
(3‑1‑2) 对于日志模板Pi,在日志消息集合DS = {M1, M2, …, MN}中找到所有与日志模板Pi对应的日志消息集DPSi = {Mi1, Mi2, …, Mim},其中M1, M2, …, MN为日志消息集合DS中的每一条日志的编号,N为日志消息集合DS中的所有日志的数量,Mi1, Mi2, …, Mim为日志消息集合DPSi中的每一条日志的编号,im为日志消息集合DPSi中的所有日志的数量,采用步骤(3‑1‑1)的方法得到日志模板Pi的所有日志参数,以及Pi的每个日志参数在DPSi中的取值范围;
(3‑2)根据日志参数的实时取值与正常取值范围的差异进行异常检测,具体包括:(3‑2‑1)给定一个日志消息Mk,找到日志消息Mk对应的日志模板Pk;
(3‑2‑2) 得到日志模板Pk的所有日志参数在Mk中的取值;
(3‑2‑3) 如果步骤(3‑2‑2)中的某个日志参数的取值超过了步骤(3‑1‑2)中计算得到的其在Pi中的取值范围,则判定当前发生了日志参数异常。
2.根据权利要求1所述的基于程序日志数据的系统异常检测方法,其特征在于,步骤(2‑1)中,所述的日志模板编号预测模型为LSTM模型。
3.根据权利要求1所述的基于程序日志数据的系统异常检测方法,其特征在于,步骤(3‑2‑3)中,如果步骤(3‑2‑2)中的某个日志参数的取值超过了步骤(3‑1‑2)中计算得到的其在Pi中的取值范围20%,则判定当前发生了日志参数异常。