法律状态公告日
法律状态信息
法律状态
2020-02-11
专利权的转移 IPC(主分类):G06F11/30 登记生效日:20200119 变更前: 变更后: 申请日:20160304
专利申请权、专利权的转移
2019-02-22
授权
授权
2016-12-14
实质审查的生效 IPC(主分类):G06F11/30 申请日:20160304
实质审查的生效
2016-06-08
公开
公开
技术领域
本发明涉及软件监控技术领域,具体地,涉及一种基于行为异常检测的日志监控方法。
背景技术
如今的软件系统规模越来越庞大,结构越来越复杂,异常和错误的发生变得难以避免。目前一般有两种办法避免软件异常:一是在开发过程中做好软件异常的预防,包括良好的编程习惯,结构化、科学的软件开发流程,以及大量必不可少的单元测试、端到端测试等等;二是在系统运行过程中使用监控系统对软件状态进行实时监控,及时检测到已经发生或即将发生的异常行为,为采取对应措施留出宝贵时间。
日志监控是对软件系统运行中产生的各类日志进行采集、过滤、存储、分析、检测异常的一系列过程,是软件监控系统中的重要组成部分。通过对日志进行不同角度的分析,可以达到管理资源、检测入侵行为和软件异常、控制事务状态、进行事件取证和日志审计等目的。
已有的方案更多的是把注意力放在点异常(pointanomaly)上,对日志分析来说即是指单独的一条或一段日志记录出现异常。为了进一步提高预测的准确度,在本专利中,我们引入了行为异常(behavioranomaly)这个概念。行为异常是系统发生错误或工作负载发生变化时表现出的重要特征,可以通过检测日志流中发生的行为异常来判断系统状态。
当前日志分析技术面临着一些挑战,主要表现在:
1)日志数量巨大
如今的大型网站和软件系统,其规模和复杂度都达到了前所未有的程度。考虑到日志产生的速率、处理每条日志所需要的时间以及硬件开销,现有分析技术很难实现对日志内容的实时有效分析。
2)日志结构不固定
日志不遵循特定的格式,有效负载(payload)部分仍然是由程序员手动编写的,并且可能产生不一致,给自动化处理带来不便。
3)日志系统千差万别
面向不同行业的不同业务,通用监控系统存在异常检测准确率不高。
发明内容
针对现有技术中的缺陷,本发明的目的是提供一种基于行为异常检测的日志监控方法。
根据本发明提供的基于行为异常检测的日志监控方法,包括如下步骤:
日志预处理步骤:统一日志结构并将日志进行聚类处理;
日志异常检测步骤:根据日志聚类结果将日志流转化为行为序列,生成行为模式,获得实时日志流的异常指数。
优选地,所述日志预处理步骤包括日志正规化步骤和日志信息聚类步骤。
优选地,日志正规化步骤包括:
步骤A1:重排不规范日志记录,具体地,去除冗余字符,把跨越多行的记录调整为一行;
步骤A2:将日志级别转化为用数字表示,即为每个日志级别赋了一个数字值;
步骤A3:将日志内容去参数化,把日志中的数值参数替换为用占位符表示,统一日志结构。
优选地,所述日志信息聚类步骤包括:
步骤B1:使用基于全连接的凝聚层次聚类方法,把日志归类为不同类型;
步骤B2:在相似度定义方面,使用两条日志记录的编辑距离和日志级别距离作为距离定义标准;
编辑距离是指在两个字符串之间通过字符的插入、删除或替换操作,把一个字符串转换成另外一个字符串所需的最少编辑次数;
日志级别距离:是指两条日志的日志级别所赋数值差的绝对值。
优选地,所述日志异常检测方法包括:日志流转换为行为序列步骤、生成行为模式步骤、计算实时日志流异常指数步骤。
优选地,所述日志流转换为行为序列步骤包括:
步骤C1:根据聚类结果,为每一个日志类型赋一个类型号;
步骤C2:构建日志训练数据集,并把日志训练数据集转化为由时间戳和类型号组成的序列;
步骤C3:给定一个时间间隔,统计每个类型号在时间间隔中的出现次数,得到多个频率序列,即行为序列,其中每个序列对应一个类型。
优选地,所述生成行为模式步骤包括:
步骤D1:令行为序列集为Ti,i∈[1,N],Ti表示第i个行为序列即频率序列,N为日志类型数;其中
步骤D2:定义长度k的滑动窗口,提取长度m的时间序列Ti中所有的频率子序列:
步骤D3:取欧氏距离作为两条频率子序列的距离,对相同频率子序列进行统计,把不同类型子序列的形状特征及出现频率作为该类型序列的行为模式;将由子序列集Si得到的行为模式集记为
步骤D4:以子序列出现频率的倒数作为行为模式
优选地,所述计算实时日志流异常指数步骤包括:
步骤E1:根据给定单位时间间隔和长为k的滑动窗口,实时截取最近k个单位时间的日志序列L,并根据不同日志类型把日志序列拆分成N个日志子序列,记作L={l1,l2...lN},其中每一个元素li表示一个日志子序列,对应一个日志类型;
步骤E2:把L转化为频率序列集,即行为序列集,记作C={c1,c2…cN},每个行为序列ci对应一个行为模式集Pi,其中i∈[1,N];
步骤E3:日志子序列li的异常指数由ci和相似度最高的行为模式
>
得到异常指数计算公式如下:
>
式中:AnomalyScore(li)表示日志子序列li的异常指数,AnomalyScore(L)表示当前日志流的日常指数,β是平衡因子,
步骤E4:比较异常指数与异常阈值的大小,根据比较结果决定是否发出异常预警;所述异常阈值是由专家评估和训练集测试共同得到的异常指数的阈值,当异常指数大于等于异常阈值时,发出异常预警;当异常指数小于异常阈值时,输出异常值。
与现有技术相比,本发明具有如下的有益效果:
1、本发明提供的基于行为异常检测的日志监控方法从日志类型特征出发,分析不同类型的日志产生规律,通过日志信息聚类的方式解决数据量过大的问题,从而实现对日志内容的实时有效分析。
2、本发明提供的基于行为异常检测的日志监控方法,通过数据正规化的方法解决日志结构不固定的问题,便于实现数据处理的自动化。
3、本发明提供的基于行为异常检测的日志监控方法与传统的基于语义的分析方法不同,从日志数据的输出行为特征出发,通过分析行为模式检测异常日志,因此具有很高的通用性。
4、本发明提供的基于行为异常检测的日志监控方法通过日志正规化和日志聚类对数据进行预处理,提出的聚类相似度定义和剪枝策略提高了聚类准确率,优化了聚类粒度;此外,还利用了日志流的行为特征,提高异常检测成功率。
附图说明
通过阅读参照以下附图对非限制性实施例所作的详细描述,本发明的其它特征、目的和优点将会变得更明显:
图1为根据本发明的监控方案实现的监控系统整体框架示意图;
图2为日志行为模式的训练流程图;
图3为日志异常检测流程图。
具体实施方式
下面结合具体实施例对本发明进行详细说明。以下实施例将有助于本领域的技术人员进一步理解本发明,但不以任何形式限制本发明。应当指出的是,对本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变化和改进。这些都属于本发明的保护范围。
根据本发明提供的基于行为异常检测的日志监控方法,大体分为两步:日志数据预处理和日志异常检测。
预处理技术包括日志正规化和日志信息聚类两个步骤。首先通过日志正规化统一日志格式并对日志去参数化,经过去参数化后,拥有不同内容的日志种类数量大大约简;然后通过层次聚类算法把日志划分为不同类型。传统的日志聚类是为了发现聚类结果中的离群点,据此进行异常检测,本发明是为了挖掘不同类型日志的行为模式。以往的日志异常检测主要把注意力放在频率本身,通过频率的期望和方差等统计规律做出点异常(pointanomaly)判断,而本发明侧重于从连续的日志频率子序列中发现行为模式,进行行为异常(behavioralanomaly)判断。本发明提出的异常检测算法其核心在于研究给定时间间隔里日志数据的发生频率以及由连续时间间隔组成的滑动时间窗口中频率的变化特征,即日志行为模式。
具体地,如图1所示,整个监控方案由下到上分别由被监控系统、日志采集模块、存储分析模块和前端展示模块组成。每个模块负责不同的功能,相对独立又彼此联系。其中被监控系统可以是任何大型分布式业务系统;日志采集模块提供了对被监控系统产生的日志进行实时监控和收集的功能;存储分析模块是整个监控系统的核心,对异常检测算法进行了实现;前端展示模块用于查看日志信息,展示系统状态的检测结果。
基于行为异常检测的日志监控流程描述如下:
步骤1:日志预处理;
其中日志预处理包括:日志正规化和日志信息聚类两个步骤。
日志正规化步骤包括:
步骤A1:重排不规范日志记录,具体地,去除冗余字符,把跨越多行的记录调整为一行;
步骤A2:将日志级别转化为数字表示,为了方便日志聚类时候的相似度测量,为每个日志级别赋了一个数字值;
步骤A3:将日志内容去参数化,把日志中的数值参数替换为占位符表示,统一日志结构。
日志信息聚类步骤包括:
步骤B1:使用基于全连接(completelinkage)的凝聚层次聚类方法,把日志归类为不同类型。
步骤B2:在相似度定义方面,使用两条日志记录的编辑距离和日志级别距离作为距离定义标准;
编辑距离是指在两个字符串之间通过字符的插入、删除或替换等编辑操作,把一个字符串转换成另外一个字符串所需的最少编辑次数。
具体地,可以通过优化的动态规划方法计算日志相似度,提高计算效率;下面说明算法的状态转移关系。
设两个字符串S1[1…m]和S2[1…n]。S1长度为m,S2长度为n,分别代表两条日志的有效载荷部分,ED(i,j)表示S1的前缀S1[1…i]和S2的前缀S2[1…j]之间的编辑距离。
初始状态:
ED(0,0)=0
ED(i,0)=i,1≤i≤m
ED(0,j)=j,1≤j≤n
状态转移方程,其中S(i)表示字符串S的第i个字符:
>
通过DP算法可以得到S1和S2的编辑距离ED(m,n)。正规化的结果记为EditRatio(ER):
>
以此作为两条日志的相异度。
聚类粒度方面,根据生成簇的数目随距离阈值增大而下降的趋势,当下降速度变缓时,取此时的距离阈值作为聚类终止条件,得到最优的聚类粒度。
步骤2:日志异常检测;
其中所述日志异常检测方法包括:日志流转换为行为序列步骤、生成行为模式步骤、计算实时日志流异常指数步骤。
所述日志流转换为行为序列步骤包括:
步骤C1:根据聚类结果,为每一个日志类型赋一个类型号;
步骤C2:把日志训练数据集转化为由时间戳和类型号组成的序列;
步骤C3:给定一个时间间隔,统计每个类型号在时间间隔中的出现次数,得到多个频率序列,即行为序列,其中每个序列对应一个类型。
所述生成行为模式步骤包括:
步骤D1:令行为序列集为Ti,i∈[1,N],N为日志类型数,其中
步骤D2:定义长度k的滑动窗口,提取长度m的时间序列Ti中所有的频率子序列:
步骤D3:取欧氏距离作为两条频率子序列的距离,据此对相同频率子序列进行统计,把不同类型子序列的形状特征及出现频率作为该类型序列的行为模式;将由子序列集Si得到的行为模式集记为
步骤D4:以子序列出现频率的倒数作为行为模式
所述计算实时日志流异常指数步骤:
步骤E1:根据给定单位时间间隔和长为k的滑动窗口,实时截取最近k个单位时间的日志序列L,并根据不同日志类型把日志序列拆分成N个日志子序列,记作L={l1,l2…lN};
步骤E2:按前述转换方法把L转化为频率序列集,记作C={c1,c2…cN}每个行为序列ci对应一个行为模式集Pi;
步骤E3:日志子序列li的异常指数由ci和与其相似度最高的行为模式共同决定:
>
得到异常指数计算公式如下:
>
步骤E4:比较异常指数与异常阈值的大小,根据比较结果决定是否发出异常预警。
以上对本发明的具体实施例进行了描述。需要理解的是,本发明并不局限于上述特定实施方式,本领域技术人员可以在权利要求的范围内做出各种变化或修改,这并不影响本发明的实质内容。在不冲突的情况下,本申请的实施例和实施例中的特征可以任意相互组合。
机译: 基于日志文件采样的计算机系统行为异常检测方法和系统
机译: 基于日志文件采样的计算机系统行为异常检测方法和系统
机译: 作为生成行为日志信息的行为日志信息生成设备,行为日志信息生成设备和行为