β

基于容量预估的资源回收系统

奇虎360-addops 44 阅读

背景

成本永远是互联网公司不可能绕开话题,如何在保证不影响业务的前提下提高服务器的使用率一直是业界比较关注的问题。

IDC中的机器使用率参差不齐,有使用率比较高的,有使用率比较低的,如果我们能够发现使用率比较低的机器,并且加以回收,就能够在提高机器的使用率的同时,为企业节约出成本。

那如何找出空闲的机器呢?本文通过定量分析该机器监控项的历史数据以及回归预测监控项的未来趋势,并且经过合理的分类算法分析出该机器属于空闲的机器,需要进行回收。下面将详细地进行介绍。

基于容量预估的资源回收系统

传统的资源回收系统有一套自己的流程,每周定期找出空闲的机器,然后发送给用户进行回收。但是现在的回收系统的筛选算法有点简单,而且不具有很强的说服力。

我们在此基础上结合机器学习算法,提出了一种更系统更全面更具说服力地资源评估系统,下面先介绍这套系统的框架图。

alt

该系统分为三部分:容量预估、机器分类以及通知模块。容量预估模块主要负责对机器的主要监控项进行定量分析以及预测,机器分类模块会对机器进行分类:空闲和不空闲,而通知模块负责将空闲机器的结果发送给用户。

容量预估模块

本文对cpu使用率、内存使用率、网卡流量、状态连接数以及磁盘空间使用率进行分析。

alt

定量分析

对上面五个监控项的历史数据进行定量分析,方法如下:

  1. 采用小波分解对原始数据进行降噪;
  2. 求降噪后数据的均值;

预测分析

由于上面五个监控项历史数据的走势不尽相同,有的变化比较平缓,如磁盘空间使用率,有的变化比较剧烈,如cpu使用率、内存,甚至有如网卡流量这样的监控项,变化更剧烈,所以针对不同的变化特征,我们选择不同的模型,下面是我们采用的模型:

监控项 采用模型
磁盘空闲使用率 自回归
cpu使用率 BP神经网络
内存使用率 BP神经网络
状态连接数 lstm
网卡流量 lstm

机器分类模块

资源回收需要区分出哪些机器属于空闲的机器,哪些不是,因此,我们需要一个二分类器,将机器进行分类。通过上面的容量预估模块,就可以获得定量值和预测值,我们通过取二者的均值来作为该监控项的参考值,最后每台机器有五个特征值,那分类器的输入就是这五个特征,输出就是1(不空闲)和-1(空闲)。

接下来我们需要一些样本来提供给模型。产生模型有两种方法:一种是人工标注,一种是用户标注。人工标注就是我们根据特定的规则人工生成一些样本,规则也是根据一些阈值来设定的。用户标注是运维人员进行的手动标注。

有了样本以后,本文先后尝试使用svm、bp ann、决策树三种算法。这三种算法决策树的准确率最高,能够达到95%以上。

alt

我们对线上的机器进行分类以后,能够得到一个空闲机器比例,如果这个比例没有达到用户的要求,我们会及时调整样本库里面的样本,然后再重新进行分类,从而使比例能够达到要求。

通知模块

通知模块不用详细地进行介绍,该模块需要达到两个目的:

  1. 将空闲机器列表发送给用户;
  2. 收集用户的标注信息(用户承认该机器为空闲机器);

本文介绍了新版的资源回收系统,通过线上的使用,能够很大程度减少机器数量,提高资源使用率。

作者:奇虎360-addops
应用运维|运维开发|opsdev|addops|虚拟化|openstack|docker|容器化|k8s|智能运维
原文地址:基于容量预估的资源回收系统, 感谢原作者分享。

发表评论