1.一种基于组件感知的日志异常检测方法,其特征在于,包括如下步骤:S100:获取目标软件的日志数据,将日志数据转换为日志模板序列和组件序列;
S200:模型训练,将两个LSTM模型组合使用,将S100得到的日志模板序列和组件序列分别输入到两个LSTM模型中进行训练,两个LSTM模型训练使用相同的损失函数,采用梯度下降优化算法更行参数值,训练完成得到由日志检测模型和组件检测模型构成的组合模型;
S300:异常检测,将t‑h到t‑1时刻的所有日志数据的参考日志模板序列和参考组件序列输入组合模型得到可能日志模板集Lg和可能组件模板集Cg;
当t时刻日志消息mt的待测日志模板序列在可能日志模板集Lg中,且t时刻日志消息mt的待测组件序列在可能组件模板集Cg中,则认为日志消息mt为正常日志,否则产生系统告警;
所述日志消息mt的异常检测过程为:
S310:将t时刻的日志消息mt通过S100的方法转化为对应的待测日志模板序列和待测组件序列;将t‑h到t‑1时刻的所有日志数据通过S100的方法转化为对应的参考日志模板序列和参考组件序列;
S320:将参考日志模板序列输入日志检测模型得到日志概率分布,选取前g个概率大日志模板序列组成可能日志模板集Lg;
将参考组件序列输入组件检测模型得到组件概率分布,选取前g个概率大组件模板序列组成可能组件模板集Cg;
S330:检测待测组件序列是否在可能组件模板集Cg中,如果待测组件序列在可能组件模板集Cg中,则执行下一步,否则执行S350;
S340:检测待测日志模板序列是否在可能日志模板集Lg中,如果检测待测日志模板序列在可能日志模板集Lg中,则退出程序,否则执行S350;
S350:日志消息mt为异常,产生系统告。
2.如权利要求1所述的,基于组件感知的日志异常检测方法,其特征在于,所述S100中的将非结构化日志数据转换为日志模板序列和组件序列的方法为:使用固定深度树将获取的待测软件的日志数据中,构建日志模板序列;
使用正则表达式来匹配每一条日志数据中的组件,然后为不同的组件进行编号得到组件序列。
3.如权利要求1所述的,基于组件感知的日志异常检测方法,其特征在于,所述S200的训练过程为:设S100中得到n个日志模板序列L={l1,l2,...,ln}和m个组件序列O={o1,o2,...,on},n≥m;
设t时刻的日志消息为mt;
给定一个日志消息序列M={m1,m2,...,mt},通过S100的方法提取日志模板序列和组件序列,将两者合并得到一个新的序列Me={(c1,k1),(c2,k2),...,(ct,kt)},其中ct代表t时刻日志消息mt中的组件,kt代表t时刻日志消息mt的日志模板;
组合模型的输入是包含前h条日志模板的集合W,W={(ct‑h,kt‑h),(ct‑h+1,kt‑h+1),...,(ct‑1,kt‑1)},每一对(ct,kt)都是由mt中提取得到;
所以训练过程中的损失函数为交叉熵损失函数,两个LSTM模型都使用该损失函数如公式(1):其中,M为训练样本总数,kj是当前日志模板或者组件的真实标签,pj是模型输出的当前日志模板或者系统组件的概率值。