CN112579414B - 日志异常检测方法及装置 - Google Patents

日志异常检测方法及装置 Download PDF

Info

Publication number
CN112579414B
CN112579414B CN202011444338.8A CN202011444338A CN112579414B CN 112579414 B CN112579414 B CN 112579414B CN 202011444338 A CN202011444338 A CN 202011444338A CN 112579414 B CN112579414 B CN 112579414B
Authority
CN
China
Prior art keywords
log
sequence
window
template
detected
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN202011444338.8A
Other languages
English (en)
Other versions
CN112579414A (zh
Inventor
李晓戈
邱连涛
胡飞雄
胡立坤
张东晨
于智洋
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Tencent Technology Shenzhen Co Ltd
Xian University of Posts and Telecommunications
Original Assignee
Tencent Technology Shenzhen Co Ltd
Xian University of Posts and Telecommunications
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Tencent Technology Shenzhen Co Ltd, Xian University of Posts and Telecommunications filed Critical Tencent Technology Shenzhen Co Ltd
Priority to CN202011444338.8A priority Critical patent/CN112579414B/zh
Publication of CN112579414A publication Critical patent/CN112579414A/zh
Application granted granted Critical
Publication of CN112579414B publication Critical patent/CN112579414B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3466Performance evaluation by tracing or monitoring
    • G06F11/3476Data logging
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Debugging And Monitoring (AREA)

Abstract

本申请属于数据处理技术领域,具体涉及一种日志异常检测方法和装置。其中的方法包括:获取多条原始日志记录,作为待检测日志序列;基于预先建立的日志模板库,提取所述待检测日志序列的变量特征、窗口特征、顺序特征;基于所述变量特征,通过统计学法或聚类法对待检测日志序列中每个日志记录中的数值型变量的变量值进行异常检测;基于所述窗口特征,通过主成分分析法对待检测日志序列中每个时间窗口内日志记录出现的频率进行异常检测;基于所述顺序特征,通过有限自动机的方法检测所述待检测日志序列中日志记录子序列是否属于预先建立的任务集合。本申请中的方法能够对日志记录进行实时检测,及时、准确地获取日志记录中的异常数据。

Description

日志异常检测方法及装置
技术领域
本申请属于数据处理技术领域,具体涉及一种日志异常检测方法和装置。
背景技术
现代系统正在向大规模发展,通过构建数千台机器来扩展分布式系统,使用数千台处理器的超级计算机来扩展高性能计算。系统运行时通常将软件运行的实时状态记录以文本形式记录在文件中,该文件称为日志(logs)或日志文件,记录软件运行期间的详细运行时信息。一个日志包括多行日志记录,每一行日志记录用于记录软件运行时的一个事件。日志中的日志记录通常具有隐含的日志模板(schema),即该记录本身的模式或格式。
现有方法中开发人员根据他们的领域知识手动检查系统日志或编写规则来检测异常,并额外使用关键字搜索或正则表达式匹配。然而,这种依赖人工检查日志的异常检测,无法实现对日志的准确检测。
发明内容
(一)要解决的技术问题
鉴于现有技术的上述缺点、不足,本申请提供一种日志异常检测方法和装置。
(二)技术方案
为达到上述目的,本申请采用如下技术方案:
第一方面,本申请实施例提供一种日志异常检测方法,该方法包括:
S10、获取多条原始日志记录,作为待检测日志序列;
S20、基于预先建立的日志模板库,提取所述待检测日志序列的变量特征、窗口特征、顺序特征;所述日志模板库是通过对历史日志记录进行日志解析,模板抽取得到的;所述变量特征为日志记录的数值型变量值,所述窗口特征为时间窗口内各日志模板出现的次数,所述顺序特征为根据日志记录的输出顺序得到的日志模板序列;
S30、对所述待检测日志序列进行异常检测,包括:
基于所述变量特征,通过统计学法或聚类法对所述待检测日志序列中每个日志记录中的数值型变量的变量值进行异常检测,以确定变量值异常的日志记录;
基于所述窗口特征,通过主成分分析法对所述待检测日志序列中每个时间窗口内日志记录出现的频率进行异常检测,以确定频率异常的时间窗口中的日志记录组;
基于所述顺序特征,通过有限自动机的方法检测所述待检测日志序列中日志记录子序列是否属于预先建立的任务集合,以确定行为异常的日志记录子序列。
可选地,所述窗口特征的提取方法包括:
对所述待检测日志序列中的每一条日志记录,从所述日志模板库中匹配得到其使用的日志模板;
对所述待检测日志序列以预设长度的滑动窗口进行切分,统计每个窗口中各个日志模板出现的次数,作为时间窗口的窗口特征。
可选地,每次滑动窗口滑动的距离为半个窗口。
可选地,基于所述窗口特征,通过主成分分析法对待检测日志序列中每个时间窗口内日志记录出现的频率进行异常检测,包括:
基于每个时间窗口的窗口特征,生成窗口日志数量向量;
基于所述窗口日志数量向量,计算其在预先建立的残差子空间的平方预报误差,当平方预报误差大于预先确定的控制限时,当前时间窗口为异常的时间窗口;其中,所述残差子空间基于系统正常运行的日志记录通过主成分分析法建立。
可选地,所述变量特征的提取方法包括:
对所述待检测日志序列中的每一条日志记录,从所述日志模板库中匹配得到其使用的日志模板;
对所述待检测日志序列中的每一条日志记录,基于日志记录使用的日志模板提取数值型变量值作为该日志记录中相应变量的变量特征。
可选地,基于所述变量特征,通过统计学法或聚类法对待检测日志序列中每个日志记录中的数值型变量的变量值进行异常检测,包括
基于所述变量特征,将属于相同模板的相同数值型变量的变量值生成数据序列;
从所述数据序列中顺次提取N个数据,通过统计学法或聚类法进行异常检测。
可选地,所述统计学法基于3sigma法则建立,N的取值为100。
可选地,所述任务集合的建立方法包括:
获取批量的历史日志记录;
确定所述历史日志记录使用的日志模板;
基于所述日志模板,提取批量的历史日志记录的顺序特征;
基于所述顺序特征,通过统计方法生成日志的的共现矩阵,所述共现矩阵为三维数组,第一维和第二维是日志模板数量,第三维是日志各个模板输出位置的距离;
使用基于密度聚类的方法生成日志记录的任务集。
可选地,所述日志模板库的建立方法,包括:
步骤21、对批量的历史日志记录拆分字符和驼峰命名词,得到第一日志数据;
步骤22、用标签分词替换所述第一日志数据中的常见格式参数,所述常见格式参数包括但不限于:时间、日期、ip地址和路径,得到第二日志数据;
步骤23、构建多叉树结构,将所述第二日志数据中的日志记录逐条以分词为节点输入所述多叉树结构;
步骤24、遍历树形结构每一个节点的孩子节点,识别其数据格式;
步骤25、将同一格式的数量超过第一阈值且超过孩子节点预设比例的相同格式进行合并;
步骤26、将多叉树的叶子节点的id作为日志记录模板的日志模板标号,基于所有叶子节点建立日志模板库。
第二方面,本申请实施例提供一种日志异常检测装置,该装置包括:
日志获取模块,用于获取多条原始日志记录,作为待检测日志序列;
特征提取模块,用于基于预先建立的日志模板库,提取所述待检测日志序列的变量特征、窗口特征、顺序特征;所述日志模板库是通过对历史日志记录进行日志解析,模板抽取得到的;所述变量特征为日志记录的数值型变量值,所述窗口特征为时间窗口内各日志模板出现的次数,所述顺序特征为根据日志记录的输出顺序得到的日志模板序列;
异常检测模块,用于对所述待检测日志序列进行异常检测,包括:
基于所述变量特征,通过统计学法或聚类法对所述待检测日志序列中每个日志记录中的数值型变量的变量值进行异常检测,以确定变量值异常的日志记录;
基于所述窗口特征,通过主成分分析法对所述待检测日志序列中每个时间窗口内日志记录出现的频率进行异常检测,以确定频率异常的时间窗口中的日志记录组;
基于所述顺序特征,通过有限自动机的方法检测所述待检测日志序列中日志记录子序列是否属于预先建立的任务集合,以确定行为异常的日志记录子序列。
(三)有益效果
本申请的有益效果是:本申请提出了一种日志异常检测方法和装置,其中的方法包括:获取多条原始日志记录,作为待检测日志序列;基于预先建立的日志模板库,提取待检测日志序列的变量特征、窗口特征、顺序特征;基于变量特征,通过统计学法或聚类法对待检测日志序列中每个日志记录中的数值型变量的变量值进行异常检测;基于窗口特征,通过主成分分析法对待检测日志序列中每个时间窗口内日志记录出现的频率进行异常检测;基于顺序特征,通过有限自动机的方法检测待检测日志序列中日志记录子序列是否属于预先建立的任务集合。本申请中的方法能够将非结构化日志数据转化为结构化数据,对日志记录进行实时检测,及时、准确地获取日志信息以及日志记录中的异常数据。
进一步地,本系统针对日志数据的流式输出用增量处理方法,在日志输出的过程中不断通过历史数据检测新的异常。
附图说明
本申请借助于以下附图进行描述:
图1为本申请一个实施例中的日志异常检测方法流程示意图;
图2为本申请另一个实施例中的日志异常检测方法流程示意图;
图3为本申请另一个实施例中的日志解析和模板提取流程示意图;
图4为本申请另一个实施例中的模板库建立示例图;
图5为本申请另一个实施例中的日志特征提取过程示例图;
图6为本申请另一个实施例中的日志变量值柱状统计示例图;
图7为本申请另一个实施例中的日志柱状统计示例图;
图8为本申请另一个实施例中的行为序列异常检测流程示意图;
图9为本申请再一个实施例中的日志异常检测方法的系统架构示意图;
图10为本申请又一个实施例中的日志异常检测装置架构示意图。
具体实施方式
为了更好的解释本发明,以便于理解,下面结合附图,通过具体实施方式,对本发明作详细描述。可以理解的是,以下所描述的具体的实施例仅仅用于解释相关发明,而非对该发明的限定。另外还需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合;为了便于描述,附图中仅示出了与发明相关的部分。
日志是网络设备、系统及服务程序等在运行时产生的一个叫log的事件记录;每一行日志都记载着日期、时间、使用者及动作等相关操作的描述信息。日志记录了系统的生命周期,通过查阅日志,可以了解到系统在某个时刻所处的状态;通过对日志的分析,收集有用的数据,可以得到用户的使用信息和访问统计,为服务系统的优化和网络安全问题预防等提供依据。因此本申请提出一种日志异常检测方法,进行日志数据中异常日志的检测和识别。下面将参考附图并结合实施例来详细说明本申请。
实施例一
图1示出了本申请一个实施例中的日志异常检测方法流程示意图。如图所示,本实施例的日志异常检测方法包括:
S10、获取多条原始日志记录,作为待检测日志序列;
S20、基于预先建立的日志模板库,提取待检测日志序列的变量特征、窗口特征、顺序特征;日志模板库是通过对历史日志记录进行日志解析,模板抽取得到的;所述变量特征为日志记录的数值型变量值,所述窗口特征为时间窗口内各日志模板出现的次数,所述顺序特征为根据日志记录的输出顺序得到的日志模板序列;
S30、对待检测日志序列进行异常检测,包括:
基于变量特征,通过统计学法或聚类法对待检测日志序列中每个日志记录中的数值型变量的变量值进行异常检测,以确定变量值异常的日志记录;
基于窗口特征,通过主成分分析法对待检测日志序列中每个时间窗口内日志记录出现的频率进行异常检测,以确定频率异常的时间窗口中的日志记录组;
基于顺序特征,通过有限自动机的方法检测待检测日志序列中日志记录子序列是否属于预先建立的任务集合,以确定行为异常的日志记录子序列。
本发明方法针对日志系统进行自动数据处理解析和异常检测,首先将非结构化日志数据转化为结构化数据,然后使用机器学习和统计学方法并发的对日志进行异常检测,从多个角度发现系统的日志异常,及时、准确地获取异常日志信息以及异常检测数据。
实施例二
本申请第二个实施例针对日志异常数据的单点指标异常,日志组异常和行为序列异常,采用多种算法独立分析发掘,使得在日志输出的过程中不断通过历史数据检测新的异常,从而开发、测试、维护人员对异常日志条目进行解析之后,可以对软件系统进行调试和维护。
图2为本申请另一个实施例中的日志异常检测方法流程示意图,如图2所示,以下对该方法包括的各个步骤进行具体说明。
步骤1、采集原始日志数据,建立日志数据库。
本实施例中,采集文本文件是超级计算机(Blue Gene/L)的日志数据。
步骤2、从数据库中选取一定规模日志,进行日志解析和模板抽取,建立模板库。
模板解析是通过对大量的纯文本日志进行分析,区别系统日志原本的固定句式和其中变量。通过模板解析可以使原本的非结构化数据变为半结构化,可用作于后期算法的输入数据。经过日志解析输出的日志句型也可以方便后期的数据研究。
需要说明的是,由于日志数据是不断生成的,数据库中不断有新的日志被存储进来,针对检测模型需要进行周期性的更新,以保持对日志特征的准确描述。更新周期可以是一天、一周,或者由用户自己制定。在对检测模型进行更新时,需针对增量数据进行日志解析和模板抽取。
请参阅图3,图3为本申请另一个实施例中的日志解析和模板提取流程示意图。本实施例中,包括初始数据和增量数据的日志解析步骤包括:
步骤21、对原始日志进行分词,通过空格等符号拆分字符,以及拆分驼峰命名词;
步骤22、常见格式识别,用标签分词替换;
常见的一些格式可以是时间,日期,ip地址和路径等,将其用标签分词进行替换。
步骤23、选取一定规模的日志用于构建多叉树结构;
步骤24、将批量日志逐条以分词为节点输入多叉树结构;
使用树型结构存储日志语句的每一个分词,处在同一分支同一位置的相同内容的分词将会使用同一节点。
步骤25、遍历树形结构每一个节点的孩子节点,识别其数据格式;
步骤26、将数量超过阈值且超过孩子节点一定比例的相同格式进行合并;
分支合并,遍历树形结构的每一个节点,识别其孩子节点的内容与格式,当超过某一阈值时,其孩子节点中格式相同的节点会进行合并并剔除内容以格式的形式(如time,ip,url,num等)存储在相同位置。
步骤27、多叉树的叶子节点的id即为一条模板的日志模板标号,以此方法建立模板库。
需要说明的是,在对日志记录进行检测过程中,新的日志记录不断生成,数据库中不断有新的日志被存储进来,因此需要针对实时生成的日志记录不断更新模板库,以保持对日志特征的准确描述。模板库更新时,同样需针对增量数据进行日志解析和模板抽取。
步骤28、增量识别。
当新日志的分词节点加入多叉树后,算法会启动合并分支模块,该模块会遍历每个节点的孩子节点,若其中有超过阈值数量比例的格式相同,文本相近的节点,则将其合并,使用变量标签(如num,word等)进行替换;
增量更新时仅遍历新增节点及其兄弟节点,将日志分词短语加入日志模板树并在结束后启动合并分支,随后开始进行增量识别,每一条输入日志在分词之后从树的根节点进行匹配,标签节点则依据其格式进行匹配,若没有匹配项则新建节点,分词匹配完毕后,若有新增节点则对其父节点的子树遍历进行合并剪枝,即兄弟节点中超过阈值数量或比例的某一格式节点合并为一个标签节点,叶子节点的唯一标识号节点id作为该模板的id;最后输出日志模板标号(log key)。
本方法支持批量处理和增量处理两种方式,在首次启动对某日志源进行处理时,会进行先批量后增量的冷启动处理方式。系统每经过一时间周期会将树结构转为json格式并导出该系统下的日志模板进行存储,可以保存在数据库中或者是文件系统中,下次启动时会读取所有模板数据并继续增量更新模式,实现快速的热启动。
以下提供一个示例,针对日志样例具体说明模板抽取、建立模板库的过程。
日志样例:
22:15:30IDIP request opt rc[569098241]
22:15:31IDIP request opt[11016],rc[569098241]
22:15:32IDIP response on opt[4132],rc[569114625],msg[1000117965]
22:15:33IDIP request opt rc[569131009]
22:15:34IDIP request opt[1019],rc[569131009]
22:15:35IDIP response on opt[4136],rc[569131009],msg[1000117965]
对日志样例进行模板抽取,得到三种模板,分别是:
<time>-IDIP-request-opt-rc-<num>
<time>-IDIP-request-opt-<num>-rc-<num>
<time>-IDIP-response-on-opt-<num>-rc-<num>-msg-<num>
请参阅图4,图4为本申请另一个实施例中的模板库建立示例图。将22:15:30-22:15:32的三条日志逐条以分词为节点输入多叉树结构,可得到图4中(a)、(b)、(c)所示的多叉树结构,对(c)所示的多叉树进行标签分词替换可得到图中(d)所示的多叉树。
步骤3、根据日志模板,对日志进行处理和数据抽取,即特征提取。
本实施例中,提取的特征分别为顺序特征、变量特征、模板特征、窗口特征。
以下提供一个示例,具体说明特征提取的过程。图5为本申请另一个实施例中的日志特征提取过程示例图,如图5所示,首先进行日志收集。图中仅仅示出了收集到的7条日志记录,对这7条日志记录进行日志解析和模板抽取,得到四个日志模板,分别为log key1、log key2、log key3、log key4。对收集到的日志记录进行特征提取,可得到模板特征、顺序特征、变量特征、窗口特征。
顺序特征是日志所在模板标号的序列,如图所示,序列为13423421......
变量特征是同一日志模板中日志原文中属于变量的部分(如日志1,5同属模板1,其中变量352、353…为其变量特征)。
模板特征是对变量进行统一标识符替换后的日志模板。
窗口特征是该时间窗口下每个模板的出现频数。如图所示,log key 1:14中的14为模板log key 1频数,log key 2:19中的19为模板log key 2频数。
共现矩阵是三维矩阵,前两维为任意两个日志模板序列,第三维为两个模板在日志输出序列的所有相对距离。
在使用中,顺序特征是通过输入日志原文,得到的日志模板标号的顺序;变量特征是输入日志原文,查询日志模板分词,标注的结果;模板特征是通过输入日志ID,查询得到的日志模板;窗口特征是输入日志原文,查询得到的日志所属序列。
步骤4、采用单指标异常检测方法,和变量相关度分布度量,对日志中抽取的数据进行异常检测。
步骤41、单指标异常检测。
本实施例中单指标异常检测的方法可以是统计学法,如3sigma法。
单指标异常检测包括:录入日志数据,进行模版抽取,针对每个模版的每个变量数值构建三维数组进行统计,生成统计数据图,通过预设算法分析其中的离群异常点,标注为异常。以下对构建三维数组、生成统计数据图、通过算法分析其中的离群异常点进行展开说明。
首先基于开放域日志源,统计每个日志模板的每个变量数值,建立三维数组用于保存日志中的数值变量,其中第一维度是日志模板,长度等于日志模板数量,第二维度是该模板中的数值型变量个数,第三维度则是该数值变量位置所记载的值,针对每一条输入日志记录,依据模板格式提取其数值变量进行存储。
算法的输入为模板抽取的日志模板id和日志分词原文,通过算法分析数值,计算得出变量的概率分布,并基于概率分布通过算法找出数值的高概率分布区间,在区间之外找出其中的异常数值和离群数值。当系统中日志数量越多时,该算法的准确率会越来越高。
统计学法是对数值超过100个的变量进行检测,算法会依据统计结果模拟变量的概率分布,将分布概率过小的区域设定为临界阈值,阈值之外的变量所在日志则视为异常。3sigma法是假设某指标的概率分布是正态分布,则变量取值满足公式(1)所示的分布概率。
其中,μ是正态均值,描述质量特性值分布的集中位置,σ是正态方差,描述质量特性值x分布的分散程度。
当使用统计分布去估计概率分布时,μ值取我们的统计结果的平均值,而δ是统计结果的方差,则在区间μ±3δ内包含了99.73%的数据,区间以外可以视为离群的异常点。
图6为本申请另一个实施例中的日志变量值柱状统计示例图,如图6所示,纵坐标为变量值统计数量,横坐标为变量值,图中虚线代表算法依据统计分布所取的阈值,浅灰色数据区别于深灰色数据代表算法认定的阈值外的异常数据。
根据阈值可以得到异常变量值,进而检索整理得到异常数值所在的日志记录。
在增量处理模型中,加入了半滑动窗口的概念,以避免日志变量的存储增加。在已有的数据存储超过一定量时,新建一个数组进行新的存储,同时逐条输入的内容也会存储到以前的数组继续进行异常检测,在达到一定量时,废弃旧的数组后启用新的数组。
需要说明的是,在其他一些实施例中,单指标异常检测也可以采用单维聚类法。
步骤42、日志组异常检测。
步骤421、在目标系统正常运行时,从中采集日志记录,建立主成分模型。提取主成分,并计算相应的控制限。
控制限计算公式如公式(2)所示。
其中,ca为标准正态分布在置信度为a下的阈值,θ和h的计算如公式(3)和公式(4)所示。
其中,k为主成分分析(PCA)降维后的特征维度,m为数据原始特征维度,为x的协方差矩阵的特征值。
本实施例中,要检测的是时间窗口内日志记录的频率,因此在模型建立和日志记录检测时都需要对输入数据进行模板抽取的基础上,进行模板聚类,生成log key向量。
步骤422、将日志以时间窗口切分,统计该窗口中各个日志模板出现的次数,生成日志数量向量。
优选地,可以使用滑动窗口的方式将日志切分为日志组,每次检测后将窗口向后滑动半个窗口大小,以此充分考虑在窗口边缘被切分的行为串,使其在下一次检测时处于窗口的中心位置。
图7为本申请另一个实施例中的日志柱状统计示例图。图7显示了一个时间窗口中的日志数量柱状统计结果,横轴为日志模板序号,纵轴为日志数量。
步骤423、通过SPE统计量方法进行异常检测。
其中,对于一个日志记录x,其SPE值的计算如公式(2)所示。
SPE=xT(I-PPT)x (2)
其中,P为负载矩阵。
当样本的SPE值大于Qa时,则认为该组日志是异常的。
使用PCA(主成分分析)算法消除向量中的线性相关后,分析日志向量之间的比例关系,该算法可以发现某日志的出现频率异常增多或减少,从而可以避免系统在正常处于高峰低谷期时出现误报。
通过本实施例中的方法可以从一组日志中发现系统异常状态,定位错误发生的日志组即时间窗口。
步骤43、行为序列异常检测。
首先通过共现矩阵创建日志的初始任务集。
行为序列异常检测是通过记录日志模板的输出序列,统计生成日志log key之间的共现矩阵,使用基于密度聚类的方法生成日志的任务集,构造日志系统的输出行为拓扑图。行为拓扑图表示了日志日常情况的输出序列方式,以此识别异常序列。
图8为本申请另一个实施例中的行为序列异常检测流程示意图。以下结合图8对行为序列异常检测方法进行具体说明。
算法的输入为日志的模板id,通过取批量的100万数据首先构造共现矩阵,共现矩阵是一个三维数组,前两维是日志模板数量,第三维是模板到模板之间的日志距离,即相隔多少条日志。
具体来说,构造共现矩阵时,首先使用了一个数组,这方便快速的建立共现矩阵。该数组的长度是日志模板id的个数,即日志模板的数量,初始值为-1。在算法依次输入模板id的同时,该数组的该id位置0,其他正数部分(非-1的值)自动+1。显而易见地,该数组保存的是每一个模板id到该输入位置的距离,-1为从未出现过的。这样在每一次输入后,矩阵会更新每一个模板id到位置0id的距离。
通过共现矩阵中日志间隔数据,将距离小于任务集数量且共现概率大于某一阈值概率的日志模板加入任务集,通过日志模板的组合识别日志的分支结构。
任务集是被认定同属于一个输出流程的日志模板。输出的单条日志有相当一部分是某一个复杂的流程操作的一部分,这些流程有一定的操作流程规律。创建初始任务集时,算法遍历共现矩阵,找出两两日志模板之间共现距离小于等于1的概率大于某一阈值的组,创建任务集,在这种概率下,有充分的理由认为其处于同一个输出流程。再次遍历共现矩阵,对已有的任务集扩充,若是扩充任务集<a,b>的末尾,遍历共现矩阵,寻找满足的日志模板c,使之满足共现距离[a,c]<=2,[b,c]<=1的概率大于某一阈值,将c加入任务集。对于有多个满足的日志模板d,e,创建新的任务集<a,b,d>和<a,b,e>。对于日志输出流程中可能存在的分支结构,寻找可能存在的日志模板m和n,使之满足[a,m]<=1的概率加上[a,n]<=1的概率大于某一阈值,将<a,m>和<a,n>加入任务集。在不断遍历直至任务集无法扩充后,则认为任务集创建完毕。
然后依据任务集生成日志系统的行为拓扑图。
最后基于行为拓扑图进行检测,采用有限状态自动机的机制进行匹配,以应对日志系统可能出现的交叉任务情况。
在异常检测阶段,同样使用有限状态自动机的思路,即系统因为多线程的原因将可能属于两个流程的日志交叉输出的情况。在检测时,算法的输入同样为日志模板id,此时算法等待任意任务集的开始位,其他的输入认定为异常。例如此时有任务集<a,b,c>,它的正常输入应为a。若算法在输入a之后,它会开启一个任务,同时等待新任务的开启,这时的正常输入为a或b。若算法此时再次输入a,这依然被认为是正常的,例如两个线程开启并发执行,此时算法等待两个开启流程的后缀输入b和任务集开始位a,以此类推直到某一任务完毕,重新等待开始位。
通过算法得出的日志行为,系统可以在某处行为异常如丢失,乱序,错误分支时,快速发现并汇报异常。该算法从序列角度发现日志除单点错误外的日志序列错误,以便快速定位错误位置。
步骤5、合并异常结果,输出展示。
本发明方法立足于使用非监督的方法设计实现了针对开放域数据源的日志异常检测,充分应对了现在工业界的大数据运维压力。方法包括数据收集,日志解析,特征提取,异常检测,其中异常检测部分使用机器学习和统计学方法并发的对日志进行异常检测,从多个角度发现系统的日志异常;并且对日志数据的流式输出有增量处理方法,在日志输出的过程中不断通过历史数据检测新的异常,满足对日志进行实时检测的需求。
实施例三
图9为本申请再一个实施例中的日志异常检测方法的系统架构示意图。如图9所示,输入为日志数据,日志原文经过日志解析获得模板解析树和日志模板,并存储到数据库中;三个异常检测中,指标异常检测输入为日志原文和模板抽取的日志模板id,输出为异常日志;日志组异常检测输入为日志对应id序列,输出为异常日志;行为异常检测输入为日志对应id序列,输出异常日志和行为拓扑图,输出的异常日志和行为拓扑图存储到数据库中。本系统还提供外部数据接口,从而通过日志解析可以实现模板识别和日志id查询功能,通过行为异常检测可以实现行为序列查询功能。
实施例四
本申请第二方面提出了一种日志异常检测装置。图10为本申请一个实施例中的日志异常检测装置架构示意图。如图所示,本实施例中的日志异常检测装置100,可以包括:
日志获取模块101,用于获取多条原始日志记录,作为待检测日志序列;
特征提取模块102,用于基于预先建立的日志模板库,提取待检测日志序列的变量特征、窗口特征、顺序特征;日志模板库是通过对历史日志记录进行日志解析,模板抽取得到的;所述变量特征为日志记录的数值型变量值,所述窗口特征为时间窗口内各日志模板出现的次数,所述顺序特征为根据日志记录的输出顺序得到的日志模板序列;
异常检测模块103,用于对待检测日志序列进行异常检测,包括:
基于变量特征,通过统计学法或聚类法对待检测日志序列中每个日志记录中的数值型变量的变量值进行异常检测,以确定变量值异常的日志记录;
基于窗口特征,通过主成分分析法对待检测日志序列中每个时间窗口内日志记录出现的频率进行异常检测,以确定频率异常的时间窗口中的日志记录组;
基于顺序特征,通过有限自动机的方法检测待检测日志序列中日志记录子序列是否属于预先建立的任务集合,以确定行为异常的日志记录子序列。
上述日志异常检测装置可执行本申请实施例所提供的日志异常检测方法,具备执行方法相应的功能模块和有益效果。至于其中各个功能模块所执行的处理方法,例如日志获取模块101、特征提取模块102、异常检测模块103,可参照上述方法实施例中的描述,此处不再进行赘述。
上述的日志获取模块101、特征提取模块102、异常检测模块103通常可以设置在终端设备或服务器中。
用来实现本申请实施例的终端设备或服务器的计算机系统可以包括中央处理单元(CPU),其可以根据存储在只读存储器(ROM)中的程序或者从存储部分加载到随机访问存储器(RAM)中的程序而执行各种适当的动作和处理。在RAM中,还存储有系统操作所需的各种程序和数据。CPU、ROM以及RAM通过总线彼此相连。输入/输出(I/O)接口也连接至总线。
以下部件连接至I/O接口:包括键盘、鼠标等的输入部分;包括诸如阴极射线管(CRT)、液晶显示器(LCD)等以及扬声器等的输出部分;包括硬盘等的存储部分;以及包括诸如LAN卡、调制解调器等的网络接口卡的通信部分。通信部分经由诸如因特网的网络执行通信处理。驱动器也根据需要连接至I/O接口。可拆卸介质,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器上,以便于从其上读出的计算机程序根据需要被安装入存储部分。
应当注意的是,在权利要求中,不应将位于括号之间的任何附图标记理解成对权利要求的限制。词语“包含”不排除存在未列在权利要求中的部件或步骤。位于部件之前的词语“一”或“一个”不排除存在多个这样的部件。本发明可以借助于包括有若干不同部件的硬件以及借助于适当编程的计算机来实现。
此外,需要说明的是,在本说明书的描述中,术语“一个实施例”、“一些实施例”、“实施例”、“示例”、“具体示例”或“一些示例”等的描述,是指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不必须针对的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任一个或多个实施例或示例中以合适的方式结合。此外,在不相互矛盾的情况下,本领域的技术人员可以将本说明书中描述的不同实施例或示例以及不同实施例或示例的特征进行结合和组合。
尽管已描述了本发明的优选实施例,但本领域的技术人员在得知了基本创造性概念后,则可对这些实施例作出另外的变更和修改。所以,权利要求应该解释为包括优选实施例以及落入本发明范围的所有变更和修改。
显然,本领域的技术人员可以对本发明进行各种修改和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也应该包含这些修改和变型在内。

Claims (7)

1.一种日志异常检测方法,其特征在于,该方法包括:
S10、获取多条原始日志记录,作为待检测日志序列;
S20、基于预先建立的日志模板库,提取所述待检测日志序列的变量特征、窗口特征、顺序特征;所述日志模板库是通过对历史日志记录进行日志解析,模板抽取得到的;所述变量特征为日志记录的数值型变量值,所述窗口特征为时间窗口内各日志模板出现的次数,所述顺序特征为根据日志记录的输出顺序得到的日志模板序列;
S30、对所述待检测日志序列进行异常检测,包括:
基于所述变量特征,通过统计学法或聚类法对所述待检测日志序列中每个日志记录中的数值型变量的变量值进行异常检测,以确定变量值异常的日志记录;
基于所述窗口特征,通过主成分分析法对所述待检测日志序列中每个时间窗口内日志记录出现的频率进行异常检测,以确定频率异常的时间窗口中的日志记录组;
基于所述顺序特征,通过有限自动机的方法检测所述待检测日志序列中日志记录子序列是否属于预先建立的任务集合,以确定行为异常的日志记录子序列;
所述变量特征的提取方法包括:
对所述待检测日志序列中的每一条日志记录,从所述日志模板库中匹配得到其使用的日志模板;
对所述待检测日志序列中的每一条日志记录,基于日志记录使用的日志模板提取数值型变量值作为该日志记录中相应变量的变量特征;
所述日志模板库的建立方法,包括:
步骤21、对批量的历史日志记录拆分字符和驼峰命名词,得到第一日志数据;
步骤22、用标签分词替换所述第一日志数据中的常见格式参数,所述常见格式参数包括但不限于:时间、日期、ip地址和路径,得到第二日志数据;
步骤23、构建多叉树结构,将所述第二日志数据中的日志记录逐条以分词为节点输入所述多叉树结构;
步骤24、遍历树形结构每一个节点的孩子节点,识别其数据格式;
步骤25、将同一格式的数量超过第一阈值且超过孩子节点预设比例的相同格式进行合并;
步骤26、将多叉树的叶子节点的id作为日志记录模板的日志模板标号,基于所有叶子节点建立日志模板库。
2.根据权利要求1所述的日志异常检测方法,其特征在于,所述窗口特征的提取方法包括:
对所述待检测日志序列中的每一条日志记录,从所述日志模板库中匹配得到其使用的日志模板;
对所述待检测日志序列以预设长度的滑动窗口进行切分,统计每个窗口中各个日志模板出现的次数,作为时间窗口的窗口特征。
3.根据权利要求2所述的日志异常检测方法,其特征在于,每次滑动窗口滑动的距离为半个窗口。
4.根据权利要求3所述的日志异常检测方法,其特征在于,基于所述窗口特征,通过主成分分析法对待检测日志序列中每个时间窗口内日志记录出现的频率进行异常检测,包括:
基于每个时间窗口的窗口特征,生成窗口日志数量向量;
基于所述窗口日志数量向量,计算其在预先建立的残差子空间的平方预报误差,当平方预报误差大于预先确定的控制限时,当前时间窗口为异常的时间窗口;其中,所述残差子空间基于系统正常运行的日志记录通过主成分分析法建立。
5.根据权利要求1所述的日志异常检测方法,其特征在于,基于所述变量特征,通过统计学法或聚类法对待检测日志序列中每个日志记录中的数值型变量的变量值进行异常检测,包括
基于所述变量特征,将属于相同模板的相同数值型变量的变量值生成数据序列;
从所述数据序列中顺次提取N个数据,通过统计学法或聚类法进行异常检测。
6.根据权利要求5所述的日志异常检测方法,其特征在于,所述统计学法基于3sigma法则建立,N的取值为100。
7.根据权利要求1所述的日志异常检测方法,其特征在于,所述任务集合的建立方法包括:
获取批量的历史日志记录;
确定所述历史日志记录使用的日志模板;
基于所述日志模板,提取批量的历史日志记录的顺序特征;
基于所述顺序特征,通过统计方法生成日志的的共现矩阵,所述共现矩阵为三维数组,第一维和第二维是日志模板数量,第三维是日志各个模板输出位置的距离;
使用基于密度聚类的方法生成日志记录的任务集。
CN202011444338.8A 2020-12-08 2020-12-08 日志异常检测方法及装置 Active CN112579414B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202011444338.8A CN112579414B (zh) 2020-12-08 2020-12-08 日志异常检测方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202011444338.8A CN112579414B (zh) 2020-12-08 2020-12-08 日志异常检测方法及装置

Publications (2)

Publication Number Publication Date
CN112579414A CN112579414A (zh) 2021-03-30
CN112579414B true CN112579414B (zh) 2023-07-28

Family

ID=75130871

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202011444338.8A Active CN112579414B (zh) 2020-12-08 2020-12-08 日志异常检测方法及装置

Country Status (1)

Country Link
CN (1) CN112579414B (zh)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113064873B (zh) * 2021-04-15 2022-11-15 上海浦东发展银行股份有限公司 一种高召回率的日志异常检测方法
CN113032226A (zh) * 2021-05-28 2021-06-25 北京宝兰德软件股份有限公司 异常日志的检测方法、装置、电子设备及存储介质
CN113253499B (zh) * 2021-06-18 2021-09-28 深圳市泰科盛自动化系统有限公司 基于液晶屏检测的液晶屏自调节组装系统
CN114490235A (zh) * 2021-09-01 2022-05-13 北京云集智造科技有限公司 智能化识别日志数据中的数量关系及其异常的算法模型
CN114116410A (zh) * 2022-01-28 2022-03-01 北京安帝科技有限公司 一种日志解析方法及系统
CN114969335B (zh) * 2022-05-20 2024-02-20 北京九章云极科技有限公司 异常日志检测方法、装置、电子设备及可读存储介质

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070289013A1 (en) * 2006-06-08 2007-12-13 Keng Leng Albert Lim Method and system for anomaly detection using a collective set of unsupervised machine-learning algorithms
WO2016049307A1 (en) * 2014-09-26 2016-03-31 Oracle International Corporation Method and system for implementing efficient classification and exploration of data
US10721256B2 (en) * 2018-05-21 2020-07-21 Oracle International Corporation Anomaly detection based on events composed through unsupervised clustering of log messages
CN111782460A (zh) * 2020-06-04 2020-10-16 昆山伊莱智能软件科技有限公司 大规模日志数据的异常检测方法、装置和存储介质
CN112039907A (zh) * 2020-09-03 2020-12-04 重庆邮电大学 一种基于物联网终端评测平台的自动测试方法及系统

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
Min Du ; Feifei Li. Spell: Online Streaming Parsing of Large Unstructured System Logs.IEEE Transactions on Knowledge and Data Engineering.2019,全文. *
基于大规模网络日志的模板提取研究;崔元;计 算 机 科 学;全文 *

Also Published As

Publication number Publication date
CN112579414A (zh) 2021-03-30

Similar Documents

Publication Publication Date Title
CN112579414B (zh) 日志异常检测方法及装置
WO2021139235A1 (zh) 系统异常检测方法、装置、设备及存储介质
El-Masri et al. A systematic literature review on automated log abstraction techniques
US20220405592A1 (en) Multi-feature log anomaly detection method and system based on log full semantics
US10089581B2 (en) Data driven classification and data quality checking system
US20190392075A1 (en) Efficient data relationship mining using machine learning
US10083403B2 (en) Data driven classification and data quality checking method
CN113779272A (zh) 基于知识图谱的数据处理方法、装置、设备及存储介质
Shankar et al. Towards observability for production machine learning pipelines
Thaler et al. Towards a neural language model for signature extraction from forensic logs
CN112069069A (zh) 缺陷自动定位分析方法、设备及可读存储介质
CN115794803B (zh) 一种基于大数据ai技术的工程审计问题监测方法与系统
CN112905380A (zh) 一种基于自动化监控日志的系统异常检测方法
Mahdavi et al. Semi-Supervised Data Cleaning with Raha and Baran.
CN116841779A (zh) 异常日志检测方法、装置、电子设备和可读存储介质
CN118296164A (zh) 基于知识图谱的农产信息自动采集与更新方法及系统
CN115146062A (zh) 融合专家推荐与文本聚类的智能事件分析方法和系统
CN114416573A (zh) 一种应用程序的缺陷分析方法、装置、设备及介质
CN118093895A (zh) 一种知识图谱可视化开发系统
Turgeman et al. Context-aware incremental clustering of alerts in monitoring systems
CN115185920B (zh) 一种日志类型的检测方法、装置及设备
Nawaz et al. Analysis and classification of employee attrition and absenteeism in industry: A sequential pattern mining-based methodology
Kamoshida et al. Automated clustering and knowledge acquisition support for beginners
Liu et al. The runtime system problem identification method based on log analysis
Fält et al. Learning-Based Anomaly Detection Using Log Files with Sequential Relationships

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant