基于OpenStack云资源监控系统设计与实现

2019-08-08 06:23朱园园董晔
电脑知识与技术 2019年18期
关键词:云计算

朱园园 董晔

摘要:云计算被业界认为是第三次信息化浪潮,越来越多企业开始使用云计算技术,将应用部署到云平台之上。云监控系统作为保证云平台可靠性和可用性的手段,对于提高云平台的服务质量起到至关重要的作用。该文基于开源云计算平台OpenStack,设计并实现了一个云资源监控系统。该系统通过Libvirt中间层提供的各种API,对平台上的虚拟机进行关键资源数据采集和存储,并进行可视化展示。同时当资源使用率超过用户预设监控阈值时,向用户发送告警邮件。

关键词: 云计算; OpenStack; 资源监控; Libvirt

中图分类号:TP393        文獻标识码:A

文章编号:1009-3044(2019)18-0241-02

1 引言

随着科技的不断发展,云计算已经变成了当今最受欢迎的技术之一。云计算技术使得大量软硬件资源整合在一起,组成庞大的资源池,利用虚拟化技术将资源共享给用户按需付费使用,这种做法大大节省了企业采购及后期软硬件维护成本,提高了现有资源的利用率[1]。云监控系统是云计算平台的重要组成部分,一般包含如事件预测、网络分析、调度管理、负载平衡和故障恢复等功能[2]。它可以直观的展示平台中的虚拟机和服务器性能参数,例如:CPU利用率、内存使用率、网口I/O、磁盘利用率等。通过这些参数可以准确地向外界反映出云平台健康状况,对于提高云平台服务质量及运维人员的工作效率发挥着重要的作用[3]。

OpenStack作为当前主流的开源云计算平台之一,具有稳定、良好的可扩展性和可靠性等特点。但OpenStack本身的监控系统(Ceilometer组件)目前功能还不够全面,Ceilometer只关注资源监控数据的采集,忽略监控数据的存储,且当采集大量数据时,Ceilometer性能大幅下降甚至出现服务不可用情况[4]。针对这个问题,需要设计一个基于OpenStack的云资源监控系统,实现监控数据采集、加工、存储等功能。

2 系统需求分析

云监控系统是云平台不可或缺的部分,全面的监控服务使用户和管理员能够快速识别资源使用异常状况、发现系统故障、定位并诊断故障原因,从而合理利用资源,提高系统可靠性,提升服务质量和用户满意度。针对上述目标,云平台资源监控系统至少应具备以下功能:1)资源数据采集功能。监控系统需要能及时准确地采集云平台关键资源数据,这是监控的前提;2)不同资源具有不同特性,采集的原始数据格式也具有多样性,为了方便存储和统一处理,监控系统需要能将采集数据转换为统一格式;3)云平台资源使用情况不断变化,如果资源使用率过高,将会影响云平台的稳定性和可靠性,因此监控系统需要当资源使用情况异常时,及时给出告警,以便运维人员第一时间获知异常状况。

3 系统总体设计

3.1 系统整体架构设计

根据系统需求分析,基于OpenStack的云资源监控系统主要包含三个功能模块:数据采集、数据处理与存储和数据应用。

各个模块主要功能描述如下:

1) 数据采集:该模块主要通过Libvirt API从OpenStack云平台获取监控数据。经分析,对于虚拟机而言,CPU利用率、内存使用率、网口I/O及磁盘利用率均为虚拟机性能重要指标,因此选择这四个指标作为采集对象。

2) 数据处理与存储:该模块主要是对采集的监控数据,进行进一步的处理和存储。从Libvirt获取的原始监控数据十分庞大且各种指标数据格式也不尽相同,这样不利于系统统一处理和存储,因此需要对其进行进一步处理,转换为统一的JSON格式,存储在非关系型数据库mongdb中,以便后续使用。处理后的数据格式如图1所示。

其中UUID是虚拟机标识符名称,Type是采集指标类型,分为CPU利用率、内存使用率、网口I/O、磁盘利用率四种类型。Direction只在Type等于网口I/O时才有效,可选值为rx和tx,分别代表网口接收和发送两个方向。Value是采集指标具体数值。TimeStamp为监控数据采集时间戳[4]。

3) 数据应用:包含监控数据展示和邮件告警功能。系统采取Flask(一种用于Python Web开发的第三方轻量级开源框架)以及bootstrap技术将采集的资源监控数据以图表的形式可视化展现出来,便于用户实时了解云平台运行情况。另外该模块还允许用户预设各类资源监控阀值,如果监控数值超过预定阈值,说明虚拟机的负载过高,此时自动向用户发送告警邮件。

3.2 数据采集工作原理

关键资源数据的采集,关乎整个云资源监控系统数据的来源,是实现云资源监控系统的前提条件。下面针对涉及的四类资源监控指标,分别阐述对应采集方法。

该系统使用Python作为编程语言,利用Libvirt提供的丰富API来获取OpenStack监控资源数据。由于Libvirt API本身是用C语言实现的,因此需要手工安装libvirt-python软件包来实现对libvirt的绑定[5]。

4 系统实现

4.1 实验环境

该系统使用vmware workstation 14 Pro创建3台虚拟机,利用devstack脚本安装分布式OpenStack(Pike版本)实验环境,其中1台虚拟机作为控制节点,2台作为计算节点。

实验环境规划2个网络:VMnet8(NAT模式)和VMnet2(Host-Only模式),前者为公共/管理网络,主要用于OpenStack节点之间管理通信及访问互联网,网段为192.168.104.0/24。后者为内部网络,用于OpenStack虚拟机之间互访,网段为10.1.1.0/24。

4.2 监控数据展示

4.3 告警邮件

当采集的资源监控数值超过用户预设阀值时,云平台会往指定邮箱实时发送告警邮件。以CPU利用率为例,当CPU利用率超过90%时,用户会收到标题为“CPU告警”的邮件。其他监控资源处理方式类似。

5 结论

随着云计算技术不断发展和成熟,云计算生态圈日渐完善成熟,越来越多企业开始将应用迁移和部署到云平台之上。云资源监控系统作为云平台的管理核心,可以有效地监控云平台的运行状况,是保证云平台服务质量的有效方法。

该文基于OpenStack云平台设计并实现了一个资源监控系统,可以实现虚机关键资源:CPU利用率、内存使用率、网口I/O和磁盘利用率数据收集及存储,并提供监控数据实时展示和资源使用异常告警功能。但随着云平台规模扩大和应用种类增多,该系统还有很多需要完善的地方,例如:缺少对物理主机关键资源和云平台关键服务运行状况的监控、异常处理方式目前仅为告警邮件,手段过于单一,有待补充等,这些都有待后续进一步研究和改进。

参考文献:

[1]  武志学.云计算导论-概念 架构与应用[M].北京:人民邮电出版社,2016.

[2]  张棋胜.云计算平台监控系统的研究与应用[D].北京:北京交通大学,2011.

[3]  刘飞宇.OpenStack云平台下的虚拟机监控与控制的研究与实现[D].成都:电子科技大学,2013.

[4]  李浩然.OpenStack虚拟机资源监控关键技术的研究与实现[D].北京:北京邮电大学,2017.

[5]  任永杰,单海涛.KVM虚拟化技术实战与原理解析[M].北京:机械工业出版社,2013.

[6]  梁宇,杨海波,李鸿彬,等.基于OpenStack资源监控系统[J].计算机系统应用,2014,23(4):44-47.

【通联编辑:代影】

猜你喜欢
云计算
谈云计算与信息资源共享管理
基于MapReduce的故障诊断方法
实验云:理论教学与实验教学深度融合的助推器