具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
在一个实施例中,如图1所示,提供了一种基于接口调用量的告警方法,本实施例以该方法应用于服务器进行举例说明,可以理解的是,该方法也可以应用于终端,还可以应用于包括终端和服务器的系统,并通过终端和服务器的交互实现。本实施例中,该方法包括以下步骤:
步骤102,在当前周期之前的预设统计时长内,确定多个历史周期中各自与当前周期中的当前时间窗口对应的目标时间窗口,并基于各目标时间窗口的接口调用量确定目标基线值。
其中,预设统计时长是预先设置的统计时长。当前周期是当前时间所在的统计时间段。历史周期是当前周期之前的预设统计时长内的统计时间段。举例说明,预设统计时长可以是14天,在当前时间是2022年12月1日00:05时,当前周期可以是2022年12月1日,历史周期可以是2022年12月1日之前的14天,即2022年11月17日至2022年11月30日中的每天。
时间窗口是从起始时间点到末尾时间点之间的时间段。当前时间窗口是当前周期内当前时间对应的时间段。当前时间窗口可以是以当前时间为末尾时间点的时间段,也可以是以当前时间之前且在当前周期内的时间点为末尾时间点的时间段。目标时间窗口是历史周期内与当前周期的当前时间窗口对应的时间段。举例说明,在当前时间是2022年12月1日00:05时,当前时间窗口可以是2022年12月1日中的00:00至00:05,目标时间窗口可以是2022年11月17日至2022年11月30日中的每天的00:00至00:05。
接口调用量表征接口被调用的次数。该接口可以是计算机程序模块的程序接口。该计算机程序模块可以是可实现业务逻辑的计算机程序模块。接口可以是特定计算机程序模块的程序接口。接口调用量可以是业务量。目标时间窗口的接口调用量是在目标时间窗口内计算机程序模块的接口被调用的次数。目标基线值是根据各目标时间窗口的接口调用量确定的基准值。目标基线值可用于与当前时间窗口的接口调用量比较,以衡量当前时间窗口的接口调用量相对于各目标时间窗口的接口调用量的变化。
在一个实施例中,服务器可在当前周期之前的预设统计时长内多个历史周期中每个历史周期内,取与当前周期内当前时间窗口所指示的时段相同的目标时间窗口,获取多个历史周期各自的目标时间窗口的接口调用量,计算各目标时间窗口的接口调用量的平均值,以该平均值为目标基线值。
在一个实施例中,服务器可从多个历史周期各自的目标时间窗口的接口调用量中剔除最大值和最小值,计算剔除后剩余的目标时间窗口的接口调用量的平均值,以该平均值为目标基线值。
在一个实施例中,服务器可从多个历史周期各自的目标时间窗口的接口调用量中,确定预设数量的接口调用量,使得根据该预设数量的接口调用量计算的变异系数小于预设系数。
步骤104,当基于目标基线值判定当前时间窗口的接口调用量符合预备告警条件,基于多个历史周期内各自的目标时间窗口之后的至少一种历史时间窗口的接口调用量,确定与至少一种历史时间窗口对应的至少一个参考基线值。
其中,预备告警条件是触发告警提示的预备条件。历史时间窗口是历史周期中处于目标时间窗口所指示的时间段之后的时间窗口。至少一种历史时间窗口包括一种或多种历史时间窗口。多种历史时间窗口中不同种历史时间窗口间所指示的时段不相同。举例说明,当目标时间窗口是2022年11月17日至2022年11月30日中的每天的00:00至00:05,且至少一种历史时间窗口是两种历史时间窗口时,一种历史时间窗口可以是2022年11月17日至2022年11月30日中的每天的00:06至00:10,另一种历史时间窗口可以是2022年11月17日至2022年11月30日中的每天的00:11至00:15。
当前时间窗口的接口调用量是在当前时间窗口内计算机程序模块的接口被调用的次数。历史时间窗口的接口调用量是在历史时间窗口内计算机程序模块的接口被调用的次数。参考基线值是根据至少一种历史时间窗口中对应的历史时间窗口的接口调用量确定的基准值。至少一种历史时间窗口中每种历史时间窗口对应一个参考基线值。
在一个实施例中,服务器可在目标基线值与当前时间窗口的接口调用量的差值的大于预设差值阈值时,确定基于目标基线值判定当前时间窗口的接口调用量符合预备告警条件,基于多个历史周期内各自的目标时间窗口之后的至少一种历史时间窗口的接口调用量,确定与至少一种历史时间窗口对应的至少一个参考基线值。
在一个实施例中,服务器可在目标基线值与当前时间窗口的接口调用的比值大于预设比值阈值时,确定基于目标基线值判定当前时间窗口的接口调用量符合预备告警条件,基于多个历史周期内各自的目标时间窗口之后的至少一种历史时间窗口的接口调用量,确定与至少一种历史时间窗口对应的至少一个参考基线值。
在一个实施例中,当基于目标基线值判定当前时间窗口的接口调用量符合预备告警条件,服务器可确定多个历史周期内各自的目标时间窗口之后的至少一种历史时间窗口的接口调用量,针对多个历史周期内至少一种历史时间窗口中每种历史时间窗口,计算所针对的历史时间窗口的接口调用量的平均值,以该平均值为所针对的历史时间窗口对应的参考基线值,获得与至少一种历史时间窗口对应的至少一个参考基线值。
步骤106,当基于至少一个参考基线值判定当前时间窗口的接口调用量相对于每种历史时间窗口的接口调用量的差异符合告警条件,触发告警提示。
其中,告警条件是在触发告警提示的条件。告警提示是可能发生故障的提示信息。
在一个实施例中,服务器可在至少一个参考基线值与当前时间窗口的接口调用量的差值分别都大于预设差值阈值时,确定基于至少一个参考基线值判定当前时间窗口的接口调用量相对于每种历史时间窗口的接口调用量的差异符合告警条件,触发告警提示。
在一个实施例中,服务器可在至少一个参考基线值与当前时间窗口的接口调用的比值分别都大于预设比值阈值时,确定基于至少一个参考基线值判定当前时间窗口的接口调用量相对于每种历史时间窗口的接口调用量的差异符合告警条件,触发告警提示。
在一个实施例中,当基于至少一个参考基线值判定当前时间窗口的接口调用量相对于每种历史时间窗口的接口调用量的差异符合告警条件,服务器可触发告警提示,向管理终端发送告警提示信息。其中,告警提示信息可以是消息弹窗,也可以是待办列表中的待办任务。
上述基于接口调用量的告警方法,目标基线值是基于与当前时间窗口对应的各目标时间窗口的接口调用量确定的,目标基线值能够反映当前时间窗口之前的接口调用量基准水平,基于目标基线值判定当前时间窗口的接口调用量符合预备告警条件,可提高告警的准确度;进一步地,当前时间窗口的接口调用量相对于每种历史时间窗口的接口调用量的差异符合告警条件时,触发告警提示,通过针对当前时间窗口的接口调用量的多个条件判断是否触发告警提示,避免出现误报,提高了告警准确度。
在一个实施例中,如图2所示,步骤102包括下述步骤202至步骤208:
步骤202,在当前周期之前的预设统计时长内多个历史周期中每个历史周期内,取与当前周期内当前时间窗口所指示的时段相同的目标时间窗口。
在一个实施例中,服务器可确定当前时间窗口的起始时间点和当前时间窗口的窗口长度,在当前周期之前的预设统计时长内多个历史周期中每个历史周期内,确定从该起始时间点起一个窗口长度的目标时间窗口为目标时间窗口。
步骤204,获取多个历史周期各自的目标时间窗口的接口调用量,从多个历史周期各自的目标时间窗口的接口调用量中剔除最大值和最小值。
在一个实施例中,服务器可获取多个历史周期各自的接口调用数据,针对多个历史周期中每个周期的目标时间窗口,基于接口调用数据统计接口调用量,获得多个历史周期各自的目标时间窗口的接口调用量。其中,接口调用数据是多个历史周期中每个历史周期内各时间点的接口调用量。
在一个实施例中,服务器可从多个历史周期各自的目标时间窗口的接口调用量中,分别剔除按数值降序排列最靠前的一个接口调用量,以及按数值升序排列最靠前的一个接口调用量。
步骤206,从剔除后剩余的目标时间窗口的接口调用量中,确定至少预设数量的接口调用量。
其中,预设数量是预先设置的数量。预设数量可以与预设统计时长相关,如预设数量可以是预设统计时长的数值上的一半,即当预设统计时长是14,预设数量是7。
在一个实施例中,服务器可从剔除后剩余的目标时间窗口的接口调用量中,确定至少预设数量的接口调用量,使得根据该至少预设数量的接口调用量计算的变异系数小于预设系数。
在一个实施例中,服务器可从剔除后剩余的目标时间窗口的接口调用量中,取出预设数量的任意目标时间窗口的接口调用量,获得由所取出预设数量的接口调用量组成的第一数值集合,以及取出接口调用量后的剩余接口调用量组成的第二数值集合,对第一数值集合计算变异系数,当计算的变异系数小于预设系数,循环地从当前的第二数值集合任意取出一个接口调用量加入第一数值集合,直到对当前的第一数值集合重新计算的变异系数大于或等于预设系数,获得当前的第一数值集合所包括的至少预设数量的接口调用量。
步骤208,计算至少预设数量的接口调用量的平均值,确定目标基线值。
其中,平均值可以是均值、加权平均值、滑动平均值或其它平均值。
在一个实施例中,服务器可计算至少预设数量的接口调用量的平均值,以平均值为目标基线值。
在一个实施例中,服务器可计算至少预设数量的接口调用量的平均值,按预设数据精准度对平均值进行处理,以处理后的平均值为目标基线值。其中,预设数据精准度是预先设置的对数据取值的精准度,如对具有多位小数的数值取两位小数。
本实施例中,多个历史周期各自的目标时间窗口与当前时间窗口的时段相同,而且从各目标时间窗口的接口调用量中剔除最大值和最小值,可避免异常值的影响,进一步地对至少预设数量的接口调用量计算平均值,得到的目标基线值能够较为准确地表征当前时间窗口的接口调用量的历史基准值,从而使得后续基于目标基线值判定当前时间窗口的接口调用量符合预备告警条件是符合真实告警场景的,因而可进一步提高告警准确度。
在一个实施例中,上述步骤206包括:将剔除后剩余的目标时间窗口的接口调用量按照数值从小到大排列,获得接口调用量序列;从接口调用量序列中取出前预设数量的接口调用量,获得由所取出的预设数量的接口调用量组成的有效值序列,以及取出接口调用量后的剩余接口调用量序列;对有效值序列计算变异系数;变异系数表征所取的预设数量的接口调用量的离散程度;当对有效值序列计算的变异系数小于预设系数,循环地从当前的剩余接口调用量序列中取排在首位的接口调用量加入有效值序列,直到对当前的有效值序列重新计算的变异系数大于或等于预设系数,或直到当前的剩余接口调用量序列中不存在接口调用量,获得当前的有效值序列所包括的至少预设数量的接口调用量。
其中,接口调用量序列是按数值从小到大排列的接口调用量形成的序列。有效值序列是有效的接口调用量形成的序列。有效值序列中的接口调用量可用于计算目标基线值。剩余接口调用量序列是从接口调用量序列取出接口调用量后剩余的接口调用量。剩余接口调用量序列中接口调用量是按照从小到大排序的,剩余接口调用量序列中最小的接口调用量排在首位。
变异系数是测度数据变异程度的相对统计量。变异系数是一组数据的标准差与该组数据的平均值的比值。预设系数是预先设置的系数数值。预设系数可以是0.5。预设系数可以是变异系数衡量一组数据离散程度的临界值,当变异系数小于预设系数,说明该组数据离散程度小,平均指标对该组数据的代表性高;当变异系数大于或等于预设系数,说明该组数据离散程度小,平均指标对该组数据的代表性低。平均指标如平均值。
本实施例中,当计算的变异系数小于预设系数,说明当前有效值序列的离散程度小,循环地向有效值序列中增加剩余接口调用量序列中排首位的接口调用量,以筛选出变异系数小于预设系数且有效值序列中接口调用量尽量多的有效值序列,能够获得离散程度较小、且数据量尽量多的有效值序列,进而后续可通过有效值序列所包括的至少预设数量的接口调用量获得目标基线值,可进一步地提高告警准确度。
在一个实施例中,服务器可从接口调用量序列中,从排在首位的接口调用量开始,按照数值从小到大的顺序,取预设数量的接口调用量,获得由所取出的预设数量的接口调用量组成的有效值序列,以及取出接口调用量后的剩余接口调用量序列。
在一个实施例中,上述步骤206还包括:将剔除后剩余的目标时间窗口的接口调用量按照数值从小到大排列,获得接口调用量序列;从接口调用量序列中取出前预设数量的接口调用量,获得由所取出的预设数量的接口调用量组成的有效值序列,以及取出接口调用量后的剩余接口调用量序列;对有效值序列计算变异系数;变异系数表征所取的预设数量的接口调用量的离散程度;当对有效值序列计算的变异系数大于或等于预设系数,循环地从当前的有效值序列剔除最小值,并从当前的剩余接口调用量序列中,取排在首位的接口调用量加入剔除最小值后的有效值序列,直到对当前的有效值序列重新计算的变异系数小于预设系数,再循环地从当前的剩余接口调用量序列中取排在首位的接口调用量加入有效值序列,直到对当前的有效值序列重新计算的变异系数大于或等于预设系数,或直到当前的剩余接口调用量序列中不存在接口调用量,获得当前的有效值序列所包括的至少预设数量的接口调用量。
本实施例中,当计算的变异系数大于或等于预设系数,说明当前有效值序列的离散程度大,循环地剔除有效值序列中的最小值,并且向有效值序列中添加剩余接口调用量序列中排在首位的接口调用量,以获得变异系数小于预设系数的有效值序列;在重新计算的变异系数小于预设系数时,循环地向有效值序列中增加接口调用量,以获得离散程度较小、且数据量尽量多的有效值序列,进而后续可通过有效值序列所包括的至少预设数量的接口调用量获得目标基线值,可进一步地提高告警准确度。
在一个实施例中,步骤104包括:基于当前时间窗口的接口调用量以及目标基线值,确定目标波动比例;当目标波动比例符合预设条件,且目标波动比例与根据目标基线值从预设动态阈值表中确定的目标阈值符合第一预设阈值条件,确定当前时间窗口的接口调用量符合预备告警条件;按照目标时间窗口的窗口长度,确定多个历史周期内各自的目标时间窗口之后的至少一种历史时间窗口;基于多个历史周期内各自的目标时间窗口之后的至少一种历史时间窗口的接口调用量,确定与至少一种历史时间窗口对应的至少一个参考基线值。
其中,目标波动比例是当前时间窗口的接口调用量相较于多个历史周期中各目标时间窗口的接口调用量的变化比例。预设条件是针对目标波动比例预先设置的条件。第一预设阈值条件是针对目标波动比例与目标阈值预先设置的条件。预设动态阈值表是预先设置的可获取动态的阈值的表。目标阈值是从预设动态阈值表中确定的与目标时间窗口对应的阈值。目标时间窗口的窗口长度是目标时间窗口的从起始时间点到末尾时间点的时间长度。
本实施例中,目标阈值是根据目标基线值从预设动态阈值表中确定的,该目标阈值适应于目标基线值,而非固定的阈值,可进一步提高告警的准确度;而且通过判定目标波动比例符合预设条件,并且判定目标波动比例和目标阈值符合第一预设阈值条件,确定当前时间窗口的接口调用量符合预备告警条件,说明当前时间窗口的接口调用量可能存在异常,为后续进一步触发告警提示创造了条件。
在一个实施例中,服务器可计算当前时间窗口的接口调用量与目标基线值之间的差值与目标基线值的比值,将该比值与100%的乘积作为目标波动比例;当目标波动比例小于零,且目标波动比例的绝对值大于或等于目标阈值,确定当前时间窗口的接口调用量符合预备告警条件。本实施例中,预设条件可以是目标波动比例小于零,第一预设阈值条件可以是目标波动比例的绝对值大于或等于目标阈值。当目标波动比例小于零,说明当前时间窗口的接口调用量相较于目标基线值下降,当目标波动比例的绝对值大于或等于目标阈值,说明当前时间窗口的接口调用量相较于目标基线值下降幅度大,可能出现异常,因而可能需要触发告警提示。
在一个实施例中,服务器可计算当前时间窗口的接口调用量与目标基线值的比值,将该比值作为目标波动比例;当目标波动比例小于一,且目标波动比例小于目标阈值,确定当前时间窗口的接口调用量符合预备告警条件。本实施例中,预设条件可以是目标波动比例小于一,第一预设阈值条件可以是目标波动比例小于目标阈值。
在一个实施例中,服务器可从目标时间窗口的末尾时间点开始,在多个历史周期内确定各自目标时间窗口之后的至少一种历史时间窗口,使得每种历史时间窗口的窗口长度与目标时间窗口的窗口长度相同。
在一个实施例中,服务器可针对多个历史周期内至少一种历史时间窗口中每种历史时间窗口,从每种历史时间窗口的接口调用量中剔除最大值和最小值,将剔除后剩余的历史时间窗口的接口调用量按照数值从小到大排列,获得历史接口调用量序列,从历史接口调用量序列中取出前预设数量的接口调用量,获得由所取出的预设数量的接口调用量组成的历史有效值序列,以及取出接口调用量后的剩余历史接口调用量序列,对历史有效值序列计算变异系数;
当对历史有效值序列计算的变异系数小于预设系数,服务器可循环地从当前的剩余历史接口调用量序列中取排在首位的接口调用量加入历史有效值序列,直到对当前的历史有效值序列重新计算的变异系数大于或等于预设系数,或直到当前的剩余历史接口调用量序列中不存在接口调用量,获得当前的历史有效值序列;对历史有效值序列计算平均值,以该平均值为所针对的历史时间窗口的参考基线值,获得与至少一种历史时间窗口对应的至少一个参考基线值。
在一个实施例中,当对历史有效值序列计算的变异系数大于或等于预设系数,服务器可循环地从当前的历史有效值序列剔除最小值,并从当前的剩余历史接口调用量序列中,取排在首位的接口调用量加入剔除最小值后的历史有效值序列,直到对当前的历史有效值序列重新计算的变异系数小于预设系数,再循环地从当前的剩余历史接口调用量序列中取排在首位的接口调用量加入历史有效值序列,直到对当前的历史有效值序列重新计算的变异系数大于或等于预设系数,或直到当前的剩余历史接口调用量序列中不存在接口调用量,获得当前的历史有效值序列,对历史有效值序列计算平均值,以该平均值为所针对的历史时间窗口的参考基线值,获得与至少一种历史时间窗口对应的至少一个参考基线值。
在一个实施例中,上述基于接口调用量的告警方法还包括从预设动态阈值表中确定目标阈值的步骤,该步骤包括:确定目标基线值在预设动态阈值表中所属的目标动态基线下限值,目标动态基线下限值小于目标基线值,且在预设动态阈值表中最接近目标基线值;获得预设动态阈值表中目标动态基线下限值对应的目标阈值。
其中,目标动态基线下限值是预设动态阈值表中用于划定目标基线值的下限的动态基线下限值。预设动态阈值表中可存在动态基线下限值与动态的阈值的映射关系。如图3预设动态阈值表示例示意图所示,表中记录了动态基线下限值与动态的阈值的映射关系,当目标基线值为100,则目标动态基线下限值是60,目标阈值是目标动态基线下限值60对应的阈值,即70%。
本实施例中,根据目标基线值从预设动态阈值中确定目标动态基线下限值,进而确定目标阈值,可较为便利地确定目标阈值,而且目标阈值是随目标基线值灵活变动,进一步地提高了告警准确度。
在一个实施例中,步骤106包括:分别根据当前时间窗口的接口调用量以及至少一个参考基线值,确定与至少一种历史时间窗口对应的至少一个参考波动比例;每个参考波动比例表征当前时间窗口的接口调用量相对于对应的历史时间窗口的接口调用量的差异;分别根据至少一个参考基线值,从预设动态阈值表中确定与至少一种历史时间窗口对应的至少一个参考阈值;当至少一个参考波动比例分别与至少一个参考阈值中对应的参考阈值符合第二预设阈值条件,触发告警提示。
其中,参考阈值是从预设动态阈值表中确定的历史时间窗口对应的阈值。第二预设阈值条件是针对参考基线值与参考阈值预先设置的条件。
本实施例中,在当前时间窗口的接口调用量符合预备告警条件后,进一步地对与至少一种历史时间窗口对应的至少一个参考波动比例以及对应的参考阈值进行判断,在符合第二预设阈值条件的时候,实现触发告警提示,通过多重的条件,减少误判,进一步提高了告警准确度。
在一个实施例中,服务器可根据至少一个参考基线值,从预设动态阈值表中分别确定至少一个参考基线值在预设动态阈值表中所属的参考动态基线下限值,参考动态基线下限值小于对应的参考基线值,且在预设动态阈值表中最接近对应的参考基线值;获得预设动态阈值表中至少一个参考动态基线下限值对应的参考阈值,确定与至少一种历史时间窗口对应的参考阈值。
在一个实施例中,服务器可针对至少一种历史时间窗口中每种历史时间窗口对应的参考基线值,计算当前时间窗口的接口调用量与针对的参考基线值之间的差值与针对的参考基线值的比值,将该比值与100%的乘积作为对应的参考波动比例,获得与至少一种历史时间窗口对应的至少一个参考波动比例;当至少一个参考波动比例的绝对值都大于或等于对应的参考阈值,确定至少一个参考波动比例分别与至少一个参考阈值中对应的参考阈值符合第二预设阈值条件,触发告警提示。其中,第二预设阈值条件可以是至少一个参考波动比例的绝对值都大于或等于对应的参考阈值。
本实施例中,当至少一个参考波动比例的绝对值都大于或等于对应的参考阈值,说明当前时间窗口的接口调用量相较于历史周期中当前时段之后一段时间内的接口调用量下降幅度都大,故而触发告警提示,排除当前时间窗口处于接口调用低峰期的情况,大大提高了告警的准确度。
在一个实施例中,服务器可针对至少一种历史时间窗口中每种历史时间窗口对应的参考基线值,计算当前时间窗口的接口调用量与针对的参考基线值的比值,将该比值作为对应的参考波动比例;当至少一个参考波动比例的都小于对应的参考阈值,确定至少一个参考波动比例分别与至少一个参考阈值中对应的参考阈值符合第二预设阈值条件,触发告警提示。
在一个具体实施例中,上述基于接口调用量的告警方法具体包括:
服务器可在当前周期之前的预设统计时长内多个历史周期中每个历史周期内,取与当前周期内当前时间窗口所指示的时段相同的目标时间窗口;获取多个历史周期各自的目标时间窗口的接口调用量,从多个历史周期各自的目标时间窗口的接口调用量中剔除最大值和最小值,从剔除后剩余的目标时间窗口的接口调用量中,确定包括至少预设数量的接口调用量的有效值组。
如图4确定有效值组的步骤流程示意图所示,服务器可将剔除后剩余的目标时间窗口的接口调用量按照数值从小到大排列,获得对照组(接口调用量序列),从对照组中取出前DayNum/2(DayNum,预设统计时长;DayNum/2是预设统计时长的一半;预设数量可以是DayNum/2)的接口调用量,获得由所取出的预设数量的接口调用量组成的有效值组(有效值序列),以及取出接口调用量后的剩余数据对照组(剩余接口调用量序列);对有效值组计算变异系数,变异系数表征所取的DayNum/2的接口调用量的离散程度。
当对有效值组计算的变异系数小于预设系数,服务器可循环地从当前的剩余数据对照组中取排在首位的接口调用量加入有效值组,直到对当前的有效值组重新计算的变异系数大于或等于预设系数,或直到当前的剩余数据对照组中不存在接口调用量,获得当前的有效值组,并获得当前的有效值组所包括的至少预设数量的接口调用量。
当对有效值组计算的变异系数大于或等于预设系数,服务器可循环地从当前的有效值组剔除最小值,并从当前的剩余数据对照组中,取排在首位的接口调用量加入剔除最小值后的有效值组,直到对当前的有效值组重新计算的变异系数小于预设系数,再循环地从当前的剩余数据对照组中取排在首位的接口调用量加入有效值组,直到对当前的有效值组重新计算的变异系数大于或等于预设系数,或直到当前的剩余数据对照组中不存在接口调用量,获得当前的有效值组,并获得当前的有效值组所包括的至少预设数量的接口调用量。
在一个具体的场景中,当预设系数是0.5,预设统计时长是14,即预设数量是7时,对具体为[2,2,3,4,5,6,7,10,15,16,20,22,1660,3660]的对照组按照如图4所示的处理过程,可得到的有效值组是[2,3,4,5,6,7,10,15,16,20,22]。
通过如图4所示的步骤获得至少预设数量的接口调用量后,服务器可计算至少预设数量的接口调用量的滑动平均值,以该滑动平均值为目标基线值。
如图5异常检测以触发告警提示的流程示意图所示,服务器可计算当前时间窗口的接口调用量与目标基线值之间的差值与目标基线值的比值,将该比值与100%的乘积作为目标波动比例。当目标波动比例小于零(目标波动比例为负),服务器可确定目标基线值在如图3所示的预设动态阈值表中所属的目标动态基线下限值,目标动态基线下限值小于目标基线值,且在预设动态阈值表中最接近目标基线值,获得预设动态阈值表中目标动态基线下限值对应的目标阈值。
当目标波动比例的绝对值大于或等于目标阈值,服务器可按照目标时间窗口的窗口长度,确定多个历史周期内各自的目标时间窗口之后的至少一种历史时间窗口;基于多个历史周期内各自的目标时间窗口之后的至少一种历史时间窗口的接口调用量,确定与至少一种历史时间窗口对应的至少一个参考基线值。
服务器可针对至少一种历史时间窗口中每种历史时间窗口对应的参考基线值,计算当前时间窗口的接口调用量与针对的参考基线值之间的差值与针对的参考基线值的比值,将该比值与100%的乘积作为对应的参考波动比例,确定与至少一种历史时间窗口对应的至少一个参考波动比例;分别根据至少一个参考基线值,从预设动态阈值表中确定与至少一种历史时间窗口对应的至少一个参考阈值;当至少一个参考波动比例的绝对值都大于或等于对应的参考阈值,确定出现异常,触发告警提示。
应该理解的是,虽然如上的各实施例所涉及的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,如上的各实施例所涉及的流程图中的至少一部分步骤可以包括多个步骤或者多个阶段,这些步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤中的步骤或者阶段的至少一部分轮流或者交替地执行。
基于同样的发明构思,本申请实施例还提供了一种用于实现上述所涉及的基于接口调用量的告警方法的基于接口调用量的告警装置。该装置所提供的解决问题的实现方案与上述方法中所记载的实现方案相似,故下面所提供的一个或多个基于接口调用量的告警装置实施例中的具体限定可以参见上文中对于基于接口调用量的告警方法的限定,在此不再赘述。
在一个实施例中,如图6所示,提供了一种基于接口调用量的告警装置600,包括:目标基线值确定模块610、预备告警模块620和告警模块630,其中:
目标基线值确定模块610,用于在当前周期之前的预设统计时长内,确定多个历史周期中各自与当前周期中的当前时间窗口对应的目标时间窗口,并基于各目标时间窗口的接口调用量确定目标基线值。
预备告警模块620,用于当基于目标基线值判定当前时间窗口的接口调用量符合预备告警条件,基于多个历史周期内各自的目标时间窗口之后的至少一种历史时间窗口的接口调用量,确定与至少一种历史时间窗口对应的至少一个参考基线值。
告警模块630,用于当基于至少一个参考基线值判定当前时间窗口的接口调用量相对于每种历史时间窗口的接口调用量的差异符合告警条件,触发告警提示。
在一个实施例中,目标基线值确定模块610还用于在当前周期之前的预设统计时长内多个历史周期中每个历史周期内,取与当前周期内当前时间窗口所指示的时段相同的目标时间窗口;获取多个历史周期各自的目标时间窗口的接口调用量,从多个历史周期各自的目标时间窗口的接口调用量中剔除最大值和最小值;从剔除后剩余的目标时间窗口的接口调用量中,确定至少预设数量的接口调用量;计算至少预设数量的接口调用量的平均值,确定目标基线值。
在一个实施例中,目标基线值确定模块610还用于将剔除后剩余的目标时间窗口的接口调用量按照数值从小到大排列,获得接口调用量序列;从接口调用量序列中取出前预设数量的接口调用量,获得由所取出的预设数量的接口调用量组成的有效值序列,以及取出接口调用量后的剩余接口调用量序列;对有效值序列计算变异系数;变异系数表征所取的预设数量的接口调用量的离散程度;当对有效值序列计算的变异系数小于预设系数,循环地从当前的剩余接口调用量序列中取排在首位的接口调用量加入有效值序列,直到对当前的有效值序列重新计算的变异系数大于或等于预设系数,或直到当前的剩余接口调用量序列中不存在接口调用量,获得当前的有效值序列所包括的至少预设数量的接口调用量。
在一个实施例中,目标基线值确定模块610还用于将剔除后剩余的目标时间窗口的接口调用量按照数值从小到大排列,获得接口调用量序列;从接口调用量序列中取出前预设数量的接口调用量,获得由所取出的预设数量的接口调用量组成的有效值序列,以及取出接口调用量后的剩余接口调用量序列;对有效值序列计算变异系数;变异系数表征所取的预设数量的接口调用量的离散程度;当对有效值序列计算的变异系数大于或等于预设系数,循环地从当前的有效值序列剔除最小值,并从当前的剩余接口调用量序列中,取排在首位的接口调用量加入剔除最小值后的有效值序列,直到对当前的有效值序列重新计算的变异系数小于预设系数,再循环地从当前的剩余接口调用量序列中取排在首位的接口调用量加入有效值序列,直到对当前的有效值序列重新计算的变异系数大于或等于预设系数,或直到当前的剩余接口调用量序列中不存在接口调用量,获得当前的有效值序列所包括的至少预设数量的接口调用量。
在一个实施例中,预备告警模块620还用于基于当前时间窗口的接口调用量以及目标基线值,确定目标波动比例;当目标波动比例符合预设条件,且目标波动比例与根据目标基线值从预设动态阈值表中确定的目标阈值符合第一预设阈值条件,确定当前时间窗口的接口调用量符合预备告警条件;按照目标时间窗口的窗口长度,确定多个历史周期内各自的目标时间窗口之后的至少一种历史时间窗口;基于多个历史周期内各自的目标时间窗口之后的至少一种历史时间窗口的接口调用量,确定与至少一种历史时间窗口对应的至少一个参考基线值。
在一个实施例中,预备告警模块620还用于确定目标基线值在预设动态阈值表中所属的目标动态基线下限值,目标动态基线下限值小于目标基线值,且在预设动态阈值表中最接近目标基线值;获得预设动态阈值表中目标动态基线下限值对应的目标阈值。
在一个实施例中,告警模块630还用于分别根据当前时间窗口的接口调用量以及至少一个参考基线值,确定与至少一种历史时间窗口对应的至少一个参考波动比例;每个参考波动比例表征当前时间窗口的接口调用量相对于对应的历史时间窗口的接口调用量的差异;分别根据至少一个参考基线值,从预设动态阈值表中确定与至少一种历史时间窗口对应的至少一个参考阈值;当至少一个参考波动比例分别与至少一个参考阈值中对应的参考阈值符合第二预设阈值条件,触发告警提示。
上述基于接口调用量的告警装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
在一个实施例中,提供了一种计算机设备,该计算机设备可以是服务器,其内部结构图可以如图7所示。该计算机设备包括处理器、存储器、输入/输出接口(Input/Output,简称I/O)和通信接口。其中,处理器、存储器和输入/输出接口通过系统总线连接,通信接口通过输入/输出接口连接到系统总线。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质和内存储器。该非易失性存储介质存储有操作系统、计算机程序和数据库。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的数据库用于存储执行上述基于接口调用量的告警方法时需存储的数据。该计算机设备的输入/输出接口用于处理器与外部设备之间交换信息。该计算机设备的通信接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种基于接口调用量的告警方法。
本领域技术人员可以理解,图7中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
在一个实施例中,还提供了一种计算机设备,包括存储器和处理器,存储器中存储有计算机程序,该处理器执行计算机程序时实现上述各方法实施例中的步骤。
在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现上述各方法实施例中的步骤。
在一个实施例中,提供了一种计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现上述各方法实施例中的步骤。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、数据库或其它介质的任何引用,均可包括非易失性和易失性存储器中的至少一种。非易失性存储器可包括只读存储器(Read-OnlyMemory,ROM)、磁带、软盘、闪存、光存储器、高密度嵌入式非易失性存储器、阻变存储器(ReRAM)、磁变存储器(Magnetoresistive Random Access Memory,MRAM)、铁电存储器(Ferroelectric Random Access Memory,FRAM)、相变存储器(Phase Change Memory,PCM)、石墨烯存储器等。易失性存储器可包括随机存取存储器(Random Access Memory,RAM)或外部高速缓冲存储器等。作为说明而非局限,RAM可以是多种形式,比如静态随机存取存储器(Static Random Access Memory,SRAM)或动态随机存取存储器(Dynamic RandomAccess Memory,DRAM)等。本申请所提供的各实施例中所涉及的数据库可包括关系型数据库和非关系型数据库中至少一种。非关系型数据库可包括基于区块链的分布式数据库等,不限于此。本申请所提供的各实施例中所涉及的处理器可为通用处理器、中央处理器、图形处理器、数字信号处理器、可编程逻辑器、基于量子计算的数据处理逻辑器等,不限于此。
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本申请专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请的保护范围应以所附权利要求为准。