基于流量高峰预警机制的云平台监控系统

2017-04-23 00:22田肖
电子技术与软件工程 2017年5期
关键词:监控系统云计算稳定性

田肖

摘 要 随着云计算的快速发展,全球服务器规模持续扩大,运维难度、成本不断提高。如何降低成本、确保服务的可靠性是所有云服务商所必须考虑的问题。监控系统对于提高云平台的稳定性、提高服务质量、降低云平台的运维成本发挥着非常关键的作用。因此,研究和实现云平台的监控系统具有非常重要的意义。本文在研究当前多种监控系统解决方案的基础上,设计了一种具有流量高峰预警机制的监控系统。

【关键词】云计算 监控系统 稳定性 流量预警

1 引言

目前,云平台监控系统在国内外有很多的开源解决方案,比如:Zenoss、collected、Zabbix、Nagios等。但是,它们都存在不同方面的缺点,无法满足实际生产环境中多样化的需求。对于中小规模的企业来说,他们的业务规模相对较小、需求比较单一、业务扩展的也相缓慢,为了降低开发成本并且迅速地将监控系统投入使用,开源的系统监控解决方案是一个很好的选择。然而,对于很多企业来说,他们的需求变化较大、业务也比较复杂、集群扩展很快,这个时候开源产品就会显得很乏力。针对这些问题,本文设计了一种具有流量高峰预警机制的监控系统。监控系统从功能上来看,主要分为四个模块:数据采集模块、数据转发模块、数据存储模块、报警和预警模块。

2 数据采集模块

数据采集模块是监控系统最基础的模块,它负责监控数据的采集,并且把采集到的数据推送给数据转发组件。在监控系统中,不同公司或者业务对于监控目标的需求存在一些差别,但是大部分监控目标是相同的,比如监控CPU和内存的使用率等。如果默认监控所有的监控目标(比如监听所有的端口,实际上大部分端口并没有开启), 会造成系统资源浪费。如果默认不监控任何目标,则需要运维人员去做大量配置,浪费人力。

为了解决上述问题,本文将监控数据采集目标进行分类,分为:基本监控数据采集目标和特殊监控数据采集目标。基本监控数据采集目标,本系统默认全部采集;特殊监控数据采集目标,则需要运维人员手动配置。这样既节约了系统资源又节省了人力。

3 数据转发模块

数据采集模块和存储模块及报警模块之间,设计了一个数据转发模块。数据转发组件是没有状态的,它不会存储任何数据,而只是起到了一个中间转发的作用。

监控数据由数据采集模块或者用户自定义脚本發送过来后,首先会进行合法性检验,存储到相应的内存队列中,之后会转发给数据存储模块和报警模块。

4 数据存储模块

监控数据的存储是监控系统中非常核心的模块,它对于系统的性能和整体的架构设计具有很大影响。本系统把监控数据存储在RRD(Round Robin Database)中,即节省了空间又提高了数据查询效率。监控系统中,对监控数据的存储方式,主要分为两类:

4.1 细粒度存储

保存数据采集端推送过来的所有数据点。优点是数据保存完整,缺点是存储代价和查询绘图代价过高。

4.2 粗粒度存储

对历史数据进行压缩归档,节省存储空问,提高查询和绘图效率。RRD提供了粗粒度存储的完善解决方案。RRD,是一个环状数据库,适合存储时间序列数据。

5 报警和预警模块

通常来说,在监控系统中有两个主要的关注点,一个是历史数据的存储和绘图;另一个则是定义报警策略,及时发现问题,并且进行报警。目前,大多数监控系统只是对己发生事件进行报警,并没有对潜在的威胁作出预测。本系统不仅能够基于历史数据对己发生的事件进行报警,而且能够对潜在的危险作出预测。基于时间序列预测技术,借助数据挖掘,本系统实现了对服务器流量的预警机制。通过流量预测模型,预测未来短时间内流量情况,如果超过了某个设定的流量阈值,则会发出预警,网络管理员可以提前采取措施,避免意外情况的发生,增强了系统的安全性和稳定性。

报警模块的功能有:

(1)从服务器获取报警策略。

(2)接收数据转发组件转发过来的数据。但是,报警模块并不会存储所有的数据,而是只会存储每个监控项下的最新的10个数据点。之所以这样设计,主要是因为用户在定义报警策略的时候,通常来说只会检查最新的n个数据点,n的数值一般不会大于10。因此,为了节省资源和提高报警判断的性能,本系统只存储最新的10个数据点。

(3)接收到数据后,能够高效率地判断是否达到了阈值产生报警事件。

(4)当触发报警事件后,把这个报警事件写入队列中。

因此,在报警模块中需要对历史数据进行存储(只需要存储最新的几个数据点)。本系统需要对数据存储进行选型,是应该把历史数据存储到外部机器上,还是应该把历史数据存储到本地的内存当中。如果把历史数据存储到报警服务器的本地内存中,那么就会导致报警服务器具有状态,当进行水平扩展时,存在一定的难度。如果把数据存储到外部服务器的内存中,则每次进行报警判断时都需要经过网络获取历史数据点,对报警判断的性能存在很大的影响。基于如下几个原因:首先,监控系统中数据量非常的大,报警判断的效率是至关重要的,它很可能会成为整个监控系统的瓶颈;监控数据是持续不断的发送到报警服务器的,对报警模块添加服务器节点进行水平扩展时,虽然有数据丢失,但是影响也不会很大,历史数据点很快就可以填充上。本系统决定把最新的n条历史监控数据点存储在报警服务器的内存中。

参考文献

[1]沈青,董波,肖德宝.基于服务器集群的云监控系统设计与实现[J].计算机工程与科学,2012,34(10):73-77.

[2]车路,张焕远,夏亚东.基于开源软件的云监控平台设计与实现[J].计算技术与自动化,2015(01):136-140.

[3]Clay R W,Wild N R,Bird D J,eta1.A cloud monitoring system for remote sites[J].Publications of the Astronomical Society of Australia,1 998,15(03):332-335.

[4]ceto G,Botta A,De Donato W,et a1.Cloud monitoring:A survey[J].ComputerNetworks,2013,57(09):2093-2115.

[5]Oetiker T.Rrdtool:Round robin database tool[J].1999.

猜你喜欢
监控系统云计算稳定性
非线性中立型变延迟微分方程的长时间稳定性
半动力系统中闭集的稳定性和极限集映射的连续性
实验云:理论教学与实验教学深度融合的助推器
模糊微分方程的一致稳定性
一类离散非线性切换系统的稳定性