故障检测方法、系统、装置、服务器及存储介质转让专利

申请号 : CN202010239409.4

文献号 : CN113472555B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 廖岳

申请人 : 华为技术有限公司

摘要 :

本申请公开了一种故障检测方法、系统、装置、服务器及存储介质,属于数据检测技术领域。该故障检测过程中,在确定第一参考日志模板的分布情况时,不仅采用了第一参考日志模板的检测出现次数、参考出现次数,还考虑到了第一参考日志模板的总检测出现次数以及总参考出现次数,从而消除了检测出现次数发生具有共性的数量变化而带来的干扰,而由于正常模板分布情况存在一定稳定性,因此,通过确定检测得到的分布情况与正常分布情况之间的差异,即能够确定目标时间段是否发生故障,这种基于分布差异的故障检测,不会因为在一些场景下各个参考日志模版的检测出现次数发生具有共性的数量变化,而造成误判,故障检测的抗干扰能力更强,可以提高故障检测的准确性。

权利要求 :

1.一种故障检测方法,其特征在于,所述方法包括:

获取目标时间段内的多条日志数据;

获取所述多条日志数据对应的至少一个第一参考日志模板以及每个所述第一参考日志模板的检测出现次数;

根据所述每个所述第一参考日志模板的检测出现次数、每个所述第一参考日志模板的参考出现次数,获取所述目标时间段的模板分布差异信息,所述模板分布差异信息是指基于所述检测出现次数、所述参考出现次数、总检测出现次数以及总参考出现次数所确定的模板分布与正常模板分布之间的差异;

若所述模板分布差异信息符合目标条件,则确定所述目标时间段发生故障。

2.根据权利要求1所述的方法,其特征在于,所述获取所述多条日志数据对应的至少一个第一参考日志模板包括:获取每条所述日志数据中的目标字段,所述目标字段包括所述日志数据中前N个字段,其中,N为正整数;

确定与所述目标字段匹配的参考日志模板组,所述参考日志模板组中的参考日志模板均具有相同的前N个字段;

确定所述参考日志模板组中与所述日志数据匹配的第一参考日志模板。

3.根据权利要求2所述的方法,其特征在于,所述确定与所述目标字段匹配的参考日志模板组包括:获取所述目标字段的目标哈希值,确定与所述目标哈希值匹配的参考哈希值,所述参考哈希值用于标识所述参考日志模板组;

确定所述参考哈希值所标识的参考日志模板组。

4.根据权利要求1所述的方法,其特征在于,所述方法还包括:响应于任一条日志数据没有对应的第一参考日志模板,基于所述日志数据生成新的参考日志模板。

5.根据权利要求1‑4任一项所述的方法,其特征在于,所述获取所述目标时间段的模板分布差异信息包括:确定所述至少一个第一参考日志模板的总检测出现次数以及总参考出现次数;

根据所述检测出现次数、所述参考出现次数、总检测出现次数以及总参考出现次数,确定所述目标时间段的卡方值,以所述卡方值作为所述模板分布差异信息。

6.根据权利要求1‑4任一项所述的方法,其特征在于,所述模板分布差异信息符合目标条件是指:所述模板分布差异信息大于第一目标阈值,或,所述模板分布差异信息小于第二目标阈值,其中,所述第一目标阈值大于所述第二目标阈值。

7.根据权利要求1‑4任一项所述的方法,其特征在于,所述若所述模板分布差异信息符合目标条件,则确定所述目标时间段发生故障之后,所述方法还包括:根据所述多个第一参考日志模板,确定与所述至少一个第一参考日志模板中至少一个模板对应的故障场景。

8.根据权利要求1‑4中任一所述的方法,其特征在于,所述方法还包括:确定所述目标时间段相邻的至少一个时间段发生故障;

获取所述至少一个时间段对应的至少一个第二参考日志模板,则根据所述至少一个第二参考日志模板、所述多个第一参考日志模板,确定故障时间段的目标故障场景,其中,所述故障时间段包括所述目标时间段和所述至少一个时间段,所述目标故障场景是指与所述至少一个第一参考日志模板和所述至少一个第二参考日志模板中至少一个模板对应的故障场景。

9.根据权利要求1‑4任一项所述的方法,其特征在于,所述根据所述每个所述第一参考日志模板的检测出现次数以及每个所述第一参考日志模板的参考出现次数,获取所述目标时间段的模板分布差异信息之前,所述方法还包括:将所述多条日志数据对应的至少一个第一参考日志模板中的周期模板剔除,其中,所述周期模板为正常运行时周期性出现的日志模板。

10.根据权利要求9所述的方法,其特征在于,所述周期模板的确定方法包括:根据历史时间段内的参考日志模板在不同时间点的检测出现次数,生成时序序列;

将所述时序序列转换为频域序列;

将所述频域序列中频域特征符合离散特性的参考日志模板确定为所述周期模板。

11.一种故障检测系统,其特征在于,所述系统包括:第一服务器和第二服务器;

所述第一服务器用于执行权利要求1至权利要求9任一项所述的故障检测方法;

所述第二服务器用于生成参考日志模板,并向所述第一服务器提供所述参考日志模板以及所述参考日志模板的参考出现次数。

12.根据权利要求11所述的系统,其特征在于,

所述第二服务器还用于:

根据历史时间段内的参考日志模板在不同时间点的检测出现次数,生成时序序列;

将所述时序序列转换为频域序列;

将所述频域序列中频域特征符合离散特性的参考日志模板确定为周期模板,所述周期模板为正常运行时周期性出现的日志模板。

13.权利要求11所述的系统,其特征在于,所述第二服务器还用于为所述第一服务器提供与所述参考日志模板对应的故障场景。

14.一种故障检测装置,其特征在于,所述装置包括:日志数据获取单元,用于获取目标时间段内的多条日志数据;

第一参考日志模板获取单元,用于获取所述多条日志数据对应的至少一个第一参考日志模板以及每个所述第一参考日志模板的检测出现次数;

模板分布差异信息获取单元,用于根据所述每个所述第一参考日志模板的检测出现次数、每个所述第一参考日志模板的参考出现次数,获取所述目标时间段的模板分布差异信息,所述模板分布差异信息是指基于所述检测出现次数、所述参考出现次数、总检测出现次数以及总参考出现次数所确定的模板分布与正常模板分布之间的差异;

确定单元,用于若所述模板分布差异信息符合目标条件,则确定所述目标时间段发生故障。

15.根据权利要求14所述的装置,其特征在于,所述第一参考日志模板获取单元包括:目标字段获取子单元,用于获取每条所述日志数据中的目标字段,所述目标字段包括所述日志数据中前N个字段,其中,N为正整数;

模板组确定子单元,用于确定与所述目标字段匹配的参考日志模板组,所述参考日志模板组中的参考日志模板均具有相同的前N个字段;

第一参考日志模板确定子单元,用于确定所述参考日志模板组中与所述日志数据匹配的第一参考日志模板。

16.根据权利要求15所述的装置,其特征在于,所述模板组确定子单元用于:获取所述目标字段的目标哈希值,确定与所述目标哈希值匹配的参考哈希值,所述参考哈希值用于标识所述参考日志模板组;

确定所述参考哈希值所标识的参考日志模板组。

17.根据权利要求14所述的装置,其特征在于,所述装置还包括:参考日志模板生成单元,用于响应于任一条日志数据没有对应的第一参考日志模板,基于所述日志数据生成新的参考日志模板。

18.根据权利要求14‑17任一项所述的装置,其特征在于,所述模板分布差异信息获取单元用于:确定所述至少一个第一参考日志模板的总检测出现次数以及总参考出现次数;

根据所述检测出现次数、所述参考出现次数、总检测出现次数以及总参考出现次数,确定所述目标时间段的卡方值,以所述卡方值作为所述模板分布差异信息。

19.根据权利要求14‑17任一项所述的装置,其特征在于,所述模板分布差异信息符合目标条件是指:所述模板分布差异信息大于第一目标阈值,或,所述模板分布差异信息小于第二目标阈值,其中,所述第一目标阈值大于所述第二目标阈值。

