切面程序异常的监控方法和装置与流程

allin2023-03-15  52



1.本说明书一个或多个实施例涉及计算机技术领域,尤其涉及切面程序异常的监控方法和装置。


背景技术:

2.在java面向切面编程aop的过程中,通过动态注入切面程序到业务应用程序的目标方法中,能够增强代码功能,是计算机软件开发领域中常用的软件开发方法。
3.然而,由于被注入的切面增强代码本质上是寄生在原程序的进程上运行的。当注入切面程序后的程序的功能、性能指标等发生异常时,很难区分是由切面程序造成的,还是由业务程序自身所造成的。因此,需要对切面程序的异常情况进行监控。


技术实现要素:

4.本说明书一个或多个实施例描述了切面程序异常的监控方法和装置,能够确定服务发生异常时是否是由切面程序异常所导致的。
5.根据第一方面,提供了切面程序异常的监控方法,包括:对所述切面程序的第一指标和至少一个非切面程序的第二指标进行实时监控;其中,所述第一指标和所述第二指标均为能够导致运行程序所要实现的服务发生异常的指标;所述运行程序为所述切面程序注入到主程序后得到的程序;分别判断所述第一指标和所述第二指标是否发生异常;根据判断出的所述第一指标和所述第二指标是否发生异常的判断结果,确定所述切面程序的异常状态。
6.在一种可能的实现方式中,所述切面程序在注入到主程序中时,所述切面程序的内存使用满足如下条件中的至少一个:所述切面程序所占用的内存能够进行释放;所述切面程序注入后,执行所述运行程序的虚拟机有剩余内存用于程序的运行。
7.在一种可能的实现方式中,所述判断所述第一指标是否发生异常,包括执行如下判断中的至少一项:判断切面程序在执行过程中抛出异常的次数是否大于等于异常抛出次数阈值;判断切面程序在执行过程中请求被拦截的次数是否大于等于请求拦截次数阈值;判断切面程序执行过程中的响应时间是否大于等于响应时间阈值;判断切面程序被执行的次数是否大于等于累积执行次数阈值;如果是,则所述切面程序的第一指标发生异常;否则,所述切面程序的第一指标未发生异常。
8.在一种可能的实现方式中,所述至少一个非切面程序的第二指标包括:用于执行所述运行程序的系统的资源指标。
9.在一种可能的实现方式中,所述用于执行所述运行程序的系统的资源指标包括:
执行所述运行程序的cpu的使用率、执行所述运行程序的系统的内存使用率、所述cpu的负载、执行所述运行程序的虚拟机进行垃圾回收的次数中的至少一个;则所述判断所述第二指标是否发生异常,包括执行如下判断中的至少一项:判断执行所述运行程序的cpu的使用率是否大于等于第一使用率阈值;判断执行所述运行程序的系统的内存使用率是否大于等于第二使用率阈值;判断所述cpu的负载是否大于等于cpu负载阈值;判断执行所述运行程序的虚拟机进行垃圾回收的次数是否大于等于垃圾回收次数阈值;如果是,则用于执行所述运行程序的系统的资源指标为发生异常;否则,用于执行所述运行程序的系统的资源指标未发生异常。
10.在一种可能的实现方式中,所述至少一个非切面程序的第二指标包括:用于评估服务质量的服务指标。
11.在一种可能的实现方式中,所述用于评估服务质量的服务指标包括:所述运行程序所要实现的网页服务的失败次数、所述运行程序所要实现的页面服务的失败次数、所述运行程序所要实现的服务中消息订阅的失败次数中的至少一个;则所述判断所述第二指标是否发生异常,包括执行如下判断中的至少一项:判断所述运行程序所要实现的网页服务的失败次数是否大于等于第一失败次数阈值;判断所述运行程序所要实现的程序接口服务的失败次数是否大于等于第二失败次数阈值;判断所述运行程序所要实现的服务中消息订阅的失败次数是否大于等于第三失败次数阈值;如果是,则用于评估服务质量的服务指标发生异常;否则,用于评估服务质量的服务指标未发生异常。
12.在一种可能的实现方式中,所述至少一个非切面程序的第二指标包括:用于执行所述运行程序的系统的资源指标和用于评估服务质量的服务指标;所述根据判断出的所述第一指标和所述第二指标是否发生异常的判断结果确定所述切面程序的异常状态,包括:根据所述第一指标是否发生异常的判断结果、所述资源指标是否发生异常的判断结果和所述服务指标是否发生异常的判断结果,确定所述切面程序的异常风险等级。
13.在一种可能的实现方式中,所述根据所述第一指标是否发生异常的判断结果、所述资源指标是否发生异常的判断结果和所述服务指标是否发生异常的判断结果确定所述切面程序的异常风险等级,包括:若所述第一指标发生异常,则判断所述资源指标和所述服务指标是否发生异常;若所述资源指标和所述服务指标均未发生异常,则将所述切面程序的异常风险等级确定为第一风险等级;若所述资源指标发生异常,且所述服务指标未发生异常,则将所述切面程序的风险等级确定为第二风险等级;其中,所述第二风险等级的异常风险程度大于所述第一风险等级的异常风险程度;
若所述资源指标未发生异常,且所述服务指标发生异常,则将所述切面程序的风险等级确定为第三风险等级;其中,所述第三风险等级的异常风险程度大于所述第二风险等级的异常风险程度;若所述资源指标和所述服务指标均发生异常,则将所述切面程序的异常风险等级确定为第三风险等级。
14.根据第二方面,提供了切面程序异常的监控装置,包括:指标监控模块、指标异常判断模块和切面程序异常确定模块;所述指标监控模块,配置为对所述切面程序的第一指标和至少一个非切面程序的第二指标进行实时监控;其中,所述第一指标和所述第二指标均为能够导致运行程序所要实现的服务发生异常的指标;所述运行程序为所述切面程序注入到主程序后得到的程序;所述指标异常判断模块,配置为分别判断所述指标监控模块监控的所述第一指标和所述第二指标是否发生异常;所述切面程序异常确定模块,配置为根据所述指标异常判断模块判断出的所述第一指标和所述第二指标是否发生异常的判断结果,确定所述切面程序的异常状态。
15.根据第三方面,提供了一种计算设备,包括:存储器和处理器,所述存储器中存储有可执行代码,所述处理器执行所述可执行代码时,实现上述第一方面中任一项所述的方法。
16.根据本说明书实施例提供的方法和装置,在对切面程序的异常进行监控时,首先可以对切面程序的第一指标和非切面程序的第二指标进行监控。然后分别判断第一指标和第二指标是否异常,进而根据第一指标和第二指标是否发生异常的判断结果即可确定出切面程序的异常状态。第一指标和第二指标都是能够导致运行程序所要实现的服务发生异常的指标,但第一指标是切面程序的指标,而第二指标是非切面程序的指标。如此,通过结合切面程序的指标和非切面程序的指标能够更加准确地确定出异常服务是否是由切面程序导致的。
附图说明
17.为了更清楚地说明本说明书实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本说明书的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
18.图1是本说明书一个实施例提供的一种切面程序异常的监控方法的流程图;图2是本说明书一个实施例提供的一种切面程序的异常风险等级的确定方法的流程图;图3是本说明书一个实施例提供的一种切面程序异常的监控装置的示意图。
具体实施方式
19.在计算机软件开发领域,切面指被注入框架注入到目标程序方法中的代码块,通过动态注入切面代码到业务应用程序中来完成代码功能的增强。
20.然而,被注入的切面增强代码和原程序是相互耦合和相互影响的,这就导致当注
入切面程序后的业务功能和性能指标发生异常时,难以确定是由切面程序问题引起的,还是与切面代码无关,而是由业务本身的程序所引起的。此外,如果切面程序被部署到海量的线上业务应用程序容器时,要对所有的业务服务或者系统资源监控的指标异动进行全量无区别的监控覆盖。由于无法区分是否是由于切面代码引起的,这将会导致监控告警量过大而无法进行异常问题的排查。
21.因此,本方案中考虑监控切面程序中能够导致所要实现的服务发生异常的指标,同时结合非切面程序的指标对切面程序的异常状态进行确定,从而能够确定服务发生异常时是否是由切面程序所导致的,进而也就不会由于监控告警量过大而无法进行异常问题的排查。
22.如图1所示,本说明书实施例提供了切面程序异常的监控方法,该方法可以包括如下步骤:步骤101:对切面程序的第一指标和至少一个非切面程序的第二指标进行实时监控;其中,第一指标和第二指标均为能够导致运行程序所要实现的服务发生异常的指标;运行程序为切面程序注入到主程序后得到的程序;步骤103:分别判断第一指标和第二指标是否发生异常;步骤105:根据判断出的第一指标和第二指标是否发生异常的判断结果,确定切面程序的异常状态。
23.本说明书实施例中,在对切面程序的异常进行监控时,首先可以对切面程序的第一指标和非切面程序的第二指标进行监控。然后分别判断第一指标和第二指标是否异常,进而根据第一指标和第二指标是否发生异常的判断结果即可确定出切面程序的异常状态。第一指标和第二指标都是能够导致运行程序所要实现的服务发生异常的指标,但第一指标是切面程序的指标,而第二指标是非切面程序的指标。如此,通过结合切面程序的指标和非切面程序的指标能够更加准确地确定出异常服务是否是由切面程序导致的。
24.而且,当切面程序部署到业务应用中,需要对所有的业务服务或者系统资源监控的指标异动进行全量无区别的监控覆盖时,通过本说明书实施例提供的方案实现了对切面程序的异常的监控。如此,通过对是否发生了切面程序的异常进行筛选,能够大大降低监控的告警量。因此,即使部署海量的线上业务应用,也不会由于监控告警量过大而无法对异常问题进行排查,提升了异常问题的可排查性。
25.容易理解的是,第一指标和/或第二指标是否发生异常的判断结果可以包括判断出的指标发生了异常的结果,以及判断出的指标未发生异常的结果。
26.下面结合具体的实施例对附图1中的各个步骤进行说明。
27.首先在步骤101中,对切面程序的第一指标和至少一个非切面程序的第二指标进行实时监控;在本步骤中,考虑同时对切面程序的第一指标和非切面程序的第二指标进行实时监控。其中,非切面程序为非直接表征切面程序执行的相关指标。比如,非切面程序的指标可以为描述系统资源的指标,还可以为描述服务质量的指标等。
28.如前,切面程序是需要注入到主程序中来得到能够实现某些功能或服务的运行程序的。因此,容易理解的是,切面程序的第一指标和非切面程序的第二指标都应该为能够导致该运行程序所要实现的功能或服务发生异常的指标。如此,利用这些指标能够更加准确
地实现对切面程序的异常监控。
29.在将切面程序注入到主程序中时,为了消除由于自身内存不当所造成的异常情况,可以对切面程序的内存使用情况进行控制。比如,切面程序在注入到主程序中时,一种可能的实现方式中,切面程序的内存使用情况可以满足切面程序所占用的内存能够进行释放,在另一种可能的实现方式中,切面程序的内存使用情况还可以满足在切面程序注入后,执行运行程序的虚拟机有剩余的内存用于程序的运行。当然,在又一种可能的实现方式中,切面程序的内存使用情况还可以为:切面程序所占用的内存能够进行释放,且在切面程序注入后,执行运行程序的虚拟机有剩余的内存用于程序的运行。
30.由此可见,为了消除切面程序自身内存使用不当所造成的异常情况,以进一步提高对切面程序进行异常监控的准确性,进一步考虑对切面程序的内存使用进行了控制。比如,可以对切面程序的内存申请和使用从代码审计级别进行严格控制,确保无内存泄露,切面程序所占用的内存能够进行释放,即内存占用可控。再比如,对虚拟机的执行内存进行控制,确保虚拟机jvm调参时,实现服务和功能的运行程序能够有足够的剩余内存空间,从而使切面程序注入后不会由于内存不足影响自身运行。
31.然后在步骤103中,分别判断第一指标和第二指标是否发生异常;在对切面程序的第一指标和非切面程序的第二指标进行实时监控后,可以根据监控的结果判断第一指标和第二指标是否发生了异常。当然容易理解的是,通过对第一指标和第二指标进行监控得到的结果都应该是针对某一设定的时间段内得到的结果。
32.接下来对判断第一指标和第二指标是否发生异常进行分别说明。
33.下面对判断第一指标是否发生异常进行说明。
34.由于第一指标是监控切面程序的指标,因此该指标应为在切面程序注入到执行相关服务的业务程序后,可能对原程序的服务正常运行产生影响的指标。如此,在判断第一指标是否发生异常时,可以执行如下判断中的至少一项:判断切面程序在执行过程中抛出异常的次数是否大于等于异常抛出次数阈值;判断切面程序在执行过程中请求被拦截的次数是否大于等于请求拦截次数阈值;判断切面程序执行过程中的响应时间是否大于等于响应时间阈值;判断切面程序被执行的次数是否大于等于累积执行次数阈值;如果是,则切面程序的第一指标发生了异常;否则,切面程序的第一指标未发生异常。
35.在本实施例中,针对一个注入点的一次执行过程,可以考虑判断切面程序中抛出异常的次数与抛出次数阈值之间的关系,或者判断切面程序中请求被拦截的次数与请求拦截次数阈值之间的关系,还可以判断切面程序中响应时间与响应时间阈值之间的关系。通过判断这些条件是否有至少一项满足了对应的阈值,即可确定出切面程序的第一指标是否发生了异常。此外,针对一个注入点的多次执行,还可以判断切面程序被执行的次数与累积执行次数阈值的关系,如果切面程序被执行的次数大于等于累积执行次数的阈值,则也可确定切面程序的第一指标发生了异常。
36.下面对上述各个判断项进行说明:情况一,对抛出异常进行判断。注入的切面程序在运行执行过程中,由于程序问题等原因使得程序无法处理。此时会抛出异常,告诉上层调用程序出现了异常。异常抛出次数
阈值可以根据具体的容错率来确定,比如可以设置异常抛出次数阈值为1,即只要抛出了异常就可将切面程序的第一指标确定为异常状态。
37.情况二,对请求被拦截进行判断。当注入的切面程序满足某种条件后,跳过了被注入方法原有的执行流程,导致请求或者交易被拦截,影响业务正常执行。比如,原有的执行流程为a、b、c、d,但人为在b和c之间添加了程序,使得程序需要就行判断,如果满足条件1则执行c和d,否则不会执行c、d,此时,即表现为c和d被拦截。再比如,在一个业务场景中,某一个步骤中可以对操作的用户是否为会员用户进行判断。如果确定了该操作用户为非会员用户,则拦截该操作用户的后续操作请求,此时也体现为拦截。
38.情况三,对响应时间进行判断。在程序执行过程中,如果单个动作执行耗时太长,则会导致整个被注入的方法体执行时间过长,更进一步导致服务超时或者失败。比如,对于一个认证程序,整个程序运行完需要5s,但是5s内并没有得到返回值。那么此时体现为响应时间超过了响应时间阈值,认证失败。
39.情况四,对执行的次数进行判断。该情况的判断可以根据具体的场景或者时间段进行确定第一指标是否发生了异常,或者通过在不同场景或时间段设定不同的累积执行次数阈值对第一指标是否发生了异常进行确定。比如,在双11期间,某一个时间段内切面程序被调用了10万次,那么由于是特殊场景,此时的第一指标并不未发生异常;再比如,在非促销期间,某30分钟内切面程序被调用了10万次,那么此时第一指标应为发生了异常。
40.下面对判断第二指标是否发生异常进行说明。
41.第二指标为非切面程序的指标,比如可以是用于执行运行程序的系统的资源指标,还可以是用于评估服务质量的服务指标。下面分别对这两种类型的第二指标进行说明。
42.第一种类型,当至少一个非切面程序的第二指标包括用于执行运行程序的系统的资源指标时,该资源指标可以包括:执行所述运行程序的cpu的使用率、执行所述运行程序的系统的内存使用率、所述cpu的负载、执行所述运行程序的虚拟机进行垃圾回收的次数中的至少一个;那么,在判断第二指标是否发生异常时,可以执行如下判断中的至少一项:判断执行运行程序的cpu的使用率是否大于等于第一使用率阈值;判断执行运行程序的系统的内存使用率是否大于等于第二使用率阈值;判断cpu的负载是否大于等于cpu负载阈值;判断执行运行程序的虚拟机进行垃圾回收的次数是否大于等于垃圾回收次数阈值;如果是,则用于执行运行程序的系统的资源指标发生异常;否则,用于执行运行程序的系统的资源指标未发生异常。
43.本说明书实施例中,当第二指标包括资源指标时,可以判断执行运行程序的cpu使用率与第一使用率阈值的大小关系,或者判断执行运行程序的系统的内存使用率与第二使用率阈值的大小关系,还可以判断cpu的负载与cpu负载阈值的大小关系,或判断执行运行程序的虚拟机进行垃圾回收的次数与垃圾回收次数阈值的大小关系。由于在一般情况下,如果由于切面问题导致业务服务恶化,会经历切面程序指标异常,然后到系统资源恶化,最后到服务指标恶化。因此,对资源指标进行监控得到第二指标,并结合对切面程序进行监控得到的第一指标能够更加精准的确定出切面程序异常的程度。
44.需要指出的是,上述关于资源指标的各判断项中,如果有至少一项满足,即可确定第二指标发生了异常。
45.第二种类型,当至少一个非切面程序的第二指标包括用于评估服务质量的服务指标时,该服务指标可以包括所述运行程序所要实现的网页服务的失败次数、所述运行程序所要实现的页面服务的失败次数、所述运行程序所要实现的服务中消息订阅的失败次数中的至少一个;那么,在判断第二指标是否发生异常时,可以执行如下判断中的至少一项:判断运行程序所要实现的网页服务的失败次数是否大于等于第一失败次数阈值;判断运行程序所要实现的程序接口服务的失败次数是否大于等于第二失败次数阈值;判断运行程序所要实现的服务中消息订阅的失败次数是否大于等于第三失败次数阈值;如果是,则用于评估服务质量的服务指标发生异常;否则,用于评估服务质量的服务指标未发生异常。
46.本说明书实施例中,当第二指标包括服务指标时,可以判断执行运行程序所要实现的网页服务的失败次数与第一失败次数阈值之间的大小关系,还可以判断执行运行程序所要实现的程序接口服务的失败次数与第二失败次数阈值之间的大小关系,还可以判断运行程序所要实现的服务中消息订阅的失败次数与第三失败次数阈值之间的大小关系。由于服务中主要可以包括网页服务、程序接口服务和消息订阅传递,如此通过对服务中的这三种指标进行判断,能够准确判断出用于评估服务质量的服务指标是否异常。
47.需要指出的是,程序接口服务为通过接口进行程序调用的服务。上述关于服务指标的各项判断中,如果有至少一项满足,即可确定第二指标异常。
48.最后在步骤105中,根据判断出的第一指标和第二指标是否发生异常的判断结果,确定切面程序的异常状态。
49.由于在一般情况下,如果由于切面问题导致业务服务恶化,会经历切面程序指标异常,然后到系统资源恶化,最后到服务指标恶化。因此,第二指标可以同时包括多种类型的指标。比如,在一种可能的实现方式中,至少一个非切面程序的第二指标同时包括用于执行运行程序的系统的资源指标和用于评估服务质量的服务指标。下面以第二指标同时包含资源指标和服务指标的情况对步骤105进行说明。
50.当第二指标同时包括资源指标和服务指标时,步骤105在根据第一指标和第二指标是否发生异常的判断结果确定切面程序的异常状态时,可以根据第一指标是否发生异常的判断结果、资源指标是否发生异常的判断结果和服务指标是否发生异常的判断结果确定切面程序的异常风险等级。
51.比如,如图2所示,可以通过如下步骤来根据第一指标、资源指标和服务指标是否发生异常的判断结果将切面程序的异常风险等级划分为无异常风险、第一风险等级、第二风险等级和第三风险等级等不同的异常状态,其中划分的四个风险等级风险程度依次增高:步骤201:判断第一指标是否发生异常;若是,则执行步骤203,否则执行步骤207;步骤203:判断资源指标和服务指标是否发生异常,并执行步骤205;
步骤205:根据资源指标和服务指标是否发生异常的判断结果确定切面程序的异常风险等级:若资源指标和服务指标均未发生异常,则将切面程序的异常风险等级确定为第一风险等级;若资源指标发生异常,且服务指标未发生异常,则将切面程序的风险等级确定为第二风险等级;其中,第二风险等级的异常风险程度大于第一风险等级的异常风险程度;若资源指标未发生异常,且服务指标发生异常,则将切面程序的风险等级确定为第三风险等级;其中,第三风险等级的异常风险程度大于第二风险等级的异常风险程度;若资源指标和服务指标均发生异常,则将切面程序的异常风险等级确定为第三风险等级;步骤207:若第一指标未发生异常,则在资源指标和服务指标为任意状态时,确定切面程序为无异常风险。
52.在本说明书实施例中,在确定切面程序的异常风险等级时,首先可以判断第一指标是否发生异常。如果第一指标未发生异常,则说明业务的异常并不是有切面程序引起的,因此切面程序并没有异常风险。而如果第一指标发生异常,可以进一步判断资源指标和服务指标是否发生异常。通过利用资源指标和服务指标的状态,能够辅助判断当前业务异常已经恶化到了哪个阶段,从而能够准确的确定出切面程序的异常风险等级。
53.由于切面问题导致业务服务恶化一般会经历切面程序指标异常,然后到系统资源恶化,最后到服务指标恶化。因此,当第一指标发生异常时,可以具体包括如下四种情况:(1)如果只有第一指标异常,而资源指标和服务指标未发生异常,那么仅仅是切面程序异常,并没有进一步引起系统资源和业务服务质量的恶化,即当前切面程序的异常风险程度较低;(2)如果第一指标和资源指标发生异常,而服务指标未发生异常,则说明切面程序的异常已经引起了资源指标的恶化,进一步可能会引起服务指标的恶化,即当前切面程序的异常风险程度相对较高;(3)如果第一指标和服务指标发生异常,而资源指标未发生异常,则说明切面程序的异常很有可能直接导致了业务服务质量的恶化,此时切面程序的异常风险程度已经处于非常高的情况;(4)如果第一指标、资源指标和服务指标均发生异常,那么说明切面程序指标异常,很有可能已经引起系统资源环境的恶化,并且进一步导致了业务服务质量的恶化,此时切面程序的异常风险程度也处于非常高的情况。
54.由此可见,本方案通过业务服务质量恶化流程来设计切面程序异常监控指标的状态,以及通过不同流程阶段的指标关联度分析,设计了切面异常监控的定级原则。而且在排除了内存问题后,遍历了其他可能的影响逻辑,如此有效地将切面程序的监控与业务问题进行了解耦,能够更好地监控由于切面程序原因所导致的异常。
55.如图3所示,本说明实施例提供了一种切面程序异常的监控装置,包括:指标监控模块301、指标异常判断模块302和切面程序异常确定模块303;指标监控模块301,配置为对切面程序的第一指标和至少一个非切面程序的第二指标进行实时监控;其中,第一指标和第二指标均为能够导致运行程序所要实现的服务发
生异常的指标;运行程序为切面程序注入到主程序后得到的程序;指标异常判断模块302,配置为分别判断指标监控模块301监控的第一指标和第二指标是否发生异常;切面程序异常确定模块303,配置为根据指标异常判断模块302判断出的第一指标和第二指标是否发生异常的判断结果,确定切面程序的异常状态。
56.在一种可能的实现方式中,切面程序在注入到主程序中时,指标监控模块301监控的切面程序的内存使用应满足如下条件中的至少一个:切面程序所占用的内存能够进行释放;切面程序注入后,执行运行程序的虚拟机有剩余内存用于程序的运行。
57.在一种可能的实现方式中,指标异常判断模块302在判断第一指标是否发生异常时,配置为执行如下判断中的至少一项:判断切面程序在执行过程中抛出异常的次数是否大于等于异常抛出次数阈值;判断切面程序在执行过程中请求被拦截的次数是否大于等于请求拦截次数阈值;判断切面程序执行过程中的响应时间是否大于等于响应时间阈值;判断切面程序被执行的次数是否大于等于累积执行次数阈值;如果是,则切面程序的第一指标发生异常;否则,切面程序的第一指标未发生异常。
58.在一种可能的实现方式中,至少一个非切面程序的第二指标包括:用于执行运行程序的系统的资源指标;所述用于执行所述运行程序的系统的资源指标包括:执行所述运行程序的cpu的使用率、执行所述运行程序的系统的内存使用率、所述cpu的负载、执行所述运行程序的虚拟机进行垃圾回收的次数中的至少一个;则指标异常判断模块302在判断第二指标是否发生异常时,配置为执行如下判断中的至少一项:判断执行运行程序的cpu的使用率是否大于等于第一使用率阈值;判断执行运行程序的系统的内存使用率是否大于等于第二使用率阈值;判断cpu的负载是否大于等于cpu负载阈值;判断执行运行程序的虚拟机进行垃圾回收的次数是否大于等于垃圾回收次数阈值;如果是,则用于执行运行程序的系统的资源指标发生异常;否则,用于执行运行程序的系统的资源指标未发生异常。
59.在一种可能的实现方式中,至少一个非切面程序的第二指标包括:用于评估服务质量的服务指标;所述用于评估服务质量的服务指标包括:所述运行程序所要实现的网页服务的失败次数、所述运行程序所要实现的页面服务的失败次数、所述运行程序所要实现的服务中消息订阅的失败次数中的至少一个;则指标异常判断模块302在判断第二指标是否发生异常时,配置为执行如下判断中的至少一项:判断运行程序所要实现的网页服务的失败次数是否大于等于第一失败次数阈值;判断运行程序所要实现的程序接口服务的失败次数是否大于等于第二失败次数阈值;
判断运行程序所要实现的服务中消息订阅的失败次数是否大于等于第三失败次数阈值;如果是,则用于评估服务质量的服务指标发生异常;否则,用于评估服务质量的服务指标未发生异常。
60.在一种可能的实现方式中,至少一个非切面程序的第二指标包括:用于执行运行程序的系统的资源指标和用于评估服务质量的服务指标;切面程序异常确定模块303在根据判断出的第一指标和第二指标是否发生异常的判断结果确定切面程序的异常状态时,配置成执行如下操作:根据所述第一指标是否发生异常的判断结果、所述资源指标是否发生异常的判断结果和所述服务指标是否发生异常的判断结果,确定所述切面程序的异常风险等级。
61.在一种可能的实现方式中,切面程序异常确定模块303在根据所述第一指标是否发生异常的判断结果、所述资源指标是否发生异常的判断结果和所述服务指标是否发生异常的判断结果确定所述切面程序的异常风险等级时,配置成执行如下操作:若所述第一指标发生异常,则判断所述资源指标和所述服务指标是否发生异常;若所述资源指标和所述服务指标均未发生异常,则将所述切面程序的异常风险等级确定为第一风险等级;若所述资源指标发生异常,且所述服务指标未发生异常,则将所述切面程序的风险等级确定为第二风险等级;其中,所述第二风险等级的异常风险程度大于所述第一风险等级的异常风险程度;若所述资源指标未发生异常,且所述服务指标发生异常,则将所述切面程序的风险等级确定为第三风险等级;其中,所述第三风险等级的异常风险程度大于所述第二风险等级的异常风险程度;若所述资源指标和所述服务指标均发生异常,则将所述切面程序的异常风险等级确定为第三风险等级。
62.本说明书还提供了一种计算机可读存储介质,其上存储有计算机程序,当计算机程序在计算机中执行时,令计算机执行说明书中任一个实施例中的方法。
63.本说明书还提供了一种计算设备,包括存储器和处理器,存储器中存储有可执行代码,处理器执行可执行代码时,实现说明书中任一个实施例中的方法。
64.可以理解的是,本说明书实施例示意的结构并不构成对切面程序异常的监控装置的具体限定。在说明书的另一些实施例中,切面程序异常的监控装置可以包括比图示更多或者更少的部件,或者组合某些部件,或者拆分某些部件,或者不同的部件布置。图示的部件可以以硬件、软件或者软件和硬件的组合来实现。
65.上述装置内的各单元之间的信息交互、执行过程等内容,由于与本说明书方法实施例基于同一构思,具体内容可参见本说明书方法实施例中的叙述,此处不再赘述。
66.本领域技术人员应该可以意识到,在上述一个或多个示例中,本说明书所描述的功能可以用硬件、软件、挂件或它们的任意组合来实现。当使用软件实现时,可以将这些功能存储在计算机可读介质中或者作为计算机可读介质上的一个或多个指令或代码进行传输。
67.以上所述的具体实施方式,对本说明书描述的目的、技术方案和有益效果进行了
进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施方式而已,并不用于限定本发明的保护范围,凡在本发明的技术方案的基础之上,所做的任何修改、等同替换、改进等,均应包括在本发明的保护范围之内。

