日志异常检测研究现状及展望
2021-05-24李东昊
李东昊
摘要:随着金融信息化建设的不断推进,系统规模与复杂性不断增长,系统故障已成为金融业发展不可忽视的问题。日志作为唯一系统运行信息的数据源,具有重要利用价值。该文综述了日志异常检测的主流方法,并针对存在问题提出对未来发展方向的建议。
关键词: 金融信息化;系统故障; 日志; 异常检测
中图分类号:TP391 文献标识码:A
文章编号:1009-3044(2021)12-0056-02
Abstract:With the continuous advancement of financia linformation construction, the scale and complexity of the system are growing, system failure has become a problem that cannot be ignored in the development of the financial industry. As the only data source of system operation information, log has important utilization value. This paper summarizes the mainstream methods of log anomaly detection, and puts forward some suggestions for future development.
Key words:financial information construction; system failure; log; anomaly detection
互联网的出现拉近了人与人间的距离。伴随着信息技术的发展,近年来,分布式系统频繁出现在各个领域的信息化建设中,正发挥着极其重要的作用。由广泛应用的分布式系统故障所造成的损失也日益增加。据统计Microsoft、Facebook、Twitter等互联网公司每年因分布式系统宕机造成的经济损失高达过亿元[1],信息系统的稳定性与安全性成为人们关注的焦点。系统日志作为系统运行状态的直接体现,包含着大量的信息,这使得利用日志信息对系统状态进行诊断成为可能。早期系统运维人员通过使用关键字检索、编写日志规则,以人工观察日志信息的方式进行系统巡检。随着对功能需求的提升,系统架构日益复杂,分布式系统(如hadoop,spark)每天产生海量的日志信息,传统的基于经验规则判断的日志分析方法受数据量大、数据类型复杂的影响已经不适用于系统故障检测。
1研究现状
目前针对日志的异常检测可分为三类:基于规则的异常检测方法、基于无监督的异常检测方法、基于有监督的异常检测方法。
基于规则的异常检测方法,基于统计学方法通过统计海量日志中的关键字出现频率,结合专家经验设计正则表达式,挖掘潜在检测规则并根据规则匹配程度进行日志异常检测。如文献[2]通过定义系统正常行为规则,使用正则表达式识别日志异常信息。文献[3]基于分析日志事件序列信息创建规则集,能够有效降低系统误报率,但是自动化程度低,人工成本大。
基于无监督的异常检测方法,不需要预先标记的训练数据,通过判断待检测日志序列与正常日志序列的差异检测异常。主要依赖于机器学习中的聚类质量,通过日志相似性聚类分析,将从日志数据中检测的离群点标记为异常信息。如文献[4],作者通过解析原始日志,统计日志中的事件信息,提取日志的事件频率特征,使用凝聚层次聚类进行异常信息识别。文献[5],作者在传统的基于聚类的异常日志检测方法logcluster上引入滑动窗口的概念,提出了基于滑动窗口聚类的异常日志检测方法SW-logcluster,滑动窗口丰富了提取的日志事件信息种类,通过实验表明引入滑动时间窗口能够有效提升检测的召回率,丰富了日志特征的多样性,提升了日志异常检测的适用性。文献[6]作者提出了一个完整日志异常检测框架,基于状态比向量和消息数向量构造日志特征向量,使用主成分分析(PCA)检测日志异常,并将检测结果以决策树的形式进行可视化分析,在HDFS数据集中体现了较好的性能。文献[7]提出了一种基于日志不变量的异常检查方法,通过挖掘日志信息中的线性关系,当日志序列符合不变量定义,为正常日志序列,否则识别为异常日志序列。文献[8]作者提出了一个完整的基于日志异常检测的系统框架ADELE,该方法是一种通用领域的日志异常检测方法。通过离群点检测计算异常值,最后通过经验检验,用异常区分故障,极大地减少了误检率。文献[9]作者提出了一种基于概率后缀树的日志异常检测方法,提取日志源代码集中的可达图并关联日志语义信息挖掘日志执行轨迹序列,最后通过计算异常度检测异常信息。
基于有监督的异常检测方法,需要使用带有标签的数据训练模型,通过预训练的模型进行日志异常检测。如文献[10]通过使用决策树建模带有标签的日志信息识别系统故障,与其他分类方法相比具有高可解释性,已受到网络运营商的广泛关注。文献[11]使用日志事件计数向量训练logistic回归模型,通过模型计算日志序列的异常概率。文献[12]将日志事件计数向量输入SVM(支持向量机)训练超平面,判断检测日志序列与超平面的位置关系进而判断是否为异常日志序列。
随着人们对人工智能领域的深入研究以及深度学习的发展促使一些学者将神经网络与日志检测关联到一起,逐渐出现了一些基于神经网络的异常日志检测方法,在实际应用中也取得了较好的效果。文献[13]依据自然语言处理的技术,将TF-IDF(词频-逆文档频率)特征引入日志异常检测中,首次使用LSTM(长短时记忆网络)挖掘日志序列的长程相关性,较传统基于监督的日志异常检查方法检测质量有了显著提高。文献[14]提出一种利用长短时记忆网络学习正常日志模式的无监督日志异常检测方法Deeplog,将正常系统日志建模成自然语言序列输入神经网络训练模型并由此检测异常日志信息。为解决长序列异常日志检测效率不足的问题,文献[15]将时间卷积神经网络引入到异常日志检测中,使用自适应全局平均池化代替全连接层,有效解决了过拟合问题,同时提升了检测效率。文献[16]使用日志事件语义信息,通过Bi-LSTM模型提取日志序列上下文信息,有效提高日志异常检测的准确率。文献[17]将日志建模成时间序列进行日志异常检测,在网络安全数据挖掘竞赛数据集中準确率达到了99.6%。
文獻[18]作者结合日志异常检测的不同方法,发布了一个高可重用性的开源工具,用户可以根据日志特性选取不同方法从而达到最优检测结果,为日志异常检测的蓬勃发展奠定了基础。
2存在挑战
日志异常检测研究从单机系统发展到今天的分布式系统,受日志采集与解析的限制,检测质量仍然存在很大的提升空间。受限于日志信息传输、存储与计算的压力,传统的异常检测方法已经不适用于大型分布式系统,因此,提高日志质量,丰富日志特征,依然是日志异常检测领域的重要挑战。
(1)目前人们使用的仍是海量日志信息的小部分信息或单来源的信息,多源日志数据(如应用、网络日志等)仍未被利用,存在信息壁垒的问题
(2)不同故障类型可能引起的日志记录相同,如何根据日志信息定位系统故障位置,为用户提供直观的检测结果,提升异常的可解释性是目前需要解决的问题。
(3)系统日志是典型的不平衡数据集,因此如何考虑数据不平衡造成的过拟合问题,提升基于模型的异常检测方法的鲁棒性是应用新检测方法存在的障碍。
日志特征具有局限性。目前研究使用的日志数据,经过预处理后,变成了由系统事件序列组成的日志模板,在日志转向模板的过程中,日志中的变量信息通过通配符*代替,这样使得部分参数信息丢失,从而忽略了一些由系统参数异常导致的系统异常无法被检测。如何利用日志中包含的参数信息与通用信息,结合当前新技术挖掘更符合系统故障的多源特征仍是值得关注的焦点。
3结束语
目前针对系统日志异常检测的研究依然是通过数据驱动的,受训练样本的影响,日志样本的多样性决定了检测的质量。因此随着系统的更新与升级,收集全面大量的日志数据并探索行之有效的解析方案,完善日志异常检测框架流程仍有许多工作。此外,目前研究均在实验数据集下展开,在现实应用场景中应用较少。为了提升异常检测的鲁棒性,推动学术研究成果早日落地,相应检测技术的可行性仍需在工业界进行调研。
参考文献:
[1] 陆杰,李丰,李炼.分布式系统中的日志分析及应用[J].高技术通讯,2019,29(4):303-320.
[2] Prewett J E. Analyzing cluster log files using logsurfer[C]//Proceedings of the 4th Annual Conference on Linux Clusters. Citeseer, 2003.
[3] Rouillard J P. Real-time Log File Analysis Using the Simple Event Correlator[C]//Conference on Systems Administration. DBLP, 2004.
[4] Q . Lin, H. Zhang, J. Lou, Y. Zhang and X. Chen. Log Clustering Based Problem Identification for Online Service Systems[C]//IEEE/ACM 38th International Conference on Software Engineering Companion. 2016: 102-111.
[5] 冯士龙,台宪青,马治杰.改进的基于日志聚类的异常检测方法[J].计算机工程与设计,2020,41(4):1087-1092.
[6] Xu W , Huang L , Fox A , et al. Detecting Large-Scale System Problems by Mining Console Logs[C]//AcmSigops Symposium on Operating Systems Principles. 2010:37-46.
[7] Lou J G, Fu Q, Yang S, et al. Mining Invariants from Console Logs for System Problem Detection[C]//USENIX Annual Technical Conference. 2010: 1-14.
[8] Khatuya S, Ganguly N, Basak J, et al. ADELE: Anomaly Detection from Event Log Empiricism[C]// 2018:2114-2122.
[9] Bao L, Li Q, Lu P, et al. Execution anomaly detection in large-scale systems through console log analysis[J]. Journal of Systems and Software, 2018:172-186.
[10] Chen M, Zheng A X, Lloyd J, et al. Failure diagnosis using decision trees[C]// International Conference on Autonomic Computing. IEEE, 2004.
[11] Peter Bodík, Moisés Goldszmidt, Fox A , et al. Fingerprinting the datacenter: Automated classification of performance crises[C]// European Conference on Computer Systems. ACM,2010: 111-124.
[12] Liang Y, Zhang Y, Xiong H, et al. Failure prediction in ibmbluegene/l event logs[C]//Seventh IEEE International Conference on Data Mining (ICDM 2007). IEEE, 2007: 583-588.
[13] Zhang K, Xu J, Min M R, et al. Automated IT system failure prediction: A deep learning approach[C]// 2016 IEEE International Conference on Big Data. IEEE, 2016: 1291-1300.
[14] Du M, Li F, Zheng G, et al. Deeplog: Anomaly detection and diagnosis from system logs through deep learning[C]//Proceedings of the 2017 ACM SIGSAC Conference on Computer and Communications Security. 2017: 1285-1298.
[15] 杨瑞朋,屈丹,朱少卫,钱叶魁,唐永旺.基于改进时间卷积网络的日志序列异常检测[J].计算机工程,2020,46(08):50-57.
[16] Zhang X, Li Z, Chen J, et al. Robust log-based anomaly detection on unstable log data[C]// the 27th ACM Joint Meeting. ACM,2019: 807-817.
[17] Vinayakumar R, Soman K P, Poornachandran P. Long short-term memory based operation log anomaly detection[C]// International Conference on Advances in Computing. 2017:236-242.
[18] He S, Zhu J, He P, et al. Experience Report: System Log Analysis for Anomaly Detection[C]// 2016 IEEE 27th International Symposium on Software Reliability Engineering. IEEE,2016: 207-218.
【通聯编辑:代影】