20.根据权利要求14‑17任一项所述的装置,其特征在于,所述装置还包括:第一故障场景确定单元,用于根据所述多个第一参考日志模板,确定与所述至少一个第一参考日志模板中至少一个模板对应的故障场景。

21.根据权利要求14‑17中任一所述的装置,其特征在于,所述装置还包括:第二故障场景确定单元,用于确定所述目标时间段相邻的至少一个时间段发生故障;

获取所述至少一个时间段对应的至少一个第二参考日志模板,则根据所述至少一个第二参考日志模板、所述多个第一参考日志模板,确定故障时间段的目标故障场景,其中,所述故障时间段包括所述目标时间段和所述至少一个时间段,所述目标故障场景是指与所述至少一个第一参考日志模板和所述至少一个第二参考日志模板中至少一个模板对应的故障场景。

22.根据权利要求14‑17任一项所述的装置,其特征在于,所述装置还包括:周期模板剔除单元,用于将所述多条日志数据对应的至少一个第一参考日志模板中的周期模板剔除,其中,所述周期模板为正常运行时周期性出现的日志模板。

23.根据权利要求22所述的装置,其特征在于,所述周期模板的确定方法包括:根据历史时间段内的参考日志模板在不同时间点的检测出现次数,生成时序序列;

将所述时序序列转换为频域序列;

将所述频域序列中频域特征符合离散特性的参考日志模板确定为所述周期模板。

24.一种服务器,其特征在于,所述服务器包括处理器和存储器,所述存储器中存储有至少一条指令,所述指令由所述处理器加载并执行以实现如权利要求1至权利要求10任一项所述的故障检测方法所执行的操作。

25.一种计算机可读存储介质,其特征在于,所述存储介质中存储有至少一条指令,所述指令由处理器加载并执行以实现如权利要求1至权利要求10任一项所述的故障检测方法所执行的操作。

说明书 :

故障检测方法、系统、装置、服务器及存储介质

技术领域

[0001] 本申请涉及数据检测技术领域,特别涉及一种故障检测方法、系统、装置、服务器及存储介质。

背景技术

[0002] 对于任意网络服务平台来说,其运行过程中会生成日志数据,日志数据可以用于记录运行状态,例如记录消息以及其他内部处理信息、软件运行轨迹等。随着互联网技术的发展,设备与设备、设备与用户之间的交互频率愈加频繁,在运行过程中产生的日志数量也迅速增大。
[0003] 正是由于日志数据可以用于记录运行状态,因此日志数据常常被用于进行故障检测,确定故障发生的时间和类型。相关技术中,基于日志数据进行故障检测的过程中,往往会对日志进行聚类分组,确定日志数据对应的日志模版,基于日志模版的数量,确定是否发生故障。
[0004] 但是,在实际运行过程中,如果遇到业务量激增的情况,会导致短时间内日志模版的数量迅速增大。在这种情况下,相关技术提供的方案可能会误判为发生故障。例如,若对于购物网站的服务器来说,遇到节假日或大型活动时,服务器的访问量和订单量会激增,日志模版的数量也会在短时间内迅速增大,而导致相关技术中的方案会判断服务器发生故障,从而产生误判。因此,目前的故障检测的准确性不高。

发明内容

[0005] 本申请实施例提供了一种故障检测方法、系统、装置、服务器及存储介质,能够提高故障检测的准确性。该技术方案如下:
[0006] 第一方面,提供了一种故障检测方法,该方法包括:
[0007] 获取目标时间段内的多条日志数据;
[0008] 获取所述多条日志数据对应的至少一个第一参考日志模板以及每个所述第一参考日志模板的检测出现次数;
[0009] 根据所述每个所述第一参考日志模板的检测出现次数、每个所述第一参考日志模板的参考出现次数,获取所述目标时间段的模板分布差异信息,所述模板分布差异信息是指基于所述检测出现次数、所述参考出现次数、总检测出现次数以及总参考出现次数所确定的模板分布与正常模板分布之间的差异;
[0010] 若所述模板分布差异信息符合目标条件,则确定所述目标时间段发生故障。
[0011] 上述故障检测过程中,在确定第一参考日志模板的分布情况时,不仅采用了第一参考日志模板的检测出现次数、参考出现次数,还考虑到了第一参考日志模板的总检测出现次数以及总参考出现次数,从而消除了检测出现次数整体变化而带来的干扰,而由于正常模板分布情况存在一定稳定性,因此,通过确定检测得到的分布情况与正常分布情况之间的差异,即能够确定目标时间段是否发生故障,这种基于分布差异的故障检测,不会因为在一些场景下各个参考日志模版的检测出现次数共有的变化,而造成误判,故障检测的抗干扰能力更强,可以提高故障检测的准确性。
[0012] 在第一方面的第一种可能的实施方式中,所述获取所述多条日志数据对应的至少一个第一参考日志模板包括:
[0013] 获取每条所述日志数据中的目标字段,所述目标字段包括所述日志数据中前N个字段,其中,N为正整数;
[0014] 确定与所述目标字段匹配的参考日志模板组,所述参考日志模板组中的参考日志模板均具有相同的前N个字段;
[0015] 确定所述参考日志模板组中与所述日志数据匹配的第一参考日志模板。
[0016] 在这种实现在这种实现方式下,服务器可以根据日志数据中前N个字段确定与日志数据匹配的第一参考日志模版,由于多个日志数据可能对应于同一个第一参考日志模版,基于第一参考日志模版进行后续的故障检测可以大大减少服务器的运算量,提高故障检测的效率。
[0017] 在第一方面的第二种可能的实施方式中,所述确定与所述目标字段匹配的参考日志模板组包括:
[0018] 获取所述目标字段的目标哈希值,确定与所述目标哈希值匹配的参考哈希值,所述参考哈希值用于标识所述参考日志模板组;
[0019] 确定所述参考哈希值所标识的参考日志模板组。
[0020] 在第一方面的第三种可能的实施方式中,所述方法还包括:
[0021] 响应于任一条日志数据没有对应的第一参考日志模板,基于所述日志数据生成新的参考日志模板。
[0022] 在这种实现方式下,服务器可以在故障检测的过程中基于日志数据生成新的参考日志模版,在后续的故障检测过程中再次遇到该日志数据时,就可以直接与新的参考日志模版匹配,提高了日志模版的匹配效率。
[0023] 在第一方面的第四种可能的实施方式中,所述获取所述目标时间段的模板分布差异信息包括:确定所述至少一个第一参考日志模板的总检测出现次数以及总参考出现次数;根据所述检测出现次数、所述参考出现次数、总检测出现次数以及总参考出现次数,确定所述目标时间段的卡方值,以所述卡方值作为所述模板分布差异信息。
[0024] 在这种实现方式下,服务器可以通过卡方值来衡量目标窗口内参考日志模版和正常运行时参考日志模版的分布情况差异,后续可以利用分布情况差异来对异常情况进行检测。
[0025] 在第一方面的第五种可能的实施方式中,所述模板分布差异信息符合目标条件是指:
[0026] 所述模板分布差异信息大于第一目标阈值,或,所述模板分布差异信息小于第二目标阈值,其中,所述第一目标阈值大于所述第二目标阈值。
[0027] 在第一方面的第六种可能的实施方式中,所述若所述模板分布差异信息符合目标条件,则确定所述目标时间段发生故障之后,所述方法还包括:
[0028] 根据所述多个第一参考日志模版,确定与所述至少一个第一参考日志模板中至少一个模板对应的故障场景。
[0029] 在这种实现方式下,服务器可以根据目标时间段的至少一个第一参考日志模版自动确定相应的故障场景,相关人员可以根据服务器确定的故障场景,及时采取措施,排除故障,提高了故障排除的效率。
[0030] 在第一方面的第七种可能的实施方式中,所述方法还包括:
[0031] 确定所述目标时间段相邻的至少一个时间段发生故障;
[0032] 获取所述至少一个时间段对应的至少一个第二参考日志模板,则根据所述至少一个第二参考日志模板、所述多个第一参考日志模版,确定故障时间段的目标故障场景,其中,所述故障时间段包括所述目标时间段和所述至少一个时间段,所述目标故障场景是指与所述至少一个第一参考日志模板和所述至少一个第二参考日志模板中至少一个模板对应的故障场景。
[0033] 在这种实现方式下,服务器可以根据目标时间段以及至少一个相邻时间段的至少一个第一参考日志模版以及至少一个第二参考日志模版自动确定相应的故障场景,相关人员可以根据服务器确定的故障场景,及时采取措施,排除故障,提高了故障排除的效率。
[0034] 在第一方面的第八种可能的实施方式中,所述根据所述每个所述第一参考日志模板的检测出现次数以及每个所述第一参考日志模板的参考出现次数,获取所述目标时间段的模板分布差异信息之前,所述方法还包括:
[0035] 将所述多条日志数据对应的至少一个第一参考日志模板中的周期模版剔除,其中,所述周期模版为正常运行时周期性出现的日志模版。
[0036] 在这种实现方式下,服务器可以基于所获取到的日志数据来自动识别周期模版,从而使得在故障检测过程中可以由服务器在进行了模板匹配后自动进行周期模板的剔除处理,这种处理过程可以自动剔除这类周期性的影响,达到抗干扰的效果。
[0037] 在第一方面的第九种可能的实施方式中,所述周期模版的确定方法包括:
[0038] 根据历史时间段内的参考日志模版在不同时间点的检测出现次数,生成时序序列;
[0039] 将所述时序序列转换为频域序列;
[0040] 将所述频域序列中频域特征符合离散特性的参考日志模板确定为所述周期模板。
[0041] 在这种实现方式下,由于直接判断时序序列是否连续的难度较大,精度也不高,服务器可以将时序序列转化为频域序列,只需判断频域序列中频域特征是否符合离散特性就可以快速确定历史时间段内的参考日志模版是否为周期模版,周期模版的确定效率较高。
[0042] 第二方面,提供了一种故障检测系统,该系统包括:
[0043] 第一服务器和第二服务器;
[0044] 所述第一服务器用于执行上述第一方面除第九种可能的实施方式外任一种可选方式提供的故障检测方法;
[0045] 所述第二服务器用于生成参考日志模板,并向所述第一服务器提供所述参考日志模板以及所述参考日志模版的参考出现次数。
[0046] 该第一服务器进行故障检测过程中,在确定第一参考日志模板的分布情况时,不仅采用了第一参考日志模板的检测出现次数、参考出现次数,还考虑到了第一参考日志模板的总检测出现次数以及总参考出现次数,从而消除了检测出现次数整体变化而带来的干扰,而由于正常模板分布情况存在一定稳定性,因此,通过确定检测得到的分布情况与正常分布情况之间的差异,即能够确定目标时间段是否发生故障,这种基于分布差异的故障检测,不会因为在一些场景下各个参考日志模版的检测出现次数发生具有共性的数量变化,而造成误判,故障检测的抗干扰能力更强,可以提高故障检测的准确性。
[0047] 在第二方面的第一种可能实现方式中,所述第二服务器还用于:
[0048] 根据历史时间段内的参考日志模版在不同时间点的检测出现次数,生成时序序列;
[0049] 将所述时序序列转换为频域序列;
[0050] 将所述频域序列中频域特征符合离散特性的参考日志模板确定为所述周期模板。
[0051] 在这种实现方式下,由于直接判断时序序列是否连续的难度较大,精度也不高,第二服务器可以将时序序列转化为频域序列,只需判断频域序列中频域特征是否符合离散特性就可以快速确定历史时间段内的参考日志模版是否为周期模版,周期模版的确定效率较高。
[0052] 在第二方面的第二种可能实现方式中,所述第二服务器还用于为所述第一服务器提供与所述参考日志模版对应的故障场景。
[0053] 第三方面,提供了一种故障检测装置,用于执行上述故障检测方法。具体地,该故障检测装置包括用于执行上述第一方面或上述第一方面的任一种可选方式提供的故障检测方法的功能模块。
[0054] 第四方面,提供一种服务器,该服务器包括处理器和存储器,该存储器中存储有至少一条指令,该指令由该处理器加载并执行以实现如上述故障检测方法所执行的操作。
[0055] 第五方面,提供一种计算机可读存储介质,该存储介质中存储有至少一条指令,该指令由处理器加载并执行以实现如上述故障检测方法所执行的操作。

