● 摘要
云计算通过提出合理的商业模式赋予了分布式计算新的活力。在云计算环境中,计算、存储等资源均被当作一种服务被出售和使用。云计算服务提供商出于商业角度考虑,必须尽可能的提高系统的可靠性以保持其竞争力。因此云计算环境中的可靠性保障一直是云计算相关研究中的关注重点。作为保障分布式环境可靠性的重要手段之一,故障检测技术通过对系统的运行状态进行采集和分析,判断其是否处于正常状态。但该过程中存在诸多挑战。
首先,故障检测系统的数据采集不可避免会对网络引入额外开销。为了尽可能少地影响系统的正常工作负荷,云计算环境一方面要求故障检测系统利用尽量少的系统带宽;可故障检测的需求又需要更低的故障响应延时、更丰富的故障追溯机制。其次,随着云计算环境的规模的不断扩大,监控指标不断增加,故障模型日渐复杂,这对实时处理系统的海量数据的实时处理能力,以及对扩展语义的支持带来的新的问题。再次,由于云计算环境中服务迁移迅速,导致监控指标阈值变化频繁。如何在不断变化的环境中,对监控指标在不同时间段设置合理阈值成为新的挑战。此外,基于事件的故障细化模型也随着云计算环境中事件种类以及事件数量的增加而变得更加复杂。
针对上述问题,本文研究了云计算环境下良性故障检测相关技术,在高效的数据采集、故障检测规则的执行、故障检测及预测规则的细化等方面开展了研究工作。在关键技术研究基础上实现了SkyView监控系统,该系统应用于中国国家网格服务环境和腾讯的云计算系统,实现了网络计算系统和云计算环境的监控。本文的主要贡献如下:
区分关键数据的异常数据采集方法
提出了一种通过区分关键数据与非关键数据,降低监控数据采集量的数据采集方法。在保证同等网络带宽消耗的前提下,降低监控系统的故障响应时间。数据采集的频率一定程度上决定了系统产生故障的速度。采集频率越高,数据到达越频繁,产生故障时,系统生成报警的时间越早。但我们发现,并非所有数据都会以相同的概率产生报警。并据此定义关键数据:相比其他数据更有可能产生报警的数据是关键数据,反之为非关键数据。通过关键数据与非关键数据分离采集,给予二者不同的采集速度,可以保证在同等带宽条件下,降低监控系统的报警响应延时。在实现过程中,我们提出并对比了几种针对关键数据的采集方法,并讨论了在实际环境中存在众多监控规则的情况。
基于算子的可扩展复杂事件处理模型
复杂事件处理技术用于对多个实时数据流进行处理,实时输出满足用户查询的事件组合序列。通过形式化定义事件以及事件流之间的复合关系,定义了算子的概念,将复杂事件处理中的时序约束、谓词约束映射到算子相应的组件,算子作为事件复合的基本单元,能够完善的支持新增语义。同时,本研究提出了一种以算子为基本单元,构建树结构的方法。该方法根据用户查询语义, 将多个算子进行类似树结构的组合。实时数据从树的叶节点流入,查询结果从根节点流出。此外,我们提出了一套定量的优化方案,对算子以及由算子构建的查询规则树结构进行时间消耗评估,并基于此进行优化,得到算子树的最优构建策略。
支持反馈的异常检测
云计算环境中服务迁移频繁,监控指标维度繁多,导致正常阈值范围不断调整。单个异常或者故障可能引发多个维度监控变量超过阈值,产生大量冗余告警信息,增加定位异常根源的难度。针对上述挑战,提出以反馈对阈值动态调整。根据异常类型以及时间对异常告警进行聚合,缓解了同一异常诱发大量监控变量告警的问题。通过异常反馈信息调整阈值的设置,使阈值更快达到预期目标。
故障检测、预测规则的细化方法
云计算环境中,大部分故障并非瞬间产生并产生巨大危害的,而是从一个未能被及时处理的异常逐渐演化而成。故障检测规则的细化过程就是从历史事件中搜索故障相关事件序列的过程,故障细化能够有效协助管理员发现故障根源,预测潜在故障。
但云计算环境中大量噪声、重复事件以及消失事件等会对故障检测过程以及检测规则的细化过程造成干扰,因此本研究首先针对不同特征的干扰事件进行剔除。该研究提出了基于准确率以及召回率的故障检测规则细化方法,并使用复杂事件处理技术作为规则执行引擎对细化过程进行评价。针对一种故障现象可能存在多个诱因的情况,提出了根据故障时间段内事件数量作为其基本特征,对故障时间段进行分类,并在分类内部进行故障检测规则细化。细化后的规则更详细的描述了故障发生的过程,因此可用于故障的预测以及故障根源的追溯。
故障检测系统的实现
基于以上关键技术,实现了SkyView监控系统。介绍了SkyView的数据采集子系统,规则执行子系统,异常检测子系统、规则细化子系统的功能与实现。
相关内容
相关标签