首页 / 专利库 / 软件 / 通配符 / 日志异常检测方法

日志异常检测方法

阅读:440发布:2020-05-13

专利汇可以提供日志异常检测方法专利检索,专利查询,专利分析的服务。并且本 发明 提供一种日志 异常检测 方法,涉及 数据处理 领域。包括以下步骤:获取历史日志数据和实时日志数据;对历史日志数据进行预处理;基于历史日志数据集合获取初始数据集集合和流数据集集合;基于初始数据集集合得到初始日志模式库;更新初始日志模式库,得到日志模式库;基于日志模式库获取模式库模式向量;基于流数据集集合获取流数据模式向量;基于模式库模式向量对历史日志数据集合进行处理,得到日志数据模式;基于两种模式向量获取依赖关系库;基于两种模式向量获取异常检测的 阈值 ;对实时日志数据进行预处理;基于日志数据模式和阈值、日志模式库、依赖关系库分别检测实时日志数据集合。本发明在检测日志异常情况时的解释性较高。,下面是日志异常检测方法专利的具体信息内容。

1.一种日志异常检测方法,其特征在于,所述检测方法由计算机执行,包括以下步骤:
S1、获取历史日志数据和实时日志数据;
S2、对所述历史日志数据进行预处理,得到历史日志数据集合;
S3、基于所述历史日志数据集合获取初始数据集集合和流数据集集合;
S4、基于预设的spell方法处理所述初始数据集集合,得到初始日志模式库;
S5、基于预设的spell方法和所述流数据集集合更新所述初始日志模式库,得到日志模式库;基于所述日志模式库获取模式库模式向量;基于所述流数据集集合获取流数据模式向量;
S6、基于所述模式库模式向量对所述历史日志数据集合进行处理,得到日志数据模式;
基于所述模式库模式向量和所述流数据模式向量获取依赖关系库;基于所述模式库模式向量和所述流数据模式向量获取异常检测的阈值
S7、对所述实时日志数据进行预处理,得到实时日志数据集合;
S8、基于所述日志数据模式和所述阈值检测所述实时日志数据集合;基于所述日志模式库检测所述实时日志数据集合;基于所述依赖关系库检测所述实时日志数据集合。
2.如权利要求1所述的检测方法,其特征在于,所述历史日志数据的预处理包括:
用预设的通配符代替网站内容;
删除不满足日志数据总体日志结构的日志。
3.如权利要求1所述的检测方法,其特征在于,在S3中,所述初始数据集集合的获取方法为:将所述历史日志数据集合划分为若干个初始数据集,每个初始数据集包含预设的M条日志,所有的初始数据集构成初始数据集集合;
所述流数据集集合的获取方法为:按照预设的周期划分所述历史日志数据集合,得到的若干个数据集即为流数据集,所有的流数据集构成流数据集集合。
4.如权利要求1所述的检测方法,其特征在于,所述预设的spell方法包括:
基于spell算法对待处理的数据进行解析;
将解析后的数据进行融合,得到融合数据;
将所述融合数据和模式库中的数据进行融合。
5.如权利要求1所述的检测方法,其特征在于,在S5中,所述模式库模式向量的获取方法包括:
统计所述日志模式库中的日志模式所对应的日志数量和所述流数据集集合中含有的日志模式及其对应的日志数量;
将所述日志模式库中的日志模式按照日志数量从大到小的顺序进行排序,得到模式库模式向量V=(v0,v1,…,vn),其中:序号代表日志模式的标识符;
所述S5还包括:
基于所述流数据模式向量获取流数据模式向量序列。
6.如权利要求5所述的检测方法,其特征在于,在S6中,所述日志数据模式包括:极不频繁模式,非频繁模式,半频繁模式,频繁模式和异常模式。
7.如权利要求6所述的检测方法,其特征在于,在S6中,所述阈值包括:
日志总数量同比环比变化阈值;频繁模式对应的日志模式所对应的日志数量的同比环比变化阈值;半频繁模式对应的日志总数量的同比环比变化阈值;非频繁模式对应的总的日志模式的同比环比变化阈值;极不频繁模式对应的总的日志模式的数量变化阈值;模式向量和依赖关系库中所有依赖集合的数量关系的点积阈值。
8.如权利要求7所述的检测方法,其特征在于,在S6中,所述依赖关系库的获取方法包括:
对于所述流数据模式向量,若存在一组日志模式标识符在每一个流数据模式向量中所对应的流数据模式向量值都同时为0,或同时不为0且同时不为0的流数据模式向量的个数大于预设的阈值,则该组日志模式标识符为一个依赖集合;
基于所述依赖集合的数量关系构建依赖关系库。
9.如权利要求8所述的检测方法,其特征在于,在S8中:
所述基于所述日志数据模式和所述阈值检测所述实时日志数据集合,包括:
将极不频繁模式,非频繁模式,半频繁模式,频繁模式和异常模式在此模式向量中所对应的值与它们在历史模式向量中所对应的值做对比,若对比结果超过阈值,则判定为异常;
所述基于所述日志模式库检测所述实时日志数据集合,包括:
判断所述实时日志数据集合中是否出现新的日志模式,若出现,则判定为异常;
所述基于所述依赖关系库检测所述实时日志数据集合,包括:
判断所述依赖关系是否被破坏,若是,则判定为异常。
10.如权利要求9所述的检测方法,其特征在于,所述检测方法还包括:
S9、更新日志模式库、依赖关系库和阈值。

