本发明涉及软件监测,特别涉及一种服务端软件健康检测方法及装置。
背景技术:
1、随着互联网和云计算的快速发展,很多行业都将软件运行到云环境,企业拥有的服务端软件越来越多,一个完整的软件服务系统由多个服务端软件组成,同时由于用户量巨大以及分布式技术的广泛应用,任何一个服务端软件出现异常状态,都会出现给企业造成极大的损失。所以一个可靠、灵活的软件健康评价模型至关重要。
2、在现有技术中,专利cn102508771a公开了一种软件运行状态检测方法,用于对全网内可监控的软件建立评价模型,实时获取软件运行健康指数,其方式是通过多因子预设建立评价模型,根据软件的参数指标构建可靠性指标、效率指标、环境指标和服务依存指标,然后通过这几种指标进行对应的计算,得出软件的健康状态。上述方法虽然有一定的灵活性,但是其采集部分是实时采集,对软件运行环境的性能要求极高;此外,使用实时采集方式会在混合云或云环境上占用大量的网络i/o资源,因此上述方法仅适合企业子网环境或小范围局域网,并不适用于在云计算环境下的应用。
3、专利cn114153683a公开了一种基于综合评价算法的网络化软件健康度检测方法,通过二梯度函数进行权重计算,获取对应的健康分,基于预设的分数范围和健康分进行比较,来获取软件的健康度。上述方法中,第一类指标为cpu使用率、内存使用率,第二类指标为网络i/o、磁盘i/o和系统吞吐量;通过计算使用率得到的结果,忽略了真正的cpu算力、内存用量,会对服务的健康分数计算产生很大的误判;因此,这种衡量指标在混合云,尤其是不同配置的主机上,衡量误差非常大,并不适用。
4、相关技术中公开的软件健康检测方法对于通信机制及软件运行环境多样化条件下的指标设置均有严格要求,其适用性和评价准确性受到了很大的限制。
技术实现思路
1、本发明实施例的目的是提供一种服务端软件健康检测方法及装置,用于解决现有技术中无法解决云计算环境下软件健康状态检测方法的技术问题。
2、为解决上述技术问题,本发明实施例的第一方面提供了一种服务端软件健康检测方法,包括如下步骤:
3、获取服务端软件的若干个分布式节点的节点信息参数;
4、基于漏斗模型,依据单个所述节点的节点信息参数获取节点健康状态值;
5、依据所有所述节点的节点健康状态值,计算所述服务端软件的软件健康状态值,对照健康参考量表得到所述服务端软件的软件健康状态等级。
6、进一步地,所述获取服务端软件的若干个分布式节点的节点信息参数,包括:
7、定义预设参数类型;
8、获取所述服务端软件在集群上的所述节点数量及对应的负载系数;
9、依据所述预设参数类型,获取所有所述节点的所述节点信息参数。
10、进一步地,所述基于漏斗模型依据单个所述节点的节点信息参数获取节点健康状态值包括:
11、基于所述节点对应的负载系数,依据所述节点信息参数计算所述节点的资源限定上限;
12、将所述节点的资源限定上限与所述漏斗模型进行比较,得到所述节点的第二健康度扣分值和第三健康度扣分值;
13、基于所述节点的初始健康状态值,减去所述第二健康度扣分值和所述第三健康度扣分值,得到所述节点的健康状态值;
14、所述节点的健康状态值sorcei为:
15、sorcei=sorcei0-sorcei2-sorcei3;
16、其中,sorcei0为第i个节点的初始健康状态值,sorcei2为所述第二健康度扣分值,sorcei3为所述第三健康度扣分值;
17、所述节点信息参数包括:cpu资源、内存资源、网络i/o、磁盘i/o、软件子进程、软件子线程、软件子协程,所述第二健康度扣分值与所述cpu资源、内存资源、网络i/o、磁盘i/o相关,所述第三健康度扣分值与所述软件子进程、所述软件子线程、所述软件子协程相关。
18、进一步地,所述依据所述节点信息参数计算所述节点的资源限定上限之前,还包括:
19、获取与采集所述节点信息参数对应的信息采集时间;
20、当所述信息采集时间小于或等于第一预设时长,则判定所述节点的第一健康度扣分值为零;
21、当所述信息采集时间大于所述第一预设时长且小于或等于第二预设时长时,则判定所述节点的第一健康度扣分值为预设低分值;
22、当所述信息采集时间大于所述第二预设时长且小于或等于第三预设时长时,判定所述节点的第一健康状态值为预设高分值;
23、当所述信息采集时间大于所述第三预设时长时,则直接判定所述节点的软件健康状态值为0;
24、所述节点的健康状态值sorcei为:
25、sorcei=sorcei0-sorcei1-sorcei2-sorcei3;
26、其中,sorcei1为所述第一健康度扣分值。
27、进一步地,所述节点的第二健康度扣分值sorcei2为:
28、sorcei2=sorcei-cpu+sorcei-mem+sorcei-net+sorcei-block;
29、所述cpu健康度扣分值sorcei-cpu为:
30、
31、所述内存健康度扣分值sorcei-mem为:
32、
33、所述网络i/o健康度扣分值sorcei-net为:
34、
35、所述磁盘i/o健康度扣分值sorcei-mem为:
36、
37、其中,ci为第i个节点的cpu使用总量,pcpu为cpu的健康阈值百分比,balancei为第i个节点对应的负载系数,call为cpu设置使用总量,mi为第i个节点的内存使用总量,mall为内存设置使用总量,pmem为内存的健康阈值百分比,ni为第i个节点的网络i/o使用总量,nall为网络i/o设置使用总量,pnet为网络i/o的健康阈值百分比,bi为第i个节点的磁盘i/o使用总量,ball为磁盘i/o设置使用总量,pblock为磁盘i/o的健康阈值百分比。
38、进一步地,所述节点的第三健康度扣分值sorcei3为:
39、sorcei3=sorcei-proc+sorcei-thread+sorcei-co;
40、所述软件子进程的健康度扣分值sorcei-proc为:
41、
42、所述软件子线程的健康度扣分值sorcei-thread为:
43、
44、所述软件子协程的健康度扣分值sorcei-co为:
45、
46、其中,proci为第i个节点的子进程总量,procnum为子进程数量的数量阈值,sorceproc为子进程超过健康阈值的扣分值,threadi为第i个节点的子线程总量,threadnum为子线程数量的数量阈值,sorcethread为子线程超过健康阈值的扣分值,coi为第i个节点的子协程数量,conum为子协程数量的数量阈值,sorceco为子协程超过健康阈值的扣分值。
47、进一步地,所述依据所有所述节点的节点健康状态值计算所述服务端软件的软件健康状态值,包括:
48、基于所述节点对应的负载系数,依据若干个所述节点的节点健康状态值,计算所述服务端软件的软件健康状态值;
49、所述软件健康状态值sorce为:
50、
51、其中,srocei为第i个节点的健康状态值,balancei为第i个节点对应的负载系数。
52、相应地,本发明实施例的第二方面提供了一种服务端软件健康评价装置,包括:
53、信息获取模块,其用于获取服务端软件的若干个分布式节点的节点信息参数;
54、节点计算模块,其用于基于漏斗模型,依据单个所述节点的节点信息参数获取节点健康状态值;
55、状态计算模块,其用于依据所有所述节点的节点健康状态值,获取所述服务端软件的软件健康状态值,对照健康参考量表得到所述服务端软件的软件健康状态。
56、相应地,本发明实施例的第三方面提供了一种电子设备,包括:至少一个处理器;以及与所述至少一个处理器连接的存储器;其中,所述存储器存储有可被所述一个处理器执行的指令,所述指令被所述一个处理器执行,以使所述至少一个处理器执行上述服务端软件健康检测方法。
57、相应地,本发明实施例的第四方面提供了一种计算机可读存储介质,其上存储有计算机指令,该指令被处理器执行时实现上述服务端软件健康检测方法。
58、本发明实施例的上述技术方案具有如下有益的技术效果:
59、1.考虑到分布式环境下的单节点健康计算以及通过资源用量和负载系数来计算不同服务器架构和配置下软件的真实表现,充分解决了不同服务端软件部署框架的服务端软件健康指标的统一化问题以及服务端软件弹性缩扩容导致指标变换的问题,提高了管理人员对服务端软件的故障诊断效率,降低了管理人员对服务端软件的管理成本和维护成本;
60、2.在上述的健康检测方法中,其分数预设权利交还给服务端软件的维护者,其可以灵活地对参数阈值和服务端软件相关的敏感参数进行配置,解决了不同类型的服务端软件的分数计算模型不同的问题,比如密集型运算软件和高吞吐软件的参数偏好不同的问题;
61、3.评价指标不仅有采集时间这一代表着软件运行的宿主机的健康状态,还包含着cpu使用率、内存使用率、网络i/o、磁盘i/o这些通用的性能和健康评价参数,而且关注了其子进程、子线程、子协程目前三种主流的服务端软件架构,对其业务模型匹配度更高。