360 DoctorStarange:集预测、处理、关联和资源优化于一体的智能(2)
怎样去找到关联项呢?我们根据自相关系数来获得该段时间内发送波动的监控项.一起发生波动的项可能非常多,通过求曲线斜率的方法来获得各个波动项的波动剧烈程度,并按照波动剧烈程度排序.利用均值波动法获得波动持续的时间.在综合考虑波动剧烈程度和持续时间后,我们可以给每个波动项赋予一定的权值,并由此得出正关联和负关联的项. 现实场景中,单纯依靠当前的数据来得到相关联的项可能不太准确,这时候我们就需要一个自学习的关联分析系统,通过老case和人工经验的加入,该模型得到不断地修正和补充,因而会获得比较好的效果. 对于报警系统,我们主要找到正关联系数比较高的监控项,来合并一些报警之后,以最少的报警次数通知给用户.而对于实时报警分析,我们就可以通过输入一个波动项(原因),找到由此原因导致的其他波动的项(结果). 机器资源优化方案面对不同业务的机器使用程度不同的问题,如何在不影响业务的同时,最大化机器资源利用率越来越成为业界比较关注的话题.我们不能使机器使用率过高,同样也不能使机器利用率过低,因此我们提出来一个“机器健康度”的概念,该值会反映出该机器过去一段时间内重要指标的使用情况. 首先,如何选择机器指标?在我们的方案中,我们选择cpu空闲率、内存使用率、网卡流入流量、网卡流出流量和状态连接数作为考量因素.之所以选择这几个指标是因为这几个监控项能够总体反映出机器的负载情况. 我们分别通过阈值的方法为这六个监控项设置上限和下限后,针对于每个监控项我们得到了四个值:历史数据的均值上限、历史数据的均值下限、预测数据的均值上限和预测数据的均值下限. 经过一个公式计算后,我们将得到一个-1到1区间内的一个值,即为健康度.如果该值越接近于-1,则说明机器比较空闲,如果该值越接近于1,表明机器使用率比较高. 下图说明了我们方案实施的具体流程: 健康度的概念毕竟是一个学术的东西,我们如何将此概念应用到实际的场景中呢?下面将介绍我们具体的应用场景:
设置cron任务,比如每隔一周全量跑一次线上的机器,将有问题的机器录入到数据库中. 该数据库可以用于以下方面:
场景二是我们针对于运维人员经常不能了解线上机房机器的运行状况做得一个拓扑图.在该拓扑图里面,运维人员可以更方便知道机器的总体运行状况.而我们可以以上面提到的“机器健康度”来表示每个机器现在的运行状态.如下图是我们一个简单机房的物理拓扑,在图中,白色的机器表示该机器运行良好,红色的机器表示该机器使用率过高,而灰色的机器则表示该机器使用率过低. (编辑:ASP站长网) |