CN114329453A - 一种基于系统日志的异常检测方法 - Google Patents
一种基于系统日志的异常检测方法 Download PDFInfo
- Publication number
- CN114329453A CN114329453A CN202210011941.XA CN202210011941A CN114329453A CN 114329453 A CN114329453 A CN 114329453A CN 202210011941 A CN202210011941 A CN 202210011941A CN 114329453 A CN114329453 A CN 114329453A
- Authority
- CN
- China
- Prior art keywords
- log
- logs
- sequence
- anomaly detection
- digital
- 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.)
- Pending
Links
Images
Landscapes
- Debugging And Monitoring (AREA)
Abstract
本发明公开了一种基于系统日志的异常检测方法,包括:对系统日志进行收集并且进行预处理,对预处理后的系统日志进行日志解析,分离出日志的常量部分和可变部分,并归类出所有的日志类型,将文本日志用数字ID表示;提取出所有的日志模板,根据数字ID,获取到数字序列,使用滑动窗口的方式遍历此数字序列,提取到特征矩阵;将特征矩阵输入到深度学习模型进行训练,生成异常检测模型;根据数字序列,通过异常检测模型识别日志是否异常。本发明通过训练生成异常检测模型来实现日志异常检测,不但能够作为一种有效的通用异常检测方法,实现以在线的方式防御各种攻击,而且能够有效的提高日志异常检测的速率和准确率。
Description
技术领域
本发明属于网络安全异常检测领域,具体涉及一种基于系统日志的异常检测方法。
背景技术
系统的访问日志会记录访问者的所有操作过程,正常情况下,在一段时间内每个访问者的操作过程都有一定的规律性,比如访问者A每天访问系统的第一步大概率是请求登录页面,登陆成功后转到系统的首页,然后点击进入消息管理界面查看系统消息。但如果访问者A某天登录进系统后直接进行大量删除系统信息,这种情况就可能引起系统发生异常产生告警。
异常检测在现代大规模分布式系统的管理中起着重要作用,记录系统运行时信息的日志广泛用于异常检测。传统上,开发人员可以利用已有的经验和日志间的联系,制定维护一个规则库,用关键字搜索和规则匹配手动检查日志。然而现代系统的规模和复杂性不断增加,使得日志暴增,这使得人工检测变得不可行。
系统日志在各个关键点记录系统状态和重大事件,以帮助调试性能问题和故障,并进行根本原因分析。这样的日志数据几乎在所有计算机系统中普遍存在,并且是了解系统状态的宝贵资源。此外,由于系统日志记录了活跃运行过程中发生的重要事件,因此它们是用于在线监视和异常检测的极佳信息源。
利用系统日志数据进行异常检测的现有方法可以大致分为三类:基于PCA的日志消息计数器方法,基于不变量挖掘的方法来捕获不同日志键之间的共现模式和基于工作流的方法以识别程序逻辑流程中的异常执行。尽管它们在某些情况下是成功的,但它们都不能作为一种有效的通用异常检测方法,即能够以在线的方式防御各种攻击。
发明内容
发明目的:为了克服现有技术中存在的不足,提供一种基于系统日志的异常检测方法,不但可以利用大量的系统访问日志来提升异常检测的准确率,而且适用于通用异常检测。
技术方案:为实现上述目的,本发明提供一种基于系统日志的异常检测方法,包括如下步骤:
S1:对系统日志进行收集并且进行预处理,对预处理后的系统日志进行日志解析,分离出日志的常量部分和可变部分,并归类出所有的日志类型,将文本日志用数字ID表示;
S2:提取出所有的日志模板,根据数字ID,获取到数字序列,使用滑动窗口的方式遍历此数字序列,提取到特征矩阵;
S3:将特征矩阵输入到深度学习模型进行训练,生成异常检测模型;
S4:根据数字序列,通过异常检测模型识别日志是否异常。
进一步地,日志是纯文本,由常量部分和可变部分,在不同的事件中可能会有所不同。例如,给定日志"2021-05-1807:40:35172.28.19.5GET/images/ssk.png-80-172.28.19.2420000",其中加黑字体是系统中映射某一资源的URL地址,通常情况下在系统设计完成后,这种映射关系不会改变,因此可视为不可变的被称为常量部分。而其它的部分称为可变部分。常量部分可由开发人员在源代码中预定义,可变部分通常是动态生成的(例如,时间、访问IP、访问方式)在异常情况下不能很好地利用检测。日志解析的目的是分离常量部分和可变部分并形成完善的日志事件。日志解析的目的主要是把日志信息的常量部分和变化部分进行分离,并根据常量部分对日志进行聚类划分。
基于上述内容,所述步骤S1中日志解析的具体方法为:
A1:根据元素个数进行分区
将相同元素个数的日志划分为同类日志;
A2:根据元素位置进行分区
在进过步骤A1的划分后,日志的每个分区中的日志都有相同数量的元素数量,对于每一个分区,比较每一列上的变量的数量,找到变量数最少的一列,将此列标记为唯一值列,并进一步根据每行日志的唯一值列进行划分,具有相同唯一值列的日志划分为一类;
A3:通过数字对步骤A2分区后的日志进行进一步的分区;
A4:从每个分区抽象出可以代表分区特征的日志模板。
进一步地,所述步骤S2中数字序列的获取方法为:通过日志的时间戳进行划分会话,日志在文本中是按时间增长的顺序排列的,将一段时间内的所有日志划分为一个会话,得到一个数字序列。
进一步地,所述步骤S2中滑动窗口由窗口大小和步长两个属性组成。
进一步地,所述步骤S3中以数字序列作为输入,利用长短期神经网络算法对深度学习模型进行训练。
进一步地,所述步骤S3中长短期神经网络包括长短期记忆层,长短期记忆层用于提取卷积层输出中的时间特征,它的输出是一个数值ht,长短期记忆层由若干个LSTM基础单元组成,每个基础单元是一个LSTM细胞,每个LSTM细胞输入包括三部分:该细胞自身输入量xt,上一细胞传递来的细胞状态Ct-1,上一细胞的输出量ht-1;每个LSTM细胞输出包括两部分:该细胞的输出ht,该细胞的状态Ct;每个LSTM细胞包括三个门:遗忘门ft,输入门it,输出门ot。具体运作公式为:
ft=σ(Wf*[ht-1,xt]+bf)
it=σ(Wi*[ht-1,xt]+bi)
ot=σ(Wo*[ht-1,xt]+bo)
ht=ot*tanh(Ct)
式中,σ为激活函数,Wf,Wi,WC,Wo分别是遗忘门,输入门,状态单元,输出门的权重矩阵,bf,bi,bc,bo分别是遗忘门,输入门,状态单元,输出门的偏置项。
进一步地,所述步骤S4中异常检测模型通过数字ID序列的概率分布Pt进行异常检测识别。
原始的文本日志处理成了多组的数字序列。每行数字序列代表T时间段内系统产生的所有日志,而每个数字代表着一条原始文本日志。给定一个数字序列,LSTM网络模型被训练,它学习训练一个数字ID序列的概率分布Pt。
所述概率分布Pt的表达式如下:
Pt(mt=ki|mt-h,…,mt-2,mt-1)
Pt就是根据已知数字序列mt-h,…,mt-2,mt-1,推测出在mt=ki的情况下的概率分布,mt表示t时刻的一条日志,h是滑动窗口的大小,ki表示mt时刻日志ID值。
循环神经网络(RNN)是一个人工神经网络,它使用循环将最后一个状态的输出转发到当前输入,从而跟踪历史以进行预测。长短期记忆(LSTM)网络是RNN的一个实例,能够记住序列的长期依赖性。
已知系统日志中的条目是由执行结构化源代码产生的一系列事件,因此根据LSTM算法的特性,本发明使用LSTM神经网络进行设计检测模型,以通过系统日志在线检测异常。
本发明方法主要适用于检测Tomcat服务器系统产生的访问日志,一条普通的访问日志主要由主机IP、时间、URL、访问者IP、访问者系统配置、状态码等若干部分组成。该方法主要用到了其中的URL、时间和访问者IP这三个属性,具有相同URL的日志都归为一类日志并用统一的数字id标注,把这个id添加为日志的一个属性。然后以访问者IP为基准,以时间增长为顺序,排列出每个访问者IP访问的所有日志,以数字id代表每一行日志,就得到一个数字序列,通过用长短期记忆(Long short-termmemory,LSTM)算法使用此数字序列训练出检测模型。
有益效果:本发明与现有技术相比,将系统日志建模为自然语言序列,这样就可以自动地从正常执行中学习日志模式并在正常执行情况下日志模式偏离日志数据训练的模型时检测异常,在训练模型过程中仅需要一系列“正常日志条目”组成的数据集,得到的模型可以识别正常的日志序列,并可以以流量方式用于对传入日志条目进行在线异常检测,不但能够作为一种有效的通用异常检测方法,实现以在线的方式防御各种攻击,而且能够有效的提高日志异常检测的速率和准确率。
附图说明
图1为基于日志的异常检测框架图;
图2为本实施例中给出的1-m和m-1示例的日志类别;
图3为按元素位置分区的示意图;
图4为日志模板提取示意图;
图5为特征提取示意图;
图6为滑动窗口的示意图;
图7为本实施例中的精度预测图。
具体实施方式
下面结合附图和具体实施例,进一步阐明本发明,应理解这些实施例仅用于说明本发明而不用于限制本发明的范围,在阅读了本发明之后,本领域技术人员对本发明的各种等价形式的修改均落于本申请所附权利要求所限定的范围。
本发明提供一种基于系统日志的异常检测方法,如图1所示,其包括如下步骤:
S1:对预处理后的系统日志进行日志解析,分离出日志的常量部分和可变部分,并归类出所有的日志类型,将文本日志用数字ID表示;
日志解析的具体方法为:
A1:根据元素个数进行分区
将相同元素个数的日志划分为同类日志;每条日志都是由多个元素组成的,例如日志“workerEnv.init()ok*”,它包含“workerEnv.init()”、“ok”和“*”三个元素,三个元素以空格分隔。假设具有相同格式的日志具有相同的元素个数,然后使用元素个数对日志进行划分,有相同元素个数的日志都可以被划分为同类日志。例如,workerEnv.init()okA和workerEnv.init()okB都有三个元素,他们属于同一类日志。
A2:根据元素位置进行分区
在进过步骤A1的划分后,日志的每个分区中的日志都有相同数量的元素数量,对于每一个分区,比较每一列上的变量的数量,找到变量数最少的一列,将此列标记为唯一值列,并进一步根据每行日志的唯一值列进行划分,具有相同唯一值列的日志划分为一类,本实施例中此步骤具体可参照图3;
A3:通过数字进行分区
在经过步骤A2的简单分区后,每个分区中的日志基本都属于同一类别,但是也有一些特殊情况,本实施例列举了1-m和m-1两种情况,具体如图2所示:
在所给日志实例中,“TrustedInstaller”后可能跟“finalization”和“initialization”等多个不同的元素,就形成了1-m的映射关系。同理,如图2所示也可能出现m-1的映射关系,而m侧位置上的元素如果包含数字就被认定为变量,两条日志还是属于同类日志,否则m侧元素被认定为常量值,如果是常量值就可以按这个不同的常量值进一步分区,如图2所示,1和2属于不同类别的日志,3和4是同一类别的日志。
A4:从每个分区抽象出可以代表分区特征的日志模板:
经过步骤A1-A3,日志已经基本分区完成,此步骤将会从每个分区抽象出可以代表分区特征的日志模板。日志模板由一行文本组成,其中常量值按字面意思表示,变量值使用通配符“*”进行表示;
本实施例中如图4所示,在同一个分区中,每行日志的元素个数都是相同的,在同一列上如果出现两个或两个以上的不同值就会认定此列是变量列,在模板中此列用通配符“*”表示,常量值按字面值表示,最后,可以得到所有的日志模板,对所有的日志模板用数字进行编码,每行日志都有对应的日志模板。
S2:提取出所有的日志模板,根据数字ID,获取到数字序列,使用滑动窗口的方式遍历此数字序列,提取到特征矩阵:
将日志解析成单独的事件后,需要进一步将它们编码成数字特征向量,从而可以应用机器学习模型。
在经过步骤S1的日志解析后,就可以提取出所有的日志模板,每行日志都有唯一对应的日志模板,每个模板也有对应的数字ID,本实施例中用这个数字ID表示此行日志,这样原来的文本形式的日志就可以用数字ID进行表示,如图5所示,原本的5行日志,就可以用[1,2,3,4,5]来表示。
参照图5,进行特征提取:
特征提取的主要目的是从日志事件中提取有价值的特征,这些特征可以被输入异常检测模型。特征提取的输入是日志解析步骤中生成的数字ID。为了提取特征,本实施例首先通过日志的时间戳进行划分会话,日志在文本中是按时间增长的顺序排列的,将T时间内的所有日志划分为一个会话。例如log1的时间戳为0,logn的时间戳为T,那么从log1到logn这n个日志被划分为一个日志会话,此时日志可以用各自对应的模板ID表示,得到了一个数字序列,其可以作为模型的输入,最后使用滑动窗口的方式遍历此数字序列,获取到特征矩阵。
本实施例中滑动窗口由窗口大小和步长两个属性组成,例如每小时或每30分钟窗口滑动一次。通常,步长小于窗口大小,因此可能会导致不同窗口的重叠。图6显示了窗口的大小为h,而步长是转发距离。发生在同一滑动窗口中的日志也被分组为日志序列。
S3:将特征矩阵输入到深度学习模型进行训练,生成异常检测模型:
本实施例中以数字序列作为输入,利用长短期神经网络算法对深度学习模型进行训练,长短期神经网络包括长短期记忆层,长短期记忆层用于提取卷积层输出中的时间特征,它的输出是一个数值ht,长短期记忆层由若干个LSTM基础单元组成,每个基础单元是一个LSTM细胞,每个LSTM细胞输入包括三部分:该细胞自身输入量xt,上一细胞传递来的细胞状态Ct-1,上一细胞的输出量ht-1;每个LSTM细胞输出包括两部分:该细胞的输出ht,该细胞的状态Ct;每个LSTM细胞包括三个门:遗忘门ft,输入门it,输出门ot。具体运作公式为:
ft=σ(Wf*[ht-1,xt]+bf)
it=σ(Wi*[ht-1,xt]+bi)
ot=σ(Wo*[ht-1,xt]+bo)
ht=ot*tanh(Ct)
式中,σ为激活函数,Wf,Wi,WC,Wo分别是遗忘门,输入门,状态单元,输出门的权重矩阵,bf,bi,bc,bo分别是遗忘门,输入门,状态单元,输出门的偏置项。
S4:根据数字序列,通过异常检测模型识别日志是否异常:
本实施例中异常检测模型通过数字ID序列的概率分布Pt进行异常检测识别。
概率分布Pt的表达式如下:
Pt(mt=ki|mt-h,…,mt-2,mt-1)
Pt就是根据已知数字序列mt-h,…,mt-2,mt-1,推测出在mt=ki的情况下的概率分布,mt表示t时刻的一条日志,h是滑动窗口的大小,ki表示mt时刻日志ID值。
基于上述方案可知,本发明方法主要实现过程是输入一个数字序列,模型根据训练阶段观察到执行模式来预测接下来将发生什么。如果一个序列集合w在训练阶段从不跟随一个特定值k,那么Pt(mt=k|w)=0。对应的,如果一个序列w总是跟随着一个k,则Pt(mt=k|w)=1。例如,一个已知序列w={1,2,3}输出的预测结果为Pt(mt=4|w)=1,那么就知道“1,2,3,4”是一个正常的序列。在实际情况下,Pt可能有多个值,就表示w序列后边可能有多种情况,例如“1,2,3,4”、“1,2,3,5”,“1,2,3,6”等。这样就能得到一个预测w序列后出现值的概率分布,以此来检测实际数据序列是否有出现异常的情况。
为了验证和分析上述方法的实际性能,本实施例中将本发明方法与已知的TFIDF检测模型相比,只需要训练正常的数据即可。TFIDF是将LSTM模型构造为二进制分类器,该模型需要已标记的正常数据和异常数据进行训练,不仅很难获取数据异常日志,而且可能无法检测到训练数据中包含的新型异常。
本实施例中将本发明方法与已知的主成分分析(PCA)方法相比,主成分分析(PCA)方法假设在日志文件中存在不同的“会话(sessions)”,以至于可以通过附加到每个日志的会话ID识别出这些“会话”,它首先按会话对日志键进行分组,然后计算每个会话内每个日志键值出现的次数。会话向量的大小为n,代表该会话中每个日志键出现的次数,形成一个矩阵,其中每一列是一个日志键,每一行是一个会话。PCA通过测量变换坐标系的剩余子空间上的投影长度来检测异常向量。这种方法比在线PCA更为有效,特别是在减少假阳性方面,但这显然是一种离线方法,不能用于在线异常检测。
除了使用假阳性(FP)和假阴性(FN)之外,本发明方法还使用了标准度量,例如精度(Precision)、召回率(Recall)和F度量(F-measure)。在使用同样的的数据集前提下,本实施例将本发明方法、PCA、TFIDE三种方法进行对比试验,获取到如图7所示的预测结果。
可见,本发明方法可以从日志中分离出不同的任务,并使用深度学习LSTM方法为每个任务构建工作模型,这样可以进行有效的异常诊断。实验结果也表明预测准确率相比于目前的PCA和TFIDF方法有进一步的提高。
Claims (9)
1.一种基于系统日志的异常检测方法,其特征在于,包括如下步骤:
S1:对预处理后的系统日志进行日志解析,分离出日志的常量部分和可变部分,并归类出所有的日志类型,将文本日志用数字ID表示;
S2:提取出所有的日志模板,根据数字ID,获取到数字序列,使用滑动窗口的方式遍历此数字序列,提取到特征矩阵;
S3:将特征矩阵输入到深度学习模型进行训练,生成异常检测模型;
S4:根据数字序列,通过异常检测模型识别日志是否异常。
2.根据权利要求1所述的一种基于系统日志的异常检测方法,其特征在于,所述步骤S1中日志解析的具体方法为:
A1:根据元素个数进行分区
将相同元素个数的日志划分为同类日志;
A2:根据元素位置进行分区
在进过步骤A1的划分后,日志的每个分区中的日志都有相同数量的元素数量,对于每一个分区,比较每一列上的变量的数量,找到变量数最少的一列,将此列标记为唯一值列,并进一步根据每行日志的唯一值列进行划分,具有相同唯一值列的日志划分为一类;
A3:通过数字对步骤A2分区后的日志进行进一步的分区;
A4:从每个分区抽象出可以代表分区特征的日志模板。
3.根据权利要求1所述的一种基于系统日志的异常检测方法,其特征在于,所述步骤S2中数字序列的获取方法为:通过日志的时间戳进行划分会话,日志在文本中是按时间增长的顺序排列的,将一段时间内的所有日志划分为一个会话,得到一个数字序列。
4.根据权利要求1所述的一种基于系统日志的异常检测方法,其特征在于,所述步骤S2中滑动窗口由窗口大小和步长两个属性组成。
5.根据权利要求1所述的一种基于系统日志的异常检测方法,其特征在于,所述步骤S3中以数字序列作为输入,利用长短期神经网络算法对深度学习模型进行训练。
6.根据权利要求5所述的一种基于系统日志的异常检测方法,其特征在于,所述步骤S3中长短期神经网络包括长短期记忆层,长短期记忆层用于提取卷积层输出中的时间特征,它的输出是一个数值ht,长短期记忆层由若干个LSTM基础单元组成,每个基础单元是一个LSTM细胞,每个LSTM细胞输入包括三部分:该细胞自身输入量xt,上一细胞传递来的细胞状态Ct-1,上一细胞的输出量ht-1;每个LSTM细胞输出包括两部分:该细胞的输出ht,该细胞的状态Ct;每个LSTM细胞包括三个门:遗忘门ft,输入门it,输出门ot。
8.根据权利要求1所述的一种基于系统日志的异常检测方法,其特征在于,所述步骤S4中异常检测模型通过数字ID序列的概率分布Pt进行异常检测识别。
9.根据权利要求8所述的一种基于系统日志的异常检测方法,其特征在于,所述概率分布Pt的表达式如下:
Pt(mt=ki|mt-h,...,mt-2,mt-1)
Pt就是根据已知数字序列mt-h,...,mt-2,mt-1,推测出在mt=ki的情况下的概率分布,mt表示t时刻的一条日志,h是滑动窗口的大小,ki表示mt时刻日志ID值。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210011941.XA CN114329453A (zh) | 2022-01-06 | 2022-01-06 | 一种基于系统日志的异常检测方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210011941.XA CN114329453A (zh) | 2022-01-06 | 2022-01-06 | 一种基于系统日志的异常检测方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114329453A true CN114329453A (zh) | 2022-04-12 |
Family
ID=81024259
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210011941.XA Pending CN114329453A (zh) | 2022-01-06 | 2022-01-06 | 一种基于系统日志的异常检测方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114329453A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117667497A (zh) * | 2024-01-31 | 2024-03-08 | 中国铁道科学研究院集团有限公司通信信号研究所 | 一种调度集中系统的自动化故障分析方法及系统 |
-
2022
- 2022-01-06 CN CN202210011941.XA patent/CN114329453A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117667497A (zh) * | 2024-01-31 | 2024-03-08 | 中国铁道科学研究院集团有限公司通信信号研究所 | 一种调度集中系统的自动化故障分析方法及系统 |
CN117667497B (zh) * | 2024-01-31 | 2024-04-16 | 中国铁道科学研究院集团有限公司通信信号研究所 | 一种调度集中系统的自动化故障分析方法及系统 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Du et al. | Lifelong anomaly detection through unlearning | |
CN110321371B (zh) | 日志数据异常检测方法、装置、终端及介质 | |
Xu et al. | Online system problem detection by mining patterns of console logs | |
Fu et al. | Digging deeper into cluster system logs for failure prediction and root cause diagnosis | |
Xie et al. | Logm: Log analysis for multiple components of hadoop platform | |
Pal et al. | DLME: distributed log mining using ensemble learning for fault prediction | |
Itkin et al. | User-assisted log analysis for quality control of distributed fintech applications | |
Wagner et al. | Timesead: Benchmarking deep multivariate time-series anomaly detection | |
Zhao et al. | A survey of deep anomaly detection for system logs | |
Cavallaro et al. | Identifying anomaly detection patterns from log files: A dynamic approach | |
Qian et al. | Anomaly detection in distributed systems via variational autoencoders | |
Jose et al. | Anomaly detection on system generated logs—a survey study | |
CN114329453A (zh) | 一种基于系统日志的异常检测方法 | |
Zhang et al. | Logattn: Unsupervised log anomaly detection with an autoencoder based attention mechanism | |
Han et al. | InterpretableSAD: Interpretable anomaly detection in sequential log data | |
Egersdoerfer et al. | Clusterlog: Clustering logs for effective log-based anomaly detection | |
Saberi et al. | A passive online technique for learning hybrid automata from input/output traces | |
CN111949852A (zh) | 一种基于互联网大数据的宏观经济分析方法及系统 | |
Jin et al. | Data-driven resiliency solutions for boards and systems | |
Li et al. | Logspy: System log anomaly detection for distributed systems | |
Murtaza et al. | On the comparison of user space and kernel space traces in identification of software anomalies | |
Li et al. | Glad: Content-aware dynamic graphs for log anomaly detection | |
CN113535458B (zh) | 异常误报的处理方法及装置、存储介质、终端 | |
Hacker et al. | A markov random field based approach for analyzing supercomputer system logs | |
Zhang et al. | Probabilistic autoencoder with multi-scale feature extraction for multivariate time series anomaly detection |
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 |