一种实时在线日志检测方法及系统的制作方法
【专利摘要】本发明涉及一种实时在线日志检测方法,包括:步骤1:将整个的训练日志转换为一个离散事件序列;步骤2:建立一个检测模型;步骤3:将待测日志分段生成至少一个日志段,并为每个日志段分配日志段序列;步骤4:对一个日志段进行异常程度评分,得到相对熵;步骤5:判断相对熵是否为正值,如果是,当前日志段异常,跳至步骤7;否则,当前日志段为正常;步骤6:判断相对熵是否大于阈值,如果是,当前日志段为异常;否则,跳至步骤8;步骤7:发送异常警告给用户,待检测程序恢复到检测所述日志段之前的状态;步骤8:判断异常日志中是否存在未评分日志段,如果是,跳转至步骤4;否则,结束。本发明可实时检测异常,且不需要设置复杂的参数,简单有效。
【专利说明】一种实时在线日志检测方法及系统
【技术领域】
[0001]本发明涉及一种实时在线日志检测方法及系统,属于计算机领域。
【背景技术】
[0002]随着互联网的不断发展,各类网络应用在人们生产和生活中发挥着越来越重要的作用。但与此同时,针对网络应用的攻击不断涌现,如各类病毒、蠕虫等I。另一方面,随着网络应用的规模越来越大以及商用硬件作为服务的趋势的发展,网络应用的执行路径难以预测,硬件环境不再可靠,因此难以在部署前发现所有可能出现的错误。一旦针对网络应用的攻击得手或者网络应用自身出现异常,将给网络应用的所有者及用户带来不可估量的损失。
[0003]攻击和错误发现的越早,所能采用的补救措施就越多,造成的损失就会越少。因此,在线异常检测受到了学术界和工业界的重视。常用的基于压缩的异常检测方法是分析应用的日志。在应用运行的过程中,应用本身和各种监控程序都会产生各类日志来记录应用的状态、重要的运行事件和网络流量,因此日志中包含应用运行的动态信息,适合用来进行异常检测。
[0004]传统日志分析是通过人工参与或者使用事前定义好的规则来完成的。当日志大小有限以及异常类型事先可知时,这些方法非常有效并且也很灵活。当时如果程序产生了百万行日志,人工处理日志就不太现实了。不可预测的异常也不适合用预定义的规则处理。
[0005]因此,异常检测转而采用自动在线异常检测的方法,特别是一类以离散序列为输入的基于压缩的异常检测方法被用来分析日志。这类算法将日志所蕴含的事件序列分为段,并为每一段赋一个异常得分。之前这些方法中的大多数是基于统计模型或者马尔可夫模型的,它们都依赖于某些特定的假设例如:
[0006]正常的日志项满足一个特定的分布。
[0007]日志项的出现是独立事件。
[0008]日志项满足马尔可夫性质,即一条日志项只与它之前的几条日志项相关。
[0009]对于某些日志来说,这些假设都是成立的,但是并不适合所有的日志。如果日志中的日志项和其他日志项之间有复杂和隐式的关系,那么这些方法就会忽略这些联系或者提前定义它的结构,这样很有可能抓不住日志的特性。同时,也有一些日志不能用马尔可夫模型表达。当这些假设不成立时,基于统计模型和马尔可夫模型的方法就不会有很高的性能。
[0010]为了解决上述提出的问题,提供了一种基于压缩的基于压缩的异常检测方法,它并不依赖于日志项分布的假设。基于压缩的基于压缩的异常检测方法可以依据正常日志和异常日志的散度(相对熵)将它们区分开来。相对熵是一种相似度评价方法,它用来表示两种分布之间的区别。相对熵越大,那么测试日志和训练日志的区别也就越大,但这样测试日志很有可能是异常的。
【发明内容】
[0011]本发明所要解决的技术问题是,针对现有技术的不足,提供一种不依赖于日志项分布的假设,不需要设置复杂的参数,且简单有效的实时在线日志检测方法。
[0012]本发明解决上述技术问题的技术方案如下:一种实时在线日志检测方法,具体包括以下步骤:
[0013]步骤1:将整个的训练日志转换为一个离散事件序列;
[0014]步骤2:使用训练日志所转化的离散事件序列建立一个检测模型;
[0015]步骤3:将待测日志分段生成至少一个日志段,并为每个日志段分配日志段序列;
[0016]步骤4:按照日志段序列顺序选取一个日志段,使用异常评分公式对所述日志段进行异常程度评分,得到所述日志段的相对熵;
[0017]步骤5:判断相对熵是否为正值,如果是,当前日志段为异常,并跳转至步骤7;否贝U,判断当前日志段为正常;
[0018]步骤6:将相对熵与预设的阈值相比较,判断相对熵是否大于阈值,如果是,当前日志段为异常,并跳转至步骤7 ;否则,将所述日志段拼接到正常程序上,跳转至步骤8 ;
[0019]步骤7:发送异常警告给用户,待检测程序恢复到检测所述日志段之前的状态;
[0020]步骤8:判断异常日志中是否存在未评分日志段,如果存在,跳转至步骤4 ;否则,结束。
[0021]相对熵是一种相似度评价方法,它用来表示两种分布之间的区别。相对熵越大,那么测试日志和训练日志的区别也就越大,这样测试日志很有可能是异常的。
[0022]本发明的有益效果是:本发明所述方法可以依据正常日志和异常日志的散度(相对熵)将它们区分开来。本发明不需要事先假设,也不需要设置许多参数;相对熵是一种相似度评价方法,它用来表示两种分布之间的区别。相对熵越大,那么测试日志和训练日志的区别也就越大,这样测试日志很有可能是异常的,本发明提供的方法所需的所有操作只有压缩,而压缩算法一般都很快,因此本发明可以实现实时检测异常,并且不需要设置复杂的参数,简单有效。
[0023]在上述技术方案的基础上,本发明还可以做如下改进。
[0024]进一步,所述步骤4中所述的异常评分公式具体如下列公式(I)所述:
[0025]
【权利要求】
1.一种实时在线日志检测方法,其特征在于,具体包括以下步骤: 步骤1:将整个的训练日志转换为一个离散事件序列; 步骤2:使用训练日志所转化的离散事件序列建立一个检测模型; 步骤3:将待测日志分段生成至少一个日志段,并为每个日志段分配日志段序列; 步骤4:按照日志段序列顺序选取一个日志段,使用异常评分公式对所述日志段进行异常程度评分,得到所述日志段的相对熵; 步骤5:判断相对熵是否为正值,如果是,当前日志段为异常,跳转至步骤7 ;否则,判断当前日志段为正常; 步骤6:将相对熵与预设的阈值相比较,判断相对熵是否大于阈值,如果是,当前日志段为异常,并跳转至步骤7 ;否则,将所述日志段拼接到正常程序上,跳转至步骤8 ; 步骤7:发送异常警告给用户; 步骤8:判断异常日志中是否存在未评分日志段,如果存在,跳转至步骤4 ;否则,结束。
2.根据权利要求1所述的一种实时在线日志检测方法,其特征在于,所述步骤4中所述的异常评分公式具体如 下列公式(I)所述:
3.根据权利要求2所述的一种实时在线日志检测方法,其特征在于,所述步骤I可采用以下四种方法中任一种实现将整个的训练日志转换为一个离散事件序列: a.无监督聚类方法; b.启发式算法:该算法将日志记录中的数字、路径或IP地址视为参数并将去掉参数后的消息模板视为事件; c.代码分析:通过分析二进制代码或者源代码,可以获得比启发式算法更精确的消息模板; d.使用领域特定的知识:在一些日志中,事件可能已经明确记录在日志中,或可以通过行号等信息准确推算出。
4.根据权利要求1-3任一项所述的一种实时在线日志检测方法,其特征在于,所述公式(I)中的相对熵采用文法压缩方法进行计算。
5.一种日志检测系统,包括:转换模块、训练模块、分段模块、评分模块、判断模块和阈值比较模块; 所述转换模块用于将整个的训练日志转换为一个离散事件序列; 所述训练模块用于使用训练日志所转化的离散事件序列建立一个检测模型; 所述分段模块用于将待测日志分段生成至少一个日志段,并为每个日志段分配日志段序列; 所述评分模块用于按照日志段序列顺序选取一个日志段,使用异常评分公式对所述日志段进行异常程度评分,得到所述日志段的相对熵; 所述判断模块用于判断相对熵是否为正值,如果是,当前日志段为异常,并发送异常警告给用户,待检测程序恢复到检测所述日志段之前的状态;否则,判断当前日志段为正常,并将相对熵发送至阈值比较模块; 所述阈值比较模块用于将相对熵与预设的阈值相比较,判断相对熵是否大于阈值,如果是,当前日志段为异常,并发送异常警告给用户;否则,将所述日志段拼接到正常程序上。
6.根据权利要求1所述的一种实时在线日志检测方法,其特征在于,所述评分模块中所述的异常评分公式具体如下列公式(I)所述:
7.根据权利要求6所述的一种实时在线日志检测方法,其特征在于,所述转换模块可采用以下四种方法中任一种实现将整个的训练日志转换为一个离散事件序列: a.无监督聚类方法; b.启发式算法:该算法将日志记录中的数字、路径或IP地址视为参数并将去掉参数后的消息模板视为事件;` c.代码分析:通过分析二进制代码或者源代码,可以获得比启发式算法更精确的消息模板; d.使用领域特定的知识:在一些日志中,事件可能已经明确记录在日志中,或可以通过行号等信息准确推算出。
8.根据权利要求5-7任一项所述的一种实时在线日志检测方法,其特征在于,所述公式(I)中的相对熵采用文法压缩方法进行计算。
【文档编号】G06F21/50GK103514398SQ201310492962
【公开日】2014年1月15日 申请日期:2013年10月18日 优先权日:2013年10月18日
【发明者】周薇, 高赟, 戴娇, 韩冀中 申请人:中国科学院信息工程研究所