说明书全文

日志异常检测方法

技术领域

[0001] 本发明涉及数据处理技术领域,具体涉及一种日志异常检测方法。

背景技术

[0002] 随着科技的不断发展,计算机应用在人们生产和生活中发挥着越来越重要的作用。日志是记录计算机系统运行状态和事件的重要载体,可以在各个关键点记录系统状态和重要事件以帮助调试系统故障并执行根本原因分析,因此日志是在线监测和异常检测的极好信息来源。通过检测系统日志的异常情况,可以在关键时刻提供可操作的信息,从而保证系统高效稳定的运行。
[0003] 现有技术检测日志异常情况的方法一般为:首先基于词频或最长公共子序列提取日志数据的日志键,再将日志键进行简析,转换为日志键序列,通过LSTM模型处理日志键序列,从而检测日志是否为异常情况。
[0004] 本申请发明人发现,现有技术在实际应用时,LSTM模型在检测日志的异常情况时,一般只能提供异常时间点,对日志异常情况的解释性偏低,即现有技术存在检测日志异常情况时解释性低的缺点。

发明内容

[0005] (一)解决的技术问题
[0006] 针对现有技术的不足,本发明提供了一种日志异常检测方法,解决了现有技术无法检测日志异常情况时解释性低的技术问题。
[0007] (二)技术方案
[0008] 为实现以上目的,本发明通过以下技术方案予以实现:
[0009] 本发明解决其技术问题所提供的一种日志异常检测方法,所述检测方法由计算机执行,包括以下步骤:
[0010] S1、获取历史日志数据和实时日志数据;
[0011] S2、对所述历史日志数据进行预处理,得到历史日志数据集合;
[0012] S3、基于所述历史日志数据集合获取初始数据集集合和流数据集集合;
[0013] S4、基于预设的spell方法处理所述初始数据集集合,得到初始日志模式库;
[0014] S5、基于预设的spell方法和所述流数据集集合更新所述初始日志模式库,得到日志模式库;基于所述日志模式库获取模式库模式向量;基于所述流数据集集合获取流数据模式向量;
[0015] S6、基于所述模式库模式向量对所述历史日志数据集合进行处理,得到日志数据模式;基于所述模式库模式向量和所述流数据模式向量获取依赖关系库;基于所述模式库模式向量和所述流数据模式向量获取异常检测的阈值
[0016] S7、对所述实时日志数据进行预处理,得到实时日志数据集合;
[0017] S8、基于所述日志数据模式和所述阈值检测所述实时日志数据集合;基于所述日志模式库检测所述实时日志数据集合;基于所述依赖关系库检测所述实时日志数据集合。
[0018] 优选的,所述历史日志数据的预处理包括:
[0019] 用预设的通配符代替网站内容;
[0020] 删除不满足日志数据总体日志结构的日志。
[0021] 优选的,在S3中,所述初始数据集集合的获取方法为:将所述历史日志数据集合划分为若干个初始数据集,每个初始数据集包含预设的M条日志,所有的初始数据集构成初始数据集集合;
[0022] 所述流数据集集合的获取方法为:按照预设的周期划分所述历史日志数据集合,得到的若干个数据集即为流数据集,所有的流数据集构成流数据集集合。
[0023] 优选的,所述预设的spell方法包括:
[0024] 基于spell算法对待处理的数据进行解析;
[0025] 将解析后的数据进行融合,得到融合数据;
[0026] 将所述融合数据和模式库中的数据进行融合。
[0027] 优选的,在S5中,所述模式库模式向量的获取方法包括:
[0028] 统计所述日志模式库中的日志模式所对应的日志数量和所述流数据集集合中含有的日志模式及其对应的日志数量;
[0029] 将所述日志模式库中的日志模式按照日志数量从大到小的顺序进行排序,得到模式库模式向量V=(v0,v1,…,vn),其中:序号代表日志模式的标识符;
[0030] 所述S5还包括:
[0031] 基于所述流数据模式向量获取流数据模式向量序列。
[0032] 优选的,在S6中,所述日志数据模式包括:极不频繁模式,非频繁模式,半频繁模式,频繁模式和异常模式。
[0033] 优选的,在S6中,所述阈值包括:
[0034] 日志总数量同比环比变化阈值;频繁模式对应的日志模式所对应的日志数量的同比环比变化阈值;半频繁模式对应的日志总数量的同比环比变化阈值;非频繁模式对应的总的日志模式的同比环比变化阈值;极不频繁模式对应的总的日志模式的数量变化阈值;模式向量和依赖关系库中所有依赖集合的数量关系的点积阈值。
[0035] 优选的,在S6中,所述依赖关系库的获取方法包括:
[0036] 对于所述流数据模式向量,若存在一组日志模式标识符在每一个流数据模式向量中所对应的流数据模式向量值都同时为0,或同时不为0且同时不为0的流数据模式向量的个数大于预设的阈值,则该组日志模式标识符为一个依赖集合;
[0037] 基于所述依赖集合的数量关系构建依赖关系库。
[0038] 优选的,在S8中:
[0039] 所述基于所述日志数据模式和所述阈值检测所述实时日志数据集合,包括:
[0040] 将极不频繁模式,非频繁模式,半频繁模式,频繁模式和异常模式在此模式向量中所对应的值与它们在历史模式向量中所对应的值做对比,若对比结果超过阈值,则判定为异常;
[0041] 所述基于所述日志模式库检测所述实时日志数据集合,包括:
[0042] 判断所述实时日志数据集合中是否出现新的日志模式,若出现,则判定为异常;
[0043] 所述基于所述依赖关系库检测所述实时日志数据集合,包括:
[0044] 判断所述依赖关系是否被破坏,若是,则判定为异常。
[0045] 优选的,所述检测方法还包括:
[0046] S9、更新日志模式库、依赖关系库和阈值。
[0047] (三)有益效果
[0048] 本发明提供了一种日志异常检测方法。与现有技术相比,具备以下有益效果:
[0049] 本发明通过获取历史日志数据和实时日志数据;对历史日志数据进行预处理,得到历史日志数据集合;基于历史日志数据集合获取初始数据集集合和流数据集集合;基于预设的spell方法处理初始数据集集合,得到初始日志模式库;基于预设的spell方法和流数据集集合更新初始日志模式库,得到日志模式库;基于日志模式库获取模式库模式向量;基于流数据集集合获取流数据模式向量;基于模式库模式向量对历史日志数据集合进行处理,得到日志数据模式;基于两种模式向量获取依赖关系库;基于两种模式向量获取异常检测的阈值;对实时日志数据进行预处理,得到实时日志数据集合;基于日志数据模式和阈值、日志模式库、依赖关系库分别检测实时日志数据集合。本发明在检测日志异常情况时,通过阈值可以检测日志的数量是否异常,通过依赖关系库检测依赖关系是否异常进而可以判定系统的工作流是否发生了异常,还可以检测是否出现新的日志模式。能够帮助运维人员判断具体的异常情况,增强了对日志异常情况的解释性,能够准确检测日志的异常情况,从而可以快速定位异常发生的位置并解决异常,保证系统高效稳定运行。
附图说明
[0050] 为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0051] 图1为本发明实施例提供的日志异常检测方法的整体流程图

