一种基于集群的故障感知***及其方法
技术领域
本发明涉及故障检测***及方法,尤其涉及运行应用程序的服务器集群故障检测***及方法领域。
背景技术
在当前云计算和大数据的推动下,企业的需求不断发展,其数据中心的服务器数量的也在持续扩充,运行在服务器上的操作***和应用软件中的功能模块数量也在飞速增加,模块之间调用关系的复杂度大大提高。而基于成本的角度考量,单位人员维护的应用服务器数量越来越多,这样使得面向应用级的故障检测技术对于企业变得日益重要和迫切。
在文献Detecting application-level failures in component-basedinternet services.IEEE Trans.on Neural Networks:Special Issue on AdaptiveLearning Systems in Communication Networks,16(5):1027–1041,Sep2005中(作者为:E.Kiciman and A.Fox.),公开了一种为使用应用程度的诸如请求路径等的具体信息,进而检测程序的异常,这不仅似的检测***具有入侵性和非常高的负载,而且在实际生产中也不可行。当前针对于大数据计算、企业云服务等频繁进行I/O操作和数据计算的服务器集群进行故障检测的方法有很多,有些采用与应用无关的***级数据量度,如:文献Fingerprinting the Datacenter:Automated Classification of PerformanceCrises.In EuroSys,Apr2010,作者为:P.Bodik,M.Goldszmidt,A.Fox,D.Woodard,andH.Andersen.,和文献Problem Diagnosis for MapReducebased Cloud ComputingEnvironments.In IEEE/IFIP NOMS,Apr2010,作者为:J.Tan,X.Pan,S.Kavulya,E.Marinelli,R.Gandhi,and P.Narasimhan.Kahuna中公布的方法。
需要同时从所有的***中获取指标数据,否则无法扩展成为大型的***。对于上述存在的问题,在文献Lightweight Black-box Failure Detection for DistributedSystems.CMU-PDL-12-106,Jul2012,作者为:J.Tan,S.Kavulya,R.Gandhi,andP.Narasimhan中,公开了一种轻量级故障检测***,做了很好的改进,采用轻量级非侵入的方式获得***进程级监控数据,算法实现方式简单故而效率很高,当节点增加时,***复杂度成线性增加,但是在运行过程中计算的相关系数均为两两***运行指标量之间而存在局限性,但是在该文献中的检测***运行时,计算所有负载指标相关系数(例如CPU和网卡读写速率、磁盘读写速率等两两之间的皮尔逊相关系数)然后根据最大的相关系数进行判断,不能够完整反映***应用运行情况。不能完全反应***中应用完整的运行情况。
发明内容
本发明所要解决的技术问题在于克服现有故障感知***具有的高复杂度、低效率和平台的高依赖度问题,提出了一种基于集群的故障感知***及其方法。
本发明提出了一种基于集群的故障感知***,其特征在于,包括:多个前端检测模块、一后端服务器模块和一检测通信模板模块;
所述多个前端检测模块,运行于集群中不同的服务器,用于收集和处理与操作***或应用程序相关的前端故障检测数据,并根据所述前端故障检测数据对故障情况进行初次判断,得到前端故障检测信息,并向所述后端服务器模块上传所述前端故障检测信息或所述前端故障检测数据;
所述后端服务器模块,用于根据接收到的所述前端故障检测数据对故障情况进行再次判断得到后端故障检测信息,最终对外汇总输出所述前端故障检测信息和所述后端故障检测信息。
所述检测通信模板模块,用于所述多个前端检测模块和所述后端服务器模块间进行通信的接口标准。
上述基于集群的故障感知***,其特征在于,所述前端故障检测数据,包括:所述前端检测模块收集的进程负载数据、所述前端检测模块计算获取的负载间和进程间的相关系数、负载的特征向量和相关系数的特征向量。
上述基于集群的故障感知***,其特征在于,所述检测通信模板模块还包括:包含配置参数、负载阈值、相关系数阈值、数据域更新、常见故障特征数据和单/多维相关计算方式的检测模板。
上述基于集群的故障感知***,其特征在于,所述前端检测模块还包括:
初始化模块:用于所述前端检测模块向所述后端服务器模块请求所述检测模板,并进行所述前端检测模块的初始化配置和启动;
负载数据采集模块:用于通过操作***给定的应用程序编程接口获取所述进程负载数据;
初次判断模块:用于对获取到的所述进程负载数据进行计算和结果比对,得到所述前端故障检测数据,比对结果进行本地所述常见故障特征数据检索,并上传所述前端故障检测信息或所述前端故障检测数据。
上述基于集群的故障感知***,其特征在于,所述初次判断模块,还包括:
前端计算模块:用于通过获取到的所述进程负载数据,整理为单位时间间隔的矩阵,进而计算生成所述相关系数矩阵,并计算所述负载特征向量和所述相关系数特征向量;
前端结果比对模块:用于通过所述进程负载数据和所述相关系数与所述检测模板中给定的所述负载阈值和相关系数阈值进行比对,并得出比对结果,如果所述比对结果没有超出所述负载阈值或相关系数阈值,则继续完成所述负载数据采集模块;
检索模块:用于如果所述比对结果,超出所述负载阈值或所述相关系数阈值,判定进程存在故障,则检索本地存储的所述常见故障特征数据;
上传信息模块:用于如果所述检索本地所述常见故障特征数据成功,则向所述后端服务器上传匹配检索到的所述前端故障检测信息,如果所述检索失败,则将所述前端检测数据上传到所述后端服务器模块,进行故障的再次判断;
前端故障信息存储模块:用于接收所述后端服务器模块回传的所述后端故障检测信息,并存储添加到本地所述常见故障特征数据中。
上述基于集群的故障感知***,其特征在于,所述后端服务器模块,还包括:
模板下发模块:用于给所述前端检测模块下发所述检测模板;
再次判断模块:用于对所述前端检测模块上传的所述故障检测数据再次进行结果比对,判断故障情况,产生所述后端故障检测信息,并计算所述多个服务器之间的进程的相关系数,汇总所述前端故障检测信息和所述后端故障检测信息,向管理用户进行报警。
上述基于集群的故障感知***,其特征在于,所述再次判断模块,还包括:
后端结果比对模块:用于对所述前端检测模块上传的所述前端故障检测数据进行分类汇总,并将接收到的所述负载特征向量和所述相关系数特征向量与所述历史特征分类数据进行匹配,计算判定是否存在故障及确定故障类型,输出所述后端故障检测信息;
后端多节点计算模块:用于计算所述应用程序在所述多个服务器之间的相同或者有关联进程的所述相关系数;
故障报警模块:汇总所述前端故障检测信息和所述后端故障检测信息,向管理用户进行报警;
故障信息回传模块:用于回传所述后端故障信息给所述前端故障信息存储模块进行本地所述常见故障特征数据存储。
上述基于集群的故障感知***,其特征在于,所述检测通信模板模块,还包括:
初始化模板下发模块:用于在首次运行初始化时从所述后端服务器模块下载所述检测模板;
实时模板更新模块:用于在所述基于集群的故障感知***运行过程中,所述后端服务器模块根据实际要求动态实时向所述前端检测模块同步下发所述检测模板的更新。
本发明还提供一种基于集群的故障感知方法应用于所述基于集群的故障感知***,其特征在于,包括:
前端检测步骤,运行于集群中不同的服务器,用于收集和处理与操作***或指定应用程序相关的前端故障检测数据,并根据所述前端故障检测数据对故障情况进行初次判断,得到前端故障检测信息,并向所述后端服务器模块上传所述前端故障检测信息或所述前端故障检测数据;
后端服务器步骤:用于根据接收到的所述前端故障检测数据对故障情况进行再次判断得到后端故障检测信息,最终对外汇总输出所述前端故障检测信息和所述后端故障检测信息。
检测通信步骤:用于在所述多个前端检测步骤和所述后端服务器步骤间初始化下发和实时更新所述检测模板。
上述基于集群的故障感知方法,其特征在于,所述前端故障检测数据,包括:所述前端检测模块收集的进程负载数据、所述前端检测模块计算获取的负载间和进程间的相关系数、负载的特征向量和相关系数的特征向量。
上述基于集群的故障感知方法,其特征在于,所述检测模板还包括:包含配置参数、负载阈值、相关系数阈值、数据域更新、常见故障特征数据和单/多维相关计算方式。
上述基于集群的故障感知方法,其特征在于,所述前端检测步骤,还包括:
初始化步骤:用于所述前端检测模块向所述后端服务器模块请求所述检测模板,并进行***的初始化配置和启动;
负载数据采集步骤:用于通过操作***给定的应用程序编程接口获取所述进程负载数据;
初次判断步骤:用于对获取到的所述进程负载数据进行计算和结果比对,得到所述前端故障检测数据,比对结果进行本地所述常见故障特征数据检索匹配,并上传所述前端故障检测信息或所述前端故障检测数据。
上述基于集群的故障感知方法,其特征在于,所述初次判断步骤,还包括:
前端计算步骤:用于通过获取到的所述进程负载数据,整理为单位时间间隔的矩阵,进而计算生成所述相关系数矩阵,并计算所述负载特征向量和所述相关系数特征向量;
前端结果比对步骤:用于通过所述进程负载数据和所述相关系数与所述检测模板中给定的所述负载阈值和相关系数阈值进行比对,并得出比对结果,如果所述比对结果没有超出所述负载阈值或相关系数阈值,则继续完成所述负载数据采集模块;
检索步骤:用于如果所述比对结果,超出所述负载阈值或所述相关系数阈值,判定进程存在故障,则检索本地存储的所述常见故障特征数据;
上传信息步骤:用于如果所述检索本地常见故障特征数据成功,则向所述后端服务器上传匹配检索到的所述前端故障检测信息,如果所述检索失败,则将所述前端检测数据上传到所述后端服务器模块,进行故障的再次判断;
前端故障信息存储步骤:用于接收所述后端服务器模块回传的所述后端故障检测信息,并存储添加到本地所述常见故障特征数据中。
上述基于集群的故障感知方法,其特征在于,所后端服务器步骤,还包括:
模板下发步骤:用于给所述前端检测模块下发所述检测模板;
再次判断步骤:用于对所述前端故障检测数据再次进行结果比对,判断故障情况,产生所述后端故障检测信息,并计算所述多个服务器之间的进程的相关系数,汇总所述前端故障检测信息和所述后端故障检测信息,向管理用户进行报警。
上述基于集群的故障感知方法,其特征在于,所述再次判断步骤,还包括:
后端结果比对步骤:用于对所述前端检测模块上传的所述前端故障检测数据进行分类汇总,并将接收到的所述负载特征向量和相关系数特征向量与所述历史特征分类数据进行匹配,计算判定是否存在故障,输出所述后端故障检测信息;
后端多节点计算步骤:用于计算所述应用程序在所述多个服务器之间的相同或者有关联进程的所述相关系数;
故障报警步骤:汇总所述前端故障检测信息和所述后端故障检测信息,向管理用户进行报警;
故障信息回传步骤:用于回传所述后端故障信息给所述前端故障信息存储模块进行本地所述常见故障特征数据存储。
上述基于集群的故障感知方法,其特征在于,所述检测通信步骤,还包括:
初始化模板下发步骤:用于在所述前端检测模块首次运行初始化时从所述后端服务器模块下载所述检测模板;
实时模板更新步骤:用于在所述基于集群的故障感知***运行过程中,所述后端服务器模块根据实际要求而动态实时向所述前端检测模块同步下发所述检测模板的更新。
本发明与现有技术相比,采用黑盒的故障感知检测方式,通过操作***提供的进程负载数据采集接口,收集各种操作***和应用的进程级相关负载的数据信息,整理为基于时间序列的进程负载数据矩阵,然后计算获取这个进程的特征向量,进而判定进程是否存在故障及相应数据。
本发明具有以下有益效果:
1、通过非侵入式的轻量级检测方式,不仅减少了故障检测***在应用运行节点运行过程中的资源开销,而且提高了判断故障的速度;
2、***通过对于检测和计算过的历史故障数据的保存和分类学习,也可以提供给集群故障感知***具有预测的功能。应用程序的历史故障数据具有通用性,当应用程序在其他的数据中心运行情况下,可以直接将已有的历史故障数据放在新数据中心的故障检测***中作为故障判断依据,检测***不必再重新收集和学习。
附图说明
图1为本发明的基于集群的故障感知***结构示意图;
图2为本发明的初次判断模块结构示意图;
图3为本发明的再次判断模块结构示意图;
图4为本发明的基于集群的故障感知方法流程示意图;
图5为本发明基于集群的故障感知方法实施例流程示意图。
其中,附图标记:
1前端检测模块 2后端服务器模块
3检测通信模板模块
11初始化模块 12负载数据采集模块
13初次判断模块 21模板下发模块
22再次判断模块
131前端计算模块 132前端结果比对模块
133检索模块 134上传信息模块
135前端故障信息存储模块
221后端结果比对模块 222后端计算模块
223故障报警模块 224故障信息回传模块
31初始化模板下发模块 32实时模板更新模块
S1~S3、S11~S13、S131~S135、S31~S32:为本发明实施例步骤
具体实施方式
以下结合附图和具体实施例对本发明进行详细描述,但不作为对本发明的限定。
下面结合附图和具体实施方式,对本发明做进一步的说明。
本发明通过在应用运行的操作***中,获得相应的进程的所消耗的内核空间和用户空间的CPU使用率,和网卡和硬盘的读写使用率等多维应用进程指标信息,然后将这些指标量信息通过矩阵进行计算每个应用进程对应时间节点特征向量,即可根据当前进程在实际执行过程中的特征向量基于时间序列的变化情况判断或者与历史故障监控数据进行匹配,然后定位出现故障原因。针对的就是大规模业务集群中,运行在多个服务器(下文中所指的服务器如无特殊说明均包括:物理服务器和虚拟服务器)上面的应用在实际运行过程中,计算方式单一且高效,对于应用软件运行故障进行定位和分析,而且克服了对于平台的依赖性和故障检测复杂滞后的问题,具有跨平台和高效的特点。
本发明提供的一种基于集群的故障感知***,图1为本发明的基于集群的故障感知***结构示意图,如图1所示,***包括:前端检测模块1、后端服务器模块2和检测通信模板模块3。
其中,前端检测模块1运行于集群中不同的服务器上,用于收集和处理与操作***或指定应用程序相关的前端故障检测数据,并根据所述前端故障检测数据对故障情况进行初次判断,得到前端故障检测信息,并向所述后端服务器模块上传所述前端故障检测信息或所述前端故障检测数据;后端服务器模块2用于根据接收到的所述前端故障检测数据对故障情况进行再次判断得到后端故障检测信息,最终对外汇总输出所述前端故障检测信息和所述后端故障检测信息;检测通信模板模块3用于前端检测模块和后端服务器模块间的进行通信的接口标准。
前端检测模块1运行在被检测服务器上,简称前端,后端服务器模块2运行在收集前端检测数据的服务器上,简称后端。本发明中***包含多个前端和一个后端服务器。
前端检测模块1将运行在每个应用的服务器中,负责收集和处理与操作***或指定应用程序的进程相关的监控信息,基于时间序列计算所有监控项的特征向量值,通过特征向量值的变化情况,初始的各项阈值比对情况,向后端服务器模块2进行上传可疑故障数据和报警等处理过程。
前端故障检测数据包括:前端收集的负载数据、前端计算获取的负载间和进程间的相关系数、负载的特征向量和相关系数的特征向量。
后端服务器模块2包含汇总和分析前端检测模块1上传的前端收集的应用程序的故障检测数据,并与集群中的历史故障数据进行匹配,向管理员输出整体的应用集群的运行故障情况;向前端检测模块1下发后端故障检测信息和各项负载阈值更新后的信息。
其中,检测通信模板模块3包括:包含配置参数、负载阈值、相关系数阈值、数据域更新、常见故障特征数据和单/多维相关计算方式的检测模板。
检测通信模板模块3还包括:
初始化模板下发模块31:用于在前端检测模块1首次运行初始化时从后端服务器模块2下载检测模板;
实时模板更新模块32:用于在故障感知***运行过程中,后端服务器模块实时向前端检测模块1下发检测模板的更新。
检测模板是前端和后端间的通讯规范,其中包含:
(1)在检测前端首次运行初始化时可以直接从检测后端下载。
(2)根据实际使用的需要,检测前端在非首次开启时,根据模板向后端发送检测内容,后端根据需要向前端下发确认内容,之后前端开始进行检测操作。
(3)在故障检测***运行过程中出现变更,后端根据模板向前端下发更新(开启、关闭、增加或删除)的操作***或者应用程序的进程监控内容。
检测模板为后端服务器和故障检测前端程序通信和运行的接口标准,这个通信接口标准就是上下文中所提及的检测模板,检测模板中定义了前后端通信的规范和内容。
“配置参数”是指故障检测前端启动所需的必要信息,包括:后端IP地址、服务端口和常见故障特征数据存储文件路径。
“数据域更新”是指模板中规定前端检测的应用的负载指标,包括负载名称(例如CPU使用率、内存使用率等等)、报警阈值、数据处理方式(前端处理或者后端处理)等等。后端服务器将配置好检测模板向前端发送给故障检测前端,前端根据此模型进行初始化启动、运行检测、提交故障等等操作。
“常见故障特征数据”为后端根据故障出现的频率情况,通过检测模板向前端发的常见故障特征数据,方便前端故障检测程序本地快速匹配并向后端上报服务器的故障信息。
“单/多维相关计算方式”指后端指定前端进行相关计算的方式,单维即仅计算某个负载与其他负载之间相关系数,多维指计算多个负载量与其他负载之间的相关系数。
其中,前端检测模块1,还包括:
初始化模块11:用于前端检测模块1向后端服务器模块2请求检测模板,并进行前端检测模块1的初始化配置和启动;
负载数据采集模块12:用于通过操作***给定的应用程序编程接口获取进程负载数据;
初次判断模块13:用于对获取到的进程负载数据进行计算和结果比对,比对结果进行本地常见故障特征数据检索,并上传前端故障检测信息或前端故障检测数据。
图2为本发明的初次判断模块结构示意图,如图2所示,其中,初次判断模块13还包括:
前端计算模块131:用于通过获取到的进程负载数据,整理为单位时间间隔矩阵,进而计算生成相关系数矩阵,并计算负载特征向量和相关系数特征向量;
前端结果比对模块132:用于通过进程负载数据和相关系数与检测模板中给定的负载阈值和相关系数阈值进行比对,并得出比对结果,如果比对结果没有超出负载阈值或关系数阈值,则继续完成负载数据采集模块12;
检索模块133:用于如果比对结果,超出负载阈值或相关系数阈值,判定进程存在故障,则检索本地存储的常见故障特征数据;
上传信息模块134:用于如果检索本地常见故障特征数据成功,则向后端服务器上传匹配检索到的前端故障检测信息,如果检索失败,则将前端检测数据上传到后端服务器模块;
前端故障信息存储模块135:用于接收后端服务器模块回传的后端故障信息,并存储添加到本地常见故障特征数据中。
其中,后端服务器模块2还包括:
模板下发模块21:用于给前端检测模块下发检测模板;
再次判断模块22:用于对前端检测模块上传的故障检测数据再次进行结果比对,判断故障情况,产生后端故障检测信息,并计算多个服务器之间的进程的相关系数,汇总前端故障检测信息和后端故障检测信息,向管理用户进行报警。
图3为本发明的再次判断模块结构示意图,如图3所示,再次判断模块22还包括:
后端结果比对模块221:用于对前端检测模块1上传的前端故障检测数据进行分类汇总,并将接收到的负载特征向量和相关系数特征向量与历史特征分类数据进行匹配,计算判定是否存在故障及确定故障类型,输出后端故障检测信息;
后端多节点计算模块222:用于计算应用程序在多个服务器之间的相同或者有关联进程的相关系数;
故障报警模块223:汇总前端故障检测信息和后端故障检测信息,向管理用户进行报警;
故障信息回传模块224:用于回传后端故障信息给前端故障信息存储模块135进行本地常见故障特征数据存储。
本发明还提供一种基于集群的故障感知方法,如图4所示,该方法包括:前端检测步骤S1、后端服务器步骤S2和检测通信步骤S3;
前端检测步骤S1,用于收集和处理与操作***或指定应用程序相关的前端故障检测数据,并根据前端故障检测数据对故障情况进行初次判断,得到前端故障检测信息,并向后端服务器模块上传前端故障检测信息或前端故障检测数据;
后端服务器步骤S2:用于根据接收到的前端故障检测数据对故障情况进行再次判断得到后端故障检测信息,最终对外汇总输出前端故障检测信息和后端故障检测信息。
检测通信步骤S3:用于在多个前端检测步骤和后端服务器步骤间初始化下发和实时更新检测模板。
图4为本发明的基于集群的故障感知方法流程示意图,图5为本发明基于集群的故障感知方法具体实施例流程示意图,以下结合图4和图5进一步详细说明本发明基于集群的故障感知方法的详细步骤。
其中,前端检测步骤S1,还包括:
初始化步骤S11:用于前端检测模块向后端服务器模块请求检测模板,并进行***的初始化配置和启动;
前端检测模块1首先向后端服务器模块2请求检测模板,并进行***的初始化配置和启动,初始化本地的常见故障特征数据;
负载数据采集步骤S12:用于通过操作***给定的应用程序编程接口获取进程负载数据;
前端通过服务器运行的操作***给定的API(应用程序编程接口),获得检测模板中指定应用进程所使用的用户空间CPU利用率、内核空间CPU利用率、网卡使用率、硬盘读写速率等各项负载指标数据。服务器为Linux操作***可以通过sysstat命令接口获取,而服务器为Windows操作***则可以通过Windows开放的编程接口获取执行进程的负载量,而具体采集数据涉及到程序实现。
在业务应用运行所在的不同操作***中,获得的指标名称和方式可能是不同的,例如在Linux类型操作***中,可以通过sysstat(sar、pidstat、iostat、mpstat等)获得user,system,bread,bwrtn和iowait等这些指定应用进程级负载信息;而在Windows类型的操作***中,可以通过***给定的函数获取指定应用进程的用户空间进程的CPU、内存、硬盘等资源利用率,而此进程对应svchost进程的CPU和其他资源(网卡、硬盘等)的使用率,就是此进程内核空间的资源利用率。
初次判断步骤S13:用于对获取到的进程负载数据进行计算和结果比对,比对结果进行本地故障特征检索匹配,并上传前端故障检测信息或前端监控数据。
其中,初次判断步骤S13,包括:
前端计算步骤S131:用于通过获取到的进程负载数据,整理为单位时间间隔矩阵,进而计算生成相关系数矩阵,并计算负载特征向量和相关系数特征向量;
前端根据向后端请求的模板中定义的单位时间间隔进行负载数据采集,将各项指标数据与其对应的之前若干次的历史指标数据值整理为单位时间段矩阵,然后计算此指标历史数据矩阵的特征向量,矩阵中的数据可以通过操作***API的获得,特征向量可以通过软件计算获得。特征向量应用在软件故障检测领域是有创新性的。并作为历史记录在本节点进行存储;
将采集的各项指标负载数据,通过相关系数算法(皮尔逊、斯皮尔曼等),生成各项指标间的相关数据矩阵,之后可以计算指标相关系数矩阵的特征向量,以进行度量和评估进程执行的状态。
前端结果比对步骤S132:用于通过进程负载数据和相关系数与检测模板中给定的负载阈值和相关系数阈值进行比对,并得出比对结果,如果比对结果没有超出负载阈值或相关系数阈值,则继续完成进程负载数据采集模块;
检索步骤S133:用于如果比对结果,超出负载阈值或相关系数阈值,判定进程存在故障,则检索本地存储的常见故障特征数据;
前端将计算结果和阈值进行比对并与后端通信。
前端将采集的负载数据和计算相关系数矩阵,与检测模板中获得的阈值部分的各项指标进行对比,如果超出阈值规定的范围,首先在初始化步骤S11初始化的常见故障特征数据中进行匹配,如果匹配成功,则直接将故障信息上传到后端服务器中;如果匹配失败,则建立与后端服务器程序网络连接。如果没有出现超出阈值的情况,则不对数据进行输出,继续检测模板规定的监控进程负载使用情况;这里的阈值指的是相关系数的阈值,在前端请求模板后,就获取了后端指定各项指标负载阈值(例如指定应用程序CPU、内存等利用率阈值)和相关系数的阈值(例如应用进程的用户空间CPU与内存利用率之间的相关系数阈值)。
上传信息步骤S134:用于如果检索本地常见故障特征数据成功,则向后端服务器上传匹配检索到的前端故障检测信息,如果检索失败,则将前端检测数据上传到后端服务器模块;
通过建立的网络连接,将前端计算步骤S131获得的指定检测进程基于时间序列节点各项负载、相关数据矩阵和特征向量结果值(或连同模板中定义的前若干个个时间单位采集的结果值)向后端服务器进行发送。
前端故障信息存储步骤S135:用于接收后端服务器模块回传的后端故障信息,并存储添加到本地常见故障特征数据中。
其中,后端服务器步骤S2,还包括:
模板下发步骤S21:用于给前端检测模块下发检测模板;
再次判断步骤S22:用于对前端故障检测数据再次进行结果比对,判断故障情况,产生后端故障检测信息,并计算多个服务器之间的进程的相关系数,汇总前端故障检测信息和后端故障检测信息,向管理用户进行报警。
其中,再次判断步骤S22,还包括:
后端结果比对步骤S221:用于对前端检测模块上传的前端监控数据进行分类汇总,并将接收到的负载特征向量和相关系数特征向量与历史特征分类数据进行匹配,计算判定是否存在故障,输出后端故障检测信息;
后端汇总前端上传的故障感知数据,并根据内容向管理员输出和对前端程序进行运行时常见故障特征数据源进行添加处理。
后端服务器接收来自检测前端上传的指定进程负载矩阵和负载特征向量和相关系数特征向量值数据并进行分类汇总,后端服务器存储并分类前端上传的历史数据,根据上传的数据对前端的应用运行状态进行判断是否存在故障。将各服务器运行的应用程序报警信息向管理用户进行输出;前端具有常规数据上传的功能,但是在实际使用总为了减少带宽和计算开销可以不上传。当采集指定进程的资源负载和相关系数超出给定阈值是,前端程序首先在本机中的常见故障特征数据中进行比对,如果匹配成功,则只上传故障信息,如果匹配失败,则前端必须将指标负载、相关系数矩阵、特征向量等数据向后端服务器上传处理。
后端计算前端的上传数据,并将进程负载矩阵和特征向量的与之前储存的此类进程的历史故障数据进行匹配,计算判定当前数据结果是否存在故障情况,向故障检测前端程序通知故障情况,将新增的常见故障特征数据添加到前端常见故障特征数据源中;这里的阈值分为两种,一种是指标负载的阈值(例如CPU、内存、硬盘等),当这个负载超出阈值时,应用程序就可能存在故障的风险,但不一定出现故障。另一种是相关系数的阈值,这个主要作为判定应用程序故障的依据。
应用集群维度的故障情况是根据在每个节点的的应用运行故障情况进行总体判定的。
后端多节点计算步骤S222:用于计算在多个服务器之间的应用程序的相同或者有关联进程的相关系数;
后端计算各个业务应用功能节点之间相同或者有关联进程的相关系数,确定业务应用在集群维度中多个节点之间的应用进程运行情况。节点之间的关联进程是业务逻辑或后端根据实际使用具体进行定义的,某些业务或者计算需要跨越多个计算节点(物理机或者虚拟机)进行运行,对应这些节点上运行的业务或计算进程之间就是有关联的。相关系数之间的计算方法有很多,例如皮尔逊、斯皮尔曼相关系数算等等,反映进程间的相关联关系的程度。
故障报警步骤S223:汇总前端故障检测信息和后端故障检测信息,向管理用户进行报警;
故障信息回传步骤S224:用于回传后端故障信息给前端故障信息存储模块进行本地常见故障特征数据存储。
其中,检测通信步骤S3,还包括:
初始化模板下发步骤S31:用于在前端检测模块1首次运行初始化时从后端服务器模块2下载检测模板;
实时模板更新步骤S32:用于在故障感知***运行过程中,后端服务器模块2根据实际要求而动态实时向前端检测模块1同步下发检测模板的更新。
当然,本发明还可有其它多种实施例,在不背离本发明精神及其实质的情况下,熟悉本领域的技术人员当可根据本发明做出各种相应的改变和变形,但这些相应的改变和变形都应属于本发明所附的权利要求的保护范围。