发明内容
针对现有技术存在的不足,本发明提供一种基于数据挖掘的云服务性能预警事件生成方法。
本发明的技术方案是:
一种基于数据挖掘的云服务性能预警事件生成方法,包括如下步骤:
步骤1:监测物理机群数据、虚拟机数据、服务组件数据;
步骤2:针对实时监测的数据利用触发事件库进行触发判断:若当前数据触发约束事件,则执行步骤4,否则执行步骤3;
所述触发事件库中包括约束事件和预警事件:根据SLA生成约束事件;根据历史运营日志数据库生成预警事件;
步骤3:判断当前数据是否触发预警事件:是,则执行步骤4,否则返回步骤1;
步骤4:根据自适应方法库进行云服务性能自优化;
根据历史自优化轨迹数据库建立自适应方法库,自适应方法库中包括资源调整方案决策方法、服务迁移方案决策方法和虚拟机副本增删方案决策方法;
步骤5:反馈学习,更新触发事件库,返回步骤1。
所述步骤1包括以下步骤:
步骤1-1:实时采集物理机群数据、虚拟机数据、服务组件数据;
物理机群数据、虚拟机数据均包括CPU核数、内存大小、带宽、服务组件数据、可用磁盘大小;
服务组件数据包括CPU占用率、内存占用率、并发量、响应时间、I/O设备调用频率;
步骤1-2:预处理:对筛选出的数据中的错误信息、非法信息、冗余信息和噪点信息进行清洗。
所述触发事件库的建立过程如下:
步骤2-1:根据历史运营日志、历史自优化轨迹建立历史运营日志数据库、历史自优化轨迹数据库;
历史运营日志信息包括某时间段某服务组件所占内存大小、负载大小、吞吐量;
历史自优化轨迹是:服务组件的性能下降、自优化方案及其执行效果的历史信息;
步骤2-2:根据历史运营日志数据库和SLA约束生成触发事件库;
步骤2-2-1:根据SLA生成约束事件;
步骤2-2-2:根据历史运营日志数据库生成预警事件;
步骤2-2-3:根据约束事件和预警事件生成触发事件库;
预警事件生成:结合当前组件服务环境的资源量、部署环境及Vlim,生成该环境下该组件的预警事件,并存入触发事件数据库De中。
所述步骤2-2-2根据历史运营日志数据库生成预警事件,按以下步骤进行:
步骤2-2-2-1:预警事件数据定位与采集:
触发约束事件的某时间点Ts的采集数据超过设定阈值且距离前次自优化结束的时间点Te时间间隔ti大于N个监测周期,则时间点Ts为预警事件触发节点;
采集的数据包括物理机群数据、虚拟机数据、服务组件数据;
物理机群数据、虚拟机数据均包括CPU核数、内存大小、带宽、服务组件数据、可用磁盘大小;
服务组件数据包括CPU占用率、内存占用率、并发量、响应时间、I/O设备调用频率;
步骤2-2-2-2:预警事件数据整合:将Ts至Te之间的M各监测周期内采集的数据分别按组件ID分组,随后再将各分组不同监测周期内的数据按资源类型分组,并删去非特征属性的干扰数据;
所述特征属性数据包括内存占用率、内存使用率和组件调用率;
所述删去非特征属性的干扰数据:计算在Ts之后的特征属性值得均值Vn,将各时间段内与均值Vn偏差大于n%的数据作为噪点数据去除;
步骤2-2-2-3:预警事件特征属性阈值提取:
步骤2-2-2-3-1:去除干扰数据后剩余有效数据的均值记为Va,并取Va的r%作为特征属性阈值指标,并标记为As,r为特征属性阈值系数,As=Va*r%;
步骤2-2-2-3-2:计算在Ts之前的若干个大于As且小于Va的最高峰值,计算均值,取该均值的q%作为该组件在此环境下的该资源的最高阈值,记作Vlim,Vlim即所需的预警事件的预警阈值,q为阈值系数。
有益效果:
为了解决预警精度和时效性的问题,本发明从事件触发系统自完善的角度出发,通过建立具有自完善特性的预警事件,将对触发SLA约束事件的环境数据进行挖掘,从而获取服务组件在不同服务环境下对应的承载能力的阈值,将触发事件库的激活条件从服务组件对外的表现层面(例如服务组件的响应时间等)引入到服务组件对服务环境(诸如资源利用率等)的内部因素层面上来,建立以服务环境硬件资源类型为基本粒度的触发事件库,从而达到在服务性能下降至不满足SLA约束之前,提前激活触发事件并启动自适应动作决策的目的,进而提升整个云服务性能自优化过程中的处理故障的效率。由于预警事件的量化粒度比SLA约束事件的量化粒度更小、更贴近云环境中的硬件资源,故其判定的时效性和准确度会有所提高,通过构建具有自完善特性的触发事件库,可以从根本上优化传统触发系统研究中存在的问题。
具体实施方式
下面结合附图对本发明的具体实施方式做详细说明。
一种基于数据挖掘的云服务性能预警事件生成方法,如图6所示,包括如下步骤:
步骤1:监测物理机群数据、虚拟机数据、服务组件数据;
步骤1-1:实时采集物理机群数据、虚拟机数据、服务组件数据;
物理机群数据、虚拟机数据均包括CPU核数、内存大小、带宽、服务组件数据、可用磁盘大小;
服务组件数据包括CPU占用率、内存占用率、并发量、响应时间、I/O设备调用频率;
步骤1-2:预处理:对筛选出的数据中的错误信息、非法信息、冗余信息和噪点信息进行清洗。
步骤2:针对实时监测的数据利用触发事件库进行触发判断:若当前数据触发约束事件,则执行步骤4,否则执行步骤3。
如图1所示,触发事件库中包括约束事件和预警事件:根据SLA生成约束事件;根据历史运营日志数据库生成预警事件;
SLA是云服务QoS体系的重要组成部分,也是保障服务组件QoS的关键协议。根据用户与云服务供应商签订的QoS协议不同,服务组件对应的SLA也有所差异,因此具体到服务组件触发事件库中的SLA约束事件也各不相同。
在云服务环境中,每位用户都将与云服务供应商就其所购买的云服务签署保证的QoS的SLA,用户通过SLA的与云环境中的服务组件形成绑定关系。SLA中严格规定了为不同类型用户提供服务的细节,主要包括路由安全等级、服务周期、服务响应时间,其中服务响应时间是直接影响各用户的体验舒适度的关键指标,本实施方式将服务响应时间作为代表QoS中SLA的关键指标,一般当云服务所在的服务环境受到的负载压力加剧时,服务组件的响应时间也会随之提高,服务组件的QoS也会随之降低。针对不同的服务环境、服务组件群、服务所面向的客户群以及其所绑定的SLA而言,SLA约束事件中响应时间的门限值是不同的,整个服务的QoS所含元素可用如下的四元组表示:
(Customer_Group,Component_Group,Serice_Environment,SLA_Level) (1)
其中,Customer_Group,代表用户群落,根据地域法律规定、消费等级和客户需求将来访客户划分至不同的所属群落。Component_Group,是用户所需的组件群落,即满足用户需求的组件集合。Serice_Environment,代表服务环境等级,是综合评判组件群落所部署的硬件环境后得到的环境资源指标,通常标记为资源充足、资源适中、资源紧缺三种。SLA_Level,代表了用户与云服务商就其所需云服务的QoS所达成的SLA等级。
触发事件库的建立过程如下:
步骤2-1:根据历史运营日志、历史自优化轨迹建立历史运营日志数据库、历史自优化轨迹数据库;
历史运营日志信息包括某时间段某服务组件所占内存大小、负载大小、吞吐量;
历史自优化轨迹是:服务组件的性能下降、自优化方案及其执行效果的历史信息;
步骤2-2:根据历史运营日志数据库和SLA约束生成触发事件库;
步骤2-2-1:根据SLA生成约束事件;
基于QoS的SLA约束事件中一般都选择服务组件响应时间设定为唯一的触发属性,当云服务组件所在的云环境受到某影响导致服务组件的响应时间超出SLA中约束的门限值的时候,SLA约束事件将被触发,进而服务系统的自适应调节机制将会被激活。SLA约束事件通常含有触发主体、触发受体、触发环境和触发事件集四个因素:
(T_Subject,T_Acceptor,T_Environment,T_Condition) (2)
其中,T_Subject表示触发主体,即触发事件判定器。T_Acceptor表示触发受体,即为客户提供服务的服务组件。T_Environment表示触发环境,服务组件所处的部署环境数据信息,由环境监测器提供。T_Condition表示触发事件集,存储于触发事件库。
但这种自适应机制往往在服务性能下降至超出SLA响应时间之后才被触发,具有一定的时滞性;除此之外其由于其触发事件的触发属性过于单一,其预警精度也比较差;另外这种静态的触发事件设计不具备自完善的特性,难以应对当前云服务环境高可伸缩、动态重构的特性。为了解决这些问题,本实施方式还提出具有自完善特性的预警事件。
步骤2-2-2:根据历史运营日志数据库生成预警事件;
预警事件是指对特定服务环境中的特定服务组件的历史运营日志数据进行挖掘而得到的,用于在服务性能下降之前提前启动自适应优化的响应事件,该历史运营日志是在基于原SLA约束事件的约束下生成的。预警事件本身其实就是该组件所对应的约束事件在实际运行环境中隐藏的资源层面上的必要事件组,预警事件生成的实质就是找出影响服务响应时间的具体硬件资源,从而将以响应时间为预判标准的约束事件转化为以该组件资源利用率为预判标准的预警事件,量化粒度从服务表现的细化至服务资源使用情况率上。由于该预警事件是来源于实际运行环境中的统计数据,故和传统的SLA约束事件相比,其具有如下特性:
(1)预判性和准确性;预警事件本身是基于SLA约束事件生成的,其实质是该组件所对应的约束事件在实际运行环境中隐藏的资源层面上的必要事件组,一般情况下预警事件会优先于约束事件被激活,这种特性可以达到在服务性能降低之前开启服务性能自优化的目的,从而提升了预警事件的预判能力。另外,当预警事件被激活时,约束事件将高概率被激活,反之,约束事件被激活时,预警事件的激活条件高概率已被激活,这种高概率性为预警事件的准确性提供了保障。
(2)自完善性,生成预警事件的目的是挖掘特定服务环境中的特定服务组件的历史运营日志数据,从而获取新的有效预警事件,所以只要能持续提供历史运营日志数据,对预警事件的挖掘就不会停止,这解决了触发事件库的自完善问题。
(3)精确度高,预警事件将触发事件库的激活条件从服务组件对外的表现层面引入到服务组件对服务环境(诸如资源和压力等)的内部因素层面上来,从而建立以服务环境硬件资源类型为基本粒度的预警事件系统,与现有基于服务组件响应时间的SLA约束事件相比,量化粒度更为精细,这种多维量化的设计,保证了预警事件比SLA约束事件具有更高的精度。
(4)专一性,该预警事件是根据特定环境中的特定组件的历史运营轨迹挖掘生存的,故此当同一组件在不同环境,或不同组件在相同环境等不同场景下,挖掘生成的预警事件可能并不一致,也就是说,针对特定环境下特定组件挖掘生成的预警事件只能通用于完全相同的服务环境下的同一组件,故其具有专一性。
预警事件由预警事件名、自优化动作目的、预警主体、运营环境、预警属性、预警条件六个部分组成。而预警事件的格式定义为:
(Forewarning_Name,SelfOptimizing_Type,Cid,Environment_Level,Forewarning_Attribute,Forewarning_Condition) (3)
其中,Forewarning_Name,预警事件标识符。SelfOptimizing_Type,自适应优化预警目的,主要含有两个内容:一是在服务性能过低不满足SLA时提升服务性能;二是从降低能耗的角度出发,在满足SLA的前提下降低服务性能,主要集中于提升服务性能的场景中。Cid,组件编号,即预警事件对应的组件主体。Environment_Level,组件所在的服务环境的综合信息标识符,包括了其所在虚拟机环境和物理云集群的环境信息,在定义中其以标识符的简单形式表示,但在后续过程中,其在数据表中以多维数组的形式存在。Forewarning_Attribute,组件在此事件中评测的关键特征属性,比如对计算密集型的组件而言,CPU占用率将作为其预警事件的特征属性,而对于存储密集型组件而言,磁盘空间将作为其预警事件的特征属性,特别要说明的是,在各服务组件的试运营期,其各组件的特征属性均可以通过少量基础测试获取。Forewarning_Condition,预警事件的触发条件,通常为特征资源的预警门限值。
预警事件是基于约束事件而生成的辅助事件,它的主要目的是在约束事件发生前,提前进行服务性能自优化,优化服务环境提升服务性能,从而达到预防约束事件的发生,或加快约束事件被触发后的系统自适应过程的目的。
在没有预警事件的情况下,结合SLA中人工约定的约束事件和实时监测的数据,判定当前环境是否需要优化,判定结果将作为是否开启自优化系统的依据。而当预警事件被添加至触发事件库后,如图2所示,先判定是否触发约束事件,若触发则进行服务性能自优化,若未触发约束事件则判定是否触发预警事件,若触发则进行服务性能自优化,若未触发则不作操作。
预警事件生成主要功能是在对历史运营日志数据的挖掘基础上,根据挖掘出有效信息,生成新的预警事件。在没有预警事件或当前预警事件并不完备的情况下,随着服务负载的增加,服务组件的服务性能也将随之下降,当服务响应时间超出SLA约束时,SLA约束事件将会被触发,从而启动服务组件的性能自适应机制,优化服务性能,这过程中的所有数据将被记录在系统运营日志中。当这部分数据被挖掘出来后,依据这些信息生成该组件对应环境下的预警事件,并将其存放至触发事件库中。
现有的组件服务系统通常分为有调整策略和无调整策略两种。无调整策略的服务性能优化在面临服务压力过大时一般会出现两种情况,一种情况是随着压力增大服务组件发生崩溃现象,另一种情况是是随着负载压力的减缓服务组件自动回归至SLA约束内,本实施方式主要针对有调整策略的组件服务系统。
预警事件的生成基础是SLA约束事件被触发,相同环境下的不同组件的SLA约束事件不同,相同组件在不同环境下的SLA约束事件也不同,而当前环境下具体采用哪一套触发事件集,则需依据当组件部署环境的实际信息去触发事件库中提取。值得注意的是,一般组件部署情况发生较大改变时,当前正在采用的触发事件集中的约束事件一般不做变化,但是预警事件部分通常需要整体重置或替换。
当预警事件被触发后,其自适应过程仍需要一定的时间,在这个过程中,有可能会触发其他预警事件或者约束事件。在本方法中采用同级事件优先覆盖原则,即先发生的事件覆盖后发生的事件,包含两层含义:
(1)在自适应调整中,同一虚拟机不同组件先后触发事件,先处理首次触发事件所启动的自适应决策,忽略该阶段中所有后发生的事件,直至此次自适应过程结束,若其仍有事件被触发,则继续重复上述步骤。
(2)在自适应调整过程中,同一虚拟机的同一组件先后触发事件,先处理首次触发事件所启动的自适应决策,忽略该阶段中所有后发生的事件,直至此次过程结束,若其仍有事件被触发,则继续重复上述步骤。
通常情况下服务组件可以化作计算密集型、存储密集型和网络密集型三种类型,他们分别对CPU、磁盘和网络带宽这三种硬件资源较为敏感。当增加或减少某种服务资源可以明显影响到该组件的服务性能时,将该资源类型作为该组件的特征属性。组件的特征属性可以由开发人员给出,也可以在试运营期间通过基准测试测出,在本实施方式中组件的特征属性存放于特征属性集Ca中。
生成预警事件的流程如图3所示,具体如下:
步骤2-2-2-1:预警事件数据定位与采集:
触发约束事件的某时间点Ts的采集数据超过设定阈值且距离前次自优化结束的时间点Te时间间隔ti大于N个监测周期,则时间点Ts为预警事件触发节点;
采集的数据包括物理机群数据、虚拟机数据、服务组件数据;
物理机群数据、虚拟机数据均包括CPU核数、内存大小、带宽、服务组件数据、可用磁盘大小;
服务组件数据包括CPU占用率、内存占用率、并发量、响应时间、I/O设备调用频率;
预警事件的生成机制是在约束事件被激活时开启的,故此为了保证当前分析数据的有效性,数据采集域的确立是非常关键的,采集域示意图如图4所示。为了保证采集的数据的有效性,规定满足以下条件时,该触发点Ts附近的数据域为有效数据域:当前被触发的Ts与上一Te之间的时间间隔ti应大于N个监测周期。
一般情况下,当前触发节点Ts前段的自适应优化结束后,服务性能应回归至正常工作范围,并提供持续M个监测周期的稳定服务。若M过小,则意味着此阶段的自适应优化的质量不高,致使系统频繁开启自适应优化模块,适当调节参数N,可以保证系统能够顺利采集到高质量自适应优化调整期的数据域。若Ts之前没有开启过自优化过程,则默认为满足该条件。
当前触发节点被判为有效Ts节点后,以其为参考点,提取其附近域的数据信息,信息域的半径视具体组件和其部署环境而定,并存入对应分析表中,在图4中,该阶段的分析表为C_Data_T2。需要注意的是,自适应过程中的数据在本文的后续分析的有效信息量相对较小,故此,tb远小于ta。表C_Data_T2一般包括物理机群、组件所在虚拟机和组件三层通用监测信息,部分监测指标如表1所示。
表1 触发事件生成模型数据采集参数表
步骤2-2-2-2:预警事件数据整合:将Ts至Te之间的M各监测周期内采集的数据C_Data_T2分别按组件ID分组,随后再将各分组不同监测周期内的数据按资源类型分组,并删去非特征属性的干扰数据;
特征属性数据包括内存占用率、内存使用率和组件调用率;
删去非特征属性的干扰数据:计算在Ts之后的特征属性值得均值Vn,将各时间段内与均值Vn偏差大于n%的数据作为噪点数据去除;
预警事件数据整合过程如图5所示,在获取分析数据C_Data_T2后,将各段采集的数据分别按组件ID分组,随后再将各组件该时段内的数据按资源类型分组;随后结合Ca删去C_Data_T2中非特征属性的干扰数据。通用特征属性一般有如下三种内存占用率(CPU_Utilization),内存使用率(MEM_Utilization)和组件调用率(Call_Number),而组件的特征属性通常为其中某一个,其余数据将作为干扰数据被排除。
步骤2-2-2-3:预警事件特征属性阈值提取:
预警事件的触发实质就是特定环境下组件资源与负载性能的映射关系表。若服务组件所处环境相同,则采用后得数据优先覆盖原则,即如果组件服务环境完全相同时,在时间轴上离当前时间越近的数据集所得到的阈值覆盖掉时间轴上离当前时间越远的数据集所得到的阈值。
结合整合后的数据信息,以Ts为参考点,计算出Ts后段的特征属性的触发均值,随后结合相关资源量缩放系数计算出Ts前段的特征属性预警值。
步骤2-2-2-3-1:去除干扰数据后剩余有效数据的均值记为Va,并取Va的r%作为特征属性阈值指标,并标记为As,r为特征属性阈值系数,As=Va*r%;
步骤2-2-2-3-2:计算在Ts之前的若干个大于As且小于Va的最高峰值,计算均值,取该均值的q%作为该组件在此环境下的该资源的最高阈值,记作Vlim,Vlim即所需的预警事件的预警阈值,q为阈值系数。
步骤2-2-3:根据约束事件和预警事件生成触发事件库;
预警事件生成:结合当前组件服务环境的资源量、部署环境及Vlim,生成该环境下该组件的预警事件,并存入触发事件数据库De中。
步骤3:判断当前数据是否触发预警事件:是,则执行步骤4,否则返回步骤1;
步骤4:根据自适应方法库进行云服务性能自优化;
根据历史自优化轨迹数据库建立自适应方法库,自适应方法库中包括资源调整方案决策方法、服务迁移方案决策方法和虚拟机副本增删方案决策方法;
步骤5:利用监测数据反馈学习,更新触发事件库,返回步骤1。
更新组件资源与负载性能的对应关系数据表后,当服务组件的环境被改变时,首先检测服务环境的改变量是否达到修改预警事件的基本要求,若达到,则删除现有预警事件,并以现环境为查询条件,查询各组件的对应数据,随后将该数据转化为对应的预警事件,更新至触发事件库中。在以后的运营中,每当事件被触发,便可以即时更新组件资源与负载性能的对应关系数据表。
当离散的预警事件积累到一定数量时,根据资源分配的最小粒度单位和预警事件中的相关信息,可以将相同预警条件的离散环境点拼接成连续的环境域。从而达到简化触发事件库的目的。