技术特征:
1.切面程序异常的监控方法,包括:对所述切面程序的第一指标和至少一个非切面程序的第二指标进行实时监控;其中,所述第一指标和所述第二指标均为能够导致运行程序所要实现的服务发生异常的指标;所述运行程序为所述切面程序注入到主程序后得到的程序;分别判断所述第一指标和所述第二指标是否发生异常;根据判断出的所述第一指标和所述第二指标是否发生异常的判断结果,确定所述切面程序的异常状态。2.根据权利要求1所述的方法,其中,所述切面程序在注入到主程序中时,所述切面程序的内存使用满足如下条件中的至少一个:所述切面程序所占用的内存能够进行释放;所述切面程序注入后,执行所述运行程序的虚拟机有剩余内存用于程序的运行。3.根据权利要求1所述的方法,其中,所述判断所述第一指标是否发生异常,包括执行如下判断中的至少一项:判断切面程序在执行过程中抛出异常的次数是否大于等于异常抛出次数阈值;判断切面程序在执行过程中请求被拦截的次数是否大于等于请求拦截次数阈值;判断切面程序执行过程中的响应时间是否大于等于响应时间阈值;判断切面程序被执行的次数是否大于等于累积执行次数阈值;如果是,则所述切面程序的第一指标发生异常;否则,所述切面程序的第一指标未发生异常。4.根据权利要求1所述的方法,其中,所述至少一个非切面程序的第二指标包括:用于执行所述运行程序的系统的资源指标。5.根据权利要求4所述的方法,其中,所述用于执行所述运行程序的系统的资源指标包括:执行所述运行程序的cpu的使用率、执行所述运行程序的系统的内存使用率、所述cpu的负载、执行所述运行程序的虚拟机进行垃圾回收的次数中的至少一个;则所述判断所述第二指标是否发生异常,包括执行如下判断中的至少一项:判断执行所述运行程序的cpu的使用率是否大于等于第一使用率阈值;判断执行所述运行程序的系统的内存使用率是否大于等于第二使用率阈值;判断所述cpu的负载是否大于等于cpu负载阈值;判断执行所述运行程序的虚拟机进行垃圾回收的次数是否大于等于垃圾回收次数阈值;如果是,则用于执行所述运行程序的系统的资源指标为发生异常;否则,用于执行所述运行程序的系统的资源指标未发生异常。6.根据权利要求1所述的方法,其中,所述至少一个非切面程序的第二指标包括:用于评估服务质量的服务指标。7.根据权利要求6所述的方法,其中,所述用于评估服务质量的服务指标包括:所述运行程序所要实现的网页服务的失败次数、所述运行程序所要实现的页面服务的失败次数、所述运行程序所要实现的服务中消息订阅的失败次数中的至少一个;
则所述判断所述第二指标是否发生异常,包括执行如下判断中的至少一项:判断所述运行程序所要实现的网页服务的失败次数是否大于等于第一失败次数阈值;判断所述运行程序所要实现的程序接口服务的失败次数是否大于等于第二失败次数阈值;判断所述运行程序所要实现的服务中消息订阅的失败次数是否大于等于第三失败次数阈值;如果是,则用于评估服务质量的服务指标发生异常;否则,用于评估服务质量的服务指标未发生异常。8.根据权利要求1所述的方法,其中,所述至少一个非切面程序的第二指标包括:用于执行所述运行程序的系统的资源指标和用于评估服务质量的服务指标;所述根据判断出的所述第一指标和所述第二指标是否发生异常的判断结果确定所述切面程序的异常状态,包括:根据所述第一指标是否发生异常的判断结果、所述资源指标是否发生异常的判断结果和所述服务指标是否发生异常的判断结果,确定所述切面程序的异常风险等级。9.根据权利要求8所述的方法,其中,所述根据所述第一指标是否发生异常的判断结果、所述资源指标是否发生异常的判断结果和所述服务指标是否发生异常的判断结果确定所述切面程序的异常风险等级,包括:若所述第一指标发生异常,则判断所述资源指标和所述服务指标是否发生异常;若所述资源指标和所述服务指标均未发生异常,则将所述切面程序的异常风险等级确定为第一风险等级;若所述资源指标发生异常,且所述服务指标未发生异常,则将所述切面程序的风险等级确定为第二风险等级;其中,所述第二风险等级的异常风险程度大于所述第一风险等级的异常风险程度;若所述资源指标未发生异常,且所述服务指标发生异常,则将所述切面程序的风险等级确定为第三风险等级;其中,所述第三风险等级的异常风险程度大于所述第二风险等级的异常风险程度;若所述资源指标和所述服务指标均发生异常,则将所述切面程序的异常风险等级确定为第三风险等级。10.切面程序异常的监控装置,包括:指标监控模块、指标异常判断模块和切面程序异常确定模块;所述指标监控模块,配置为对所述切面程序的第一指标和至少一个非切面程序的第二指标进行实时监控;其中,所述第一指标和所述第二指标均为能够导致运行程序所要实现的服务发生异常的指标;所述运行程序为所述切面程序注入到主程序后得到的程序;所述指标异常判断模块,配置为分别判断所述指标监控模块监控的所述第一指标和所述第二指标是否发生异常;所述切面程序异常确定模块,配置为根据所述指标异常判断模块判断出的所述第一指标和所述第二指标是否发生异常的判断结果,确定所述切面程序的异常状态。11.一种计算设备,包括存储器和处理器,所述存储器中存储有可执行代码,所述处理器执行所述可执行代码时,实现权利要求1-9中任一项所述的方法。

技术总结
本说明书实施例描述了切面程序异常的监控方法和装置。根据实施例的方法,首先对切面程序的第一指标和非切面程序的第二指标进行监控。然后分别判断第一指标和第二指标是否异常,进而根据第一指标和第二指标是否发生异常的判断结果即可确定出切面程序的异常状态。第一指标和第二指标都是能够导致运行程序所要实现的服务发生异常的指标,但第一指标是切面程序的指标,而第二指标是非切面程序的指标。如此,通过结合切面程序的指标和非切面程序的指标能够更加准确地确定出异常服务是否是由切面程序导致的。切面程序导致的。切面程序导致的。


技术研发人员:张锐
受保护的技术使用者:支付宝(杭州)信息技术有限公司
技术研发日:2022.05.30
技术公布日:2022/7/5
转载请注明原文地址: https://www.8miu.com/read-6079.html

最新回复(0)