一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

业务系统故障定位方法及装置与流程

2022-11-30 06:42:04 来源:中国专利 TAG:


1.本发明涉及故障诊断技术领域,尤其涉及一种业务系统故障定位方法及装置。


背景技术:

2.随着计算机技术的快速发展,数据信息也越来越丰富。为了从丰富的数据信息中获取有价值的信息,采用业务系统对大量的数据信息进行处理。但是随着数据量的增多,数据结构也越来越复杂,数据之间的业务逻辑也越来越复杂,导致业务系统很容易出现故障问题。为了对业务系统的故障问题及时处理,需要对业务系统的故障根源进行定位,以及时对故障根源进行处理。
3.现有技术中,通常对业务系统下所有实例的指标进行监测,并计算各个实例的异常评估分数,根据异常评估分数符合预设异常条件的实例确定业务系统的故障根源。
4.但是,通常每个业务系统包含较多的独立的服务(即实现某种功能的代码),每个服务又部署了较多的实例。因此,每个业务系统中包含的实例数量较多。通过这种方式定位业务系统故障,需要实时计算业务系统中全部实例的异常评估分数,导致计算量较大,定位效率低。


技术实现要素:

5.本发明提供一种业务系统故障定位方法及装置,用以解决现有技术中实时计算业务系统中全部实例的异常评估分数,导致计算量较大,定位效率低的缺陷,实现提高定位效率。
6.本发明提供一种业务系统故障定位方法,包括:
7.根据业务系统在当前时段内的运行指标,判断所述业务系统是否存在故障;
8.若所述业务系统存在故障,则根据所述业务系统的各服务在所述当前时段内的运行指标,判断各服务是否存在故障;
9.根据各服务的判断结果,从所述业务系统的所有服务中选择目标服务;
10.根据所述目标服务的各实例在所述当前时段内的运行指标,判断各实例是否存在故障,根据各实例的判断结果获取所述业务系统的故障定位结果。
11.根据本发明提供的一种业务系统故障定位方法,所述根据业务系统在当前时段内的运行指标,判断所述业务系统是否存在故障,包括:
12.将所述业务系统在所述当前时段内的运行指标输入异常检测模型,输出所述业务系统的异常分数;
13.将所述异常分数与第一预设阈值进行比较;
14.根据比较结果判断所述业务系统是否存在故障;
15.其中,所述异常检测模型,以所述业务系统在历史时段内的运行指标作为样本,以所述样本对应的异常分数作为样本标签训练获取。
16.根据本发明提供的一种业务系统故障定位方法,所述将所述业务系统在所述当前
时段内的运行指标输入异常检测模型,输出所述业务系统的异常分数,包括:
17.将所述业务系统在所述当前时段内的运行指标输入所述异常检测模型,输出重构后的所述业务系统的运行指标;
18.将重构后和重构前的所述业务系统的运行指标相减后求绝对值;
19.将绝对值结果中的最大值作为所述业务系统的异常分数。
20.根据本发明提供的一种业务系统故障定位方法,所述根据所述业务系统的各服务在所述当前时段内的运行指标,判断各服务是否存在故障,包括:
21.对每个服务在所述当前时段内的多个时刻的各运行指标进行融合、对每个服务在所述当前时段的上一时段内的多个时刻的各运行指标进行融合和对所述业务系统在所述当前时段内的多个时刻的各运行指标进行融合;
22.将每个服务在所述当前时段内和所述当前时段的上一时段内的各运行指标的融合结果相减后求绝对值;
23.计算每个服务在所述当前时段内的运行指标的融合结果与所述业务系统在所述当前时段内的运行指标的融合结果之间的相似性;
24.将每个服务对应的绝对值结果中的最大值和每个服务对应的相似性结果之和作为每个服务的异常分数;
25.将每个服务的异常分数与第二预设阈值进行比较,根据比较结果判断每个服务是否存在故障。
26.根据本发明提供的一种业务系统故障定位方法,所述对每个服务在所述当前时段内的多个时刻的各运行指标进行融合,包括:
27.计算每个服务在所述当前时段内的多个时刻的各运行指标的统计特征值、指数加权移动平均值和小波分解值中的一种或多种。
28.根据本发明提供的一种业务系统故障定位方法,所述根据各服务的判断结果,从所述业务系统的所有服务中选择目标服务,包括:
29.若存在故障的服务为一个,则将所述存在故障的服务作为所述目标服务;
30.若所述存在故障的服务为多个,则根据所述存在故障的服务在所述业务系统中的执行顺序,从所述存在故障的服务中选择最先执行的服务作为目标服务;
31.若所有服务均不存在故障,则将所述业务系统中所述异常分数最大的服务作为目标服务。
32.根据本发明提供的一种业务系统故障定位方法,所述根据所述目标服务的各实例在所述当前时段内各时刻的运行指标,判断各实例是否存在故障,包括:
33.对每个实例在所述当前时段内的多个时刻的各运行指标进行融合、对每个实例在所述当前时段的上一时段内的多个时刻的各运行指标进行融合和对所述目标服务在所述当前时段内的多个时刻的各运行指标进行融合;
34.将每个实例在所述当前时段内和所述当前时段的上一时段内的各运行指标的融合结果相减后求绝对值;
35.计算每个实例在所述当前时段内的运行指标的融合结果与所述目标服务在所述当前时段内的运行指标的融合结果之间的相似性;
36.将每个实例对应的绝对值结果中的最大值和每个实例对应的相似性结果之和作
为每个实例的异常分数;
37.将每个实例的异常分数与第三预设阈值进行比较,根据比较结果判断每个实例是否存在故障。
38.本发明还提供一种业务系统故障定位装置,包括:
39.第一判断模块,用于根据业务系统在当前时段内的运行指标,判断所述业务系统是否存在故障;
40.第二判断模块,用于若所述业务系统存在故障,则根据所述业务系统的各服务在所述当前时段内的运行指标,判断各服务是否存在故障;
41.选择模块,用于根据各服务的判断结果,从所述业务系统的所有服务中选择目标服务;
42.故障定位模块,用于根据所述目标服务的各实例在所述当前时段内的运行指标,判断各实例是否存在故障,根据各实例的判断结果获取所述业务系统的故障定位结果。
43.本发明还提供一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现如上述任一种所述业务系统故障定位方法的步骤。
44.本发明还提供一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现如上述任一种所述业务系统故障定位方法的步骤。
45.本发明提供的业务系统故障定位方法及装置,通过先对业务系统实时进行故障检测,在业务系统存在故障的情况下对业务系统的各服务进行故障检测,以确定目标服务,然后再对目标服务的各实例进行故障检测,进而定位业务系统的故障原因,一方面仅对存在故障的目标服务的实例进行故障检测,大大减少计算量,有效提高定位效率;另一方面,根据层级关系逐层对业务系统的故障原因进行定位,使得定位结果更加准确。
附图说明
46.为了更清楚地说明本发明或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
47.图1是本发明提供的业务系统故障定位方法的流程示意图之一;
48.图2是本发明提供的业务系统故障定位方法中业务拓扑的结构示意图;
49.图3是本发明提供的业务系统故障定位方法的流程示意图之二;
50.图4是本发明提供的业务系统故障定位装置的结构示意图;
51.图5是本发明提供的电子设备的结构示意图。
具体实施方式
52.为使本发明的目的、技术方案和优点更加清楚,下面将结合本发明中的附图,对本发明中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
53.下面结合图1描述本发明的业务系统故障定位方法,包括:步骤101,根据业务系统在当前时段内的运行指标,判断所述业务系统是否存在故障;
54.其中,业务系统可以为数据流量套餐订单业务系统或外卖业务系统等其他存在多层级调用关系的业务系统。
55.其中,业务系统的数量可以为一个或多个,本实施例不对此做具体地限定。
56.当前时段内包括多个时刻,本实施例不对当前时段内的时刻的数量作具体地限定。
57.业务系统的运行指标为表征业务系统整体运行状态的多项性能指标,包括业务系统的业务量、成功率和延迟,本实施例不对业务系统的运行指标的内容作具体地限定。
58.可选地,业务系统的业务量、成功率和延迟可以通过定时监控装置定时监测获取,或按照周期对业务系统的整体运行情况进行监测获取,本实施例不对此做具体地限定。其中,预设周期可以根据实际需求进行设置,如一分钟。
59.联合业务系统在当前时段内的多个时刻的运行指标,判断业务系统是否存在故障。若业务系统不存在故障,则继续监测业务系统在当前时段的下一时段内的多个时刻的运行指标,重复上述判断方法。
60.若业务系统存在故障,则对业务系统内的组件进行逐层故障定位,自动定位到引发业务系统故障的故障根因实例。
61.步骤102,若所述业务系统存在故障,则根据所述业务系统的各服务在所述当前时段内的运行指标,判断各服务是否存在故障;
62.其中,业务系统的服务为实现某种功能的代码。
63.每个服务的运行指标为该服务响应与其他服务的过程中产生的运行指标或每个服务请求其他服务的过程中产生的运行指标。其中,该服务的运行指标包括该服务的业务量、成功率和延迟。
64.如图2所示,业务a包含多个独立的服务,即服务1,服务2到服务n,每个服务分别分布式部署了多个实例。其中,服务1和服务2之间存在业务上的请求和响应关系。可以将服务2请求服务3的过程中产生的运行指标作为服务2的运行指标,也可以将服务2响应服务1的过程中产生的运行指标作为服务2的运行指标。
65.其中,sec1为服务1请求服务2的过程,secx为服务2结果通知响应给服务1的过程。
66.在确定业务系统存在故障的情况下,再对业务系统的每个服务进行判断,根据判断结果定位在业务系统的服务中造成业务系统故障的服务。
67.可选地,获取业务系统的各服务在当前时段内的多个时刻的运行指标,然后联合当前时段内多个时刻的运行指标判断每个服务是否存在故障。
68.步骤103,根据各服务的判断结果,从所述业务系统的所有服务中选择目标服务;
69.其中,各服务的判断结果包括存在故障或不存在故障两种情况。
70.在选择目标服务时,先确定业务系统中存在故障的服务的数量;
71.在业务系统中存在一个故障的服务时,从所述业务系统的所有服务中选择存在故障的服务作为目标服务;其中,目标服务为导致业务系统故障的服务。
72.在业务系统中存在多个故障的服务时,可以将多个故障的服务作为目标服务,也可以从多个故障的服务中选择一个或多个作为目标服务。然后,根据对目标服务下的实例
进行故障定位,进一步获取导致目标服务故障的实例,进而准确定位导致业务系统故障的根源。
73.步骤104,根据所述目标服务的各实例在所述当前时段内的运行指标,判断各实例是否存在故障,根据各实例的判断结果获取所述业务系统的故障定位结果。
74.具体地,在获取到目标系统的情况下,再对目标系统的每个服务进行判断,根据判断结果定位在目标服务的实例中造成目标系统故障的实例。
75.可选地,联合在各实例在当前时段内的多个时刻的运行指标,判断各实例是否存在故障。
76.在目标服务中的实例存在故障时,将存在故障的实例作为业务系统的故障定位结果;
77.在目标服务的实例中的实例均不存在故障时,将目标服务的所有实例作为业务系统的故障定位结果,即导致业务系统故障的根源是目标服务产生的服务级故障。
78.本实施先对业务系统实时进行故障检测,在业务系统存在故障的情况下对业务系统的各服务进行故障检测,以确定目标服务,然后再对目标服务的各实例进行故障检测,进而定位业务系统的故障原因,一方面仅对存在故障的目标服务的实例进行故障检测,大大减少计算量,有效提高定位效率;另一方面,根据层级关系逐层对业务系统的故障原因进行定位,使得定位结果更加准确。
79.在上述实施例的基础上,本实例中所述根据业务系统在当前时段内的运行指标,判断所述业务系统是否存在故障,包括:将所述业务系统在所述当前时段内的运行指标输入异常检测模型,输出所述业务系统的异常分数;将所述异常分数与第一预设阈值进行比较;根据比较结果判断所述业务系统是否存在故障;其中,所述异常检测模型,以所述业务系统在历史时段内的运行指标作为样本,以所述样本对应的异常分数作为样本标签训练获取。
80.其中,异常检测模型可以是自编码器模型或vae(variational auto encoder,变分自编码器)模型等异常检测模型,本实施例对此不作具体地限定。
81.其中,异常检测模型的结构可以根据实际需求进行设置,如vae模型中的编码器和解码器的结构,以及损失函数等可以根据实际需求进行设置。如表1所示,为vae模型的一种实例。
82.表1 vae模型的结构
[0083][0084]
如图3所示,在获取业务系统的异常分数之前,先对异常检测模型进行训练。首先,将业务系统在历史时段内的运行指标作为样本和将业务系统在历史时段内的异常分数作为样本标签。并对样本进行归一化处理,然后将归一化处理后的样本,以及样本标签输入异常检测模型中,对异常检测模型进行训练。
[0085]
其中,可以采用滑动窗口表征各历史时段。任一历史时段的样本x
t
可以表示为:
[0086]
x
t
=minmax(traffic
t
∪successrate
t
∪latency
t
);
[0087]
traffic
t
={traffic
t-l 1


,traffic
t-1
,traffic
t
};
[0088]
successrate
t
={success_rate
t-l 1


,success_rate
t-1
,success_rate
t
};
[0089]
latency
t
={latency
t-l 1


,latency
t-1
,latency
t
};
[0090]
其中,minmax(
·
)为最大最小归一化处理;traffic
t
、successrate
t
和latency
t
分别为业务系统在t时刻的业务量、成功率和延迟;l为滑动窗口的长度,即该历史时段内所有时刻的数量。其中,滑动窗口的长度可以根据实际需求进行设置,如l=30。
[0091]
则样本集traindata可以表示为:
[0092]
traindata={x
t-trainnum 1
,

,x
t-1
,x
t
};
[0093]
其中,trainnum为训练样本点的数量,可以根据实际需求进行设置,如trainnum≥4320。
[0094]
对异常检测模型进行训练后,再对业务系统在当前时段内的运行指标进行归一化处理后,输入训练后的异常检测模型中,输出业务系统在当前时段内的当前时刻t的异常分数s
t
(a)。
[0095]
其中,当前时刻的异常分数的值域为[0,1]。异常分数越大,则表明当前时刻业务系统发生故障的可能性越大。
[0096]
然后,将业务系统在当前时刻的异常分数s
t
(a)与第一预设阈值tha进行比较,若s
t
(a)>tha,则业务系统在当前时刻t出现故障,在当前时刻t对业务系统内的组件从业务、服
务到实例进行逐层故障定位。
[0097]
其中,第一预设阈值可以根据实际需求进行设置,如0.5到0.8之间的值。
[0098]
本实施例中采用异常检测模型,可以实时准确地监测业务系统是否存在故障。
[0099]
在上述实施例的基础上,本实施例中所述将所述业务系统在所述当前时段内的运行指标输入异常检测模型,输出所述业务系统的异常分数,包括:将所述业务系统在所述当前时段内的运行指标输入所述异常检测模型,输出重构后的所述业务系统的运行指标;将重构后和重构前的所述业务系统的运行指标相减后求绝对值;将绝对值结果中的最大值作为所述业务系统的异常分数。
[0100]
具体地,采用异常检测模型获取业务系统的异常分数的步骤包括,首先,使用异常检测模型对业务系统在当前时段内的运行指标进行重构,输出重构后的运行指标。
[0101]
然后,计算重构前后的运行指标的差值,并对重构前后的运行指标的差值求绝对值,将绝对值结果中的最大值作为业务系统在当前时刻的异常分数s
t
(a)。
[0102]
其中,异常分数s
t
(a)的计算公式为:
[0103]st
(a)=max(|testoutput-testdata|);
[0104]
其中,max(
·
)为最大值操作,testdata和testoutput分别为重构前后业务系统的运行指标。
[0105]
重构效果越差,则表明业务系统存在故障的可能性越大。
[0106]
本实施例直接根据重构结果,计算业务系统的异常分数,可以快速准确确定业务系统是否存在故障。
[0107]
在上述各实施例的基础上,本实施例中所述根据所述业务系统的各服务在所述当前时段内的运行指标,判断各服务是否存在故障,包括:对每个服务在所述当前时段内的多个时刻的各运行指标进行融合、对每个服务在所述当前时段的上一时段内的多个时刻的各运行指标进行融合和对所述业务系统在所述当前时段内的多个时刻的各运行指标进行融合;
[0108]
具体地,在确定业务系统在当前时刻t存在故障时,开始对业务系统的各服务进行故障定位。
[0109]
其中,业务系统a和服务s的运行指标均包括业务量、成功率、延迟等kpi(key performance indicator,关键性能指标),分别用kpii,i∈[1,n]表示各运行指标。
[0110]
对每个服务在当前时段内的多个时刻的任一运行指标进行融合的方式,可以是将当前时刻内所有时刻的该运行指标进行求均值和方差等,本实施例不对此进行限定。
[0111]
同理,对每个服务在所述当前时段的上一时段内的多个时刻的各运行指标进行融合和对所述业务系统在所述当前时段内的多个时刻的各运行指标进行融合的方法与上述融合方法相同。
[0112]
然后,对业务系统或服务的各运行指标的融合结果进行归一化处理,将业务系统或服务所有的运行指标的归一化后的融合结果生成的集合作为业务系统或服务的局部异常特征。
[0113]
其中,业务系统a的局部异常特征表示为:
[0114]
feature(a,w
t
)={feature(w
t,kpi1
)∪feature(w
t,kpi2
)∪

∪feature(w
t,kpin
)};
[0115]
其中,feature(w
t,kpi1
)为第一个kpi运行指标的融合结果,feature(a,w
t
)为业务
系统a在当前时段w
t
内的局部异常特征。
[0116]
同理,将每个服务的所有的运行指标的归一化后的融合结果生成的集合作为每个服务的局部异常特征。
[0117]
将每个服务在所述当前时段内和所述当前时段的上一时段内的各运行指标的融合结果相减后求绝对值;计算每个服务在所述当前时段内的运行指标的融合结果与所述业务系统在所述当前时段内的运行指标的融合结果之间的相似性;将每个服务对应的绝对值结果中的最大值和每个服务对应的相似性结果之和作为每个服务的异常分数;
[0118]
计算服务s的异常分数的步骤包括,首先,计算服务s在当前时段w
t
内和当前时段的上一时段w
t-1
内的局部异常特征之间的差值的绝对值,然后再取绝对值结果中的最大值,具体计算公式为:
[0119]
anomalydetection(s,w
t
)=max(|feature(s,w
t
)-feature(s,w
t-1
)|);
[0120]
其中,anomalydetection(s,w
t
)为服务s在当前时段和上一时段之间的局部异常波动分数,feature(s,w
t
)为服务s在当前时段w
t
内的局部异常特征。
[0121]
并计算服务s在当前时段内的局部异常特征与业务系统a在当前时段内的局部异常特征之间的相似性,具体计算公式为:
[0122]
p(s,w
t
)=similarity{feature(s,w
t
),feature(a,w
t
)};
[0123]
其中,计算相似性的方式,可以是皮尔逊相关系数或余弦相似度等,本实施例不对此作具体地限定。
[0124]
最后,将服务s对应的绝对值结果中的最大值和服务s对应的相似性结果之和作为服务s的异常分数,具体计算公式为:
[0125]
score(s,w
t
)=α
×
anomalydetection{feature(s,w
t
)} (1-α)
×
p(s,w
t
);
[0126]
其中,α为权重系数,可以根据实际需求进行设置,如0.5。
[0127]
将每个服务的异常分数与第二预设阈值进行比较,根据比较结果判断每个服务是否存在故障。
[0128]
获取每个服务的异常分数后,将每个服务的异常分数与第二预设阈值进行比较;
[0129]
若大于第二预设阈值,则服务存在故障;若小于或等于第二预设阈值,则服务不存在故障。
[0130]
其中,第二预设阈值可以根据实际需求进行设置,如0.8。
[0131]
本实施例在对业务系统的服务级的故障来源进行定位时,既考虑了各服务的运行指标在当前时段和上一时段之间的局部异常波动分数,还考虑了各服务在当前时段内的运行指标与业务系统之间的关联关系,对于具有层级关系的故障下钻场景具有较高的故障定位准确性。
[0132]
另外,本实施例在计算各服务的异常分数时,直接对运行指标进行训练,有效避免采用模型计算异常分数时采用大量历史数据训练模型带来的资源损耗,且计算过程简单和计算量小,因此,故障定位效率高。
[0133]
在上述实施例的基础上,本实施例中所述对每个服务在所述当前时段内的多个时刻的各运行指标进行融合,包括:计算每个服务在所述当前时段内的多个时刻的各运行指标的统计特征值、指数加权移动平均值和小波分解值中的一种或多种。
[0134]
其中,统计特征值包括均值、方差、最大值和最小值,本实施例不对此作具体地限
定。
[0135]
其中,小波分解值可以是db2小波分解值等,本实施例不对此作具体地限定。
[0136]
在获取每个服务在所述当前时段内的多个时刻的各运行指标的统计特征值、指数加权移动平均值和小波分解值后,对其进行归一化处理。其中,对第i个运行指标进行归一化的表达式为:
[0137]
feature(w
t,kpii
)=minmax({mean(kpii),std(kpii),

,ewma(kpii),db2(kpii)});
[0138]
其中,i=1,