附图说明

[0056] 为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0057] 图1是本申请实施例提供的一种故障检测方法的具体实施环境示意图;
[0058] 图2是本申请实施例提供的一种示例性的一种服务器200的框图;
[0059] 图3是本申请实施例提供的一种示例性实施例示出的生成参考日志模版的流程图;
[0060] 图4是本申请实施例提供的一种示例性的将第一日志数据组划分为第二日志数据组的结果示意图;
[0061] 图5是本申请实施例提供的一种示例性的在第二日志数据组中确定字段对应关系的示意图;
[0062] 图6是本申请实施例提供的一种示例性的确定参考日志模版的结果示意图;
[0063] 图7是本申请实施例提供的一种示例性的确定参考日志模版的参考出现次数的流程图;
[0064] 图8是本申请实施例提供的一种示例性实施例示出的故障检测方法的流程图;
[0065] 图9是本申请实施例提供的一种示例性实施例示出的一种包含训练和检测两个分支的流程图;
[0066] 图10是本申请实施例提供的一种示例性的周期模版确定原理的示意图;
[0067] 图11是本申请实施例提供的一种示例性实施例示出的根据卡方值进行故障检测方法的示意图;
[0068] 图12是本申请实施例提供的一种示例性实施例示出的故障检测系统结构示意图;
[0069] 图13是本申请实施例提供的一种示例性实施例示出的故障检测装置结构示意图。

具体实施方式

