前言
日志分析作为AIOps(人工智能与运维领域相结合)的重要子领域正受到学术和工业界日益增长的关注,因此涌现出了许多神经网络与日志分析结合的经典模型,在实际应用中也取得了较好的效果。
本次学术论坛我们邀请了云智慧算法实习生、北京航空航天大学博士在读生郭同学为我们从学术界角度简要介绍该领域与深度学习结合的近期进展。
学术论坛内容
一、日志研究概述
二、学术前沿工作分享
三、自研模型分享
四、总结
一、日志研究概述
-
研究现状
日志数据由系统运行产生,它详尽描述了系统大规模内部事件以及用户的意图。随着大规模IT系统的快速发展,日志数据的数量已经增长到传统方法难以分析的程度。除此之外,日志的标签获取与标注也比较困难。下图展示了从代码到日志的过程,相同系统的日志也会产生个性化内容,我们可以在代码中定义任何我们想要的系统反馈。
为解决上述瓶颈,运维人员尝试通过集成人工智能算法来增强IT运维能力,由此诞生过一批基于传统机器学习算法。近些年,随着计算算力发展和数据体量增大,深度学习技术开始被用于日志分析领域,研究者们认为半结构化的日志消息也包含部分系统语义,类似于自然语言语料。因此研究者们纷纷采用语言模型对日志数据进行建模分析,例如LSTM,Transformer等。为解决标签难以获取问题,一批研究者采用自监督、无监督,弱监督、半监督等不需要完整标签的方法,例如近期出现的Log领域的Bert等。也有采用迁移学习、集成学习、持续学习等不同的学习方式去各方面高效提升运维效率。总而言之,研究者们正在深挖深度学习在该领域的研究和应用价值。
-
围绕日志展开的任务
对于日志的研究大致可以分为三个方向:Log Compression(日志压缩)、Log Parsing(日志解析)、Log Mining(日志挖掘)。对于日志压缩,我们研究如何在不丢失重要信息的基础上高效压缩日志。日志解析就是从软件日志中自动提取事件模板和关键参数,日志挖掘中包含了各种任务,包括日志异常检测,日志告警等,挖掘的主要目的也是为了提高系统的可靠性。下图给出近期论文的数量和方向,我们可以发现论文数量逐年上升且大部分论文聚焦于日志挖掘方向。
二、学术前沿分享
本文此次学术分享主要聚焦于日志异常检测任务。日志异常检测,顾名思义,主要是检测日志数据中的系统异常。
-
Log Parsing(日志模式解析)
海量日志数据之间语义相似性较高,实际需求需要将日志表示。因此学者期望对日志提取出固定的模版/模式以求代表整个日志数据库。 经调研,当前日志异常检测方法大都需要日志解析这一步,原因在这边简述。
上图展示了日志模版提取过程,从上到下依次是原始日志,解析后的日志模版,结构化好的日志,最后将结构化好的数据送入下游各种日志挖掘任务。详细来说,L1、L2、L3、L4、L5表示五条原始日志,我们经过日志解析算法(Drain parsing)提取出三个模板:T1、T2、T3。经过Mapping后我们得到了五条结构化好的日志,即粉色框中的L1~L5。日志解析会将我们认为日志中无关的信息去除,例如Timestep、ID等。常见的解析算法:Drain(基于树结构相似度) Spell(最长公共子序列) AEL (常数和变量的发生频率) IPLoM(迭代分区策略,根据消息长度、令牌位置和映射关系等)。
-
Log anomaly detection(日志异常检测)
2020年后的深度日志异常检测框架大都有三个部分:日志解析模块->特征编码器->分类器/解码器。这一部分将给大家介绍部分深度学习框架。
DeepLog:
Deeplog: Anomaly detection and diagnosis from system logs through deep learning.
如下图所示,模型分为训练和测试两阶段,在训练阶段,原始日志经过日志解析后得到模板,随后经过LSTM网络学习表征,预测下一条日志的模板。在测试阶段,测试数据输入模型后得到预测的模板结果,如果预测的模版不在Top k个模版内,那么该条日志就被判为是异常的。
LogRobust:
Robust log-based anomaly detection on unstable log data.
该模型基于监督学习,模型使用基于注意力的双向LSTM架构。采用Drain进行日志数据解析,特征提取器采用Word-to-Vector和TF-IDF加权技术生成日志表征。模型将正常和非正常日志数据都用于训练,最后分类器来判断日志是否是异常。
HitAnomaly:
Hitanomaly: Hierarchical transformers for anomaly detection in system log.
模型也是基于有监督学习,采用了基于Transformer的架构。日志解析器依旧采用Drain, 在模式解析中,模板往往不会保留日志原始的数值信息,但是该模型将丢失的数值信息一并送入模型中编码,最大程度的保存了原始日志的信息,这也就是该工作的创新点所在。
Logsy:
Self-attentive classification-based anomaly detection in unstructured logs.
模型是有监督学习,采用了基于Transformer的架构。这篇工作的创新点在于没有用日志解析器,而是将整个原始的日志送入编码器编码,这会在最大程度上保留原始语料的信息,但是实际情况中的检测效率也会大大受影响。
三、自研模型分享
Translog
TRANSLOG: A Unified Transformer-based Framework for Log Anomaly Detection.
传送门:https://arxiv.org/pdf/2201.00…
该模型也是基于监督学习,不同于上述模型几乎不变的框架,本工作在日志异常检测的思路上进行重建,主要贡献:
- 通过迁移学习共享日志语义知识,以解决多来源、低资源的日志数据源难以检测问题。
- 在效果达到SOTA (最优表现)情况下,压缩模型可训参数量至原来的5%,提升深度学习模型的应用可能性。
- 基于Transformer的全新框架,Pretraining-Tuning两阶段的方式为日志分析提供新的的学习范式 。
出发点:
如下图所示,不同的系统间存在着相同的异常问题,因此有些低日志资源的系统也可以分享一般性日志语义知识进行异常检测。例如图中的BGL、Thunderbird、Spirit、Liberty系统都会发生“Program Not Running”这个异常问题。
框架方法:
模型的框架图如下所示,主要分为两阶段:Pretrainging和Adapter-based Tuning。 首先将所有的解析好的日志事件序列输入到预先训练好的语言模型中(这里我们采用了BERT模型)以提取表示。随后采用Transformer编码器,在高资源源域数据集上进行训练,来获得共享语义信息,然后对于目标数据源,我们冻结编码器的参数,只调整目标域数据集上的Adapter的参数。这样我们就达到了将知识从源数据集转移到目标数据集上的目的。
实验结果:
我们比较了六种不同的方法,在三个公开数据集上进行测试,最终我们的算法都获得了SOTA(最优表现)。同时我们参数量减少了将近百分之95% 。
四、总结
通过我们在智能运维行业中的深耕经验以及前沿技术的调研,我们总结了日志领域发展的以下三个趋势:由于行业普遍存在日志本身的标签获取较难的现象,无监督或者弱监督的深度学习方法将大量涌现,帮助该领域人员在无标签的数据情况下更好的从事实际研究和落地发展;而且随着运维领域多模态的发展,引入外部知识,例如知识图谱,亦或者运维数据中的调用链、指标等数据类型来扩充日志本身的原始信息,因此会出现很多基于自监督的方法和多种模态数据相结合的方向,朝着运维一体化更好的发展;随着运维数据体量不断增大,类似于自然语言领域中Bert的这种大型模型逐渐体现其性能,结合预训练和微调的学习范式,一个学习各种运维知识和日志模式的大模型将有很大机会充当AIOps的研究典范。
写在最后
近年来,在AIOps领域快速发展的背景下,IT工具、平台能力、解决方案、AI场景及可用数据集的迫切需求在各行业迸发。基于此,云智慧在2021年8月发布了AIOps社区, 旨在树起一面开源旗帜,为各行业客户、用户、研究者和开发者们构建活跃的用户及开发者社区,共同贡献及解决行业难题、促进该领域技术发展。
社区先后 开源 了数据可视化编排平台-FlyFish、运维管理平台 OMP 、云服务管理平台-摩尔平台、 Hours 算法等产品。
可视化编排平台-FlyFish:
项目介绍:https://www.cloudwise.ai/flyF…
Github地址: https://github.com/CloudWise-…
Gitee地址: https://gitee.com/CloudWise/f…
行业案例:https://www.bilibili.com/vide…
原创文章,作者:奋斗,如若转载,请注明出处:https://blog.ytso.com/301901.html