作者:京东科技 张宪波、张静、李东江
基于 NLP 技术对运维日志聚类,从日志角度疾速发现线上业务问题
日志在 IT 行业中被宽泛应用,日志的异样检测对于识别系统的运行状态至关重要。解决这一问题的传统办法须要简单的基于规定的有监督办法和大量的人工工夫老本。咱们提出了一种基于自然语言解决技术运维日志异样检测模型。为了进步日志模板向量的品质,咱们改良特征提取,模型中应用了词性(PoS)和命名实体辨认(NER)技术,缩小了规定的参加,利用 NER 的权重向量对模板矢量进行了批改,剖析日志模板中每个词的 PoS 属性,从而缩小了人工标注老本,有助于更好地进行权重调配。为了批改模板向量,引入了对日志模板标记权重的办法,并利用深度神经网络 (DNN) 实现了基于模板修改向量的最终检测。咱们的模型在三个数据集上进行了有效性测试,并与两个最先进的模型进行了比拟,评估结果表明,咱们的模型具备更高的准确度。
日志是记录操作系统等 IT 畛域中的操作状态的次要办法之一,是识别系统是否处于衰弱状态的重要资源。因而,对日志做出精确的异样检测十分重要。日志异样个别有三种类型,即异样个体日志、异样日志序列和异样日志定量关系。咱们次要是辨认异样个体日志,即蕴含异样信息的日志。
一般来说,日志的异样检测包含三个步骤: 日志解析、特征提取和异样检测。解析工具提取的模板是文本数据,应将其转换为数字数据,以便于输出到模型中。为此,特征提取对于取得模板的数字示意是必要的。在模板特征提取方面,业界提出了多种办法来实现这一工作。独热编码是最早和最简略的办法之一,能够轻松地将文本模板转换为便于解决的数字示意,然而独热编码是一种效率较低的编码方法,它占用了太多的贮存空间来造成一个零矢量,而且在应用独热编码时,疏忽了日志模板的语义信息。除了这种不便的编码方法外,越来越多的钻研人员利用自然语言解决 (NLP) 技术来实现文本的数字转换,其中包含词袋,word2vec 等办法。尽管上述办法能够实现从文本数据到数字数据的转换,但在日志异样检测方面依然存在一些缺点。词袋和 word2vec 思考到模板的语义信息,能够无效地取得单词向量,然而它们不足思考模板中呈现的每个模版词的重要性调节能力。此外,深度神经网络 (DNN) 也被用于模板的特征提取。
咱们的模型次要改良特征提取,同时思考每个标记的模版词语义信息和权重调配,因为标记后果对最终检测的重要性不同。咱们利用两种自然语言解决技术即 PoS 和命名实体辨认(NER),通过以下步骤实现了模板特色的提取。具体来说,首先通过 FT-Tree 将原始日志音讯解析为日志模板,而后通过 PoS 工具对模板进行解决,取得模板中每个词的 PoS 属性,用于权重向量计算。同时,通过 word2vec 将模板中的标记向量化为初始模板向量,并利用权值向量对初始模板向量进行进一步批改,那些重要的模版词的 PoS 属性将有助于模型更好地了解日志含意。对于标记完 PoS 属性的模版词,词对异样信息辨认的重要性是不同的,咱们应用 NER 在模版的 PoS 属性中找出重要性高的模版词,并且被 NER 辨认为重要的模版词将取得更大的权重。而后,将初始模板向量乘以这个权重向量,生成一个复合模板向量,输出到 DNN 模型中,失去最终的异样检测后果。为了缩小对日志解析的人力投入,并为权重计算做筹备,咱们采纳了 PoS 分析方法,在不引入模板提取规定的状况下,对每个模版词都标记一个 PoS 属性。
解析模板的特征提取过程是异样检测的一个重要步骤,特征提取的次要目标是将文本格式的模板转换为数字向量,业界提出了各种模板特征提取办法:
One-hot 编码:在 DeepLog 中,来自一组 k 模板 ti,i∈[0,k)的每个输出日志模板都被编码为一个 One-hot 编码。在这种状况下,对于日志的重要信息 ti 结构了一个稠密的 k 维向量 V = [ v0,v1,…,vk-1],并且满足 j 不等于 i, j∈[0,k),使得对于所有 vi= 1 和 vj = 0。
自然语言解决 (NLP): 为了提取日志模板的语义信息并将其转换为高维向量,LogRobust 利用现成的 Fast-Text 算法从英语词汇中提取语义信息,可能无效地捕获自然语言中词之间的外在关系(即语义相似性),并将每个词映射到一个 k 维向量。应用 NLP 技术的各种模型也被业界大部分人应用,如 word2vec 和 bag-of-words。
深度神经网络(DNN):与应用 word2vec 或 Fast-Text 等细粒度单元的自然语言解决 (NLP) 不同,LogCNN 生成基于 29x128codebook 的日志嵌入,该 codebook 是一个可训练的层,在整个训练过程中应用梯度降落进行优化。
**Template2Vec:** 是一种新办法,基于同义词和反义词来无效地示意模板中的词。在 LogClass 中,将经典的加权办法 TF-IDF 改良为 TF-ILF,用逆定位频率代替逆文档频率,实现了模板的特色结构。
一段原始日志音讯是一个半结构化的文本,比方一个从在线领取应用程序收集的谬误日志读取为:HttpUtil-request 连贯失败,Read timeout at jave.net。它通常由两局部组成,变量和常量(也称为模板)。对于辨认个体日志的异样检测,目标是从原始日志解析的模板中辨认是否存在异样信息。咱们的模型应用 PoS 剖析以及 NER 技术来进行更准确和省力的日志异样检测。PoS 有助于过滤标记有不必要的 PoS 属性的模版词,NER 的指标是将重要性调配给所有标记为重要的 PoS 属性的模版词。而后通过模板向量和权向量的乘积失去复合模板向量。
咱们的日志异样检测模型包含六个步骤,即模板解析、PoS 剖析、初始向量结构、基于 NER 的权重计算、复合向量和最终检测。检测的整个过程如图 1 所示:
第一步:模板解析
初始日志是半结构化的文本,它们蕴含一些不必要的信息,可能会造成凌乱或妨碍日志检测。因而,须要预处理来省略变量,比方一些数字或符号,并提取常量,即模板。以后面提到的日志音讯为例,原始日志 HttpUtil-request 连贯 [wx/v1/pay/prepay] 的模板失败,Read timeout at jave.net。能够提取为:HttpUtil 申请连贯 失败读取工夫为 。咱们应用简略而无效的办法 FT-Tree 来实现日志解析,咱们没有引入简单的基于规定的规定来去除那些不太重要的标记,比方进行词。
第二步:PoS 剖析
上一步的模版解析后果只有英语单词、短语和一些非母语单词保留在解析好的模板中,这些模版词具备各种 PoS 属性,例如 VB 和 NN。依据咱们对大量日志模板的察看,一些 PoS 属性对于模型了解模板所传播的意义很重要,而其余属性能够疏忽。如图 3 所示,解析模板中的单词“at”在实践上是不必要的,相应的 PoS 属性“IN”也是不必要的,即便去掉 IN 的标记,咱们依然能够判断模板是否失常。因而,在咱们失去了 PoS 向量之后,咱们能够通过去掉那些具备特定 PoS 属性的模版词来简化模板。残余的模版词对于模型更好地了解模板内容十分重要。
第三步:初始模板向量结构
在取得 PoS 矢量的同时,模板也被编码成数字向量。为了思考模板的语义信息,在模型中应用 word2vec 来结构模板的初始向量。该初始向量将与下一步失去的权重向量相乘,失去模板的复合优化示意。
第四步:权重剖析
首先对模板中的模版词进行 PoS 剖析解决,剔除无意义的模版词。至于其余的模版词,有些是要害的,用于传播根本信息,如服务器操作、衰弱状态等。其余的可能是不太重要的信息,比方动作的对象、正告级别等等。为了加大模型对这些重要模版词的学习力度,咱们结构了一个权重向量来突出这些重要的模版词。为此,咱们采纳了 NER 技术,通过输出已定义的重要实体,学习筛选标记为重要实体的所有模版词。该过程如图所示:
CRF 是 NER 通常应用的工具,它也被用于咱们的模型辨认模版词的重要性。也就是说,通过向模型提供标记为重要的模版词,模型能够学习辨认那些未标注的日志的重要的模版词。一旦模板中的模版词被 CRF 辨认进去,相应的地位就会赋予一个权重值(2.0)。因而,咱们失去一个权向量 W。
第五步:复合向量
在取得权重向量 W 之后,通过将初始向量 V’乘以权重向量 W,能够失去一个示意模板的复合优化向量 V。重要的模版词调配更大权重,而其余的模版词调配更小的。
第六步:异样检测
将第五步失去的复合矢量 v 输出到最终全连贯层中,以便进行异样检测。齐全连通层的输入别离为 0 或 1,示意失常或异样。
•模型评估
咱们通过试验验证了该模型对日志异样检测的改良成果。采纳了两个公共数据集,以及一套咱们外部数据集,来验证咱们模型的实用性。咱们将本人的后果与业界针对日志异样检测提出的两个 Deeplog 和 LogClass 模型进行了比拟。
CANet 的框架是用 PyTorch 构建的,咱们在 35 个训练周期中抉择新加坡随机梯度降落 (SGD) 作为优化器。学习速度设定为 2e4。所有的超参数都是从头开始训练的。
(1)数据集:咱们选取了两套公共集和一套公司外部数据集进行模型评估,BGL 和 HDFS 都是用于日志剖析的两个罕用公共数据集:HDFS:是从运行基于 Hadoop 的作业的 200 多个 Amazon EC2 节点收集的。它由 11,175,629 条原始日志音讯组成,16,838 条被标记为“异样”。BGL:收集自 BlueGene/L 超级计算机零碎,蕴含 4,747,963 条原始日志音讯,其中 348,469 条是异样日志。每条日志音讯都被手动标记为异样或者失常。数据集 A:是从咱们公司外部收集来进行理论验证的数据集。它蕴含 915,577 条原始日志音讯和 210,172 条手动标记的异样日志。
(2)base 模型:咱们将本人的模型在三个数据集上,与两个业界最先进的模型 (DeepLog 和 LogClass) 进行比拟:DeepLog: 是一个基于深度神经网络的模型,利用长短期记忆 (LSTM) 来实现检测。DeepLog 采纳一次性编码作为模板向量化办法。LogClass: LogClass 提出了一种新的办法——逆定位频率 (ILF),在特色结构中对日志文字进行加权。这种新的加权办法不同于现有的反文档频率(IDF) 加权办法。
(3)模型评估后果:咱们从 Precision、Recall 和 F1-score 三个方面评估两个 base 模型和咱们的模型的异样检测成果,在 HDFS 数据集上,咱们的模型取得了最高的 F1 得分 0.981,此外,咱们的模型在召回方面也体现最好。LogClass 在 Precision 上获得了最好的问题,比咱们的略微高一点。在第二套数据集 BGL 上,咱们的模型在召回率 Recall(0.991)和 F1-score (0.986)方面体现最好,但在 Precision 上略低于 LogClass。在第三套数据集 A 上三个模型的性能,咱们的模型实现了最佳性能,其次是 LogClass。
在所有的数据集中,咱们的模型具备最好的 F1 得分和最高的召回率,这意味着咱们的模型造成的不确定性更小。
•Natural Language Processing-based Model for Log Anomaly Detection. SEAI.
•**ieeexplore 检索:**https://ieeexplore.ieee.org/abstract/document/9680175
•Themis 智能运维平台智能文本剖析性能视图:(http://jdtops.jd.com/)