CN103514398B - 一种实时在线日志检测方法及系统 - Google Patents
一种实时在线日志检测方法及系统 Download PDFInfo
- Publication number
- CN103514398B CN103514398B CN201310492962.9A CN201310492962A CN103514398B CN 103514398 B CN103514398 B CN 103514398B CN 201310492962 A CN201310492962 A CN 201310492962A CN 103514398 B CN103514398 B CN 103514398B
- Authority
- CN
- China
- Prior art keywords
- daily record
- section
- log
- sequence
- relative entropy
- 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
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/55—Detecting local intrusion or implementing counter-measures
- G06F21/552—Detecting local intrusion or implementing counter-measures involving long-term monitoring or reporting
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/55—Detecting local intrusion or implementing counter-measures
- G06F21/554—Detecting local intrusion or implementing counter-measures involving event detection and direct action
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/57—Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
- G06F21/577—Assessing vulnerabilities and evaluating computer system security
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2221/00—Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/03—Indexing scheme relating to G06F21/50, monitoring users, programs or devices to maintain the integrity of platforms
- G06F2221/033—Test or assess software
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2221/00—Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/03—Indexing scheme relating to G06F21/50, monitoring users, programs or devices to maintain the integrity of platforms
- G06F2221/034—Test or assess a computer or a system
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computing Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明涉及一种实时在线日志检测方法,包括:步骤1:将整个的训练日志转换为一个离散事件序列;步骤2:建立一个检测模型;步骤3:将待测日志分段生成至少一个日志段,并为每个日志段分配日志段序列;步骤4:对一个日志段进行异常程度评分,得到相对熵;步骤5:判断相对熵是否为正值,如果是,当前日志段异常,跳至步骤7;否则,当前日志段为正常;步骤6:判断相对熵是否大于阈值,如果是,当前日志段为异常;否则,跳至步骤8;步骤7:发送异常警告给用户,待检测程序恢复到检测所述日志段之前的状态;步骤8:判断异常日志中是否存在未评分日志段,如果是,跳转至步骤4;否则,结束。本发明可实时检测异常,且不需要设置复杂的参数,简单有效。
Description
技术领域
本发明涉及一种实时在线日志检测方法及系统,属于计算机领域。
背景技术
随着互联网的不断发展,各类网络应用在人们生产和生活中发挥着越来越重要的作用。但与此同时,针对网络应用的攻击不断涌现,如各类病毒、蠕虫等1。另一方面,随着网络应用的规模越来越大以及商用硬件作为服务的趋势的发展,网络应用的执行路径难以预测,硬件环境不再可靠,因此难以在部署前发现所有可能出现的错误。一旦针对网络应用的攻击得手或者网络应用自身出现异常,将给网络应用的所有者及用户带来不可估量的损失。
攻击和错误发现的越早,所能采用的补救措施就越多,造成的损失就会越少。因此,在线异常检测受到了学术界和工业界的重视。常用的基于压缩的异常检测方法是分析应用的日志。在应用运行的过程中,应用本身和各种监控程序都会产生各类日志来记录应用的状态、重要的运行事件和网络流量,因此日志中包含应用运行的动态信息,适合用来进行异常检测。
传统日志分析是通过人工参与或者使用事前定义好的规则来完成的。当日志大小有限以及异常类型事先可知时,这些方法非常有效并且也很灵活。当时如果程序产生了百万行日志,人工处理日志就不太现实了。不可预测的异常也不适合用预定义的规则处理。
因此,异常检测转而采用自动在线异常检测的方法,特别是一类以离散序列为输入的基于压缩的异常检测方法被用来分析日志。这类算法将日志所蕴含的事件序列分为段,并为每一段赋一个异常得分。之前这些方法中的大多数是基于统计模型或者马尔可夫模型的,它们都依赖于某些特定的假设例如:
正常的日志项满足一个特定的分布。
日志项的出现是独立事件。
日志项满足马尔可夫性质,即一条日志项只与它之前的几条日志项相关。
对于某些日志来说,这些假设都是成立的,但是并不适合所有的日志。如果日志中的日志项和其他日志项之间有复杂和隐式的关系,那么这些方法就会忽略这些联系或者提前定义它的结构,这样很有可能抓不住日志的特性。同时,也有一些日志不能用马尔可夫模型表达。当这些假设不成立时,基于统计模型和马尔可夫模型的方法就不会有很高的性能。
为了解决上述提出的问题,提供了一种基于压缩的基于压缩的异常检测方法,它并不依赖于日志项分布的假设。基于压缩的基于压缩的异常检测方法可以依据正常日志和异常日志的散度(相对熵)将它们区分开来。相对熵是一种相似度评价方法,它用来表示两种分布之间的区别。相对熵越大,那么测试日志和训练日志的区别也就越大,但这样测试日志很有可能是异常的。
发明内容
本发明所要解决的技术问题是,针对现有技术的不足,提供一种不依赖于日志项分布的假设,不需要设置复杂的参数,且简单有效的实时在线日志检测方法。
本发明解决上述技术问题的技术方案如下:一种实时在线日志检测方法,具体包括以下步骤:
步骤1:将整个的训练日志转换为一个离散事件序列;
步骤2:使用训练日志所转化的离散事件序列建立一个检测模型;
步骤3:将待测日志分段生成至少一个日志段,并为每个日志段分配日志段序列;
步骤4:按照日志段序列顺序选取一个日志段,使用异常评分公式对所述日志段进行异常程度评分,得到所述日志段的相对熵;
步骤5:判断相对熵是否为正值,如果是,当前日志段为异常,并跳转至步骤7;否则,判断当前日志段为正常;
步骤6:将相对熵与预设的阈值相比较,判断相对熵是否大于阈值,如果是,当前日志段为异常,并跳转至步骤7;否则,将所述日志段拼接到正常程序上,跳转至步骤8;
步骤7:发送异常警告给用户,待检测程序恢复到检测所述日志段之前的状态;
步骤8:判断异常日志中是否存在未评分日志段,如果存在,跳转至步骤4;否则,结束。
相对熵是一种相似度评价方法,它用来表示两种分布之间的区别。相对熵越大,那么测试日志和训练日志的区别也就越大,这样测试日志很有可能是异常的。
本发明的有益效果是:本发明所述方法可以依据正常日志和异常日志的散度(相对熵)将它们区分开来。本发明不需要事先假设,也不需要设置许多参数;相对熵是一种相似度评价方法,它用来表示两种分布之间的区别。相对熵越大,那么测试日志和训练日志的区别也就越大,这样测试日志很有可能是异常的,本发明提供的方法所需的所有操作只有压缩,而压缩算法一般都很快,因此本发明可以实现实时检测异常,并且不需要设置复杂的参数,简单有效。
在上述技术方案的基础上,本发明还可以做如下改进。
进一步,所述步骤4中所述的异常评分公式具体如下列公式(1)所述:
其中:M为所有正常日志事件所组成的序列,m为当前待检测的日志事件序列,Score(m)为对当前检测的日志时间序列m的异常程度评分(即日志段的相对熵),其中uc(*)代表将事件看作字符并使用某种通用压缩算法进行压缩后的比特数,Mm代表序列M和m的连接,λ为用来控制评分公式阈值的参数。
进一步,所述步骤1可采用以下四种方法中任一种实现将整个的训练日志转换为一个离散事件序列:
a.无监督聚类方法;
b.启发式算法:该算法将日志记录中的数字、路径或IP地址视为参数并将去掉参数后的消息模板视为事件;
c.代码分析:通过分析二进制代码或者源代码,可以获得比启发式算法更精确的消息模板;
d.使用领域特定的知识:在一些日志中,事件可能已经明确记录在日志中,或可以通过行号等信息准确推算出。
采用上述进一步方案的有益效果是,无监督聚类方法通过聚类方式将日志转化为事件需要大量计算,而且如果距离函数选择得不合适,聚类的效果也会比较差;启发式算法将日志记录中的数字、路径或IP地址视为参数并将去掉参数后的消息模板视为事件。该方法比较简单易行,但是无法处理格式复杂的日志;代码分析:通过分析二进制代码或者源代码,可以获得比启发式算法更精确的消息模板;比如,如果日志用C风格的输出,那么我们可以直接从printf的调用中区分出消息模板和参数;使用领域特定的知识:在一些日志中,事件可能已经明确记录在日志中,或可以通过行号等信息准确推算出;但是,这种方式需要手工地分析训练日志。
进一步,所述公式(1)中的相对熵采用文法压缩方法进行计算。
本发明所要解决的技术问题是,针对现有技术的不足,提供一种不依赖于日志项分布的假设,不需要设置复杂的参数,且简单有效的日志检测系统。
本发明解决上述技术问题的技术方案如下:一种日志检测系统,包括:转换模块、训练模块、分段模块、评分模块、判断模块和阈值比较模块;
所述转换模块用于将整个的训练日志转换为一个离散事件序列;
所述训练模块用于使用训练日志所转化的离散事件序列建立一个检测模型;
所述分段模块用于将待测日志分段生成至少一个日志段,并为每个日志段分配日志段序列;
所述评分模块用于按照日志段序列顺序选取一个日志段,使用异常评分公式对所述日志段进行异常程度评分,得到所述日志段的相对熵;
所述判断模块用于判断相对熵是否为正值,如果是,当前日志段为异常,并发送异常警告给用户,待检测程序恢复到检测所述日志段之前的状态;否则,判断当前日志段为正常,并将相对熵发送至阈值比较模块;
所述阈值比较模块用于将相对熵与预设的阈值相比较,判断相对熵是否大于阈值,如果是,当前日志段为异常,并发送异常警告给用户;否则,将所述日志段拼接到正常程序上。
相对熵是一种相似度评价方法,它用来表示两种分布之间的区别。相对熵越大,那么测试日志和训练日志的区别也就越大,这样测试日志很有可能是异常的。
本发明的有益效果是:本发明所述系统可以依据正常日志和异常日志的散度(相对熵)将它们区分开来。相对熵是一种相似度评价方法,它用来表示两种分布之间的区别。相对熵越大,那么测试日志和训练日志的区别也就越大,这样测试日志很有可能是异常的,本发明提供的系统所需的所有操作只有压缩,而压缩算法一般都很快,因此本发明可以实现实时检测异常,并且不需要设置复杂的参数,简单有效。
在上述技术方案的基础上,本发明还可以做如下改进。
进一步,所述评分模块中所述的异常评分公式具体如下列公式(1)所述:
其中:M为所有正常日志事件所组成的序列,m为当前待检测的日志事件序列,Score(m)为对当前检测的日志时间序列m的异常程度评分(即日志段的相对熵),其中uc(*)代表将事件看作字符并使用某种通用压缩算法进行压缩后的比特数,Mm代表序列M和m的连接,λ为用来控制评分公式阈值的参数。
进一步,所述转换模块可采用以下四种方法中任一种实现将整个的训练日志转换为一个离散事件序列:
a.无监督聚类方法;
b.启发式算法:该算法将日志记录中的数字、路径或IP地址视为参数并将去掉参数后的消息模板视为事件;
c.代码分析:通过分析二进制代码或者源代码,可以获得比启发式算法更精确的消息模板;
d.使用领域特定的知识:在一些日志中,事件可能已经明确记录在日志中,或可以通过行号等信息准确推算出。
采用上述进一步方案的有益效果是,无监督聚类方法通过聚类方式将日志转化为事件需要大量计算,而且如果距离函数选择得不合适,聚类的效果也会比较差;启发式算法将日志记录中的数字、路径或IP地址视为参数并将去掉参数后的消息模板视为事件。该方法比较简单易行,但是无法处理格式复杂的日志;代码分析:通过分析二进制代码或者源代码,可以获得比启发式算法更精确的消息模板;比如,如果日志用C风格的输出,那么我们可以直接从printf的调用中区分出消息模板和参数;使用领域特定的知识:在一些日志中,事件可能已经明确记录在日志中,或可以通过行号等信息准确推算出;但是,这种方式需要手工地分析训练日志。
进一步,所述公式(1)中的相对熵采用文法压缩方法进行计算。
CADM(compression-based anomaly detection method),即基于压缩的基于压缩的异常检测方法,在CADM中,我们选择了一类压缩算法——文法压缩来进行相对熵的估计。实际上,在文法压缩之前,有许多压缩算法都被证明是通用的。传统上它们可以被分为两类:进行显式概率估计的自适应压缩算法,如算术编,以及进行基于字典的压缩算法,如LZ77和LZ78以及它们的变种。但是,我们并没有采用这些算法,因为:
算术编码以及其它自适应压缩算法一般只对符合有限阶马尔可夫性质的事件序列是通用的。这是因为它们通过计算每一个事件在之前若干个事件之后出现的频率来估计事件的概率分布。因此,这一类压缩算法不适用于异常检测。
LZ77及其变种一般使用滑动窗口来降低空间和时间的开销。但是,使用滑动窗口会导致之前学习的正常模式被丢弃,当这种正常模式再次出现时,它会被误认为异常,从而提高了假警率。
LZ78算法已被证明是文法压缩算法的一种。而考虑所有文法压缩算法可以让我们有更多的选择。
在CADM中,我们选择了第2节中描述的顺序压缩算法。这种算法被证明对任意分布均是通用的,而且相对于LZ78有更高的压缩率,因此可以提供更准确的相对熵估计。尽管我们选择的算法是顺序压缩算法,理论上所有的文法压缩算法均可以用到评分公式(1)中。
虽然顺序压缩算法给CADM提供了通用压缩算法的基本框架,它不能直接被直接应用到异常检测问题中。这是因为无损压缩算法的首要要求是压缩后得到的编码是惟一可译的,因此允许降低压缩率来保证惟一可译性。但是异常检测问题对压缩算法的首要要求是提供更准确的相对熵估计。因此,原始压缩算法需要进行改造以提高估计准确度,并降低运行时间。
包括顺序压缩算法在内的所有上述压缩算法都存在的一个问题是它们假设事件序列中的所有事件组成的集合在压缩开始前是已知的。对于异常检测来说,我们很难在检测开始前获取所有可能的事件类型,除非采用对二进制代码或源码进行分析的日志转换方法。尽管存在针对未知事件集合的文法压缩算法,但它们依赖于关于事件分布的先验知识,并且很难在实际中实现和应用。另一方面,顺序压缩算法假设事件集合中的所有事件在压缩开始前均出现过一次来避免分母为零的问题,即使它们并没有真的出现。这种措施会降低压缩率,从而使压缩对相对熵的估计不够准确。为了解决以上问题,在顺序压缩每一步计算频率时,CADM忽略未知事件的频率,并且只当一个事件第一次出现时才假设它们之前出现过一次来避免分母为零的问题。使用这种方式CADM去除了预知事件集合E的要求,并且可以获得更高的估计准确度。
顺序压缩的第二个问题是它使用的算术编码涉及到浮点数的精确运算,从而造成很大的时间开销,尤其是当正常事件序列长度比较大时。在算术编码中,整个事件序列被表示成[0,1]的一个子区间。假设代表当前事件序列的子区间的长度为s,那么最终编码这个数字需要位。此时,如果压缩算法看到一个新的事件且该事件之前出现的频率为b(b∈[0,1]),那么代表整个事件序列的区间长度变为b·s,编码这个数字所需的位数也会增加。一般来说,当事件序列的长度增加到一定值时,使用浮点数就无法精确的表示整个区间,因而必须要使用字符数组来进行表示。随着事件序列的不断增长,s不断变小,表示s所需的位数也不断增加,计算b·s的复杂度也不断提高,因此计算uc(Mm)-uc(M)也不断提高。为了解决这个问题,在处理每一段时,我们将代表之前正常事件序列的区间重置为[0,1]。这样虽然会导致代表事件序列的具体区间无法获知,但估计相对熵仅需要使用该区间的长度,并且采用采用这种近似对区间长度计算的影响非常小。假设当前段所有事件频率的乘积是B,那么采用近似方法计算区间长度导致的误差为
使用类似的方式,还可以因此与每一段的长度相比,在估计相对熵时是可以忽略不计的。但是,近似方式可以大大加快算术编码部分的速度。
在顺序压缩[10]的基础上采用如上改造,最终得到的算法如算法2,图3所示。
算法2.压缩算法
文法压缩是通用压缩算法的一种,它由文法转换和文法编码两步组成。在文法转换中,序列会被转换成一种足够紧凑以利于压缩的上下文无关方法,即容许文法。在文法编码中,容许文法被用来对序列进行编码。
我们方法中使用的是文法压缩的一种,即顺序压缩算法。对于文法转换,顺序压缩算法采用了一种有效的贪心算法,该算法通过在转换过程中保持以下断言来实现:
1.如果s→αβ是一个产生式,那么s在所有产生式右侧至少出现两次。
2.所有子序列αβ只能在所有的产生式右侧出现一次,除非α=β且有一个3元组ααα。
3.所有不同的变量s1和s2展开的字符串均不相同。
在每一步中,算法首先从后续序列中截取当前文法可表示的最长子序列,并将代表该子序列的终结符或非终结符拼接在产生式s0的尾端。此时有三种情况可能会出现:
1.前述三个断言均未违反;
2.新出现的模式αβ违反断言2。算法将生成了一个新的表达式s→αβ并用s代替αβ。
3.同2类似,但新添加的表达式导致断言1会被表达式s′→α破坏。算法将使用α替换s′,但最多只需要替换3次。
以上三种情况都能够在常量时间内处理。上述文法转换算法的结果是一种容许文法。在文法编码阶段,零阶自适应算术编码(这是较为常用的压缩算法之一,它使用[0,1]区间的一个子区间来表示一个序列)被用来对文法转换中每一步识别出的最长子序列对应的符号进行编码。可以证明,顺序压缩算法对所有稳定遍历的信源都是通用的,即可以将该信源产生的序列压缩至熵率。在本文中,我们又对
文法压缩的一个例子如下:对于序列x=10011010,算法执行过程如下表所示:
[1]:在第6步,如果是一个长度大于1的新的子串,只会将该子串的频率置为1,虽然之前有一些0和1被该子串对应的符号替换,但算法要求不能重新计算之前的频率信息。另外,该表的频率统计对应于我们算法改造后的统计过程,与原文统计过程的区别是原文会首先将基本字符(本例中即0与1)出现的频率先置为1以避免除0的问题,而使用改造后的统计过程会使相对熵估计更精确。
[2]根据算术压缩编码,如果某一步匹配序列对应的符号在方法转换后的频率为p,那么增加的编码长度为-logp。
附图说明
图1为本发明具体实施例1所述的一种实时在线日志检测方法示意图;
图2为本发明具体实施例1所述的一种实时在线日志检测方法流程图;
图3为本发明具体实施例2所述的一种日志检测系统结构图。
附图中,各标号所代表的部件列表如下:
1、转换模块,2、训练模块,3、分段模块,4、评分模块,5、判断模块,6、阈值比较模块。
具体实施方式
以下结合附图对本发明的原理和特征进行描述,所举实例只用于解释本发明,并非用于限定本发明的范围。
如图1和2所示,为本发明具体实施例1所述的一种实时在线日志检测方法,具体包括以下步骤:
步骤1:将整个的训练日志转换为一个离散事件序列;
步骤2:使用训练日志所转化的离散事件序列建立一个检测模型;
步骤3:将待测日志分段生成至少一个日志段,并为每个日志段分配日志段序列;
步骤4:按照日志段序列顺序选取一个日志段,使用异常评分公式对所述日志段进行异常程度评分,得到所述日志段的相对熵;
步骤5:判断相对熵是否为正值,如果是,当前日志段为异常,并跳转至步骤7;否则,判断当前日志段为正常,并进行步骤6;
步骤6:将相对熵与预设的阈值相比较,判断相对熵是否大于阈值,如果是,当前日志段为异常;否则,将所述日志段拼接到正常程序上,跳转至步骤8;
步骤7:发送异常警告给用户,待检测程序恢复到检测所述日志段之前的状态;
步骤8:判断异常日志中是否存在未评分日志段,如果存在,跳转至步骤4;否则,结束。
相对熵是一种相似度评价方法,它用来表示两种分布之间的区别。相对熵越大,那么测试日志和训练日志的区别也就越大,这样测试日志很有可能是异常的。
所述步骤4中所述的异常评分公式具体如下列公式(1)所述:
其中:M为所有正常日志事件所组成的序列,m为当前待检测的日志事件序列,Score(m)为对当前检测的日志时间序列m的异常程度评分(即日志段的相对熵),其中uc(*)代表将事件看作字符并使用某种通用压缩算法进行压缩后的比特数,Mm代表序列M和m的连接,λ为用来控制评分公式阈值的参数。
所述步骤1可采用以下四种方法中任一种实现将整个的训练日志转换为一个离散事件序列:
a.无监督聚类方法;
b.启发式算法:该算法将日志记录中的数字、路径或IP地址视为参数并将去掉参数后的消息模板视为事件;
c.代码分析:通过分析二进制代码或者源代码,可以获得比启发式算法更精确的消息模板;
d.使用领域特定的知识:在一些日志中,事件可能已经明确记录在日志中,或可以通过行号等信息准确推算出。
所述公式(1)中的相对熵采用文法压缩方法进行计算。
如图3所示,为本发明具体实施例2所述的一种日志检测系统,包括:转换模块1、训练模块2、分段模块3、评分模块4、判断模块5和阈值比较模块6;
所述转换模块1用于将整个的训练日志转换为一个离散事件序列;
所述训练模块2用于使用训练日志所转化的离散事件序列建立一个检测模型;
所述分段模块3用于将待测日志分段生成至少一个日志段,并为每个日志段分配日志段序列;
所述评分模块4用于按照日志段序列顺序选取一个日志段,使用异常评分公式对所述日志段进行异常程度评分,得到所述日志段的相对熵;
所述判断模块5用于判断相对熵是否为正值,如果是,当前日志段为异常,并发送异常警告给用户,待检测程序恢复到检测所述日志段之前的状态;否则,判断当前日志段为正常,并将相对熵发送至阈值比较模块;
所述阈值比较模块6用于将相对熵与预设的阈值相比较,判断相对熵是否大于阈值,如果是,当前日志段为异常,并发送异常警告给用户;否则,将所述日志段拼接到正常程序上。
相对熵是一种相似度评价方法,它用来表示两种分布之间的区别。相对熵越大,那么测试日志和训练日志的区别也就越大,这样测试日志很有可能是异常的。
所述评分模块中所述的异常评分公式具体如下列公式(1)所述:
其中:M为所有正常日志事件所组成的序列,m为当前待检测的日志事件序列,Score(m)为对当前检测的日志时间序列m的异常程度评分(即日志段的相对熵),其中uc(*)代表将事件看作字符并使用某种通用压缩算法进行压缩后的比特数,Mm代表序列M和m的连接,λ为用来控制评分公式阈值的参数。
所述转换模块1可采用以下四种方法中任一种实现将整个的训练日志转换为一个离散事件序列:
a.无监督聚类方法;
b.启发式算法:该算法将日志记录中的数字、路径或IP地址视为参数并将去掉参数后的消息模板视为事件;
c.代码分析:通过分析二进制代码或者源代码,可以获得比启发式算法更精确的消息模板;
d.使用领域特定的知识:在一些日志中,事件可能已经明确记录在日志中,或可以通过行号等信息准确推算出。
所述公式(1)中的相对熵采用文法压缩方法进行计算。
一种基于压缩的异常检测方法(Compression-based anomaly detectionmethod,CADM)包括如下步骤:
本节我们将详细讨论CADM算法的设计。如图1所示,CADM算法一共包括以下几步:
使用下列方式中任意一种方式某种方式将日志中的记录转化为事件,从而将整个日志转化为一个离散事件序列。
a)无监督聚类方法:通过聚类方式将日志转化为事件需要大量计算,而且如果距离函数选择得不合适,聚类的效果也会比较差。
b)启发式算法:该算法将日志记录中的数字、路径或IP地址视为参数并将去掉参数后的消息模板视为事件。该方法比较简单易行,但是无法处理格式复杂的日志。
c)代码分析:通过分析二进制代码或者源代码,可以获得比启发式算法更精确的消息模板。比如,如果日志用C风格的输出,那么我们可以直接从printf的调用中区分出消息模板和参数。
d)使用领域特定的知识:在一些日志中,事件可能已经明确记录在日志中,或可以通过行号等信息准确推算出。但是,这种方式需要手工地分析训练日志。
使用训练日志所转化的序列来训练CADM的参数。在这一步中,CADM只需要使用正常日志。
将待测试的日志分段,并使用异常评分公式为每一段评分。如果某一段的分数大于阈值,则将这一段标记为异常。
对于第一步中的日志转换,我们结合使用d)方法对于大部分的程序来说,启发式的算法对于异常检测的任务来说已经足够精确,否则就需要针对源代码或二进制文件进行分析来找出所有的事件类型。另一方面,如果事件类型无法从消息模板进行推断,那么还需要结合领域相关的知识来进行日志转换。
本节我们将描述CADM所使用的异常评分公式,并对该公式给出理论分析。我们首先将从日志转换中获取的事件序列进行分段。一个日志文件所对应的事件序列可以被分为若干段,每一段包含一定数量的事件。与日志转换类似,许多方法都可以用来进行分段,如按时间间隔或每一段的事件数量进行等分。在CADM中,段是进行异常检测的最小单位,每一段都会根据公式(1)对它的异常程度进行评分。
我们假设所出现的事件来自一个有限但不能预知的集合E。同时,我们假设在当前待检测段之前的所有正常日志事件所组成的序列为M,而当前待检测的日志事件序列为m。Score(m)表示对当前检测的日志时间序列m的异常程度评分。那么CADM所使用的评分公式为:
其中uc(*)代表将事件看作字符并使用某种通用压缩算法进行压缩后的比特数,Mm代表序列M和m的连接。如果Score(m)是正值,那么当前段s就会被识别为异常。Score(m)的值越大,就说明该段异常程度越高。在公式(1)中,λ是用来控制评分公式阈值的参数,在后面我们将对其意义进行讨论。
如果当前段m被检测成是正常的,CADM根据另一个更低的学习阈值来决定是否将其拼接到正常序列上。否则,用户将收到关于异常的警告,检测程序也将恢复到检测段m之前的状态。整个算法如算法1,图2所示。
算法1.在线异常检测算法
在CADM中,我们选择了一类压缩算法——文法压缩来进行相对熵的估计。实际上,在文法压缩之前,有许多压缩算法都被证明是通用的。传统上它们可以被分为两类:进行显式概率估计的自适应压缩算法,如算术编,以及进行基于字典的压缩算法,如LZ77和LZ78以及它们的变种。但是,我们并没有采用这些算法,因为:
算术编码以及其它自适应压缩算法一般只对符合有限阶马尔可夫性质的事件序列是通用的。这是因为它们通过计算每一个事件在之前若干个事件之后出现的频率来估计事件的概率分布。因此,这一类压缩算法不适用于异常检测。
LZ77及其变种一般使用滑动窗口来降低空间和时间的开销。但是,使用滑动窗口会导致之前学习的正常模式被丢弃,当这种正常模式再次出现时,它会被误认为异常,从而提高了假警率。
LZ78算法已被证明是文法压缩算法的一种。而考虑所有文法压缩算法可以让我们有更多的选择。
在本方法中,我们使用的是一类通用压缩算法。这种算法的一个性质是对于我们考虑范围内的遍历稳定日志序列,使用这类算法可以将其缩到理论上的下界。在这种最优编码中,第i个事件所占的编码大小为,其中为第i个事件出现的频率。因此,如果我们单独编码待测试序列,其每个事件所占的编码大小为,但是如果我们将训练日志与待测试日志合并压缩,由于训练日志的长度比待测试日志大得多,因此每个事件出现的频率近似等于训练日志中该事件出现的频率,设为,对于待测试日志来说,这种编码并不是最优的,而对于长度为N的事件序列中的单个事件,使用这种编码平均(即针对测试序列中的事件取期望后)比最优编码要多使用长度(单位为bit)为
根据相对熵的定义,该式右侧部分即为相对熵。
以上是对相对熵等于训练日志与待测试日志合并压缩时的单个事件编码长度的增量的不严格的说明。实际上,这一点也可以严格证明,具体过程如附录1所示,主要思想是说明我们方法中对相对熵的估计与真实相对熵的的差随着待测试序列的长充增加而逼近0。
基于相对熵来评估日志是否异常:
假设正常事件序列的联合概率分布为p而待检测段的联合概率分布为Q,那么相对熵是一种Q和p不一致性的合理度量。首先,当且仅当Q≡P时,D(Q||P)=0,否则将有D(Q||P)>0。另外,根据Sanov定理[1],对于一个由分布Q产生的序列S,有
P(S)∝2-|S|D(Q||P)
对任意高阶的马尔可夫过程均成立。因此,D(Q||P)的值越大,当前待检测段是由正常事件序列分布P产生的概率就越小,因此,如果D(Q||P)超过某一特定的值λ,那么待检测的段就可以被认为是异常。
相对熵估计正确性的证明如下:
假设s=E1E2…Ek是长度为k的事件序列。定义qm(s)为子序列s在序列m中出现的频率,qm(e|s)为事件e在子序列s后出现的频率,即
对于任意两个序列x和y定义
Hs(qx)=Hs(qx,qx)
首先,由log函数的凹性及Jensen不等式,可知
Hs(qa,qb)≥Hs(qa)
由Mm与M及m中各状态频率的关系可知
(N+n)Hs(qMm)=NHs(qM,qMm)+nH(qm,qMm)
对k阶马尔可夫过程有
且有
另一方面,使用压缩编码大小来估计Dn(Qn||Pn)的误差为
由于顺序压缩算法具有在线性,它编码Mm前半部分和编码M的过程一致,因此相对于经验熵产生的冗余更高。由此可知
uc(Mm)-(N+n)Hs(qMm)>uc(M)-NHs(qM)
所以
uc(m|M)=uc(Mm)-uc(M)>(N+n)Hs(qMm)-NHs(qM)
>(N+n)Hs(qMm)-NHs(qM,qMm)
=nHs(qm,qMm)
此外,由于
(N+n)Hs(qMm,qM)≥(N+n)Hs(qMm)
NHs(qM,qMm)≥NHs(qM)
因此
nHs(qm,qM)=(N+n)Hs(qMm,qM)-NHs(qM)
≥(N+n)Hs(qMm)-NHs(qM,qMm)
=nHs(qm,qMm)
另一方面,
另外,由文献[2]可知,对于任意序列使用顺序s压缩算法编码满足
因此,压缩编码大小来估计Dn(Qn||Pn)的误差中,第一项为负,后两项为正。由于N>>n,(7)接近0,并且对Mm进行编码时(8)收敛的程度远比对m进行编码时高。因此中决定结果正负并占主导的项为
综上,
因此,是比真实对熵小的估计。虽然相对于(4),(1)的误分类率的界略差,但实际上其对相对熵的估计更精确。另外,估计的误差主要来自n较小时对m进行压缩(8)未能完全收敛,这与本文实验2的结果一致。为了解决这一问题,本文采用了将m进行复制压缩的策略,该策略将在实验2中描述和验证。最后,虽然理论上D(Q||P)是非负的,但实际中使用一个负数作为λ值也是有意义的。
以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
附录:
[1]Cover T.M.and Thomas J.A.:‘Elements of informationtheory’(Wiley-interscience,2006.2006)
[2]Yang E.-h.and Kieffer J.C.‘Efficient Universal Lossless Data Compression Algorithms Based on a Greedy Sequential Grammar Transform—Part One:Without Context Models’.IEEE Transactions on Information Theory,2000,46:755-777
Claims (6)
1.一种实时在线日志检测方法,其特征在于,具体包括以下步骤:
步骤1:将整个的训练日志转换为一个离散事件序列;
步骤2:使用训练日志所转化的离散事件序列建立一个检测模型;
步骤3:将待测日志分段生成至少一个日志段,并为每个日志段分配日志段序列号;
步骤4:按照日志段序列顺序号选取一个日志段,使用异常评分公式对当前日志段进行异常程度评分,得到当前日志段的相对熵;
步骤5:判断相对熵是否为正值,如果是,当前日志段为异常,跳转至步骤7;否则,判断当前日志段为正常;
步骤6:将相对熵与预设的阈值相比较,判断相对熵是否大于阈值,如果是,当前日志段为异常,并跳转至步骤7;否则,将当前日志段拼接到正常序列集合上,跳转至步骤8;
步骤7:发送异常警告给用户;
步骤8:判断待测日志中是否存在未评分日志段,如果存在,跳转至步骤4;否则,结束;
所述步骤4中所述的异常评分公式具体如下列公式(1)所述:
其中:M为所有正常日志事件所组成的序列,m为当前待检测的日志段序列号,Score(m)为对当前检测的日志段序列号m的异常程度评分,即日志段的相对熵,其中uc(*)代表将事件看作字符并使用某种通用压缩算法进行压缩后的比特数,Mm代表序列M和m的连接,λ为用来控制评分公式阈值的参数。
2.根据权利要求1所述的一种实时在线日志检测方法,其特征在于,所 述步骤1可采用以下四种方法中任一种实现将整个的训练日志转换为一个离散事件序列:
a.无监督聚类方法;
b.启发式算法:该算法将日志记录中的数字、路径或IP地址视为参数并将去掉参数后的消息模板视为事件;
c.代码分析:通过分析二进制代码或者源代码,可以获得比启发式算法更精确的消息模板;
d.使用领域特定的知识:在一些日志中,事件可能已经明确记录在日志中,或可以通过行号信息准确推算出。
3.根据权利要求1或2所述的一种实时在线日志检测方法,其特征在于,所述公式(1)中的相对熵采用文法压缩方法进行计算。
4.一种实时在线日志检测系统,包括:转换模块、训练模块、分段模块、评分模块、判断模块和阈值比较模块;
所述转换模块用于将整个的训练日志转换为一个离散事件序列;
所述训练模块用于使用训练日志所转化的离散事件序列建立一个检测模型;
所述分段模块用于将待测日志分段生成至少一个日志段,并为每个日志段分配日志段序列号;
所述评分模块用于按照日志段序列顺序号选取一个日志段,使用异常评分公式对当前日志段进行异常程度评分,得到当前日志段的相对熵;
所述判断模块用于判断相对熵是否为正值,如果是,当前日志段为异常,并发送异常警告给用户,待检测程序恢复到检测所述日志段之前的状态;否则,判断当前日志段为正常,并将相对熵发送至阈值比较模块;
所述阈值比较模块用于将相对熵与预设的阈值相比较,判断相对熵是否大于阈值,如果是,当前日志段为异常,并发送异常警告给用户;否则,将 当前日志段拼接到正常序列集合上;
所述评分模块中所述的异常评分公式具体如下列公式(1)所述:
其中:M为所有正常日志事件所组成的序列,m为当前待检测的日志段序列号,Score(m)为对当前检测的日志事件序列号m的异常程度评分,即日志段的相对熵,其中uc(*)代表将事件看作字符并使用某种通用压缩算法进行压缩后的比特数,Mm代表序列M和m的连接,λ为用来控制评分公式阈值的参数。
5.根据权利要求4所述的一种实时在线日志检测系统,其特征在于,所述转换模块可采用以下四种方法中任一种实现将整个的训练日志转换为一个离散事件序列:
a.无监督聚类方法;
b.启发式算法:该算法将日志记录中的数字、路径或IP地址视为参数并将去掉参数后的消息模板视为事件;
c.代码分析:通过分析二进制代码或者源代码,可以获得比启发式算法更精确的消息模板;
d.使用领域特定的知识:在一些日志中,事件可能已经明确记录在日志中,或可以通过行号信息准确推算出。
6.根据权利要求4或5所述的一种实时在线日志检测系统,其特征在于,所述公式(1)中的相对熵采用文法压缩方法进行计算。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310492962.9A CN103514398B (zh) | 2013-10-18 | 2013-10-18 | 一种实时在线日志检测方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310492962.9A CN103514398B (zh) | 2013-10-18 | 2013-10-18 | 一种实时在线日志检测方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103514398A CN103514398A (zh) | 2014-01-15 |
CN103514398B true CN103514398B (zh) | 2016-08-17 |
Family
ID=49897105
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310492962.9A Active CN103514398B (zh) | 2013-10-18 | 2013-10-18 | 一种实时在线日志检测方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103514398B (zh) |
Families Citing this family (20)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP2927818B1 (de) * | 2014-04-04 | 2019-05-29 | Siemens Aktiengesellschaft | Verfahren zur automatischen verarbeitung einer anzahl von protokolldateien eines automatisierungssystems |
US10572318B2 (en) * | 2014-08-25 | 2020-02-25 | Nippon Telegraph And Telephone Corporation | Log analysis apparatus, log analysis system, log analysis method and computer program |
CN106033548B (zh) * | 2015-03-13 | 2021-04-20 | 中国科学院西安光学精密机械研究所 | 基于改进字典学习的拥挤人群异常检测方法 |
CN106209405B (zh) * | 2015-05-06 | 2019-11-08 | 中国移动通信集团内蒙古有限公司 | 故障诊断方法及装置 |
TWI548985B (zh) * | 2015-05-18 | 2016-09-11 | Chunghwa Telecom Co Ltd | Identification system of network log format and its method |
CN105809034A (zh) * | 2016-03-07 | 2016-07-27 | 成都驭奔科技有限公司 | 一种恶意软件识别方法 |
CN105975604B (zh) * | 2016-05-12 | 2017-10-03 | 清华大学 | 一种分布迭代式数据处理程序异常检测与诊断方法 |
CN107231348B (zh) * | 2017-05-17 | 2020-07-28 | 桂林电子科技大学 | 一种基于相对熵理论的网络流量异常检测方法 |
EP3699708B1 (en) * | 2017-10-16 | 2021-07-28 | Fujitsu Limited | Production facility monitoring device, production facility monitoring method, and production facility monitoring program |
CN108055152B (zh) * | 2017-12-11 | 2020-11-06 | 国网河南省电力公司信息通信公司 | 基于分布式服务日志的通信网络信息系统异常检测方法 |
CN109726364B (zh) * | 2018-07-06 | 2023-01-10 | 平安科技(深圳)有限公司 | 用电量异常检测方法、装置、终端及计算机可读存储介质 |
CN111309585A (zh) * | 2018-12-12 | 2020-06-19 | 北京京东尚科信息技术有限公司 | 日志数据测试方法及装置、系统、电子设备、存储介质 |
CN110011990B (zh) * | 2019-03-22 | 2022-03-04 | 南开大学 | 内网安全威胁智能分析方法 |
CN110166302A (zh) * | 2019-05-29 | 2019-08-23 | 哈尔滨安天科技集团股份有限公司 | 一种基于决策树的日志分析方法、装置及存储设备 |
CN111240942A (zh) * | 2019-12-02 | 2020-06-05 | 华为技术有限公司 | 日志异常检测方法及装置 |
CN111209168A (zh) * | 2020-01-14 | 2020-05-29 | 中国人民解放军陆军炮兵防空兵学院郑州校区 | 一种基于nLSTM-self attention的日志序列异常检测框架 |
CN111538642B (zh) * | 2020-07-02 | 2020-10-02 | 杭州海康威视数字技术股份有限公司 | 一种异常行为的检测方法、装置、电子设备及存储介质 |
CN114722897B (zh) * | 2022-03-01 | 2024-09-10 | 西北工业大学 | 一种提高战场综合态势信息处理效率的方法 |
CN115658441B (zh) * | 2022-12-13 | 2023-03-10 | 济南丽阳神州智能科技有限公司 | 一种基于日志的家政业务系统异常监控方法、设备及介质 |
CN115871745B (zh) * | 2022-12-28 | 2024-05-10 | 江苏安防科技有限公司 | 一种应用于轨道交通的智能维护方法与装置 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101645884A (zh) * | 2009-08-26 | 2010-02-10 | 西安理工大学 | 基于相对熵理论的多测度网络异常检测方法 |
CN103281293A (zh) * | 2013-03-22 | 2013-09-04 | 南京江宁台湾农民创业园发展有限公司 | 一种基于多维分层相对熵的网络流量异常检测方法 |
Family Cites Families (1)
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 |
-
2013
- 2013-10-18 CN CN201310492962.9A patent/CN103514398B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101645884A (zh) * | 2009-08-26 | 2010-02-10 | 西安理工大学 | 基于相对熵理论的多测度网络异常检测方法 |
CN103281293A (zh) * | 2013-03-22 | 2013-09-04 | 南京江宁台湾农民创业园发展有限公司 | 一种基于多维分层相对熵的网络流量异常检测方法 |
Also Published As
Publication number | Publication date |
---|---|
CN103514398A (zh) | 2014-01-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103514398B (zh) | 一种实时在线日志检测方法及系统 | |
CN109902283B (zh) | 一种信息输出方法及装置 | |
CN110609759B (zh) | 一种故障根因分析的方法及装置 | |
CN109492193B (zh) | 基于深度机器学习模型的异常网络数据生成与预测方法 | |
CN111709244B (zh) | 一种用于矛盾纠纷事件因果关系识别的深度学习方法 | |
CN107292446B (zh) | 一种基于考虑分量关联性小波分解的混合风速预测方法 | |
CN104778298A (zh) | 基于egmm的高斯过程回归软测量建模方法 | |
CN113627532B (zh) | 食品安全检测方法、装置、设备及存储介质 | |
CN113469449A (zh) | 脱硫系统的寻优控制方法及系统 | |
CN115563563A (zh) | 基于变压器油色谱分析的故障诊断方法及装置 | |
CN103559129A (zh) | 基于遗传算法的统计回归测试数据生成方法 | |
CN112181706A (zh) | 一种基于对数区间隔离的电力调度数据异常检测方法 | |
CN116502164A (zh) | 基于对抗训练和频域改良自注意力机制的多维时序数据异常检测方法、设备及介质 | |
CN115617614A (zh) | 基于时间间隔感知自注意力机制的日志序列异常检测方法 | |
CN104699614A (zh) | 一种软件缺陷组件预测的方法 | |
Gediga et al. | Maximum consistency of incomplete data via non-invasive imputation | |
CN118133206A (zh) | 基于stacking元学习策略的污水处理故障诊断方法 | |
CN116151485A (zh) | 反事实预测和效果评估方法、系统 | |
CN111522705A (zh) | 一种工业大数据智能运维解决方法 | |
CN112783747B (zh) | 一种应用程序的执行时间预测方法及装置 | |
US20240054043A1 (en) | Trigger point detection for online root cause analysis and system fault diagnosis | |
CN116956289B (zh) | 动态调整潜在黑名单和黑名单的方法 | |
CN116384843B (zh) | 数字能源氮气站的能效评估模型训练方法及其监测方法 | |
CN117520599A (zh) | 一种电力数据大模型构建方法及系统 | |
CN117827508A (zh) | 一种基于系统日志数据的异常检测方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |