当前位置: 首页 > 科技观察

跨语言操作系统日志异常检测技术的研究与实现

时间:2023-03-22 01:41:39 科技观察

日志异常检测技术背景及意义在信息技术高速发展的今天,计算机网络的规模越来越大,无论是金融、电信、能源行业,或者说工业制造,互联网,物联网都非常依赖互联网。政府、各大企业、金融机构、科研机构等企事业单位的大部分业务都以计算机网络为基础。随着芯创产业的蓬勃发展,国产操作系统依托开源生态和政策迅速崛起,涌现出一大批以Linux为主要架构的国产操作系统,如中科方德、银河麒麟、深度操作系统、还有华为鸿蒙。等等,未来广阔的发展前景值得期待。但由于国产操作系统刚刚起步,生态还不成熟,系统会面临各种恶意攻击、内部威胁、数据泄露等,这些恶意行为造成的损失是非常巨大的,也是一个对个人和国家信息安全的威胁。构成了极大的威胁。操作系统的运行过程如图1所示,故障根源是系统运行不正常。一段时间后,系统出现故障,修复系统,恢复系统正常运行。这些事件按顺序发生。因此,为了预防或避免故障,减少故障造成的损失,设计一套行之有效的操作系统运行状态检测方法以维护操作系统的正常运行势在必行。图1系统运行状态图操作系统运行时产生的数据可以代表系统的运行状态。通过对这些数据的挖掘和分析,可以对系统的异常运行状态进行诊断。系统运行状态监控的数据来源主要是KPI(KeyPerformanceIndicator)数据。比如CPU使用状态、磁盘IO状态、文件分区状态、网络接口状态、进程状态、内存使用状态等,这类数据反映了操作系统中各种资源的使用情况。但在现实中,随着监控对象的增多,如服务器、虚拟机、容器、硬盘、TOR交换机、汇聚交换机、路由器、数据库、中间件等,故障的种类也越来越多。数据异常之间没有一一对应关系。因此,需要对系统进行更细致、更准确的监控,而操作系统的运行状态日志数据就是一个极好的监控数据源。日志数据通常是系统开发人员在应用开发时,根据程序执行逻辑嵌入相关打印输出语句的一类数据。它是应用程序在运行过程中调用打印语句记录变量信息和程序执行状态的一种数据。发生异常或故障时的上下文信息[1]。目前,国内基于操作系统日志的异常检测研究较少。一方面,随着操作系统和应用的日益复杂,传统的基于关键字匹配或静态规则匹配的方法只能检测已有的异常事件,缺乏灵活性,容易漏报。另一方面,在使用机器学习、深度学习等自动化检测方法分析日志异常时,首要任务是将非结构化的日志文本解析为结构化信息,然后进行日志向量化。为了增加程序开发者和用户对日志的可读性,国产操作系统增加了中文日志。这种跨语言日志文本的表示是当前日志异常检测研究中的一大挑战。此外,如何充分结合日志数据特征,对日志异常检测任务进行优化和改进,提高模型的检测性能,是当前研究的另一大挑战。现有的异常检测算法大多针对不同类型的异常,因此适用范围也不同。基于此,本文在已有日志研究的基础上,分析国产操作系统日志文本数据的特点,采用数据挖掘分析方法建立异常检测模型,以提高跨语言日志异常检测方法的效率和性能。常用的日志异常检测方法一般有四个关键步骤,如图2所示。首先是日志收集。在这里,日志采集系统采集的日志数据大部分是以非结构化文本形式存储的。接下来进行日志分析工作。通过日志模板提取方法提取日志文本中不变的部分,将原始日志记录处理成结构化信息;下一步是特征选择,分析日志数据的特征并选择合适的特征以向量化形式表示日志;最后一步是建立异常检测模型[2]。本章将讨论日志解析、特征提取和异常检测三大关键技术的研究现状。图2日志异常检测流程日志解析方法已有研究提出了多种日志自动解析方法,解析技术从技术、运行方式、预处理等方面可分为以下五类:聚类、频繁项挖掘、组合优化算法、启发式和最长子序列[3]。(1)聚类。聚类主要基于相同或相似的日志消息类型会出现在同一组日志中的假设,通过衡量字符串匹配之间的距离来达到聚类的效果。例如,LogSig[4]是一种基于消息签名的算法,它为每条日志消息搜索最合适的消息签名,充分利用领域知识来确定日志收集的数量。(2)频繁项的挖掘。频繁项挖掘的方法是基于一个假设,即模板被视为日志中频繁出现的标记的集合。解析过程包括三个步骤:创建频繁项集、分组日志消息和提取日志模板。该方法的代表解析器有SLCT[5]、LFA[6]和LogCluster[7]。(3)组合优化算法。MoLFI[8]使用遗传算法找到最佳的日志消息模板集。(4)启发式方法。该方法通过挖掘日志结构中的不同特征来获得最好的结果。Drain[9]的设计假设在日志的开头,单词不会发生太大变化。(5)最长公共子序列。Spell[10]使用最长公共子序列(LCS)算法从传入日志中动态提取日志模板。日志特征提取方法日志特征提取方法分为基于规则、基于统计和基于自然语言处理的特征提取方法[11]三种。(1)基于规则的方法主要针对固定格式的日志。通过关键字提取或规则过滤等方式,编写正则表达式对日志文本进行切割,根据日志格式划分为不同的域,转换为结构化日志。然后提取特征。蔡等人。提出了一种基于规则的方法从具有特定格式的关系日志中提取特征[12]。(2)基于统计的方法通常基于日志模板实现,统计日志序列中每个日志模板的出现次数,作为日志序列的统计特征,将日志序列表征为模板计数向量。陈传文等。根据模板计数向量的变化判断日志是否异常,并使用中值绝对偏差(MAD)来衡量模板计数是否突然[13]。(3)基于自然语言处理的方法认为日志文本是由程序的输出语句生成的,可以看作是自然语言中的一段,因此可以采用自然语言处理的方法提取日志特征。基于自然语言处理的日志特征提取通常使用以下三种模型:N-gram、WordCount和TF-IDF(TermFrequency-InverseDocumentFrequency)[14]。索波拉等人。使用N-gram模型首先将日志模板划分为token,统计模板中包含的所有n个连续token的序列。这些序列也称为N-grams,统计每个N-gram在所有日志模板集中出现的次数,就是日志序列的统计特征。日志异常检测方法目前,许多学者将数据挖掘、机器学习和深度学习技术应用于异常检测,实现更高效的智能运维和诊断。由于日志数据源的多样性,不同系统的日志格式也不同,具有不同的结构特点。从检测方法的实现上,日志异常检测可以分为有监督的日志异常检测方法和无监督的日志异常检测方法。(1)有监督的日志异常检测方法:当使用有监督的方法检测日志异常时,训练样本既包含正常日志也包含异常日志。对该样本进行训练学习后,得到分类模型,输入未知日志。通过分类模型将日志分为两类,输出的是日志的类别,即正常或异常。(2)无监督日志异常检测方法:该方法在建模时不需要训练带有异常标签的日志序列,而是学习日志数据的内在属性和规律。例如,日志的统计和语义特征。基于统计特征的方法通常将日志序列表示为模板统计向量,然后使用有效模型训练统计向量来挖掘异常模式,从包含大量正常样本的数据中挖掘异常。基于语义特征的异常检测方法通过在序列向量上嵌入单词或句子来获得日志的语义向量化表示来实现异常检测。该方法首先将日志序列表征为日志模板序列,即在保持日志执行时间顺序不变的前提下,将日志序列中的每条日志转换为对应的日志模板,然后将日志模板向量化表示建模。模型通过预测序列中下一个日志模板的类别,生成关于日志模板类别的概率分布,选择预测概率最高的日志模板形成一组正态日志模板,其余形成一组异常日志模板。最后根据实际日志模板所属的采集类别判断日志序列是否异常。参考文献[1]张英军,刘尚奇,杨牧,等.基于日志的异常检测技术综述[J].网络与信息安全学报,2020,6(6):1-12.[2]付庆,楼继刚,王勇,等.通过非结构化日志分析在分布式系统中执行异常检测[C]//2009年第九届IEEE数据挖掘国际会议。MiamiBeach,FL,USA:IEEE,2009:149-158.[3]ZhuJ,HeS,LiuJ,etal.Toolsandbenchmarksforautomatedlogparsing[C]//2019IEEE/ACM41stInternationalConferenceonSoftwareEngineering:软件工程在实践中(ICSE-SEIP)。IEEE,2019:121-130.[4]TangL、LiT、PerngCS.LogSig:从原始文本日志生成系统事件[C]//第20届ACM信息和知识管理国际会议论文集-CIKM'11。Glasgow,Scotland,UK:ACMPress,2011:785.[5]NagappanM,VoukMA.Abstractingloglinestologeventtypesforminingsoftwaresystemlogs[C]//2010第7届IEEE挖矿软件存储库工作会议(海洋科学研究报告2010)。IEEE,2010:114-117.[6]NandiA、MandalA、AtrejaS等人。Anomalydetectionusingprogramcontrolflowgraphminingfromexecutionlogs[C]//第22届ACMSIGKDD知识发现和数据挖掘国际会议论文集。2016:215-224.[7]VaarandiR,PihelgasM.LogCluster-Adataclusteringandpatternminingalgorithmforeventlogs[C]//2015第11届网络与服务管理国际会议(CNSM)。Barcelona,??Spain:IEEE,2015:1-7.[8]MessaoudiS,PanichellaA,BianculliD,etal.Asearch-basedapproachforaccurateidentificationoflogmessageformats[C]//2018IEEE/ACM第26届程序理解国际会议(ICPC).IEEE,2018:167-16710.[9]HeP,ZhuJ,ZhengZ,等。Drain:AnOnlineLogParsingApproachwithFixedDepthTree[C]//2017IEEE国际网络服务会议(ICWS)。火奴鲁鲁,HI,美国:IEEE,2017:33-40.[10]DuM,LiF.Spell:StreamingParsingofSystemEventLogs[C]//2016IEEE16th国际数据挖掘会议(ICDM)。西班牙巴塞罗那:IEEE,2016年:859-864.[11]贾彤,李颖,吴中海。基于日志数据的分布式软件系统故障诊断综述[J].软件学报,2020,31(7):1997-2018.[12]HeP,ZhuJ,ZhengZ,等。Drain:AnOnlineLogParsingApproachwithFixedDepthTree[C]//2017IEEE国际网络服务会议(ICWS)。美国夏威夷火奴鲁鲁:IEEE,2017:33-40。[13]ChenC,SinghN,YajnikS.Loganalyticsfordependableenterprisetelephony[C]//2012NinthEuropeanDependableComputingConference.IEEE,2012:94-101.[14]SipolaT,JuvonenA,LehtonenJ.使用地图从网络日志中检测异常[diffusM]//神经网络的工程应用。施普林格,2011:172-181。