,n,n为运行指标的数量;mean(kpii)、std(kpii)、ewma(kpii)和db2(kpii)分别为第i个运行指标的均值、方差、指数加权移动平均值和小波分解值。
[0139]
在上述实施例的基础上,本实施例中所述根据各服务的判断结果,从所述业务系统的所有服务中选择目标服务,包括:若存在故障的服务为一个,则将所述存在故障的服务作为所述目标服务;若所述存在故障的服务为多个,则根据所述存在故障的服务在所述业务系统中的执行顺序,从所述存在故障的服务中选择最先执行的服务作为目标服务;若所有服务均不存在故障,则将所述业务系统中所述异常分数最大的服务作为目标服务。
[0140]
具体地,若存在异常分数大于第二预设阈值的服务仅有一个,则将异常分数大于第二预设阈值的服务作为目标服务,即为业务系统的服务级故障根源。
[0141]
若存在异常分数大于第二预设阈值的服务有多个,则业务系统的服务级故障根源在多个异常分数大于第二预设阈值的服务中,则根据存在故障的服务在调用链路中的执行顺序,即上下游关系,对执行顺序靠前的服务给予优先权,即上游节点给予优先权,将执行顺序靠前的服务作为目标服务。
[0142]
若所有服务均不存在异常分数大于第二预设阈值的情况,则将所述业务系统中所述异常分数最大的服务作为目标服务。
[0143]
本实施例使用具有服务间访问关系的物理拓扑,即业务调用链,对定位导致业务系统故障的目标服务,综合考虑了服务与业务系统之间的层级关系,以及各服务之间的上下游关系。在故障定位层面对业务系统、服务和实例依次进行层次下钻,同时在单一层次上对上游节点给予优先权,有效解决了多层次中上下游场景下的故障定位不准确的问题。
[0144]
此外,在异常评估阈值设定偏高时,也能够正常定位到导致业务系统故障的目标服务,具有较好的稳定性。
[0145]
在上述各实施例的基础上,本实施例中所述根据所述目标服务的各实例在所述当前时段内各时刻的运行指标,判断各实例是否存在故障,包括:对每个实例在所述当前时段内的多个时刻的各运行指标进行融合、对每个实例在所述当前时段的上一时段内的多个时刻的各运行指标进行融合和对所述目标服务在所述当前时段内的多个时刻的各运行指标进行融合;
[0146]
其中,对每个实例在当前时段内或当前时刻的下一时段内的多个时刻的各运行指标进行融合的方式与上述对各服务在当前时段内的多个时刻的各运行指标进行融合的方式相同。
[0147]
然后,对每个实例的各运行指标的融合结果进行归一化处理,将每个实例的所有运行指标的归一化后的融合结果生成的集合作为每个实例的局部异常特征。
[0148]
将每个实例在所述当前时段内和所述当前时段的上一时段内的各运行指标的融
合结果相减后求绝对值;计算每个实例在所述当前时段内的运行指标的融合结果与所述目标服务在所述当前时段内的运行指标的融合结果之间的相似性;将每个实例对应的绝对值结果中的最大值和每个实例对应的相似性结果之和作为每个实例的异常分数;
[0149]
其中,计算实例sm的异常分数score(sm,w
t
)的公式为
[0150]
score(sm,w
t
)={β
×
anomalydetection{feature(sm,w
t
)} (1-β)
×
similarity{feature(sm,w
t
),feature(s,w
t
)}};
[0151]
其中,β为权重系数,可以根据实际需求进行设置,如0.5;anomalydetection{feature(sm,w
t
)}为实例sm在当前时段和上一时段之间的局部异常波动分数;similarity{feature(sm,w
t
),feature(s,w
t
)}为实例sm在当前时段内的局部异常特征与目标服务s在当前时段内的局部异常特征之间的相似性。
[0152]
将每个实例的异常分数与第三预设阈值进行比较,根据比较结果判断每个服务是否存在故障。
[0153]
获取每个实例的异常分数后,将每个实例的异常分数与第三预设阈值进行比较;
[0154]
若存在异常分数大于第三预设阈值的实例,则按照异常分数从高到低的顺序,对存在故障的实例进行排序,将排序后的实例作为业务系统的故障定位结果。
[0155]
若目标服务的各实例均不大于第三预设阈值,则将目标服务的所有实例作为业务系统的故障定位结果,即业务系统的故障来源于目标服务。
[0156]
其中,第三预设阈值可以根据实际需求进行设置,如0.8。
[0157]
本实施例中针对每一运行指标,进行局部异常特征提取;针对每一实例,使用该实例的各运行指标的局部异常特征获取局部异常波动分数,使用该实例与上层服务的局部异常特征的相似性评估相似性分数,该实例的异常分数由局部异常波动分数和相似性评估分数按照分配权重组成。这种获取异常分数的方法,不仅具有较好的准确性,且能够较好地适用于负载均衡场景,充分考虑上下层级关系之间的影响。
[0158]
下面对本发明提供的业务系统故障定位装置进行描述,下文描述的业务系统故障定位装置与上文描述的业务系统故障定位方法可相互对应参照。
[0159]
如图4所示,本实施例提供的业务系统故障定位装置,该装置包括第一判断模块401、第二判断模块402、选择模块403和故障定位模块404,其中:
[0160]
第一判断模块401用于根据业务系统在当前时段内的运行指标,判断所述业务系统是否存在故障;
[0161]
其中,业务系统可以为数据流量套餐订单业务系统或外卖业务系统等其他存在多层级调用关系的业务系统。
[0162]
其中,业务系统的数量可以为一个或多个,本实施例不对此做具体地限定。
[0163]
当前时段内包括多个时刻,本实施例不对当前时段内的时刻的数量作具体地限定。
[0164]
业务系统的运行指标为表征业务系统整体运行状态的多项性能指标,包括业务系统的业务量、成功率和延迟,本实施例不对业务系统的运行指标的内容作具体地限定。
[0165]
可选地,业务系统的业务量、成功率和延迟可以通过定时监控装置定时监测获取,或按照周期对业务系统的整体运行情况进行监测获取,本实施例不对此做具体地限定。其中,预设周期可以根据实际需求进行设置,如一分钟。
[0166]
联合业务系统在当前时段内的多个时刻的运行指标,判断业务系统是否存在故障。若业务系统不存在故障,则继续监测业务系统在当前时段的下一时段内的多个时刻的运行指标,重复上述判断方法。
[0167]
若业务系统存在故障,则对业务系统内的组件进行逐层故障定位,自动定位到引发业务系统故障的故障根因实例。
[0168]
第二判断模块402用于若所述业务系统存在故障,则根据所述业务系统的各服务在所述当前时段内的运行指标,判断各服务是否存在故障;
[0169]
其中,业务系统的服务为实现某种功能的代码。
[0170]
每个服务的运行指标为该服务响应与其他服务的过程中产生的运行指标或每个服务请求其他服务的过程中产生的运行指标。其中,该服务的运行指标包括该服务的业务量、成功率和延迟。
[0171]
如图2所示,业务a包含多个独立的服务,即服务1,服务2到服务n,每个服务分别分布式部署了多个实例。其中,服务1和服务2之间存在业务上的请求和响应关系。可以将服务2请求服务3的过程中产生的运行指标作为服务2的运行指标,也可以将服务2响应服务1的过程中产生的运行指标作为服务2的运行指标。
[0172]
其中,sec1为服务1请求服务2的过程,secx为服务2结果通知响应给服务1的过程。
[0173]
在确定业务系统存在故障的情况下,再对业务系统的每个服务进行判断,根据判断结果定位在业务系统的服务中造成业务系统故障的服务。
[0174]
可选地,获取业务系统的各服务在当前时段内的多个时刻的运行指标,然后联合当前时段内多个时刻的运行指标判断每个服务是否存在故障。
[0175]
选择模块403用于根据各服务的判断结果,从所述业务系统的所有服务中选择目标服务;
[0176]
其中,各服务的判断结果包括存在故障或不存在故障两种情况。
[0177]
在选择目标服务时,先确定业务系统中存在故障的服务的数量;
[0178]
在业务系统中存在一个故障的服务时,从所述业务系统的所有服务中选择存在故障的服务作为目标服务;其中,目标服务为导致业务系统故障的服务。
[0179]
在业务系统中存在多个故障的服务时,可以将多个故障的服务作为目标服务,也可以从多个故障的服务中选择一个或多个作为目标服务。然后,根据对目标服务下的实例进行故障定位,进一步获取导致目标服务故障的实例,进而准确定位导致业务系统故障的根源。
[0180]
故障定位模块404用于根据所述目标服务的各实例在所述当前时段内的运行指标,判断各实例是否存在故障,根据各实例的判断结果获取所述业务系统的故障定位结果。
[0181]
具体地,在获取到目标系统的情况下,再对目标系统的每个服务进行判断,根据判断结果定位在目标服务的实例中造成目标系统故障的实例。
[0182]
可选地,联合在各实例在当前时段内的多个时刻的运行指标,判断各实例是否存在故障。
[0183]
在目标服务中的实例存在故障时,将存在故障的实例作为业务系统的故障定位结果;
[0184]
在目标服务的实例中的实例均不存在故障时,将目标服务的所有实例作为业务系
统的故障定位结果,即导致业务系统故障的根源是目标服务产生的服务级故障。
[0185]
本实施先对业务系统实时进行故障检测,在业务系统存在故障的情况下对业务系统的各服务进行故障检测,以确定目标服务,然后再对目标服务的各实例进行故障检测,进而定位业务系统的故障原因,一方面仅对存在故障的目标服务的实例进行故障检测,大大减少计算量,有效提高定位效率;另一方面,根据层级关系逐层对业务系统的故障原因进行定位,使得定位结果更加准确。
[0186]
在上述实施例的基础上,本实施例中第一判断模块具体用于:将所述业务系统在所述当前时段内的运行指标输入异常检测模型,输出所述业务系统的异常分数;将所述异常分数与第一预设阈值进行比较;根据比较结果判断所述业务系统是否存在故障;其中,所述异常检测模型,以所述业务系统在历史时段内的运行指标作为样本,以所述样本对应的异常分数作为样本标签训练获取。
[0187]
在上述实施例的基础上,本实施例中还包括计算模块具体用于:将所述业务系统在所述当前时段内的运行指标输入所述异常检测模型,输出重构后的所述业务系统的运行指标;将重构后和重构前的所述业务系统的运行指标相减后求绝对值;将绝对值结果中的最大值作为所述业务系统的异常分数。
[0188]
在上述各实施例的基础上,本实施例中第二判断模块具体用于:对每个服务在所述当前时段内的多个时刻的各运行指标进行融合、对每个服务在所述当前时段的上一时段内的多个时刻的各运行指标进行融合和对所述业务系统在所述当前时段内的多个时刻的各运行指标进行融合;将每个服务在所述当前时段内和所述当前时段的上一时段内的各运行指标的融合结果相减后求绝对值;计算每个服务在所述当前时段内的运行指标的融合结果与所述业务系统在所述当前时段内的运行指标的融合结果之间的相似性;将每个服务对应的绝对值结果中的最大值和每个服务对应的相似性结果之和作为每个服务的异常分数;将每个服务的异常分数与第二预设阈值进行比较,根据比较结果判断每个服务是否存在故障。
[0189]
在上述实施例的基础上,本实施例中还包括融合模块具体用于:计算每个服务在所述当前时段内的多个时刻的各运行指标的统计特征值、指数加权移动平均值和小波分解值中的一种或多种。
[0190]
在上述实施例的基础上,本实施例中选择模块具体用于:若存在故障的服务为一个,则将所述存在故障的服务作为所述目标服务;若所述存在故障的服务为多个,则根据所述存在故障的服务在所述业务系统中的执行顺序,从所述存在故障的服务中选择最先执行的服务作为目标服务;若所有服务均不存在故障,则将所述业务系统中所述异常分数最大的服务作为目标服务。
[0191]
在上述各实施例的基础上,本实施例中第三判断模块具体用于:对每个实例在所述当前时段内的多个时刻的各运行指标进行融合、对每个实例在所述当前时段的上一时段内的多个时刻的各运行指标进行融合和对所述目标服务在所述当前时段内的多个时刻的各运行指标进行融合;将每个实例在所述当前时段内和所述当前时段的上一时段内的各运行指标的融合结果相减后求绝对值;计算每个实例在所述当前时段内的运行指标的融合结果与所述目标服务在所述当前时段内的运行指标的融合结果之间的相似性;将每个实例对应的绝对值结果中的最大值和每个实例对应的相似性结果之和作为每个实例的异常分数;
将每个实例的异常分数与第三预设阈值进行比较,根据比较结果判断每个实例是否存在故障。
[0192]
图5示例了一种电子设备的实体结构示意图,如图5所示,该电子设备可以包括:处理器(processor)510、通信接口(communications interface)520、存储器(memory)530和通信总线540,其中,处理器510,通信接口520,存储器530通过通信总线540完成相互间的通信。处理器510可以调用存储器530中的逻辑指令,以执行业务系统故障定位方法,该方法包括:根据业务系统在当前时段内的运行指标,判断所述业务系统是否存在故障;若所述业务系统存在故障,则根据所述业务系统的各服务在所述当前时段内的运行指标,判断各服务是否存在故障;根据各服务的判断结果,从所述业务系统的所有服务中选择目标服务;根据所述目标服务的各实例在所述当前时段内的运行指标,判断各实例是否存在故障,根据各实例的判断结果获取所述业务系统的故障定位结果。
[0193]
此外,上述的存储器530中的逻辑指令可以通过软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom,read-only memory)、随机存取存储器(ram,random access memory)、磁碟或者光盘等各种可以存储程序代码的介质。
[0194]
另一方面,本发明还提供一种计算机程序产品,所述计算机程序产品包括存储在非暂态计算机可读存储介质上的计算机程序,所述计算机程序包括程序指令,当所述程序指令被计算机执行时,计算机能够执行上述各方法所提供的业务系统故障定位方法,该方法包括:根据业务系统在当前时段内的运行指标,判断所述业务系统是否存在故障;若所述业务系统存在故障,则根据所述业务系统的各服务在所述当前时段内的运行指标,判断各服务是否存在故障;根据各服务的判断结果,从所述业务系统的所有服务中选择目标服务;根据所述目标服务的各实例在所述当前时段内的运行指标,判断各实例是否存在故障,根据各实例的判断结果获取所述业务系统的故障定位结果。
[0195]
又一方面,本发明还提供一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现以执行上述各提供的业务系统故障定位方法,该方法包括:根据业务系统在当前时段内的运行指标,判断所述业务系统是否存在故障;若所述业务系统存在故障,则根据所述业务系统的各服务在所述当前时段内的运行指标,判断各服务是否存在故障;根据各服务的判断结果,从所述业务系统的所有服务中选择目标服务;根据所述目标服务的各实例在所述当前时段内的运行指标,判断各实例是否存在故障,根据各实例的判断结果获取所述业务系统的故障定位结果。
[0196]
以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
[0197]
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如rom/ram、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。
[0198]
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
再多了解一些

本文用于创业者技术爱好者查询,仅供学习研究,如用于商业用途,请联系技术所有人。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献