云资源池探针的故障检测方法研究
2018-03-29权鹏宇车文刚余任周志元
权鹏宇 车文刚 余任 周志元
摘要:随着大数据时代的发展,人们越来越重视保存历史数据,通过海量的历史数据挖掘数据潜藏的价值。在云计算与大数据发展的背景下,虚拟化资源产生的大量状态文件、日志信息将为云平台的故障诊断与预测提供了有力地预测与快速定位依据。通过建立探针机制的挖掘虚拟化资源池日志等信息,找出其中潜在的关联信息。本文构建云计算资源池的大数据分析模型,通过利用大数据技术对资源池各管理层日志进行关联性分析,快速对故障和性能瓶颈进行探查,准确给出探查出的每层资源故障路後或性能瓶颈轨迹,以智能化的方式替换随机性和经验性的人工模式?通过注入云计算操作系统的控制台接口和日志、利用SDN技术对网络流量进行采集、通过存储虚拟化控制工具采集存储性能和日志,再结合现有应用性能分析系统API接口开发,研发基于探针技术的资源池故障及性能分析探针系统。通过该模型系统能对不同资源类型的数据和日志进行综合分析,从这些数据中捕获隐患信息和故障发生点的位置信息并予以可视化表示。
关键词:大数据;虚拟化;资源池探针;故障检测
中图分类号:TP391.9文献标识码ADOI:10.3969/j.issn.l003-6970.2017.08.026
本文著錄格式:权鹏宇,车文刚,余任,等云资源池探针的故障检测方法研究[J]软件,2017,38(8):13本141
引言
在云计算与大数据发展的背景下,虚拟化资源产生的大量状态文件、日志信息将为云平台的故障诊断与预测提供了有力地预测与快速定位依据。通过建立探针机制的挖掘虚拟化资源池日志等信息,找出其中潜在的关联信息。
故障诊断的目的是寻找故障发生的原因或故障位置,加快修复过程。故障和失效的关系往往异常的复杂,很难直接描述从故障到失效直接的关系。故障诊断通过检测诊断对象的故障模式,提取故障特征,根据预定的推理原则,评估故障信息,向上层做出提示,以便于故障修复。
云计算环境中,数据量庞大,人工直接进行故障诊断在很大程度上依赖于系统管理员的经验,其可靠性很难保证,所以人工无法应对云资源需求。由于没有参考,诊断错误很难被发现与更正。为了避免人为因素带来的影响与误差,对于故障诊断现多使用一定的模型来进行,如神经网络、模糊逻辑等。使用故障诊断模型可以降低由专家经验等人为因素所带来的偶然性与主观性,提高诊断的精确度。
1.2 探针监测基础信息资源
由于计算机的CPU、内存、网络和磁盘资源的消耗不仅能够反映出机器当前运行的状态,还能帮助判断主机当前是否出现异常,通过建立探针技术方式获取CPU、内存、网络和磁盘资源是整个故障与可靠性。
基于上述原因,本文提出了基于各型号虚拟化产品提供的事件API作二次开发,通过采集事件的分级和告警做故障的判断、日志分析、运行状态判断,可在资源池中物理服务器众多、承载大量虚拟服务器的情况下,快速发现已发生的故障,并提供控制台准确预测和定位故障。
1 系统设计
1.1 系统架构设计
通过建立主动式监测探针,获取云计算操作系统的控制台接口和日志、利用SNMP协议对网络资源信息进行采集、通过存储虚拟化控制工具以及SNMP协议访问存储设备OID号采集存储设备的性能数据通过存储虚拟化控制工具采集存储性能和日志,再结合VMwarev Sphere接口开发数据源探针,实现对资源池内的虚拟资源(计算资源、存储资源、网络资源),以及承载虚拟资源的主机设备、网络设备等对象的信息远程探针。故障监控系统主要由数据采集系统、数据分析系统和数据可视化三个子系统组成。系统总体架构如图1所示:
分析与快速定位的基石。目前关于单点故障检测技术已经很成熟,通过资源监控来监测CPU压力、网络带宽得出当前虚拟机的运行情况。云平台下虚拟化资源池包括计算资源池、网络资源池和存储资源池,通过底层监控系统获得虚拟机CPU、内存、磁盘10等指标。虚拟机网络包括网络ICMP报文、丢包率等。以下罗列了部分计算资源、存储资源、磁盘IO资源、进程资源、网络资源信息参数。
2 探针部署
2.1 数据采集整体架构
通过建立主动式监测探针,获取云计算操作系统的控制台接口和日志、利用SNMP协议对网络流量进行采集、通过存储虚拟化控制工具采集存储性能和日志,再结合现有应用性能分析系统AI>I接口开发数据源探针,实现对资源池内的虚拟资源(计算资源、存储资源、网络资源),以及承载虚拟资源的主机设备、网络设备等对象的信息远程探针。数据采集子系统的架构如图2所示:
数据采集流程如图3所示。
2.2 数据采集策略
传统的数据采集方式通过设置一定的时间间隔,定时的对虚拟机性能指标进行采集。如果设置的数据采集的时间间隔较小,数据采集频率较大。则会严重消耗虚拟机资源。影响用户的正常使用。如果设置的数据采集的时间间隔较大,数据采集的频率较小,单位时间内采集到的虚拟机数据少,也会不能很好的反映出虚拟机的实际运行情况。对此需要采用自适应的方法保证平台的稳定。我们需要根据基于时间轴收集日志系统数据。对整体虚拟化平台分析潜在的关联故障关系。
数据采集器使用自适应数据采集策略对虚拟机的性能指标进行采集。数据采集器使用的数据采集策略如图4所示,包含粗粒度数据采集和细粒度数据采集。在粗粒度的数据采集过程中,设置的数据采集的时间间隔较大,数据采集频率较低,这种模式下对虚拟机的性能影响较少;在细粒度的数据采集过程中,设置的数据采集的时间间隔较小,数据采集的频率较高,这种模式下对虚拟机的性能影响较大,但单位时间内采集的数据较大,虚拟机的实际运行状况的反映更加全面、准确。
2.3 计算资源探针部署
VMwarev Sphere利用虚拟化功能将数据中心转化
为简化的云计算基础架构,使IT组织能够提供灵活可靠的IT服务。VMwarev Sphere虚拟化并汇总多个系统间的基础物理硬件资源,同时为数据中心提供大量虚拟资源。作为云操作系统,VMwarev Sphere可作为无缝动
态操作环境管理大型基础架构(如CPU,存储器河网络),同时还管理复杂的数据中心。本项目从vCenter的数据库中将历史数据直接导出根据从vCenter数据库导出的数据建立拓扑关系图,并用历史数据进行学习,建立故障模型。
2.4 网络资源探针部署
传统交换机的设备与端口数据通过SNMP协议接口采集,当前SNMP开发工具很多,常见的有:SNMP4J、SNVIII++、Winsnmp等。本系统可采用Java实现的SNMP4J。
SNMP4J开源项目采用Java实现,为SNMP编程提供了良好框架,支持SNMPvl、SNMPv2c和SNMPv3版本。SNMP4J既同时提供命令产生和命令响应,封装了SNMP的底层编程接口,含有多个SNMP中重要的协议处理类。而且有多线程、易维护、易使用、可扩展的优势。SNMP数据采集的接口数据信息如图5所示:
3 數据分析
构建云计算业务资源池的大数据分析模型,通过利用大数据技术对资源池各管理层日志进行关联性分析,快速对故障和性能瓶颈进行探查,准确给出探查出的每层资源故障路径或性能瓶颈轨迹,以智能化的方式替换随机性和经验性的人工模式。通过注人云计算操作系统的控制台接口和日志、利用SDN技术对网络流量进行采集、通过存储虚拟化控制工具采集存储性能和日志,再结合现有应用性能分析系统API接口开发,结合现有虚拟化平台中已经部署的监控模块,设计并实现一款基于探针技术和大数据分析技术的资源故障监控系统,在客户操作系统中部署探针程序获取日志数据,通过使用大数据分析技术对日志数据进行分析,建立并训练故障模型,从而对关联故障的故障源进行定位,以及识别出引发故障的行为模式从而提供故障预警功能,并予以可视化表示。
数据分析模块研究资源池各类型探针获得的检测数据并构成障诊断分析模型。采用大数据分析技术对采集的各项指标数据进行分析,构建一个适应多种数据类型分析和预测的算法模型,通过该模型能对不同资源类型的数据和日志进行综合分析,从这些数据中捕获隐患信息和故障发生点的位置信息,通过将这些信息加工处理后以标准方式提供云计算的管理系统或IT服务的管理监控系统进行呈现,及时发现安全隐患和加快故障处繊率和质量。
数据分析模块划分为数据预处理,故障分析,趋势预测三个部分。数据分析流程图如图6所示。
步骤如下:
(1)采集虚拟机各项指标的正常异常和故障数据作为样本。定义为节点在某时刻的状态,其中xit为刻画节点性能指标的第i类变量。刻画节点性能的指标主要包含计算、内存、网络及存储等方面。
(2)进行预处理由于采集的性能指标具有复杂、高维、冗余等特征,所以首先需要进行标准化处理并提取数据集的主要特征。
(3)针对主要特征选择数据分析模式,并利用其它带标签的和不带标签的数据样本训练分类器建立故障诊断模型和预测模型。
(4)进行故障诊断对诊断为故障的数据进行故障定位,对异常数据进行趋势预测。
3.1 数据预处理
由于不同的系统度量值的原始数据范围非常不同,需要对数据进行标准化处理。数据标准化也就是统计数据的指数化。数据标准化处理主要包括数据同趋化处理和无量纲化处理两个方面。数据同趋化处理主要解决不同性质数据问题对不同性质指标直接加总不能正确反映不同作用力的综合结果。数据无量纲化处理主要解决数据的可比性。在此拟采用指数化处理方法。指数化处理以指标的最大值和最小值的差距进行数学计算,其结果介于0到1之间具体计算公式如下。
3.2 故障诊断
故障分析诊断通过分析系统历史运行情况建立故障te型,在故障发生时目纟及时报警并进一步确定最可能发生故障的节点或组件、程序,缩小对于故障发生原因的搜索空间。
为了识别整个故障发生过程中出现的特征,针对采集的系统数据进行建模,构建特征识别器.特征识别器实际上是一个分类器,将日志中体现的特征映射为预设的故障类型.常见的分类器构造方法包括决策树分类法、神经网络、贝叶斯分类法等。基本思路是选择一种学习算法用来确定分类模型,从而拟合样本数据中故障类型和属性集之间的映射关系,这样面对未知故障类型的样本数据时,可以基于此分类模型预测样本的故障类型。
在构建分类器的过程中,需要将数据划分为训练集和检验集,训练集是标识了故障类型的数据用来建模,检验集未标识故障类型,用来检验模型的有效性。有效性可用精确率和召回率进行衡量。
4 故障检测模型设计
4.1 BP神经网络
BP神经网络是一种多层前馈神经网络,由非线性变换单元组成的BP神经网络,不仅结构简单,而且具有良好的非线性映射能力。
利用神经网络的自学习能力,建立故障的征兆与原因之间的映射关系,即神经网络模型,使用神经网络模型在新的数据到来时,可以由故障征兆快速的推理出故障原因。
在建立神经网络模型时需确定隐层节点数量、隐层数目可以采用遗传算法对BP神经网络隐含层进行优化。一个三层的BP网络已能映射或逼近任何有理函数,故可采用含有一个隐层的BP网络。
采用含有标签的节点状态向量训练神经网络6,由学习数据输入向量的长度n确定网络输入层节点数为n;由学习实例输出向量的长度m确定网络输出层的节点数为m;定义各层间的初始连接权重矩阵,第1层连接到第1+1层的连接矩阵为。
4.1.1 神经网络模型训练
采用含有标签的节点状态向量训练神经网络,由学习数据输入向量的长度n确定网络输入层节点数为n;由学习实例输出向量的长度m确定网络输出层的节点数为m;定义各层间的初始连接权重矩阵,第1层连接到第1+1层的连接矩阵为。根据经验公式隐层神经元数量分布在一定范围内。
对几种选取方式进行了测试。经测试隐层节点选取(attribs+classes)/2准确率最高。此外对神经网络的其他各项参数包括激励函数和连接方式均进行了测试和调整。
4.2 决策树算法
决策树是一种简单有效的分类技术,通常用于处理多属性数据的分类问题。可以通过决策树算法建立故障模型分析故障类型。
为了提取故障特征,我们需要使用正常情况下的特征向量与故障发生时间窗口内采集的特征向量作为基本分析单元输入,经训练输出决策树及规则。以此得到能够判别故障类型的模型。
基于逻辑分析的决策树方法最重要的特点是能把复杂决策过程分解为简单决策过程的累加,依此提供易于解释的解决方法。决策树是一个类似于流程图的树结构。把决策树方法引入故障诊断,可以生成故障判别树,获得精练的判别规则,为故障的归类提供有力的决策依据。
4.2.1 决策树算法步骤
Quinlan在1993年提出了ID3算法的改进版C4.5算法。C4.5算法采用信息增益率来代替信息增益作为属性选择的标准,同时还增加了悲观剪枝,连续型属性处理,缺失值属性处理和产生规则等功能。
特征A对训练数据集的信息增益率定义为其信息增益与训练数据集D关于特征A的值的熵之比,其中:
是特征A取值的数算法选择最大的属性,作为分支属性,解决了选取作为分支属性导致的多值属性偏向的问题。
具体算法步骤如下:
输入:训练样本,候选属性的集合为attribute_list
输/5:由输入训练样本产生一棵决策树(1)创建节点N;
(2)如果训练集为空,在返回节点N标记为Failure;
(3)如果训练集中的所有记录都属于同一个类别,则以该类别标记节点N;
(4)如果候选属性为空,则返回N作为叶节
点,标记为训练集中最普通的类;
(5)foreach候选属性attribute_list;
(6)if候选属性是联系的then;
(7)对该属性进行离散化;
(8)选择候选属性attribute_list中具有最高信息增益的属性D;
(9)标记节点N为属性D;
(10)foreach属性D的一致值d;
(11)由节点N长出一个条件为D=d的分支;
(12)设s是训练集中D=d的训练样本的集合;
(13)ifs为空;
(14)加上一个树叶,标记为训练集中最普通
的类;
(15)else加上一个有返回的点。
4.2.2 决策树剪枝
当由此得到一棵完全生长的决策树后,C4.5采用了一种后剪枝方法。该方法可以避免树的高度无节制地增长,防止数据过度拟合,同样也是用训练样本本身来估计剪枝前后的误差,从而决定是否真正进行剪枝10,其实质是为了消除训练产生的集中孤立点和噪声方法中使用的公式如下:
当由此得到一棵完全生长的决策树后,C4.5采用了一种后剪枝方法。该方法可以避免树的高度无节制地增长,防止数据过度拟合,同样也是用训练样本本身来估计剪枝前后的误差,从而决定是否真正进行剪枝,其实质是为了消除训练产生的集中孤立点和噪声方法中使用的公式如下:
通过判断剪枝前后e的大小,从而决定是否需要剪枝。
4.3 关联规则算法
云计算资源池的节点异常模式挖掘对于快速诊断资源池异常和挖掘节点中参数之间的隐藏关系具有重要作用,本文提出了基于改进的Edat关联规则算法处理资源池节点之间的关系,挖掘其中的高位-高位、低位-高位模式,并且与传统Eclat算法进行了比较。通过实验验证了算法的有效性和高效性。未来将通过资源池节点状态信息挖掘异常模式以提前预测节点异常,以及提供节点异常分类、节点定位等服务。
4.3.1 关联规则定义
定义1关联规则是具有X—Y形式的蕴含关系,X和Y在关联规则中分别称之为先导和后继。X—Y表示如果X成立那么Y—定成立,其中X和Y为项目集合。
定义2支持度support(X—Y)表示在事务数据库中包含XuY项目集的事务占全体数据库事务的百
分比,即:support(xuY)=support(x—y)=p(xuY),
其中XuY表示一条事务中同时包含X和Y。
定义3置信度confidence(X—Y)表tk事务数据
库中包含XuY的项目集事务数目占包含X的项目
集事务数目的比重。即:
4.3.2 关联规则定理
定理1非频繁项集的超集一定是非频繁项集。
证明:设表示项目集合,根据定义1、定义,那么假设support(X->Y) 定理2任何繁项集的非空子集也是频繁项集。 证明:设表示项目集合,根据定义1、定义2,,假设即是频繁的。那么对于一个项目集合Z,其中,且中包含的项目数要少于或等于X和Y合并项目数,那么也是频繁的。 4.3.2 模型参数定义 由于各物理设备或虚拟主机运行情况不同,并且不同的物理设备的参数也不相同,所以需要首先确定各个节点状态信息模式评判标准,本文通过统计各个节点状态信息在历史数据中低位运行状态、正常运行状态和高位运行状态比重进行模式划分,实现所有的状态信息转化成可处理数据模型。
定义1 对于云计算环境
表示云计算环境中资源池中所有节点集合。P中节点包括虚拟主机、网络设备、存储服务器等。本文统一用其IP地址作为其唯一标识符。数据集合表示时间戳,表示数据集收集了t个时间戳节点状态信息集合。
定义2,其中表示节点中存在的参数种类,如CPU状态、内存状态、虚拟网卡端口状态等,其中。
定义3定义其中valuei表不低位状态,value2表亦正常状态,value3表示高位状态。
定义4高位-高位模式表示在云计算环境中一个处于高位运行的节点集合会导致另外一个高位运行节点集合的产生,在真实的生产环境中即一个节点的异常会导致另外一个节点的异常,如分布式业务系统,往往一台虚拟主机的异常会导致其他虚拟主机状态异常。这种模式反映了虚拟主机由于内在的关联,一台虚拟主机的异常往往会产生连锁反应,导致其他虚拟主机异常。
定义5低位-高位模式表示在云计算环境中一个处于低位运行的节点集合会导致另外一个高位运行节点集合的产生,在真实的生产环境中,如一台物理主机中存在多台虚拟主机,其中多臺虚拟主机一直处于空闲状态,而一台虚拟主机处于高位运行,此种模式反映了需要将其虚拟主机上的业务系统转移到其他虚拟主机上以减轻虚拟主机运行压力。
5 结论
面向业务应用资源池的故障分析与检测是一个具有重要理论价值和实际应用价值的重点研究课题。随着云计算的发展,虚拟化技术将各种物理资源抽象为逻辑上的资源,隐藏了各种物理上的限制,为在更细粒度上对其进行管理和应用提供了可能性,大量的应用和用户数据都部署在云端,云计算的可靠性面临着巨大的挑战。因此必须从故障预警和快速故障定位两个方面加强资源池运维相关技术研究以提高计算资源池的运行稳定性和承载能力。
本系统利用SNMP协议对网络资源、存储资源进行采集、通过存储虚拟化控制工具采集计算资源性能和日志,再结合现有应用性能分析系统API接口开发,获取系统有用信息。构建云计算资源池的大数据分析模型,通过使用大数据分析技术对日志数据进行分析,建立并训练故障模型,从而对关联故障的故障源进行定位,以及识别出引发故障的行为模式从而提供故障告警功能。由以上分析可见推广探针系统具有良好的可行性和经济性。是以智能化的方式替换随机性和经验性的人工模式的良好方法。