随着软件技术的快速发展,当前分布式应用的不断发展给人们带来了卜大便利,电子邮件、电子商务、网上银行等己经成为人们日常工作和生活中不可或缺的一部分,而这些应用通常依托云计算平台,部署成分布式软件系统以提供在线服务。然而应用的多样性以及部署环境的动态性使得分布式软件系统时常出现故障,甚至造成卜大经济损失。因此及时检测故障,并准确诊断问题原因,是确保分布式软件系统提供高效和可靠服务的关键
1 统计监测应用于故障检测的挑战和优势分析
1.1 分布式软件系统故障检测技术面临的挑战
在云计算环境下,分布式软件系统的故障检测技术面临的挑战主要体现在以下几个方面:
1.1.1 自动化分析
云计算环境下的分布式软件系统通常由成百上千个节点构成,同时又分为众多层次,面对如此规模卜大的系统,系统管理员无法根据经验人工分析系统所出现的问题。
1.1.2 问题组件检测
分布式软件系统通常由众多组件构成,分布在不同节点,调用各种服务,组件间交互关系复杂、关联度高,难以准确检测引起系统故障的故障组件。
1.1.3 领域知识缺少
租户部署在云计算平台的应用通常对平台提供者和管理者是透明的,这就使得系统运维人员通过设计文档或代码注入获取应用结构,进而建模分析变得困难。
1.1.4 在线检测
许多软件系统的故障经常是在大规模运行过程中表现出来的,而系统运维人员难以在离线环境下重现产品运行中所出现的问题,以跟踪定位问题原因。
1.1.5 环境适应性
执行环境在应用运行过程中会发生动态变化(如外部负载波动、应用在多主机迁移、虚拟机资源动态调整),应用也会随之表现出与环境相应的行为,难以采用离线建立的模型对系统状态进行准确刻画。
1.2 统计监测方法的优势
为了应对以上挑战,近年来,统计监测方法引起了工业界和学术界的关注,被广泛应用在故障检测技术,出现了较多研究成果。统计监测方法是基于在线搜集的监测数据构建概率统计模型,运用模型对系统运行状态进行预测与分析。将统计监测应用于故障检测具有以下优势:
(1)无需领域知识对系统行为和故障特征进行事先刻画,具有较广的适用范围;
(2)实时监测和在线分析系统行为,能够有效监测到难以在测试环境下获取的系统行为;
(3)自动化分析系统状态,能够简化系统管理操作。
2 基于统计监测的分布式软件系统故障检测技术分析
2.1 故障检测模型的建立
基于统计监测的故障检测方法通常分为监测、建模和检测三个阶段。
2.1.1 在监测阶段
利用监测工具搜集各层次的监测数据。
2.1.2 在建模阶段
在系统正常运行情况下,建立系统运行状态的概率统计参考模型。
2.1.3 在检测阶段
将当前运行状态与建立的参考模型进行比较,当监测状态与参考模型偏离则检测为系统故障。
2.2 故障检测技术分析
故障检测方法通常可以分为基于规则和异常检测等两类其分类图见图1所示。
基于规则的方法根据历史故障所表现的现象来定义故障出现时可辨别的特征,而后将观察到的现象与己定义的故障特征进行匹配当匹配成功则检测为故障,发出警报;否则认为系统运行正常。
基于异常检测的方法为目标系统建立模型作为基准,将系统行为与基准进行对比。根据对系统内部结构的了解程度,以及监测分析对象的不同,基于异常检测的方法可以分为黑盒、灰盒和自盒。
2.2.1 黑盒方法
典型的是基于度量分析的方法,不需要了解系统内部结构,通过调用操作系统提供的接口搜集监测数据进行分析。
2.2.2 灰盒方法
典型的是基于日志分析的方法,通过分析日志信息可以了解一部分系统执行路径、
2.2.3 自盒方法
典型的是基于行为分析的方法,通过代码注入等方式搜集各组件行为。
分布式特别是云计算环境对系统的可靠}h}有更高要求,通常采用故障容忍技术。故障容忍可以分为主动和被动副本策略主动策略并行调用不同的副本来处理相同的请求,采用首先返同的响应作为最终结果,从而能够获得较高的性能。而被动策略采用主要服务来处理请求,当其失效时调用另外的可选副本服务。
3 结语
软件系统的故障检测技术成为保障分布式软件系统性能与可靠性的关键之一。本文分析了统计监测应用于故障检测的挑战和优势,并对故障检测的方法进行了分类总结,为此类系统的研究、设计与实现提供了参考借鉴。