具体实施方式

[0052] 为使本发明实施例的目的、技术方案和优点更加清楚,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0053] 本申请实施例通过提供一种日志异常检测方法,解决了现有技术检测日志异常情况时解释性低的技术问题,提高了检测日志异常情况时的解释性。
[0054] 本申请实施例的技术方案为解决上述技术问题,总体思路如下:
[0055] 本发明实施例通过获取历史日志数据和实时日志数据;对历史日志数据进行预处理,得到历史日志数据集合;基于历史日志数据集合获取初始数据集集合和流数据集集合;基于预设的spell方法处理初始数据集集合,得到初始日志模式库;基于预设的spell方法和流数据集集合更新初始日志模式库,得到日志模式库;基于日志模式库获取模式库模式向量;基于流数据集集合获取流数据模式向量;基于模式库模式向量对历史日志数据集合进行处理,得到日志数据模式;基于两种模式向量获取依赖关系库;基于两种模式向量获取异常检测的阈值;对实时日志数据进行预处理,得到实时日志数据集合;基于日志数据模式和阈值、日志模式库、依赖关系库分别检测实时日志数据集合。本发明实施例在检测日志异常情况时,通过阈值可以检测日志的数量是否异常,通过依赖关系库检测依赖关系是否异常进而可以判定系统的工作流是否发生了异常,还可以检测是否出现新的日志模式。能够帮助运维人员判断具体的异常情况,增强了对日志异常情况的解释性,能够准确检测日志的异常情况,从而可以快速定位异常发生的位置并解决异常,保证系统高效稳定运行。
[0056] 为了更好的理解上述技术方案,下面将结合说明书附图以及具体的实施方式对上述技术方案进行详细的说明。
[0057] 本发明实施例提供了一种日志异常检测方法,该方法由计算机执行,如图1所示,包括以下步骤:
[0058] S1、获取历史日志数据和实时日志数据;
[0059] S2、对上述历史日志数据进行预处理,得到历史日志数据集合;
[0060] S3、基于上述历史日志数据集合获取初始数据集集合和流数据集集合;
[0061] S4、基于预设的spell方法处理上述初始数据集集合,得到初始日志模式库;
[0062] S5、基于预设的spell方法和上述流数据集集合更新上述初始日志模式库,得到日志模式库;基于上述日志模式库获取模式库模式向量;基于上述流数据集集合获取流数据模式向量;
[0063] S6、基于上述模式库模式向量对上述历史日志数据集合进行处理,得到日志数据模式;基于上述模式库模式向量和上述流数据模式向量获取依赖关系库;基于上述模式库模式向量和上述流数据模式向量获取异常检测的阈值;
[0064] S7、对上述实时日志数据进行预处理,得到实时日志数据集合;
[0065] S8、基于上述日志数据模式和上述阈值检测上述实时日志数据集合;基于上述日志模式库检测上述实时日志数据集合;基于上述依赖关系库检测上述实时日志数据集合。
[0066] 本发明实施例通过获取历史日志数据和实时日志数据;对历史日志数据进行预处理,得到历史日志数据集合;基于历史日志数据集合获取初始数据集集合和流数据集集合;基于预设的spell方法处理初始数据集集合,得到初始日志模式库;基于预设的spell方法和流数据集集合更新初始日志模式库,得到日志模式库;基于日志模式库获取模式库模式向量;基于流数据集集合获取流数据模式向量;基于模式库模式向量对历史日志数据集合进行处理,得到日志数据模式;基于两种模式向量获取依赖关系库;基于两种模式向量获取异常检测的阈值;对实时日志数据进行预处理,得到实时日志数据集合;基于日志数据模式和阈值、日志模式库、依赖关系库分别检测实时日志数据集合。本发明实施例在检测日志异常情况时,通过阈值可以检测日志的数量是否异常,通过依赖关系库检测依赖关系是否异常进而可以判定系统的工作流是否发生了异常,还可以检测是否出现新的日志模式。能够帮助运维人员判断具体的异常情况,增强了对日志异常情况的解释性,能够准确检测日志的异常情况,从而可以快速定位异常发生的位置并解决异常,保证系统高效稳定运行。
[0067] 下面对各步骤进行具体分析。
[0068] 在步骤S1中,获取历史日志数据和实时日志数据。
[0069] 具体的,实时日志数据的获取周期为10分钟,即每10分钟对此期间的日志进行一次处理。
[0070] 在本发明实施例中,可以包括在线模式和离线模式,离线模式的实时日志数据是储存在本地,而在线模式的实时日志数据需要实时接入,只要接入了一个周期(10分钟)的实时数据就可以对此实时数据进行异常检测。
[0071] 在步骤S2中,对上述历史日志数据进行预处理,得到历史日志数据集合。
[0072] 具体的,预处理方法包括:
[0073] (1)用预设的通配符代替网站内容。
[0074] 预设的通配符为:<*>。
[0075] 具体的算法是采用正则表达式。
[0076] 正则表达式(regular expression)是一种字符串匹配的模式,为现有技术,可以用来检查一个串是否含有某种子串、将匹配的子串替换或者从某个串中取出符合某个条件的子串等。
[0077] (2)去掉那些不满足该日志数据总体日志结构的日志,比如,去掉不包含时间戳的日志。
[0078] 在步骤S3中,基于上述历史日志数据集合获取初始数据集集合和流数据集集合。
[0079] 其中,初始数据集集合由若干个初始数据集组成,初始数据集的获取方法为:按照日志数量将历史日志数据划分为多个初始数据集。需要说明的是,每一个初始数据集中有50000条日志数据。
[0080] 流数据集集合由若干个流数据集组成,流数据集的获取方法为:按照时间戳和预设的周期划分所述历史日志数据,得到的多个数据集即为流数据集。本发明实施例设定的周期为10分钟,即将所有日志数据按照时间(10分钟)划分为有序的多个流数据集。多个流数据集按照时间顺序沟通组成了流数据集集合。
[0081] 在步骤S4中,基于预设的spell方法处理上述初始数据集集合,得到初始日志模式库。
[0082] 具体的,本发明实施例预设的spell方法为:
[0083] 首先基于spell算法对待处理的数据进行解析,根据日志数据得到对应的日志模式。具体的,spell算法为现有技术。
[0084] spell算法会先将日志按照一些分支定位符(比如:,:=空格等)将日志划分为词向量(比如日志“node:123,start working”会被划分为词向量[“node”,“123”,“start”,“working”])。然后对词向量中的每一个元素进行判断,若为以下类型:
[0085] (1)为数字类型,比如“123”;
[0086] (2)为端口类型,比如“172.16.170.100”;
[0087] (3)为16进制数字类型,比如“0x123”。
[0088] 则将这些元素以通配符<*>代替。并且需要删除冗余信息:若词向量的大小超过一定阈值,则不要超过此阈值的元素(阈值默认为25)。比如上诉词向量预处理后为[“node”,“<*>”,“start”,“working”]。
[0089] 在单次处理时加一个后处理过程,后处理过程是对简析出来的日志模式做进一步的聚类,称之为融合。具体的,融合包括两步:
[0090] (1)将解析后的数据进行融合,得到融合数据。
[0091] 第一步骤称为自我融合,即将初步解析出来的日志模式相互融合。
[0092] (2)将融合数据和模式库中的数据进行融合。
[0093] 第二步骤步称为模式库融合,即将初步融合后的日志模式与模式库中的模式进行融合。
[0094] 需要说明的是,在融合过程中,相似度度量的方式综合考虑如下两种方法,具体为:
[0095] 设L1=(l11,l12,…,l1m),L2=(l21,l22,…,l2n)代表两个日志数据。
[0096] 1、f1(L1,L2)=s/(0.5*(m+n)。
[0097] 其中s是L1,L2中对应位置相等的元素个数,m,n分别是L1,L2的元素总个数。
[0098] 2、f2(L1,L2)=s1/(0.5*(m+n))。
[0099] 其中s1表示的L1和L2共同含有的元素个数组成的集合的大小,m,n分别是L1,L2中含有的不同元素个数。
[0100] 只要两个日志模式的f1或者f2值大于一定的阈值就将其融合为新的模式,f1和f2的区别在于f1考虑位置而f2不考虑位置。为了提高融合的速度,算法先比较L1和L2的长度,若长度差大于3便直接判定为不相似,反之,再继续用上述方法继续判断。
[0101] 上述方法为本实施例预设的spell方法。
[0102] 基于上述预设的spell方法处理初始数据集,即可得到初始日志模式库。
[0103] 在步骤S5中,基于预设的spell方法和上述流数据集集合更新上述初始日志模式库,得到日志模式库;基于上述日志模式库获取模式库模式向量;基于上述流数据集集合获取流数据模式向量。
[0104] 具体的,S501、更新初始日志模式库。
[0105] 按照顺序用流数据集和修改的spell算法更新日志模式库。
[0106] 具体的更新方法为:
[0107] 将解析得到的数据(即为日志模式)与日志模式库中的日志模式进行匹配(匹配过程采用上述的相似度度量方法),匹配结果有三种:完全匹配,部分匹配和完全不匹配。若为完全匹配,则将解析得到的日志模式替换为匹配到的日志模式库中的日志模式,并更新日志模式库中的日志库模式向量(直接将该模式在流数据集中对应的日志数量加在日志模式库的日志库模式向量的对应位置上)。若为部分匹配则将该日志模式和匹配到的日志模式库中的日志模式进行融合,然后将两个日志模式设为融合后的日志模式并更新对应的日志模式库向量,若为完全不匹配,则将该日志模式作为新的日志模式加在日志模式库的末尾,然后将日志库模式向量在末尾增加一个元素,元素大小为该日志模式在对应流数据集中所对应的日志数量。
[0108] S502、获取模式库模式向量。
[0109] 统计更新后的日志模式库中的每一个日志模式所对应的日志数量和流数据集中含有的日志模式及其对应的日志数量。
[0110] 将更新后的日志模式库中的日志模式按照日志数量从大到小的顺序进行排序,将序号作为日志模式的标识符,得到日志模式库对应的模式库模式向量V=(v1,v2,…,vn),其中:序号代表日志模式的标识符。v1是标识符为1的日志模式所对应的日志数量。
[0111] 模式库模式向量是模式库中模式向量在总的历史日志数据中所对应日志的数量组成的向量,比如:模式库向量V=[1,2,3]表示标识符0,1,2所对应的日志模式在历史数据中所对应的日志数量分别是1,2,3。
[0112] S503、获取流数据模式向量。
[0113] 具体的,将流数据集中的日志模式转换为模式向量。按照日志模式顺序,将每一个流数据集中所包含的日志模式和所对应的日志数量转换为流数据集模式向量V1,V2,…,Vm。
[0114] 流数据模式向量是统计模式库中的日志模式在流数据集中所对应的日志数量。比如:流数据向量k=[1,0,3]表示标识符0,1,2对应的日志模式在流数据集中所对应的日志数量分别是1,0,3。
[0115] 需要说明的是,每一个流数据集都可求出一个模式向量,对于流数据集集合来说,由于其包含多个流数据集,将这些流数据集对应的模式向量按照顺序(多个流数据集间的时间顺序)组成模式向量序列(相当于一个二维数组),比如模式向量序列B=[V1,V2,…,Vm]。其中Vi=[v1,v2,…,vn]是模式库模式向量,vt代表标识符为t的日志模式在流数据集i中的对应的日志数量。
[0116] 在本发明实施例中,基于流数据模式向量获取流数据集集合的流数据模式向量序列。
[0117] 在步骤S6中,基于上述模式库模式向量对上述历史日志数据集合进行处理,得到日志数据模式;基于上述模式库模式向量和上述流数据模式向量获取依赖关系库;基于上述模式库模式向量和上述流数据模式向量获取异常检测的阈值。
[0118] 具体的,包括以下步骤:
[0119] S601、获取日志数据模式。
[0120] 在本发明实施例中,根据模式库模式向量V,将日志模式划分为以下5种模式:极不频繁模式,非频繁模式,半频繁模式,频繁模式和异常模式。划分思想具体为:
[0121] 少数日志模式对应的日志数量占总的日志数量的绝大多数,它们可以称之为工作日志,而数量占比越少的日志模式在某些方面上对异常的贡献越大。划分方法为日志数量占总的日志数量的比率(比率分别为:0.9,0.09,0.009,0.0001并且只要对应日志数量为1或2的日志模式都会被划分为极不频繁模式,异常模式不在训练阶段划分并且划分异常模式时是考虑单个日志模式所对应的日志数量的占比),得到划分边界序号向量indicator=[i1,i2,i3,i4],V中序号在[1,i1],[i1,i2],[i2,i3],[i3,i4],[i4,n]间的日志模式分别是频繁,半频繁,非频繁,极不频繁和异常模式,训练阶段i4会被直接赋值为n,即训练数据初始视作不含有异常模式。
[0122] S602、获取依赖关系库。
[0123] 具体的,根据流数据模式向量V1,V2,…,Vm建立模式依赖关系库C={c1,c2,…,cs}。在流数据模式向量V1,V2,…,Vm中若存在一组日志模式标识符,使得它们在上述每一个流数据模式向量中所对应的流数据模式向量值都同时为0,或同时不为0并且同时不为0的流数据模式向量的个数大于一定阈值N,本发明实施例设定N为5,那么这一组日志模式标识符组成一个依赖集合,所有满足上述条件的日志模式标识符组合都是依赖集合。
[0124] 基于上述依赖集合的数量关系构建依赖关系库。依赖关系库的元素是日志模式的集合和所对应的数量关系,即ci[0]={v1,v2,…,vj}为日志模式集合,ci[1]={n1,n2,…,nj}为这些日志模式的数量关系。
[0125] 具体的,依赖集合是指同时在N个流数据中发生(即它们标识符所对应的vt在模式向量中都不为零)且N大于一定阈值(默认值设为5即可)的日志模式(以标识符表示)的集合。然后对于每一个依赖集合,根据它们同时发生的模式向量得到它们的依赖关系,即发生的日志数量的均值(取整数),比如依赖集合y=(1,2,3),集合所对应的日志模式同时发生的模式向量为V1=[2,3,4,5,6]和V2=[3,5,6,7,9](下标是从0开始计算的),那么y在V1,V2中所对应的日志发生数量分别为[3,4,5]和[5,6,7],那么y的依赖关系是[4,5,6]。
[0126] 基于所诉依赖关系和依赖集合构建依赖关系库。具体的获取方法为:先通过模式向量序列构建模式依赖关系矩阵YM,设日志模式库的大小为M(即含有M个日志模式),则YM是一个大小为M*M的二维矩阵,YM[i,j]表示i所对应的日志模式所发生的模式向量中(即模式向量序列中所有第i个元素不为0的模式向量)j所对应的模式向量也发生的模式向量的个数,特殊的YM[i,i]表示i所对应的日志模式所发生的模式向量的个数。
[0127] 再通过YM可以快速的得到模式依赖关系库,并且便于依赖关系库的更新。
[0128] S603、获取异常检测的阈值。
[0129] 具体的,根据流数据模式向量V1,V2,…,Vm获取异常检测时需要的一些阈值。
[0130] 在本发明实施例中,阈值具体包括:
[0131] (1)日志总数量(即一个模式向量所有元素的值的和)同比环比变化阈值。若实时流数据集的模式向量所对应的日志总数量与上一(或上几个)时间周期的流数据的模式向量所对应的日志总数量的同比比值或与上一天同时期的流数据的模式向量所对应的日志总数量的同比比值超过这个阈值则视为异常发生。
[0132] (2)频繁模式对应的日志模式所对应的日志数量的同比环比变化阈值。
[0133] (3)半频繁模式对应的日志总数量(即一个模式向量中半频繁模式集中的所有日志模式对应的元素的值的和)的同比环比变化阈值。
[0134] (4)非频繁模式对应的总的日志模式的同比环比变化阈值。
[0135] (5)极不频繁模式对应的总的日志模式的数量变化阈值。
[0136] (6)模式向量和依赖关系库中所有依赖集合的数量关系的点积阈值(将依赖关系所对应的模式向量的值组成的向量与数量关系做点积)。若实时流数据集的模式向量与依赖关系库中的依赖集合所对应的数量关系的点积超过对应阈值则视为异常。
[0137] 上述阈值的获取方法为:先将检测时需要与阈值比较的量提取出来得到一个向量N,鉴于异常发生的比率非常低,所以向量N中的元素符合一定的高斯分布,然后根据高斯分布的均值和方差获取阈值。
[0138] 具体的获取方法为:均值和3倍方差的和。即mean+3*std,其中mean为均值,std为方差。
[0139] 在步骤S7中,对上述实时日志数据进行预处理,得到实时日志数据集合。
[0140] 具体的预处理方法参照步骤S2。
[0141] 在步骤S8中,基于上述日志数据模式和上述阈值检测上述实时日志数据集合;基于上述日志模式库检测上述实时日志数据集合;基于上述依赖关系库检测上述实时日志数据集合。
[0142] 具体的,包括以下步骤:
[0143] S801、根据日志数量变化判断是否出现异常。
[0144] 首先获取预处理后的实时日志流数据集的模式向量。
[0145] 具体的,实时日志数据的模式向量Vt的获取方法为:
[0146] 首先利用预设的spell方法对预处理后的实时日志数据(相当于流数据集)进行处理,得到此流数据所包含的日志模式(以标识符表示)和日志模式所对应的日志数量的集合L=[(i1,n1),…,(is,ns)]。然后将得到的流数据集的日志模式集合进行匹配,得到模式向量Vt,具体的匹配方法可参照步骤S5。需要说明的是,模式向量的大小与模式库的大小相等,且Vt[ij]=nj;j=1,….,s,Vt的其它元素值置为0(其中ij为日志模式的标识符,取值为0,1,2,…)。
[0147] 分别将极不频繁模式,非频繁模式,半频繁模式,频繁模式在此模式向量中的值以及此日志向量的日志总数量与它们在历史模式向量中所对应的值做对比。
[0148] 历史模式向量指:初始数据集集合和流数据集集合中的元素(初始数据集,流数据集)也是有先后顺序的,它们分别对应着一个模式向量序列,比如[l1,l2,l3];其中l1,l2,l3是模式向量,对于某一个模式向量而言,序列中在它之前的模式向量都是它的历史模式向量,比如说,对l2而言,l1是历史模式向量。
[0149] 在本发明实施例中,选取上一时间段或上几个时间段(一个时间段为10分钟)的流数据集的模式向量所对应的值做环比以及和上一天同时间段的流数据集所对应的的模式向量所对应的值做同比。
[0150] 如果比较的结果超过上述对应阈值就会被识别为异常,进而判断异常原因并输出异常。输出的异常包含如下几部分:异常发生的时间点,异常发生的模式类型,比值,异常发生最相关的日志模式以及这个模式向量中包含的所有依赖集合。其中异常发生的时间点可以帮组运维人员定位异常时刻,其它的输出信息都能有效帮助运维人员判断检测出来的异常是否是真的异常,若是,进一步可辅助评估异常的严重性和异常发生的原因。
[0151] 具体的比较方法如下,设定:V1,V2,…,Vk表示上一天的模式向量;V’1,V’2,…,V’t表示当天的模式向量。
[0152] Pt-1,Pt分别表示t-1时间和t时间的日志模式库。
[0153] Ct表示t时刻的依赖关系库。
[0154] Thres1,Thres2,…表示阈值。
[0155] Sum(a),表示向量a中的所有元素的和;sum(a+b)=sum(a)+sum(b)。
[0156] 划分边界序号向量indicator=[i1,i2,i3,i4]。
[0157] (1)异常类型:日志数量突增,具体为:
[0158] 如果sum(V’t)/(sum(V’t-1)+1)>Thres1或者sum(V’t+V’t-1)/(sum(V’t-2)+1)>1.2*Thres1或者sum(V’t+V’t-1+V’t-2)/(sum(V’t-3)+1)>1.5*Thres1;
[0159] 并且sum(V’t)/(sum(Vt)+1)>0.5*Thres1并且sum(V’t-1)/(sum(V’t-2+1)
[0160] (2)异常类型:某频繁模式数量突增,具体为:
[0161] 比较方法类似于(1)但是使用的是模式向量中频繁模式对应的部分组成的向量,并且使用数组的除法取最大值,例:max(V’t/(V’t-1+1))>Thres2。
[0162] (3)异常类型:半频繁模式数量突增和某半频繁模式突增,判断方式类似(1)(2)。
[0163] 如果比较的结果超过对应的阈值就会被识别为异常,进而判断异常原因并输出异常,输出的异常包含如下几部分:异常发生的时间点,异常发生的模式类型,比较值,异常发生最相关的日志模式以及包含这个模式的发生次数最多的依赖关系集合。
[0164] S802、判断实时日志数据中是否出现新的日志模式,若出现,则判定为异常。
[0165] 具体的,判断日志模式库是否变大,判断方式为比较t时刻和t-1时刻日志模式库的大小,若t时刻较大则为出现了新的日志模式,新的日志模式会被排在日志模式库中的末尾,即会被初始化为异常模式。
[0166] 新的日志模式可以从两方面进行看待,一是属于比训练集合中得到的极不频繁的日志模式还要不频繁的日志模式,可以视作为异常日志模式,二是系统新任务或者因为系统更新而产生的新模式。所以,出现新模式就会直接以‘新增日志模式’的方式输出为异常,输出结果包含新增的日志模式及数量和所有在此期间发生的依赖关系集合和对应的发生次数。若新的日志模式属于第一种情况,随着日志模式库的更新,它在日志模式库中的比率会很快下降,从而保持为异常日志模式以帮助后续的异常检测,若属于第二种情况,随着日志模式库的更新,它在日志模式库中的比率会很快上升,从而逐渐上升为非频繁模式,半频繁模式甚至频繁模式。
[0167] S803、判断实时日志数据中是否有异常模式发生。具体的,判断对应的模式向量中异常模式所对应的元素的值的和是否大于0,若是,则判断为异常,输出结果包含,时间点,异常原因(异常模式出现),出现的异常模式的日志模式集合,出现的异常模式所对应的日志数量。
[0168] 具体的比较方式如下:
[0169] 异常类型:极不频繁模式数量大量出现,具体为:
[0170] Sum(V’t[i3:i4])>Thres5并且Sum(Vt[i3:i4])
[0171] S804、判断依赖关系是否被破坏,若是,则判定为异常。
[0172] 将当前实时日志数据所对应的模式向量依次与依赖关系库中的依赖集合所对应的数量关系做点积(具体是将依赖集合在此模式向量中所对应的元素组成的向量与依赖集合的依赖关系做点积),若值超过上述对应阈值则视为异常,输出结果包含时间点,异常原因(依赖关系被破坏),被破坏的依赖集合,破坏程度(上述点积值与上述对应阈值的比值)。
[0173] 本发明实施例还包括:S9、更新日志模式库、依赖关系库和阈值。
[0174] 具体的,本发明实施例基于增量式学习方法进行实时更新。保留最近两天长度的模式向量序列(一个模式向量的时间跨度为10分钟),由上文可见,修改的spell算法会在处理日志流数据集的过程中更新日志模式库的日志模式(修正已有模式和加入新的模式)和日志库模式向量。然后每两天将日志库模式向量中的值分别除以2(保证日志库模式向量表示的是日志模式库中的日志模式所对应的日志在1天的平均发生的数量,然后根据新的日志库模式向量的大小重新排序日志模式库和重新计算划分边界向量,根据新的日志模式的标识符调整保存的模式向量序列,然后根据最近两天的模式向量序列重新计算日志依赖关系库和阈值。
[0175] 因为系统会不定时更新,导致系统产生的日志模式在类型和数量上也会发生变化,增量式学习可以保证可以跟上系统的变化,从而保证了本实施例的准确性。
[0176] 本发明实施例在具体实施时,还可以实现可视化操作。在检测过程中会连续不断的得到日志流数据集的模式向量Vt=[vt0,vt1,…,vtn],然后就可以得到连续的模式向量序列T=[V0,V1,…,Vm]。如果我们关心V0所对应的日志模式所对应的日志数量的变化情况,我们首先可以通过模式向量序列得到V0所对应的日志模式的日志数量序列[V0[0],V1[0],…,Vm[0]],然后通过此序列就可以画出其日志数量变化曲线,通过不断接入新的日志流数据集,可以得到V0所对应的日志模式的增量式变化曲线;除了画单个日志模式的日志数量变化曲线还可以画多个日志模式对应的日志数量的和的变化曲线(对应于频繁模式,非频繁模式等);除此之外,还可以画某依赖集合的数量变化曲线(一个依赖集合可以看成一个工作任务)。
[0177] 综上所述,与现有技术相比,具备以下有益效果:
[0178] 1、本发明实施例通过获取历史日志数据和实时日志数据;对历史日志数据进行预处理,得到历史日志数据集合;基于历史日志数据集合获取初始数据集集合和流数据集集合;基于预设的spell方法处理初始数据集集合,得到初始日志模式库;基于预设的spell方法和流数据集集合更新初始日志模式库,得到日志模式库;基于日志模式库获取模式库模式向量;基于流数据集集合获取流数据模式向量;基于模式库模式向量对历史日志数据集合进行处理,得到日志数据模式;基于两种模式向量获取依赖关系库;基于两种模式向量获取异常检测的阈值;对实时日志数据进行预处理,得到实时日志数据集合;基于日志数据模式和阈值、日志模式库、依赖关系库分别检测实时日志数据集合。本发明实施例在检测日志异常情况时,通过阈值可以检测日志的数量是否异常,通过依赖关系库检测依赖关系是否异常进而可以判定系统的工作流是否发生了异常,还可以检测是否出现新的日志模式。能够帮助运维人员判断具体的异常情况,增强了对日志异常情况的解释性,能够准确检测日志的异常情况,从而可以快速定位异常发生的位置并解决异常,保证系统高效稳定运行。
[0179] 2、现有技术在进行日志预处理时,由于要多次遍历全部日志数据且要统计和保存词频,导致时间和内存的耗费较大。本发明实施例中提供了一种高效且稳定的日志简析算法,即利用日志预处理和预设的spell方法相结合,能够有效地避免上述问题且不需要经过太多的变化就能适用于不同格式的日志数据。
[0180] 3、本发明实施例能够保证在线实时检测,算法在进行异常检测时所需花费的时间和内存较低,所以较低配置的设备便能保证算法能够进行在线实时检测。
[0181] 4、本发明实施例可以进行可视化操作,帮助运维人员更加直观地分析异常。
[0182] 需要说明的是,通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本发明的实施例可以在没有这些具体细节的情况下实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。
[0183] 在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
[0184] 以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
高效检索全球专利

专利汇是专利免费检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询,专利检索等数据服务功能的知识产权数据服务商。

我们的产品包含105个国家的1.26亿组数据,免费查、免费专利分析。

申请试用

分析报告

专利汇分析报告产品可以对行业情报数据进行梳理分析,涉及维度包括行业专利基本状况分析、地域分析、技术分析、发明人分析、申请人分析、专利权人分析、失效分析、核心专利分析、法律分析、研发重点分析、企业专利处境分析、技术处境分析、专利寿命分析、企业定位分析、引证分析等超过60个分析角度,系统通过AI智能系统对图表进行解读,只需1分钟,一键生成行业专利分析报告。

申请试用

QQ群二维码
意见反馈