[0070] 为使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请实施方式作进一步地详细描述。
[0071] 图1是本公开实施例提供的一种故障检测方法的具体实施环境示意图,参见图1,该故障检测方法的具体实施环境包括:服务器101和终端102。该服务器101可以包括一台服务器、多台服务器、云计算平台和虚拟化中心中的至少一种。服务器101用于为应用程序提供后台服务。该终端102,通过无线网络或有线网络与服务器101相连。终端102可以是智能手机、台式计算机、平板电脑和膝上型便携计算机中的至少一种。
[0072] 在一种实现场景中,终端102可以作为日志数据的提供者,终端102可以将运行所产生的日志数据发送至服务器101进行故障检测,再基于服务器101所返回的检测结果进行展示。可选地,服务器101还可以为终端101提供对故障场景的识别功能,并将识别结果发送给终端102,以便终端102基于该识别结果进行展示。
[0073] 在另一种实现场景中,服务器101还可以基于终端101所提供的日志数据进行故障检测,从而基于检测结果来对运维人员进行提示或是执行后续运维处理,可选地,服务器101也可以提供上述故障场景的识别功能。
[0074] 需要说明的是,上述故障检测等功能可以在同一组硬件上实现,还可以在不同组硬件上实现,例如,该服务器101可以包括用于执行故障检测的第一服务器1011,以及用于生成参考日志模板,并向所述第一服务器提供所述参考日志模板的第二服务器1012,当然,该第二服务器还可以用于生成周期模板,还可以用于提供与参考日志模板对应的故障场景等,本公开实施例对此不做限定。
[0075] 在上述场景中均涉及到服务器的参与,而在又一种实现场景中,该终端102还可以作为故障检测者,来执行下述实施例中服务器101所执行的操作,也即是,用户可以在终端102上进行日志数据的导入,再由终端102基于已经存储于本地的参考日志模板等,来对日志数据进行故障检测,再基于检测的结果进行展示,而无需与服务器101进行实时的交互。
[0076] 图2是根据一示例性实施例示出的一种服务器200的框图。参照图2,服务器200包括处理组件201以及由存储器202所代表的存储器资源,用于存储可由处理组件201执行的程序代码,例如应用程序。其中,处理组件201进一步包括一个或多个处理器,该处理器可以是一个通用中央处理器(central processing unit,CPU)、网络处理器(NP)、微处理器、或者可以是一个或多个用于实现本申请方案的集成电路,例如,专用集成电路(application‑specific integrated circuit,ASIC),可编程逻辑器件(programmable logic device,PLD)或其组合。上述PLD可以是复杂可编程逻辑器件(complex programmable logic device,CPLD),现场可编程逻辑门阵列(field‑programmable gate array,FPGA),通用阵列逻辑(generic array logic,GAL)或其任意组合。这些处理器中的每一个可以是一个单核处理器(single‑CPU),也可以是一个多核处理器(multi‑CPU)。这里的处理器可以指一个或多个设备、电路、和/或用于处理数据(如计算机程序指令)的处理核。
[0077] 存储器202可以是只读存储器(read‑only memory,ROM)或可存储静态信息和指令的其它类型的静态存储设备,也可以是随机存取存储器(random access memory,RAM)或者可存储信息和指令的其它类型的动态存储设备,也可以是电可擦可编程只读存储器(electrically erasable programmable read‑only Memory,EEPROM)、只读光盘(compact disc read‑only memory,CD‑ROM)或其它光盘存储、光碟存储(包括压缩光碟、激光碟、光碟、数字通用光碟、蓝光光碟等)、磁盘存储介质或者其它磁存储设备,或者是能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机存取的任何其它介质,但不限于此。存储器202可以是独立存在,并与处理组件201相连接。存储器202也可以和处理组件201集成在一起。
[0078] 其中,存储器202中存储的应用程序可以包括一个或一个以上的每一个对应于一组程序代码的模块。此外,处理组件201被配置为执行存储器202中存储的程序代码,以执行下述故障检测方法,和/或参考日志模板的生成方法。
[0079] 服务器200还可以包括一个电源组件203被配置为执行服务器200的电源管理,一个有线或无线网络接口204被配置为将服务器200连接到网络,和一个输入输出(I/O)接口TM205。服务器200可以操作基于存储在存储器202的操作系统,例如Windows Server ,Mac OS TM TM TM TM
X ,Unix ,Linux ,FreeBSD 或类似。
[0080] 为了实现本申请实施例所提供的故障检测方法,本申请还提供了参考日志模板的生成方法,其具体生成过程可以如下:
[0081] 301、服务器获取历史日志文件。
[0082] 该历史日志文件可以是历史时间段内所获取到的日志文件,历史运行过程可以作为后续检测的参考,因此,通过获取历史日志文件来生成参考日志模板,可以大大提高检测准确性。
[0083] 302、服务器对历史日志文件中各行内的历史日志数据进行结构化。
[0084] 由于日志数据的格式可能存在差异,因此,服务器可以对历史日志数据进行结构化,得到格式统一的日志数据,便于后续基于日志数据的处理。
[0085] 下面,以对一个日志文件的结构化过程为例进行说明。
[0086] 日志文件中可以包括多个数据行,每个数据行也即是设备在不同时间生成的日志数据。服务器在读取日志文件之后,可以基于结构化配置文件对日志文件中各行日志数据进行结构化。
[0087] 结构化配置文件中包括多个命令,不同的命令用于指示服务器进行不同的操作。在一些可能的结构化配置文件中,可以包括“files”以及“regex”等命令,其中,files对应的命令用于指示服务器从哪个目录下读取日志文件;regex对应的命令用于指示服务器从日志文件的日志数据中读取哪些字段,例如时间戳timestamp、级别severity、日志信息message、日志原始行line及日志文件路径file_path等。
[0088] 服务器可以按照结构化配置文件的指示,读取多个字段,基于多个字段生成结构化的日志数据。服务器对日志数据进行结构化之后,可以将不同格式的日志数据转为同一个格式的日志数据,便于后续的处理。
[0089] 303、服务器对结构化后的历史日志数据进行聚类,生成至少一个参考日志模板。
[0090] 在该过程中,服务器可以通过将结构化后的历史日志数据通过聚类算法进行聚类,从而生成参考日志模板,其中,一个参考日志模板能够用于表示日志数据所属的一个类型。例如采用基于迭代分割的日志挖掘(iterative partitioning log mining,IPLoM)算法或采用频项挖掘(Simple Logfile Cluster Tool,SLCT)算法进行自动聚类。
[0091] 下面以服务器采用IPLoM算法为例对历史日志数据进行聚类以生成参考日志模板的过程进行介绍,详见下述步骤3031至3035。
[0092] 3031、服务器将结构化的历史日志数据中字段数量相同的日志数据划分为一个组,得到至少一个第一日志数据组。
[0093] 服务器可以统计各个日志数据所包括的字段数量,再根据字段数量进行初始的划分,以得到至少一个第一日志数据组。
[0094] 3032、对于每个第一日志数据组,服务器在第一日志数据组中确定日志数据各个位置上所包含的不同字段的数量,将第一日志数据组中的日志数据划分为多个第二日志数据组。
[0095] 服务器对于每个第一日志数据组,可以对组内各条日志数据的相同位置上所包含字段进行统计,确定每个位置上包含的不同字段的数量,进而确定目标位置,该目标位置是指日志数据中包含不同字段的数量最少的位置,然后,服务器将目标位置上字段相同的日志数据划分为一组,以得到至少一个第二日志数据组。
[0096] 参见图4,第一日志数据组中具有如401所示的日志数据,可以确定第一日志数据组中每条日志数据的第一个位置的字段包括“Command”、“Targeting”、“Linkerror”以及“link”四种不同字段;第二个位置的字段包括“has”、“domains:node‑D3”、“Failed”、“event”以及“errors”五种不同字段;第三个位置的字段包括六种不同字段;第四个位置的字段包括六种不同的字段内容。
[0097] 可见,第一日志数据组中日志数据的第一个位置的不同字段数量最少,服务器可以基于第一个位置的字段,将第一日志数据组划分为多个第二日志数据组。在图4中可以看出,将第一日志数据组中的日志数据划分为四个第二日志数据组4021、4022、4023以及4024,每个第二日志数据组中的日志数据的第一个位置上的字段均相同。
[0098] 3033、对于每个第二日志数据组,服务器根据第二日志数据组中日志数据的字段之间的对应关系,从第二日志数据组中划分出多个第三日志数据组。
[0099] 其中,字段之间的对应关系用于表示任意两个相邻字段之间的出现情况,例如两个相邻字段在组内的各个日志数据中,每次其中一个出现,则另一个一定伴随着出现,则将其关系称为一对一的关系;又例如,一个字段在组内的日志数据中出现时,相邻字段为固定的M个字段,M为大于1的正整数,则将其关系称为一对M或M对1的关系。
[0100] 服务器在对第二日志数据组进行划分时,可以统计组内日志数据中字段的出现规律,将字段之间的对应关系属于一对一关系的日志数据,划分为一个第三日志数据组,将字段之间的对应关系属于一对M或M对1的关系的日志数据,则确定M侧的字段为变量还是常量,服务器响应于M侧的字段为变量字段,对日志数据不再进行分组;响应于M侧的字段为常量字段,则将该一对M或M对1的字段所属的日志数据划分为一个第三日志数据组。
[0101] 参见图5,第二日志数据组4021中的第二个位置的字段包括在“has”和“failed”,第三个位置的字段包括“completed”,“been”以及“on”。其中,“failed”和“on”具有一对一的关系;而“has”和“completed”,“has”和“been”之间是一对M的关系。服务器可以将第二日志数据组中第二个位置的字段为“failed”、第三个位置的字段为“on”的日志数据分成一个第三日志数据组。对于具有一对M关系的“has”和“completed”以及“has”和“been”来说,服务器可以通过判断“completed”和“been”为常量还是变量来决定是否继续分组。响应于“completed”为常量,那么服务器可以将第二个位置的字段为“has”、第三个位置的字段为“completed”的日志数据划分为一个第三日志数据组;响应于“been”为变量,服务器可以不对第二个位置的字段为“has”、第三个位置的字段为“been”的日志数据进行分组。
[0102] 需要说明的是,除了一对一、一对M以及M对1的关系,还存在M对M的关系,服务器可以将M对M的关系拆分为1对M的关系进行处理,具体方法同上,在此不再赘述。
[0103] 在一种可能实现方式中,服务器确定M侧的字段为变量字段还是常量字段可以通过下述过程实现:M侧字段为某一日志数据的字段A,服务器可以统计该位置上字段为A的日志数据的数量,确定该数量与日志数据的数量的比值。响应于该比值大于第一参考阈值,服务器可以将该字段A确定为常量字段;响应于该比值小于第二参考阈值,服务器可以将该字段A确定为变量字段,其中第一参考阈值大于第二参考阈值,且第一参考阈值和第二参考阈值均大于0。第一参考阈值和第二参考阈值可以根据实际情况进行设定,本申请实施例对此不做限定。
[0104] 3034、服务器将第三日志数据组中的日志数据进行聚类,得到参考日志模版。
[0105] 在本申请实施例中,对第三日志数据组中的日志数据进行聚类可以是指:对于各条日志数据中的各个位置,若各条日志数据的该位置上的字段均相同,则将该位置的字段映射为参考日志模板中对应位置的字段,若各条日志数据的该位置上的字段包括至少两个不同字段,则将该位置的字段映射为参考日志模板中对应位置的目标符号,该目标符号可以为“*”,或是其他用于表示变量的符号,本申请实施例对此不做限定。
[0106] 参见图6,该图6中第三日志数据组中的日志数据中包含六个字段,且所有的日志数据的前五个字段均相同,那么,服务器可以将日志数据的前五个字段映射为参考日志模板的前五个字段,也即是“Link error on broadcast tree”。而如图6所示,各个日志数据第六个位置上所包括的字段不同,则服务器可以将该参考日志模版的第六个位置确定为*,最终得到的参考日志模版也即是“Link error on broadcast tree*”。
[0107] 3035、若第二日志数据组中还包括除第三日志数据组以外的日志数据,服务器则基于该第二日志数据组中剩余的日志数据,生成参考日志模板。
[0108] 对于第二日志数据组中未划分至第三日志数据组的日志数据,可以将每条日志数据生成对应的参考日志模板。
[0109] 上述步骤3031至3035是以服务器采用IPLoM算法为例对历史日志数据进行聚类以生成参考日志模板的过程进行说明的,若服务器采用SLCT算法对历史日志数据进行聚类以生成参考日志模板,那么可以包括如下过程:
[0110] 服务器可以对历史日志数据进行字段切分,确定历史日志数据中每个字段的检测出现次数。响应于任一个字段的检测出现次数大于等于阈值,服务器可以将该字段确定为高频字段。服务器可以确定包含该高频字段的历史日志数据中是否还存在其他高频字段,若存在,则将所确定的高频字段,组成参考日志模版;若不存在,不生成参考日志模版,其中阈值可以根据实际情况进行设定,本申请实施例对此不做限定。
[0111] 例如,存在三条历史日志数据,“Interface eth0 down”、“Interface eth1 down”以及“Interface eth2 up”,服务器可以对“Interface eth0 down”进行字段切分,得到“Interface,1”、“eth0,2”以及“down,3”,对“Interface eth1 down”进行字段切分得到“Interface,1”、“eth1,2”以及“down,3”,对“Interface eth2 up”进行字段切分得到“Interface,1”、“eth2,2”以及“up,3”,其中,数字表示该字段在历史日志数据中的位置。服务器可以统计每个位置上相同字段的检测出现次数,以上述三条历史数据为例,“Interface,1”检测出现次数为3,“down,3”的检测出现次数为2,其余字段的检测出现次数均为1。若阈值设定为2,那么服务器可以将“Interface”和“down”确定为高频字段。由于“Interface eth0 down”和“Interface eth1 down”中均存在高频字段“Interface”和“down”,服务器可以将“Interface*down”作为一个参考日志模版。
[0112] 需要说明的是,上述过程所生成的参考日志模板可以采用日志模板库的形式来进行存储,以便后续在接收到新的日志数据后,可以将日志数据在日志模板库中进行匹配,以得到日志数据所对应的参考日志模板,而对于未匹配到参考日志模板的日志数据,则可以基于上述过程来生成新的参考日志模板,以对日志模板库进行补充。
[0113] 为了提高日志数据与参考日志模版的匹配速度,服务器可以通过hash分箱算法来对参考日志模板进行分箱存储。这里所谓的箱实际上是指一段存储空间,用于对属于该箱的参考日志模板进行存储,从而缩小模板匹配的范围,来实现匹配速度的提高。
[0114] 例如,以基于参考日志模板的前N个字段进行分箱为例,其中,N为正整数。每个箱体可以用于存储前N个字段符合一种字段构成格式的参考日志模板,且,在每个箱体中,还可以基于前N个字段的实际字段内容划分而成的参考日志模板组,各个参考日志模板组可以采用前N个字段的目标哈希值作为用于索引该参考日志模板组的标识,从而使得在匹配过程中,可以先按照待匹配的日志数据的前N个字段的字段构成格式,确定对应的箱体,再根据前N个字段的目标哈希值,从所确定的箱体中确定对应的参考日志模板组,再从该参考日志模板组内进一步进行日志数据的匹配,以得到日志数据对应的第一参考日志模板。
[0115] 需要说明的是,上述N的取值可以根据实际需要进行设定,例如,根据所生成的参考日志模版的数量进行设定,参考日志模版的数量越多,相应的N可以越大。假若N选得过小,则每个箱体中以及每个参考日志模版组中的日志模板依然会较大,分箱的性能提升效果不明显;假若N选得过大,则箱体的个数较多,会增加箱体查找的耗时。在实验过程中,将N设置为4,可以使得箱体的个数和每个参考日志模版组中日志模板的个数达到一个较优的平衡。在实际测试中99%的参考日志模版组中模板的数目能保证在10以内,通过分箱算法,服务器可以将1万以上的模板匹配降低到10个日志模板匹配,提升日志模板匹配性能。
[0116] 下面,仅以N=4的场景下对上述分箱过程进行说明,参考日志模版的前4个字段存在以下16种字段构成格式(“C”为常量,“*”为变量),
[0117] C C C C;
[0118] C*C C;
[0119] C C*C;
[0120] C C C*;
[0121] C C**;
[0122] ……
[0123] ****。
[0124] 每个参考日志模版只能属于上述16种情况中的一种,服务器可以根据参考日志模版的前4个字段的字段构成格式,将多个参考日志模版分配到对应的箱体中,例如,对于参考日志模板“Link error on broadcast tree*”,其前4个字段均为常量,则可以将其存储至CCCC对应的箱体中,而对于参考日志模板“this*is a wrong thing”,其前4个字段中第二位为变量,则可以将其存储至C*C C中。
[0125] 需要说明的是,在将参考日志模板存储至对应箱体的过程中,还需要将参考日志模板存储至箱体内的对应参考日志模板组中,此时,可以获取参考日志模板的前N个字段的目标哈希值,将该参考日志模板存储至该箱体内与目标哈希值对应的参考日志模板组中,一个参考日志模板组中的参考日志模板均具有相同的前N个字段。
[0126] 而为了进行故障检测,还可以先确定故障检测的基线,例如,各个参考日志模板的参考出现次数,该参考出现次数可以作为衡量日志数据分布是否符合正常运行的一种参考标准,参与到后续的故障检测过程中。而上述参考日志模板的参考出现次数的确定可以包括初始确定过程和动态更新过程。
[0127] 下面对参考日志模版的参考出现次数的初始确定过程进行说明:服务器可以将历史时间段划分为多个时间窗口,时间窗口的时间跨度可以为5分钟等较小的时间段,获取每个时间窗口内历史日志数据对应的多个参考日志模板以及每个参考日志模板的检测出现次数。参见表1,表1所示为对时间窗口的标识方式以及对应的数据记录示例。
[0128] 表1
[0129]
[0130] 对于每个参考日志模板,服务器可以根据该参考日志模版在上述多个时间窗口中检测出现次数,得到该参考日志模版的平均检测出现次数。服务器可以确定每个参考日志模版在各个时间窗口的检测出现次数与对应的平均检测出现次数之间的差值,若任一个时间窗口的差值信息符合参考条件,将该参考日志模版在该时间窗口的检测出现次数删除,重新确定对应参考日志模版的平均检测出现次数,其中,参考条件可以是指任一参考模板对应的差值在所有参考日志模板的差值排序中位于前25%。在这种实现方式下,服务器可以将检测出现次数过多或过少的数据删除,保证参考出现次数可以反映正常运行状态的参考日志模版的检测出现次数。需要说明的是,在服务器确定各个参考日志模板的参考出现次数之后,可以将各个参考日志模板的参考出现次数存储在日志基线库中,后续在进行故障检测的过程中,服务器可以直接从日志基线库中获取各个参考日志模板的参考出现次数。
[0131] 需要说明的是,参见图7,该初始确定过程中所采用的日志数据可以使用1天或者2天等较短历史时间段内的日志数据进行,从而保证数据量不过大,能够迅速确定出参考出现次数来作为基线。而在动态更新过程中,则可以根据较短的周期来进行更新,例如,该周期可以为12个小时,从而保证更新的及时性。进一步地,在更新后还可以检测对用于确定参考出现次数的时间窗口进行检测,若时间窗口已经超过一定时长,例如时间窗口为7天前的时间,则可以将该时间窗口对应的数据删除,以保证参考出现次数能够准确反映近期正常运行的状态。
[0132] 而对于故障检测过程来说,可以通过以下过程来实现。参见图8和图9,该图8为根据一示例性实施例示出的一种故障检测方法的流程图,图9为根据一示例性实施例示出的一种包含训练和检测两个分支的流程图,包括如下步骤:
[0133] 801、服务器获取目标时间段内的多条日志数据。
[0134] 其中,目标时间段可以为待进行故障检测的时间段。在这种实现方式下,当某个设备在目标时间段出现故障时,服务器可以从该设备的日志文件中获取目标时间段的多条日志数据,从而基于多条日志数据进行故障检测,判断该设备发生故障的时间和类型。
[0135] 服务器可以周期性的触发该故障检测过程,从服务器的日志文件中获取目标时间段的多条日志数据,需要说明的是,该日志数据可以为结构化之后的数据。参见图9,图9所示包括了训练和检测两个分支,其中检测分支可以看出,其日志数据也进行了日志结构化的处理,其具体结构化过程与上述实施例中的结构化过程同理,可以参见上述实施例中对日志数据进行结构化的过程(例如对于步骤302的描述),在此不做赘述。
[0136] 802、服务器获取多条日志数据对应的至少一个第一参考日志模板以及每个第一参考日志模板的检测出现次数。
[0137] 对于服务器来说,其可以基于该多条日志数据来进行模板匹配,以便确定与日志数据对应的第一参考日志模板,并且,统计每个第一参考日志模板的检测出现次数,可以理解的是,该一个参考日志模板的检测出现次数是指该参考日志模板的被匹配成功的次数。在一种可选实现方式中,参见图9,上述模板匹配可以基于日志模板库进行,也即是,在训练分支中采用日志模板库的形式来存储参考日志模板,该步骤802的匹配可以是将日志数据与存储于日志模板库中的参考日志模板之间的匹配。
[0138] 对于任一条日志数据来说,其模板匹配的过程可以包括下述步骤802A到步骤802D:
[0139] 802A、服务器获取该条日志数据中的目标字段,目标字段包括日志数据中前N个字段,其中,N为正整数。
[0140] 802B、服务器确定与目标字段匹配的参考日志模板组,参考日志模板组中的参考日志模板均具有相同的前N个字段。
[0141] 在本申请实施例中,该服务器可以根据获取到的目标字段,获取所述目标字段的目标哈希值,确定与所述目标哈希值匹配的参考哈希值,所述参考哈希值用于标识所述参考日志模板组;确定所述参考哈希值所标识的参考日志模板组。
[0142] 举例来说,还是以N=4为例进行说明,若目标字段中均为常量字段,那么服务器可以在箱体1(C C C C)中查找与目标字段的目标哈希值匹配的参考哈希值,从而确定该参考哈希值对应的参考日志模版组;若目标字段均为变量字段,那么服务器可以在箱体16(****)中按照上述过程来查找与目标字段的目标哈希值匹配的参考日志模版组。
[0143] 在另一种可能实现方式中,各个参考日志模板组的标识还可以是该组内日志数据的前N个字段,则在步骤802B中服务器可以直接根据获取到的目标字段来在对应箱体中确定对应的参考日志模板组,本申请实施例对此不做限定。
[0144] 802C、服务器确定参考日志模板组中与日志数据匹配的第一参考日志模板。
[0145] 在一种可能的实施方式中,服务器可以将日志数据与参考日志模版组内的参考日志模板进行字符串匹配,将匹配成功的参考日志模板作为第一参考日志模板。其中,匹配成功可以是指字符串的相似度大于目标相似度阈值,本申请实施例对此不做限定。
[0146] 802D、服务器统计每个第一参考日志模版的检测出现次数。
[0147] 服务器在确定了匹配的第一参考日志模板后,则可以对与同一个第一参考日志模板匹配成功的日志数据条数进行统计,以确定第一参考日志模板的检测出现次数。
[0148] 需要说明的是,若有任一条日志数据未匹配到对应的参考日志模板,则可以基于该日志数据来生成新的参考日志模板,其具体生成方法如上述参考日志模板的生成方法同理,在此不做赘述。
[0149] 803、服务器将多条日志数据对应的至少一个第一参考日志模板中的周期模版剔除,其中,周期模版为正常运行时周期性出现的参考日志模版。
[0150] 周期模板可以属于参考日志模板的一种,通常对应于一些定时任务或者定时维护操作的日志数据,这种日志数据的出现对模板分布造成一定影响,也就会对故障检测的结果带来一定干扰,因此,服务器可以将至少一个第一参考日志模板中的周期模板剔除,以消除这种影响,提高故障检测的准确性。其中,周期模板可以携带周期性标签,以便在确定了第一参考日志模板后,基于周期性标签来进行模板的剔除,当然,该周期模板的剔除还可以采用其他方式,本申请实施例对此不做限定。
[0151] 而对于周期模板来说,可以在进行故障检测前,通过下述方法来确定:服务器可以根据历史时间段内的参考日志模版在不同时间点的检测出现次数,生成时序序列。服务器可以将时序序列转换为频域序列,将频域序列中频域特征符合离散特性的参考日志模板确定为周期模板。具体来说,服务器可以确定正常运行的历史时间段,获取历史时间段内的参考日志模版,统计参考日志模版在不同时间点的检测出现次数,基于不同时间点和检测出现次数,生成时序序列。服务器可以将时序序列变换为频域序列,获取频域序列中频率振幅的最大值和中位数,确定最大值和中位数的比值。若该比值大于第一目标阈值,确定该频域序列符合离散特性,将该频域序列对应的参考日志模版确定为周期模版,其中,服务器将时序序列变换为频域序列的方法可以为傅里叶变换、小波变换等方法,本申请实施例对此不做限定。
[0152] 以采用傅里叶变换为例进行说明:具体原理可以参见图10,在t=[0,288]s上列举了两个时序序列:左上图中的y1,为(强近似)周期时序序列的图像,周期约为6s;而左下图的y2,为非周期的时序序列的图像。服务器可以对这两个序列分别进行傅里叶变换,得到中间的频域序列的图像。y1由于是周期时序序列的图像,其傅里叶变换fy1为离散的频域序列的图像;而y2由于是非周期时序序列的图像,其傅里叶变换fy2为连续的频域序列的图像。从图中可以看出,中上图yf1表现为两个冲击,位置位于y1的频率0.167Hz(由上文中y1的周期计算,1/6s=0.167Hz)及其整数倍处。而中下图yf2,则是一个连续频域序列的图像,没有明显的冲击。由此,可以根据一个时序序列图像的傅里叶变换结果,确定时序序列为周期序列还是非周期序列。若所得到的频域序列是离散的(具体表现是在某几个点处有冲击,其他区域近似为0),则原时序序列为周期序列;若所得到的频域序列是连续的(具体表现为没有明显冲击),则原时序序列为非周期序列。
[0153] 需要说明的是,上述周期模板可以由服务器基于所获取到的日志数据来自动识别,从而使得在故障检测过程中可以由服务器在进行了模板匹配后自动进行上述周期模板的剔除处理,这种处理过程可以自动剔除这类周期性的影响,达到抗干扰的效果。
[0154] 804、服务器根据该每个该第一参考日志模板的检测出现次数、每个该第一参考日志模板的参考出现次数,获取该目标时间段的模板分布差异信息,该模板分布差异信息是指基于该检测出现次数、该参考出现次数、总检测出现次数以及总参考出现次数所确定的模板分布与正常模板分布之间的差异。
[0155] 需要说明的是,该模板分布差异信息不是用出现次数来表示,而是基于采用分布情况之间的相关性来表示,模板分布差异信息的数值越大,则说明相关性越弱,也即是其检测得到的分布情况和正常运行下的分布情况之间的差异越大,模板分布差异信息的数值越小,则说明相关性越强,也即是,其检测得到的分布情况和正常运行下的分布情况之间的差异越小。
[0156] 其中,一个参考日志模板的参考出现次数可以为正常运行时该参考日志模版的出现次数。需要说明的是,该参考出现次数可以是基于上述实施例中对参考出现次数的确定过程来周期性、自动确定,也可以基于运维人员的设置来确定,本申请实施例对此不做限定。可选地,该参考出现次数可以存储于如图9的日志基线库中,从而使得在需要进行上述模板分布差异信息的获取时,能够从该日志基线库中获取对应的参考出现次数,进而执行图9中所示的分布差异分析过程,以获取目标时间段的模板分布差异信息。
[0157] 在一种可能的实施方式中,服务器可以确定该至少一个第一参考日志模板的总检测出现次数以及总参考出现次数;根据该检测出现次数、该参考出现次数、总检测出现次数以及总参考出现次数,确定该目标时间段的卡方值,以该卡方值作为该模板分布差异信息。根据上述描述可以得知,若目标时间段内的第一参考日志模版的分布情况与正常运行下的第一参考日志模板的分布情况之间差异越小,那么目标时间段的卡方值也就越低;若目标时间段内的第一参考日志模版的分布情况与正常运行情况下的第一参考日志模板的分布情况之间差异较大,那么目标时间段的卡方值也就越高,也就意味着出现故障的可能性较大。
[0158] 考虑到一些特殊场景下,各个参考日志模板的检测出现次数可能出现暴增或爆降的情况,服务器可以通过在计算时考虑到参考日志模板的总检测出现次数以及总参考出现次数来消除这类影响,例如,在模板分布差异信息采用卡方值表示时,可以采用下述计算公式(1)至公式(6)。
[0159]
[0160]
[0161] si=ai+bi(3)
[0162]
[0163]
[0164]
[0165] 其中,ai为第i个参考日志模版的参考出现次数,Sa为所有参考日志模版的参考出现次数的和,也即是总参考出现次数,bi为第i个参考日志模版的检测出现次数,Sb为目标时间段内所有参考日志模版的检测出现次数的和,也即是目标时间段内的总检测出现次数,Asi为第i个参考日志模版的检测出现次数和参考出现次数的和,Ei为第i个参考日志模版的B 2
参考出现次数的期望,Ei 为第i个参考日志模版的检测出现次数的期望,χ为目标时间段的卡方值,n为目标时间段内参考日志模版的数量。
[0166] 下面以一个具体的例子来进行说明:
[0167] 表2可以为重大节假日中一个目标时间段的参考日志模版的参考出现系数和检测出现次数的统计表,目标时间段的日志数据对应于两种参考日志模版,参考日志模版1和参考日志模版2,服务器可以获取参考日志模版1和参考日志模版2的参考出现次数和检测出现次数(表格内括号前的数字)以及参考出现次数和检测出现次数的期望(表格内括号中的数字),将参考日志模版1和参考日志模版2的检测出现次数、检测出现次数的期望、参考出现次数以及参考出现次数的期望带代入公式(1)至公式(6),可以得到目标时间段的卡方值为2.73。若阈值为3,且卡方值小于阈值时可以确定目标时间段内未发生故障,那么根据表2所示的数据,服务器可以确定目标时间段内未发生故障。而对于相关技术来说,由于参考日志模版1的参考出现次数为100,而检测出现次数为500,参考日志模版2的参考出现次数为200,而检测出现次数为800,对于参考日志模版1和参考日志模版2来说,检测出现次数分别是参考出现次数的5倍和8倍,在这种情况下,相关技术中提供的技术方案可能会认为目标时间段发生故障,而参考日志模版检测出现次数的增加是由于节假日浏览量增加的影响,实际上并没有出现故障,采用相关技术中提供的技术方案容易导致误判,而相应的,采用本申请实施例提供的方案则能够避免误判,提高检测准确率。
[0168] 表2
[0169]模版/出现次数 参考出现次数(期望) 检测出现次数(期望) 总数
参考日志模版1 100(112.5) 500(487.5) 600
参考日志模版2 200(187.5) 800(812.5) 1000
总数 300 1300 1600
[0170] 805、若模板分布差异信息符合目标条件,服务器则确定目标时间段发生故障。
[0171] 其中,模板分布差异信息符合目标条件是指:模板分布差异信息大于第一目标阈值,或,模板分布差异信息小于第二目标阈值,其中,第一目标阈值大于第二目标阈值。
[0172] 其中,第一目标阈值和第二目标阈值的确定方法可以采用3sigma(方差)方法来实现,在通常情况下,一组正常数据的分布应该符合正态分布。在正态分布的情况下,99.7%的数据均分布在该组数据的均值加减三倍方差的范围内,也即是3sigma范围,若某个数值不在3sigma范围内,则可以确定该数值为异常数据。第一目标阈值可以为该组数据的均值加三倍方差,第二目标阈值可以为该组数据的均值减三倍方差。在本申请中,服务器可以获取多个历史时间段的卡方值,获取多个历史时间段的卡方值的均值和方差,基于多个历史时间段的卡方值的均值和方差确定3sigma范围。参见图11,服务器可以将目标窗口的卡方值与3sigma范围进行比较,从而确定目标时间段是否发生故障。
[0173] 需要说明的是,本申请实施例中的3sigma范围可以定时更新,当服务器运行参考时长后,可以基于参考时长内的不同时间段的卡方值更新3sigma范围,使得服务器可以通过最新的3sigma范围来进行故障检测,提升了故障检测的时效性。
[0174] 通过本申请实施例提供的技术方案,该故障检测过程中,在确定第一参考日志模板的分布情况时,不仅采用了第一参考日志模板的检测出现次数、参考出现次数,还考虑到了第一参考日志模板的总检测出现次数以及总参考出现次数,从而消除了检测出现次数整体变化而带来的干扰,而由于正常模板分布情况存在一定稳定性,因此,通过确定检测得到的分布情况与正常分布情况之间的差异,即能够确定目标时间段是否发生故障,这种基于分布差异的故障检测,不会因为在一些场景下各个参考日志模版的检测出现次数发生具有共性的数量变化,而造成误判,故障检测的抗干扰能力更强,可以提高故障检测的准确性。
[0175] 进一步地,在确定发生故障后,还可以基于匹配得到的参考日志模板来进行故障匹配,以确定当前的故障场景,在故障匹配时,可以基于已知的参考日志模板和故障场景之间的对应关系来进行,该对应关系可以基于已知故障时间段内的历史日志数据来确定,其具体确定过程可以包括:基于已知故障时间段内的历史日志数据,获取故障时间段的历史日志数据对应的参考日志模版,建立故障时间段的对应的参考日志模版与所确定的故障场景之间的对应关系,如图9中故障场景标注过程,即提供了上述对应关系的建立过程。当然,该对应关系可以采用故障模板库的形式来存储。基于上述参考日志模板和故障场景之间的对应关系,本申请实施例还提供了如下的故障确定过程:服务器根据所述多个第一参考日志模版,确定与所述至少一个第一参考日志模板中至少一个模板对应的故障场景。
[0176] 响应于目标时间段的任一日志数据对应的至少一个第一参考日志模版中的任一个第一参考日志模板与任一个故障场景所对应的参考日志模板匹配,服务器可以将该故障场景确定为该目标时间段的故障场景,该故障场景也即是图9中所示的已知故障。
[0177] 而若确定目标时间段有故障发生,而未能匹配到故障场景,也即是图9中所示的未知故障,还有一种可能是所匹配到的参考日志模板的类型不够多,则若该目标时间段的相邻时间段也被确定为有故障发生,则可以基于其相邻时间段来进行故障场景的匹配,也即是,该申请实施例还提供了如下的故障确定过程:确定该目标时间段相邻的至少一个时间段发生故障;获取该至少一个时间段对应的至少一个第二参考日志模板,则根据该至少一个第二参考日志模板、该多个第一参考日志模版,确定故障时间段的目标故障场景,其中,该故障时间段包括该目标时间段和该至少一个时间段,该目标故障场景是指与该至少一个第一参考日志模板和该至少一个第二参考日志模板中至少一个模板对应的故障场景。该故障匹配的具体过程和上述过程同理,在此不做赘述。当然,为了匹配到更准确的故障场景,还可以不仅在某个时间段未能匹配到故障场景的情况下进行该相邻时间段的匹配,而是对于任意相邻时间段均确定发生故障时进行该匹配过程,以对单一时间段的故障场景进行扩充,提高故障诊断的准确性。另外,需要说明的是,上述的相邻时间段可以是指两个或两个以上的时间段,本申请实施例对此不作限定。
[0178] 需要说明的是,响应于未匹配到已知的故障场景,服务器可以根据待匹配时间段对应的参考日志模版,建立新的故障场景,并建立新的故障场景和对应的参考日志模板之间的对应关系。可选地,可以在故障模板库中存储该新的对应关系。
[0179] 参见图12,该图12是根据以示例性实施例示出的一种故障检测系统的示意图,该系统包括:第一服务器1201和第二服务器1202。
[0180] 第一服务器1201用于执行上述801‑805任一项的故障检测方法。
[0181] 第二服务器1202用于生成参考日志模板,并向第一服务器提供参考日志模板以及参考日志模版的参考出现次数。
[0182] 在一种可能的实施方式中,第二服务器1202还用于:
[0183] 根据历史时间段内的参考日志模版在不同时间点的出现次数,生成时序序列。
[0184] 将时序序列转换为频域序列。
[0185] 将频域序列中频域特征符合离散特性的参考日志模板确定为周期模板。
[0186] 在一种可能的实施方式中,第二服务器1202还用于为第一服务器1201提供与参考日志模版对应的故障场景。
[0187] 在一种可能的实施方式中,该故障检测系统还可以包括终端,该终端可以为第一服务器提供日志数据。
[0188] 在一种可能的实现方式中,该终端还可以执行上述801‑805任一项的故障检测方法。
[0189] 通过本申请实施例提供的技术方案,该故障检测过程中,在确定第一参考日志模板的分布情况时,不仅采用了第一参考日志模板的检测出现次数、参考出现次数,还考虑到了第一参考日志模板的总检测出现次数以及总参考出现次数,从而消除了检测出现次数整体变化而带来的干扰,而由于正常模板分布情况存在一定稳定性,因此,通过确定检测得到的分布情况与正常分布情况之间的差异,即能够确定目标时间段是否发生故障,这种基于分布差异的故障检测,不会因为在一些场景下各个参考日志模版的检测出现次数均暴增,而造成误判,故障检测的抗干扰能力更强,可以提高故障检测的准确性。
[0190] 图13是本公开实施例提供的一种故障检测装置图。参见图13,该装置包括:
[0191] 日志数据获取单元1301,用于执行上述步骤801。
[0192] 第一参考日志模版获取单元1302,用于执行上述步骤802。
[0193] 模板分布差异信息获取单元1303,用于执行上述步骤804。
[0194] 确定单元1304,用于执行上述步骤805。
[0195] 在一种可能的实施方式中,第一参考日志模版获取单元1302包括:
[0196] 目标字段获取子单元,用于执行上述步骤802A。
[0197] 模版组确定子单元,用于执行上述步骤802B。
[0198] 第一参考日志模版确定子单元,用于执行上述步骤802C。
[0199] 在一种可能的实施方式中,模版组确定子单元用于执行上述步骤802B中根据目标哈希值确定参考日志模版组。
[0200] 在一种可能的实施方式中,装置还包括:
[0201] 参考日志模版生成单元,用于执行上述步骤802D中生成新的参考日志模版的操作。
[0202] 在一种可能的实施方式中,模板分布差异信息获取单元用于执行上述步骤804中基于卡方值确定模板分布差异信息的操作。
[0203] 在一种可能的实施方式中,模板分布差异信息符合目标条件是指:
[0204] 模板分布差异信息大于第一目标阈值,或,模板分布差异信息小于第二目标阈值,其中,第一目标阈值大于第二目标阈值。
[0205] 在一种可能的实施方式中,装置还包括:
[0206] 第一故障场景确定单元,用于执行上述步骤805之后确定故障时间段对应的故障场景的操作。
[0207] 在一种可能的实施方式中,装置还包括:
[0208] 第二故障场景确定单元,用于执行上述步骤805之后确定多个时间段对应的故障场景的操作。
[0209] 在一种可能的实施方式中,装置还包括:
[0210] 周期模版剔除单元,用于执行上述步骤803。
[0211] 在一种可能的实施方式中,周期模版的确定方法包括:
[0212] 根据历史时间段内的参考日志模版在不同时间点的出现次数,生成时序序列。
[0213] 将时序序列转换为频域序列。
[0214] 将频域序列中频域特征符合离散特性的参考日志模板确定为周期模板。
[0215] 通过本申请实施例提供的技术方案,上述装置在确定第一参考日志模板的分布情况时,不仅采用了第一参考日志模板的检测出现次数、参考出现次数,还考虑到了第一参考日志模板的总检测出现次数以及总参考出现次数,从而消除了检测出现次数整体变化而带来的干扰,而由于正常模板分布情况存在一定稳定性,因此,通过确定检测得到的分布情况与正常分布情况之间的差异,即能够确定目标时间段是否发生故障,这种基于分布差异的故障检测,不会因为在一些场景下各个参考日志模版的检测出现次数均暴增,而造成误判,故障检测的抗干扰能力更强,可以提高故障检测的准确性。
[0216] 上述故障检测装置中所涉及的各个功能单元,可以由服务器上的处理组件来实现,其参考日志模板、周期模板等可以存储于服务器的存储器中,从而由处理组件通过读取存储器中所存储的数据来完成上述故障检测。
[0217] 需要说明的是:上述实施例提供的故障检测装置在检测故障时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的故障检测方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
[0218] 在示例性实施例中,还提供了一种计算机可读存储介质,例如包括指令的存储器,上述指令可由处理器执行以完成上述实施例中的故障检测方法。例如,该计算机可读存储介质可以是只读存储器(read‑only memory,ROM)、随机存取存储器(random access memory,RAM)、只读光盘(compact disc read‑only memory,CD‑ROM)、磁带、软盘和光数据存储设备等。
[0219] 本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
[0220] 以上所述仅为本申请的可选实施例,并不用以限制本申请,凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。