OpenStack云平台下资源监控的研究与实现

OpenStack云平台下资源监控的研究与实现

ID:10335438

大小:1.92 MB

页数:48页

时间:2018-07-06

上传者:文档小小白
OpenStack云平台下资源监控的研究与实现_第1页
OpenStack云平台下资源监控的研究与实现_第2页
OpenStack云平台下资源监控的研究与实现_第3页
OpenStack云平台下资源监控的研究与实现_第4页
OpenStack云平台下资源监控的研究与实现_第5页
资源描述:

《OpenStack云平台下资源监控的研究与实现》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库

中图分类号:TP311单位代码:11414学号:2013215519题目OpenStack云平台下资源监控的研的研究与实现学科专业计算机技术研究方向软件服务专业硕士生马澍指导教师李洪奇教授现场导师侯建全高级工程师入学时间:2013年9月论文完成时间:2016年5月 硕士专业学位论文独创性声明郑重声明:本硕士专业学位论文是作者个人在导师的指导下,独立进行研究工作所取得的成果。除了文中特别加以标注和致谢的地方外,论文中不包含其他个人和集体已经发表或撰写的研究成果,也不包含为获得中国石油大学或者其它单位的学位或证书所使用过的材料。对本研究做出贡献的个人和集体,均已在论文中做了明确的说明并表示了谢意。作者和导师完全意识到本声明产生的法律后果并承担相应责任。、作者签名如合、名:7日期:导师签日期、卟.,:I/〕硕士专业学位论文版权使用授权书本学位论文作者及指导教师完全了解中国石油大学(北京)学位论文版权使用的有关规定,使用方式包括但不限于:学校有权保留并向有关部门和机构送交学位论文的复印件和电子版;允许学位论文被查阅和借阅;学校可以公布学位论文的全部或部分内容,可以采用影印、缩印或扫描等复制手段保存和汇编学位论文;可以将本学位论文的全部或部分内容编入有关数据库进行检索。本学位论文属于保密范围,保密期限i年,解密后适用本授权书。本学位论文作者如需公开出版学位论文的部分或全部内容,必须征得导师书面同意一,且须以中国石油大学(北京)为第署名单位。作者签名:与>十日期:^J导师签名日期:“7-I- 摘要摘要OpenStack可以帮助企业快速构建云平台,向用户提供云服务。但是自身并不完善,OpenStack不支持对物理机性能的监控,用户不能同时有效获得物理机相关信息和虚拟机运行状态。为了保证OpenStack云计算平台中虚拟机和云平台本身的安全稳定运行,本课题研究和实现了OpenStack云平台下的资源监控系统。本文完成了以下工作。(1)在实验室环境中搭建了一个OpenStack私有云平台,为以后的研究提供云环境基础。(2)利用Nagios监控工具对服务器监控插件进行开发,并实现了对服务器CPU利用率、内存使用率、网卡输入输出速率的监控;利用LibvirtAPI开发了虚拟机监控插件,实现了对虚拟机CPU利用率、内存使用率、网卡输入输出速率的监控。(3)设计并实现了监控数据的传输和存储,并利用C#的jpPlot绘图插件实现数据可视化展示。实验环节部署了10台虚拟机进行测试,经过验证,监控数据准确无误。关键词:云计算;OpenStack;虚拟机监控;服务器监控;-II- ABSTRACTResearchandimplementationofresourcemonitoringsystembasedonOpenStackcloudplatformABSTRACTOpenStackcanhelpenterprisestoquicklybuildacloudplatformtoprovideuserswithcloudservices.However,itisnotperfect,OpenStackcannotsupportthemonitoringontheperformanceofthephysicsengineandvirtualmachineanduserscannotobtaintheinformationrelatedtothephysicalmachineinthesametime.InordertoensurethesafeandstableoperationofthevirtualmachineandcloudplatforminOpenStackcloudcomputingplatform,thispaperstudiesandimplementsaresourcemonitoringsystembasedonOpenStackcloudplatform.Thefollowingworkhasbeendoneinthispaper.(1)BuildingaOpenStackprivatecloudplatforminthelabforfutureresearch.(2)TorealizethemonitoringofserverCPUutilization,memoryusage,networkcardinputandoutputratemonitoring,weuseNagiosmonitoringtoolsfordevelopingservermonitoringplugins.TorealizethemonitoringofvirtualmachineCPUutilization,memoryusage,networkcardinputandoutputratemonitoring,weusingLibvirtAPIfordevelopingvirtualmachinemonitoringplugins.(3)Designandimplementationofmonitoringdatatransmissionandstorage,andtheuseofC#jpPlotgraphicsplug-intoachievedatavisualizationdisplay.Deployed10virtualmachinestotestintheexperiment.Themonitoringdataisprovedaccurate.KeyWords:Cloudcomputing;OpenStack;Virtualmachinemonitoring;Servermonitoring-III- 目录目录硕士专业学位论文独创性声明.............................................................................................I硕士专业学位论文版权使用授权书....................................................................................I摘要.................................................................................................................................IIABSTRACT...........................................................................................................................III第1章绪论.........................................................................................................................11.1研究的背景和意义..............................................................................................11.1.1研究背景...................................................................................................11.1.2研究意义...................................................................................................11.2国内外发展现状...................................................................................................21.3课题研究的主要内容..........................................................................................31.4论文的组织结构...................................................................................................3第2章云平台及监控相关技术介绍...............................................................................52.1两种开源云平台介绍..........................................................................................52.1.1CloudStack云平台...................................................................................52.1.2OpenStack云平台....................................................................................62.2虚拟化技术介绍...................................................................................................82.2.1系统虚拟化...............................................................................................92.2.2软件虚拟化.............................................................................................102.3监控技术.............................................................................................................102.3.1物理机监控技术.....................................................................................102.3.2虚拟机监控技术.....................................................................................122.4本章小结.............................................................................................................14第3章需求分析...............................................................................................................153.1OpenStack云平台资源监控系统的结构需求分析.......................................153.2OpenStack云平台资源监控系统的业务需求分析.......................................163.3OpenStack云平台资源监控系统的功能需求分析.......................................173.4本章小结.............................................................................................................18第4章云平台监控系统的设计.....................................................................................194.1系统总体架构设计............................................................................................19-IV- 目录4.2运行流程.............................................................................................................194.3监控系统设计原则............................................................................................204.4本章小结..............................................................................................................21第5章云平台监控系统的实现.....................................................................................225.1云平台部署.........................................................................................................225.1.1系统准备.................................................................................................225.1.2安装部署OpenStack云平台................................................................245.1.3安装部署Nagios....................................................................................265.2监控代理(Agent)的实现.............................................................................265.2.1服务器信息获取.....................................................................................275.2.2虚拟机信息获取.....................................................................................285.3监控系统的实现.................................................................................................305.3.1虚拟机实例监控实现和展示................................................................305.3.2物理服务器监控效果展示....................................................................355.4本章小结.............................................................................................................38第6章总结与展望..........................................................................................................396.1总结......................................................................................................................396.2展望......................................................................................................................40参考文献.........................................................................................................................41致谢................................................................................................................................42-V- 中国石油大学(北京)硕士专业学位论文第1章绪论1.1研究的背景和意义1.1.1研究背景现在,云平台已经被越来越多的公司和企业所使用,云平台运维工作的重点就转移到了如何比较快速、有效的了解整个云平台资源的运行状况,这也就使得了云平台中的资源监控成为运维管理中的重点。OpenStack是一个由基础设施服务商Rackspace公司和美国宇航局共同推出的一个云计算平台,而且把它完全的开源出来了。这样用户就可以通过它来开发属于自己的云计算平台。由于它开源的特性,所有的源代码都可以从网上来下载,因此很多国家的大公司、大厂商都加入进来研究和开发属于自己的定制的私有云或者共有云。由于最近几年OpenStack的快速发展,国内研究OpenStack的公司也越来越多。这对推动OpenStack在中国的发展起到了重要的作用。作为开源的Iaas平台OpenStack如今早已发展到诸于Compute(计算),ObjectStorage(对象存储),Identity(身份认证),Dashboard(仪表盘),BlockStorage(块存储),Network(网络)和ImageService(镜像服务)等组件,功能和结构更加的趋于完善。作为云计算时代最受关注的开源云平台之一,OpenStack获得了来自NASA、Rackspace、HP、Intel、RedHat、Dell、Cisco、Canonical等巨头的支持。截至到2012年8月6日,已有184家企业加入,3386名社区贡献者,社区活跃度超越所有对手,毫无争议的成为最火爆的开源云平台。云监控是OpenStack云平台的重要组成部分,它对云平台中服务器和虚拟机的性能提供可视化的展示,比如CPU使用情况、内存使用情况、磁盘IO情况、网络流量情况等,对各种资源信息进行主动监控,同时可定制各种临界的告警条件,从而大大简化了数据中心海量服务器的运维工作,极大的提升了工作效率。1.1.2研究意义对于OpenStack来说,在整个云运维管理环节中,云平台中各种资源的监控是最为重要的,这也是为以后做出决策提供一个数据基础。在云平台资源监控中,不仅需要对云平台中各个虚拟机实例资源进行监控,包括虚拟机内存使用情况、网络进出口的流量、CPU利用率和磁盘读写速度等,而且还要对OpenStack云平台的运行环境,即物理服务器,进行监控。这是监控环节中必不可少的一部分,-1- 第1章绪论因为只有底层系统稳定、可靠、高效的运行,才能保证用户稳定地使用OpenStack云平台中的虚拟机。因为OpenStack自身没有对一套完整的监控系统,去监控物理服务器和虚拟机实例,所以以此为背景,提出了一种OpenStack云平台下资源监控系统实现的方案。通过研究OpenStack的特点,我们首先了解了云平台中最为重要的虚拟化技术,然后分析了现在关于物理服务器和虚拟机监控的相关方法,并最终确定了解决方案。将这一解决方案部署到OpenStack云平台环境中,通过监控代理周期性的获取监控数据,并提供给用户和运维管理人员一个良好交互的数据展示页面。这样做的好处是,能同时兼顾到虚拟机和服务器的运行情况,使监控内容更加丰富、更加全面,也能帮助运维管理人员提高运维效率。在某一台虚拟机实例或者物理服务器出现故障时,能快速定位到错误发生的位置,以最快的速度解决问题,让OpenStack用户的用户体验得到提高。同时,根据监控系统提供的历史监控数据,也能帮助决策层做出判断,更好的提高OpenStack云平台的利用率。1.2国内外发展现状随着云计算平台的广泛应用,越来越多的企业和个人都在注重云计算平台运行的稳定性,这就需要一款准确、稳定、高效的云平台监控系统的支持。国内外的厂商也根据不同云计算平台的特点,开发了不同的云平台监控软件。现在来介绍几款目前应用比较广泛的云监控软件。阿里云监控(CloudMonitor)作为云服务的监控管理入口,能让用户快速了解各产品实例的状态和性能。云监控从站点监控、云服务监控、自定义监控三个方面来为用户提供服务。通过云监控管理控制台,用户可以看到当前服务的监控项数据图表,清晰了解服务运行情况。并通过设置报警规则,管理监控项状态,及时获取异常信息。云监控目前免费限量为用户提供监控服务。百度云观测是百度旗下的云服务产品,秉承着“网站安全,观测一下”,对中国互联网的整体安全状态的进行观测和评估,让互联网安全不再那么遥不可及。百度云观测针对站长提供了免费的网站观测服务。站长只需三步添加网站,即可获得网站安全监测、网站速度监测、7*24小时网站监测三大监测和报警服务。Monitis成立于2006在美国成立,提供市场上最好的基于云计算的无代理监控产品。目前,Monitis监控平台不仅完成了常规的监控功能,也支持用户自定义功能,并向用户提供资产分析等决策层功能。-2- 中国石油大学(北京)硕士专业学位论文CloudStatus可以为多种云计算平台提供监控服务,比如Azure、GoogleCloudPlatform、亚马逊等,运用范围非常广泛。同时为用户提供了一个非常已操作、交互友好的控制面板,象形的展示数据,并提供每个月的报表,主要记录运行状况和出现的问题。1.3课题研究的主要内容通过上文的对研究背景和研究意义的介绍,参考了相关文献,结合现实中的实际实验条件和云平台资源监控的需求分析,并把监控系统与云平台环境的系统架构相结合。本课题主要是针对OpenStack云计算平台中物理机服务器、虚拟机实例的状态的监控,从而使运维人员最大的利用系统的资源、更加高效的了解系统的运行状态。首先手动搭建OpenStack云平台,由于OpenStack云平台各个组件之间的低耦合性,监控系统前端和监控系统程序都可以安装在一台Linux服务器上,使整个系统一方面作为一个云平台的资源监控系统,另一方面不影响OpenStack云平台的正常功能和正常的工作。在云平台上使用监控系统实现对物理服务器和虚拟机实例的监控,监控内容包括:1.监控虚拟机实例的运行情况,包括磁盘读取速率、磁盘写入速率、CPU利用率、网络入口带宽、网络出口带宽等;2.监控物理服务器的运行情况,包括内存利用率、磁盘使用率、CPU利用率、网络入口带宽、网络出口带宽等。将设计好的监控部署到OpenStack云平台中,构建一个完整OpenStack资源监控系统,并且为运维管理人员提供了一个友好的数据交互方式,可以通过命令行来获取物理服务器和虚拟机实例的相关监控信息,也可以通过绘制的图像获取相关监控信息,这样不仅提高了运维管理效率,同时验证了资源监控功能实现情况,以及系统的稳定性。1.4论文的组织结构本文的论文结构如下面所述:第一章,介绍了云平台中物理服务器和虚拟机实例监控的研究背景和研究意义,并详细介绍了国内和国外关于云平台监控的发展情况。在此基础上提出了本次课题的研究内容。第二章,概述了OpenStack云平的技术架构和云平台中关键的子项目,然后介绍了云平台中最重要的虚拟机化技术,并分别介绍了在保证系统稳定性的前提下,-3- 第1章绪论要达到监控目的、提高运维效率,所使用的物理机服务器的监控方式和虚拟机实例的监控方式,最后做了总结。第三章,主要是对OpenStack云平台资源监控的需求分析。第四章,是对OpenStack云平台资源监控系统的的整体架构进行设计。第五章,介绍了整个OpenStack云平台监控系统的部署以及各个功能模块的实现,最后给出了实际的监控效果图。第六章,分析结论和总结系统的不足。分析了现有已完成系统实现的功能,总结了系统实现成果的优势以及系统功能需要进一步改进的地方,提出对系统将来发展方向的改进建议和期望。-4- 中国石油大学(北京)硕士专业学位论文第2章云平台及监控相关技术介绍2.1两种开源云平台介绍云计算平台发展至今,目前来说,按照云平台应用的层次,云计算平台可以划分为基础架即构服务(IaaS)、平台即服务(PaaS)、软件即服务(SaaS)三个层次,其中最主要的是基础架构服务。IaaS作为云计算平台中最底层的服务,只有在基础架构可靠、安全,才能向上层提供安全、可靠的平台和软件服务。在IaaS层次的开源领域,应用比较广泛的开源云计算平台主要有:OpenStack、Cloudstack、Opennebula、Eucalyptus和Nimbus。下面主要介绍OpenStack云平台和CloudStack云平的技术架构和云平台中关键的子项目,并把两者做比较,以及选择OpenStack云平台的物理服务器和虚拟机实例作为监控目标的原因。2.1.1CloudStack云平台CloudStack是一个开源的具有高可用性及扩展性的云计算平台[1]。支持管理大部分主流的hypervisor,如KVM虚拟机,XenServer,VMware,OracleVM,Xen等。CloudStack可以让用户快速和方便地在现有的架构上建立自己的云服务[2]。CloudStack可以帮助用户更好地协调服务器、存储、网络资源,从而构建一个IaaS平台。如图2.1所示的CloudStack的总体架构,它是采用分层的架构,包括用户端、CloudStackAPI、CloudStack核心引擎以及计算控制器、网络控制器和存储控制器。CloudStack提供的自己自定义的API通过Cloudbridge能够有好的支持AWSAPI[3]。CloudStack没有把网络、计算、存储部分从其核心引擎中分离出来,需要进一步加强其在松耦合上设计[4]。-5- 第2章云平台及监控相关技术介绍图2.1CloudStack的总体架构Fig.2.1CloudStackoverallframwork2.1.2OpenStack云平台OpenStack是美国国家航天局(NASA)和Rackspace公司合作开发的旨在为公有云和私有云提供软件的开源项目。OpenStack是一个IaaS层的软件,其目标在于提供可靠的云部署方案以及良好的可扩展性,从而实现类似于Amazon的云基础框架服务(IaaS)。云计算可以分为私有云和公有云,尽管OpenStack的最终目标是实现一个可以灵活定制的公有云IaaS软件。但是,由于OpenStack的灵活性要定制一个私有云相当容易。正是因为这个原因,OpenStack得到了广泛的应用,除了有Rackspace和NASA,也得到了Dell、Citrix、Cisco、Canonical、惠普、Intel和AMD等公司的大力扶持。底层的虚拟机可以支持KVM、XEN、VirtualBox、Qemu、LXC和VMware等。在应用方向,很多企业如Intel、IBM、新浪等都在做基于OpenStack私有云方面的测试和部署。新浪联合众多合作者推出stacklab,使得对OpenStack感兴趣的人,可以随时使用OpenStack。在开发方面,除了Rackspace和NASA的大力研发之外,Intel、IBM、新浪以及大量的开源爱好者都在OpenStack开源社区提交了大量的补丁(patch),从而推动着OpenStack快速发展。在开源云计算系统里,OpenStack具备的优势如下:(1)模块松耦合。-6- 中国石油大学(北京)硕士专业学位论文与其他开源云计算平台相比,OpenStack模块分明。添加独立功能模块非常简单。有时候,不需要读懂整个OpenStack的代码,只需要了解其接口规范及API使用,就可以轻松地添加一个新的模块。(2)组建配置较为灵活。和其他开源云计算平台一样,OpenStack也需要不同的组件。但是OpenStack的组件安装异常灵活。可以全部都安装在一台物理机服务器上,也可以分散至多个物理机服务器中,甚至可以把所有的节点都安装在虚拟机中。(3)二次开发容易。OpenStack发布的OpenStackAPI是Rest-fullAPI。其他所有组件也是从用这种统一的规范。因此,基于OpenStack做二次开发,较为简单。而其他的开源云计算平台则由于耦合性太强,导致添加功能较为困难。从图2.2可以看出OpenStack云平台最主要包括三个子项目,运算子项目Nova、对象储存子项目Swift和镜像管理子项目Glance。除此之外还包括以下子项目:身分识别子项目Keystone、网通子项目Quantum、区块储存子项目Cinder、和仪表板子项目Horizon。图2.2OpenStack总体结构Fig.2.2OpenStackoverallframwork(1)计算组件(NOVA)-7- 第2章云平台及监控相关技术介绍计算组件(NOVA):主要负责用户、权限管理、数据库交互,最主要的还是虚拟机资源管理。开发人员使用开发云应用程序,而运维人员通过查看或管理基础设置的使用情况。运维管理人员还可直接操作虚拟机,组件支持多种虚拟化平台还支持多种硬件架构。组件还支持内核轻量级LXC虚拟化技术,该技术能再次切分虚拟机器,从而产生出更多的虚拟化环境。(2)磁盘存储系统Glance与Swift有一种简单的虚拟机安装方式:复制Image(虚拟机的磁盘)。这种安装方式的做法是,当安装好一台虚拟机之后,关闭这台虚拟机,保留Image。当需要创建一台新的虚拟机是时候,直接复制Image作为新建虚拟机的Image就可以了。虚拟机Image的传输常常需要占用大量的网络带宽。如果所有的Image的传输都通过NOVA模块来进行,那么NOVA模块的接口的压力会变得相当大。所以,应该考虑把Image的管理独立出来,成为一个独立的Image管理系统,在OpenStack中命名为Glance。无论是用户镜像的的传输以及管理,或者NOVA内部的对镜像的请求,都转向Glance。虚拟机的镜像的管理,则由Glance全权代理了。Glance主要功能是管理镜像。但是Glance只是一个代理,也就是说,Glance本身并不实现存储功能,它只是提供了一系列的接口来调用底层的存储服务。采用这样的设计的主要原因是由于用户在镜像存储方案上,有着各式各样的复杂的需求。把Glance设置成代理就能比较好的解决不用种类用户的不同需求。比如:有的公司并没有自己的存储系统,就可以依靠OpenStack云平台中的Swift组件,Glance后端可以使用Swift存储系统。大型企业一般都会有本公司的存储系统,利用OpenStack,只要把本公司原有的存储系统接在Glance的后端,就成为了OpenStack云计算平台的镜像存储服务了。通过以上两种云计算平台的介绍分析,选择OpenStack作为研究对象平台是因为它开放源代码,各个子项目之间相互独立,可以与其他子项目组合起来部署在同一台服务器上,又能部署在单独的服务器中。还有它的迅速发展、低耦合性,因此是这次课题研究的理想平台。2.2虚拟化技术介绍云计算技术是伴随着虚拟化技术的发展而不断的进步,虚拟化技术的不断完善和进步,也改变了人们对传统资源的使用方式。虚拟化技术从最开始的虚拟操作系统、JAVA虚拟机,到现在已经发展到虚拟CPU、交换机、内存等硬件设备。-8- 中国石油大学(北京)硕士专业学位论文虚拟化技术一方面可以提高运维人员的管理效率,另一方面使服务器的利用率提高,使硬件资源配置更为合理。为了更加深刻的理解OpenStack云平台上虚拟机的管理方式,我们需要了解虚拟机技术,才能根据OpenStack云平的特点部署合理的监控插件。2.2.1系统虚拟化系统虚拟化是常见的用来分离操作系统和底层硬件的的虚拟化技术,它作用在硬件和操作系统之间。它可以让虚拟机本身和运行在虚拟机中的应用程序都不会发现它们所运行的环境与真实的运行环境有所不同。利用系统虚拟化创建的多个虚拟机,它们之间不会相互影响,而且可以重复利用同样的物理资源,使服务器的利用率提高。为了达到每个虚拟机都拥有一套相对独立的虚拟化硬件环境,可以用系统虚拟化技术对CPU、内存、路由器等各种设备进行虚拟化。系统虚拟化一般结构如图2.3所示。图2.3系统虚拟化结构Fig.2.3Systemvirtualizationarchitecture系统虚拟化带来的好处就是,当用户想要运行与当前的操作系统不兼容的应用程序时,可以利用系统虚拟化技术创建对应系统的虚拟机,让应用程序在此虚拟机上运行,不再受当前操作系统的限制。-9- 第2章云平台及监控相关技术介绍2.2.2软件虚拟化目前为止,软件虚拟化技术常见的有高级语言虚拟化和应用虚拟化两种软件虚拟化方式。为了解决一份代码能够在多个平台上执行的问题,提出了高级语言虚拟化。例如,JAVA程序是运行在JAVA虚拟机提供的虚拟环境中的,当JAVA源代码经过编译形成字节码文件后,它能够在不需要做出任何改变的情况下在Linux、Windows等针对每个平台的虚拟机上运行。应用虚拟化技术是为了使应用程序在虚拟环境中独立的运行而给用户提供的此应用程序运行所需要的虚拟化的环境。例如当用户需要某应用程序运行时,可以直接从服务器上获取所需的应用,然后服务器将用户所需的应用发送到用户的客户端,当用户退出时,用户的操作会由虚拟化环境直接发送到服务器端,并且服务器记录用户的相关操作。这样,每次当用户发送请求时,服务器端都会同步应用程序,使得用户的应用程序独立于客户端。通过以上对各种虚拟化技术的分析了解可以知道,要想实现对OpenStack云平台的资源的监控,要利用虚拟化技术在操作系统层和硬件层之间加一个虚拟化层,为运行在物理服务器上的虚拟机提供一个底层的功能,从而使各个虚拟机之间相互独立,并且每个虚拟机上的应用程序都独立的运行。也就是说,通过虚拟化层可以得到与虚拟机相关的状态参数。2.3监控技术在OpenStack云平台部署的过程中,各个子项目可以同时部署在一台服务器中,也可以部署在不同服务器上形成一种分布式的结构。OpenStack云平台中的资源不仅包括各个虚拟机的相关状态参数,同时也包括部署虚拟机的物理服务器的的相关参数,包括CPU、内存、磁盘、网络等资源。下面就分别介绍常用的物理机监控技术和虚拟机监控技术。2.3.1物理机监控技术在物理机服务器监控中,采用Nagios作为监控系统。不论在集中式监控还是分布式监控中,Nagios都能很好的完成数据采集工作。Nagios作为一个当下比较流行的监视系统,能快速的监视系统运行状态和网络信息。在Nagios的监视下,所有被监控的主机或服务暴露在管理者的眼中,当被监控对象出现异常的时候,Nagios的报警机制会以它自己的方式通知管理者。-10- 中国石油大学(北京)硕士专业学位论文Nagios可运行装有C编译器的在Linux平台,同时提供一个WEB界面供使用者查看管理对象的网络状态、系统日志等问题。Nagios可以监控的功能总结下来有以下几点,如表2.1所示:表2.1Nagios功能列表Table2.1Nagiosfunctionlist功能描述监控网络服务SMTP、POP3、HTTP、NNTP、PING等监控主机可用资源CPU利用率、磁盘使用率等并行机制可以完成对服务的高效检测可用来发现主机的运行状态,及时发现非正常分层能力的主机;通过各种方式(邮件、短信等)将故障信息发警告机制送给具体负责的联系人;日志功能多样化的日志功能,更好的为运维服务;冗余监控可以支持并实现对主机的冗余监控;用户可以通过设计插件扩展对本机服务的检测;支持用户自定义的处理程序,有效预防服务或高可扩展性者主机发生故障;多样化的B/S界面,符合最新的发展趋势,便于用户进行操作Nagios必须运行在有C语言编译器机器运行的Linux机上。此外运行机上还必须能够联网,支持TCP/IP协议,这样是为了能够是的远程监测服务能够实现。当然装载机上还必须运行一个支持WEB服务的服务器,以便能够为CGIs程序的运行提供支持。Nagios自身不具有监控主机和服务的功能。之所以能够完成这些,必须借助外部的插件。Nagios通过插件来完成监控、检测功能[5]。Nagios启动后,它能按照设定的周期调用已安装的插件去检测目标服务器,所有返回来的状态信息都进入Nagios建立起来的队列。Nagios按照顺序读取信息,经过一系列的处理,把结果显示在浏览器上。-11- 第2章云平台及监控相关技术介绍Nagios自身拥有很多的插件,用户根据自己的需要安装以后就可以来完成自己的监控目标。Nagios自带的插件名字都有一定的规律,用户可以通过研究修改这些插件来完成自身的需要。在Nagios下,可以通过运行/check_**-h,系统就会返回该插件的使用方法。Nagios返回的状态信息有以下几种,如表2.2所示。表2.2Nagios状态表Table2.2Nagiosstatetable状态代码颜色正常OK绿色警告WARNING黄色严重CRITICAL红色未知错误UNKNOWN深黄色Nagios具有如此的功能,必须通过管理远端服务器对象才能体现它的强大。Nagios系统提供了一个插件NRPE,该插件的主要作用就是完成数据的传递,系统通过周期性的运行NRPE来获得远端服务器返回来的各种状态信息。2.3.2虚拟机监控技术对于虚拟机的监控,目前有两种方式,第一种是把虚拟机当作物理机进行监控。如果采用这种方式,就需要在虚拟机中再次部署用于信息采集的监控插件,这样做的后果就是由于每个虚拟机都安装了信息采集插件,使服务器的开销增大,从而使虚拟机的使用效率降低。第二种方式是通过Libvirt对虚拟机状态进行监控。Libvirt是OpenStack官方文档推荐使用的虚拟机管理工具,下面简单介绍一下Libvirt。Libvirt的提出是为了解决“如何统一管理Xen、KVM之类的Hypervisor”这一问题的。它要达到的目的是:能有一个统一的管理工具来管理各种各样的Hypervisor,并且能够提供统一的API来支持上层应用。为了达到这理想化的目标,Libvirt为多种Hypervisor提供了统一的管理方式。Libvirt是一个软件的集合,包括API库、后台运行程序(Libvirtd)和命令行工具(virsh)。它为使用者提供了虚拟机管理和其他虚拟化设备管理。这些虚拟化设备包括:磁盘、虚拟网络、虚拟路由器、虚拟光驱等等。Libvirt包括的主要功能如表2.3所示[6]。-12- 中国石油大学(北京)硕士专业学位论文表2.3Libvirt功能列表Table2.3Libvirtfunctionlist功能描述以虚拟机为对象,Libvirt提供了定义、删除、启动、关闭、暂停、恢复、虚拟机管理保存、回滚和迁徙等多种多样的功能能够管理多种多样的虚拟外设,比如虚拟磁盘、虚拟网卡、内存、虚拟CPU虚拟设备管理等虚拟机使用的外部设备Libvirt除了对本机的Hypervisor进行管理之外,还提供了远程连接功能。远程控制通过提供的virsh程序或API能够远程连接其他物理机的HypervisorLibvirt对于不同的Hypervisor提供了不用的启动来支持它们[7]:对Xen有Xen的驱动,对QEMU/KVM有QEMU驱动,对VMware有VMware驱动。在Libvirt源代码中,可以很容易找到[8]qemu_driver.c、xen_driver.c、xenapi_driver.c、vmware_driver.c、vbox_driver.c这样的驱动程序源代码文件。Libvirt作为中间适配层,让底层Hypervisor对上层用户空间的管理工具是可以做到完全透明的[9],因为Libvirt屏蔽了底层各种Hypervisor的细节,为上层管理工具提供了一个统一的、较稳定的接口(API)。如果开发者想通过用户空间管理工具统一管理各种不同的Hypervisor,就可以利用Libvirt来实现。它们之间基本的交互框架如图2.4所示。图2.4Libvirt交互框架Fig.2.4Interactionframework-13- 第2章云平台及监控相关技术介绍通过上文对各种虚拟化技术和监控技术的介绍,并结合实验室的实际情况和实际需求,确定本课题的实验环境:本次实验使用的是最新版本Juno的OpenStack,是在VMwareWorkstation10上建立的虚拟机上进行安装部署的,使用的底层操作系统是CentOS7,然后通过PackStack工具实现自动化安装部署。在虚拟化平台部署方面,本次实验使用的是VMwareWorkstation10建立的虚拟机作为宿主机进行安装部署的,因为考虑到主机性能和运算速度等关系,所选用的宿主机的配置信息如下所示:操作系统:CentOS7.0-64最小化安装(username:root,password:root);内存:4GB;硬盘:50GB;网卡设置:NAT和only-host双网卡模式。因为本次实验的开发语言选择的是PHP语言,所以需要再在OpenStack云平台上部署Nagios以及PHP开发环境。2.4本章小结本章主要介绍了OpenStack、CloudStack两种云平台,并对它们进行对比,说明了用OpenStack作为研究平台的原因,然后分析了云计算中最重要的虚拟化技术,阐述了OpenStack云平台实现虚拟化的方法,进而确定了虚拟机监控信息的数据采集方式。最后介绍了物理服务器的监控方式,采用Nagios作为监控系统,并且研究了Libvirt用处采集虚拟机信息的方法。-14- 中国石油大学(北京)硕士专业学位论文第3章需求分析OpenStack云平台由于其设计的健壮性,才能在面对如此数量庞大的虚拟机和需要处理的数据时[10],还能为海量用户提供快速、可靠的服务,这也对云平台的运维管理提出了较高的要求。如果没有高效、稳定的监控系统对虚拟机的状态信息和运行情况进行监控,就不能够知道每个虚拟机是否在正常运行。因此,需要设计一种监控系统,它不仅能高效、稳定的监控虚拟机的运行状态信息,还能监控物理服务器的状态信息,并且还要对OpenStack云平台的正常运行没有影响或者极小的影响,还能对监控数据正确的采集和展示。根据OpenStack的特点,这次的云平台实验室环境搭建过程中,将OpenStack各个子项目都部署到同一台服务器上,既可以作为控制节点,又可以作为计算节点。通过对OpenStack平台的研究分析,其监控信息如表3.1所示。表3.1监控内容Table3.1Thecontentofthemonitoring监控主体监控项名称CPU利用率、内存利用率、网络入口出口速物理机服务器率、磁盘剩余空间CPU利用率、内存利用率、网络入口出口速虚拟机实例率、磁盘读取写入速率下面针对系统结构、系统功能性、业务流程这几个方面对OpenStack云平台中资源监控系统的需求进行详细描述。3.1OpenStack云平台资源监控系统的结构需求分析监控系统是基于云平台,底层利用虚拟化技术进行虚拟机的创建、管理等操作。但是,当云平台运行的环境即物理服务器或者云用户使用的虚拟机出现故障时,需要将这些错误和故障及时通知云平台的运维管理人员,并给运维管理人员一个形象直观的告警,使得运维管理人员快速定位出现故障的物理机服务器或者是云平台中的虚拟机实例,可以快速高效的解决问题,提高用户体验,使云平台运行更加稳定。-15- 第3章需求分析在实验室环境中,OpenStack部署在一台服务器上,采用的监控系统结构框架如图3.1所示。图3.1监控系统结构框架Fig.3.1Monitoringsystemframework从图中可以看出,将整个监控系统分为三个层次,最下面一层是底层数据采集层,它的功能是采集物理服务器和虚拟机实例的监控数据,然后将监控数据传递给中间的控制层。中间的控制层功能是接受监控代理收集的监控数据,然后将监控数据存储到对应的数据库中。最上面一层是功能层,它的功能是对运维管理人员请求做出响应,按运维管理人员需求查到响应数据,然后以多种形式展现给运维管理人员。3.2OpenStack云平台资源监控系统的业务需求分析从运维管理员的角度出发,监控端的业务及请求的结构图如图3.2所示。-16- 中国石油大学(北京)硕士专业学位论文图3.2监控端业务请求结构图Fig.3.2Monitorterminalbusinessrequeststructure由上图分析可知,首先用户或者运维管理人员登录到OpenStack云平台中,通过监控功能端,当监控功能端收到了用户或者管理发出的查看监控数据的请求之后,监控功能端就会调用数据中响应的监控数据,经过必要的数据处理后,返回监控功能端的响应,即把数据通过浏览器或者通过命令行的形式,展示给用户或者运维管理人员。上述过程就是完成了一次查看监控数据的业务请求。3.3OpenStack云平台资源监控系统的功能需求分析资源监控系统中,最为重要的功能就是采集物理服务器和虚拟机实例的状态信息,其中的监控项包括了CPU、内存、磁盘等。具体的监控系统功能性需求通过表3.2说明。通过监控代理周期性采集物理服务器和虚拟机的性能状态信息所获得的数据如表3.2所示。表3.2监控数据表Table3.2Monitoritemdescription监控对象名称采集目标描述单位备注虚拟机和物理机的CPUCPU利用率%服务器、实例CPU使用情况-17- 第3章需求分析续表3.2监控对象名称采集目标描述单位备注主机内存的使用量内存使用率%服务器、实例与内存总量的比值内存未分配内存百分主机内存未分配量%服务器、实例比与内存总量的比值磁盘名称磁盘名称实例磁盘读速率每秒磁盘读字节数Byte/s实例磁盘磁盘写速率每秒磁盘写字节数Byte/s实例磁盘已用空间和剩磁盘剩余空间%服务器余空间百分比网卡输入速率每秒输入的字节Byte/s服务器、实例网络网卡输出速率每秒输出的字节Byte/s服务器、实例3.4本章小结本章从OpenStack云平台的结构、业务、功能性三个方面对监控系统进行了详细的需求分析,最后虚拟机和物理服务器的性能参数需求以表格形式列出。-18- 中国石油大学(北京)硕士专业学位论文第4章云平台监控系统的设计监控系统主要功能是对云平台中的物理资源和虚拟机资源进行监控。下面从系统整体框架、运行流程以及设计原则几方面进行总体架构设计。4.1系统总体架构设计根据需求分析,监控系统的总体架构设计如图4.1所示。图4.1监控系统总体架构设计图Fig.4.1Designoftheoverallframeworkofthemonitoringsystem从图中可以看出,将整个监控系统分为三个层次,最下面一层是底层数据采集层,它的功能是采集物理服务器和虚拟机实例的监控数据,然后将监控数据传递给中间的控制层。中间的控制层功能是接受监控代理收集的监控数据,然后将监控数据存储到对应的数据库中。最上面一层是功能层,它的功能是对运维管理人员请求做出响应,按运维管理人员需求查到响应数据,然后以多种形式展现给运维管理人员。4.2运行流程整个云平台监控系统的运行流程如图4.2所示。-19- 第4章云平台监控系统的设计图4.2监控系统的运行流程图Fig.4.2Monitoringsystemoperationflow1.运维管理人员向云平台监控系统的功能端发起请求,请求查看监控数据;2.云平台监控系统功能端向监控系统的数据库发起请求,从监控数据库中获取所需要的数据;3.监控系统功能端将获取的数据经过处理后返回给用户;4.监控系统中的监控代理周期性的采集物理服务器的资源和虚拟机的相关监控数据,然后将获取的数据传送给监控系统的服务端;5.监控系统的服务端将监控代理获取的监控数据存入数据库。4.3监控系统设计原则在设计OpenStack云平台监控系统的过程中,应该考虑下面的几个因素。(1)低开销。因为OpenStack云平台本身就需要运行很多种服务如用户管理、权限管理、虚拟机资源管理服务等,所以OpenStack云平台监控系统必须对各种资源具有较低的影响[11],监控代理不能影响云平台和虚拟机的正常运行。对于物理服务器监控来说,监控进程要去占用的资源较少,系统开销小;而对于虚拟机监控来说,需要在不影响虚拟机正常运行的情况下采用Libvirt获取监控数据。(2)高可扩展性。由于OpenStack云平台内的物理服务器性能可能随着虚拟机的数量的变化而变化[12],所以这就需要系统系统具有高可扩展性。主要要表现在对监控系统中的监控代理来说,当监控项发生变化时,监控系统的监控代理不需要重新开发,可以直接添加新的监控项即可。(3)形象的数据展示。能将实时监控数据形象、直观地展示给用户,并且能够让用户选择多种视图,将数据友好的展示给用户。-20- 中国石油大学(北京)硕士专业学位论文4.4本章小结本章首先详细介绍了云平台监控系统的总体架构设计,把监控系统分为数据采集层、控制层和功能层三个部分。然后根据数据采集的过程详细描述了整个系统的运行流程。最后,介绍了系统设计的原则,以保证整个云平台的正常运行。-21- 第5章云平台监控系统的实现第5章云平台监控系统的实现5.1云平台部署5.1.1系统准备OpenStack因Open而开放,因组件而灵活,因包容而博大[14]。有计算、网络、对象存储、块存储、身份、镜像服务、门户、测量、部署编排、数据库服务、数据处理、遥测等组件,有的组件可以根据需要选择安装,组网结构也很灵活、多样[15]。实现了支持接入多种主流虚拟机软件:KVM、LXC、QEMU、Hyper-V、VMware、XenServer,也可以自行开发插件接入其他的虚拟化软件[16]。真正应用于生产的OpenStack,其最小化云平台是部署在1台物理机上的,这台服务器暂时分别称为Server[17]。Server承载着Nova、Glance、Swift、Keystone及Horizon(OpenStack的WebUI)等服务[18-21]。而本次实验使用的是最新版本juno的OpenStack,是在VMwareWorkstation10上建立的虚拟机上进行安装部署的,使用的底层操作系统是CentOS7,然后通过PackStack工具实现自动化安装部署。实验使用的是VMwareWorkstation10建立的虚拟机作为宿主机进行安装部署的,如下为宿主机的配置信息[22]:(1)操作系统:CentOS7.0-64最小化安装(username:root,password:root)(2)内存:4GB(3)硬盘:50GB(4)网络:NAT和only-host双网卡1、网络配置虚拟机执行安装的CentOS7系统默认情况下网卡是关闭的,没有网络配置,需要去修改设置网卡信息。(1)CentOS7默认网卡名称是ifcfg-eno16777736需要将其修改为eth0。(2)修改网卡配置:由于物理机使用的是dhcp动态获取ip方式,所以在配置网卡时将其配置成dhcp方式:vi/etc/sysconfig/network-scripts/ifcfg-eno16777736BOOTPROTO=dhcp//使用动态获取ip方式DEFROUTE=yesNAME=eth0//修改网卡名为eth0-22- 中国石油大学(北京)硕士专业学位论文UUID=3a404739-32c5-41f3-9c73-a362528f1287ONBOOT=yes#开启自动启用网络连接(3)修改网络配置之后重启网卡,然后测试一下网络连接:pingwww.baidu.com。因为在部署OpenStack时是在线加载一些服务还有源,所以要保持网络畅通,如图5.1所示。图5.1测试网络Fig.5.1Testnetwork2、设置主机名为openstack通过vi编辑器修改主机名为openstack,同时修改配置文件/vi/etc/hostname,如图5.2所示。图5.2修改主机名配置文件Fig.5.2Modifythehostconfigurationfile至此,CentOS7操作系统搭建配置完毕,下面将介绍OpenStack在CentOS7上进行安装部署的实现。通过ipadd命令,可以看到通过dhcp自动获取ip方式分配到的ip地址为:192.168.112.139,如图5.3所示。-23- 第5章云平台监控系统的实现图5.3宿主机ip地址Fig.5.3ThehostIPaddress5.1.2安装部署OpenStack云平台在上面搭建好的CentOS7操作系统上使用自动化安装部署工具PackStack安装juno版本的OpenStack(使用rdo安装源)[23-25],步骤如下(如下步骤都是在root权限下执行的):(1)安装基本的工具:yuminstallvimbash-completionnet-tools;(2)停止NetworkManager服务再禁止启动,防止resolv.conf被重写:systemctlstopNetworkManager.servicesystemctldisableNetworkManager.service(3)升级系统内核:yumupdate–y;(4)下载安装rdo源:yuminstallhttps://repos.fedorapeople.org/repos/openstack/openstack-juno/rdo-release-juno-1.noarch.rpm(5)下载安装packstack工具:yuminstallopenstack-packstack.noarch;(6)生成应答文件:packstack—gem-answer-file=answer.txt;默认的应答文件需要手动去修改,不创建demo用户,这样可以避免很多误解。此时生成的应答文件在根目录下,通过vi编辑器进行修改:[root@openstack~]#vianswer.txtCONFIG_IRONIC_INSTALL=nCONFIG_HEAT_CLOUDWATCH_INSTALL=yCONFIG_HEAT_CFN_INSTALL=yCONFIG_CINDER_VOLUMES_CREATE=yCONFIG_NEUTRON_FWAAS=yCONFIG_PROVISION_DEMO=n-24- 中国石油大学(北京)硕士专业学位论文(7)运行packstack安装OpenStack:packstack—answer-file=answer.txt因为在线安装部署,可能会受网络或者其他源的问题的影响而导致安装失败,此时,需要重复去执行安装,如出现图5.4显示界面时则说明安装成功。此时整个OpenStack云平台已搭建部署完毕,其中包含如下服务组件[26,27]:计算(Compute:Nova)、对象存储(ObjectStorage:Swift)、镜像服务(ImageService)、身份服务(IdentityService:Keystone)、网络地址管理(Network:Neutron)、块存储(BlockStorage:Cinder)、UI界面(Dashboard:Horizon)、测量(Metering:Ceilometer)、部署编排(Orchestration:Heat)、数据库服务(DatabaseService:Trove)。图5.4OpenStack安装成功显示Fig.5.4OpenStackinstallationsuccessfullydisplayed此时,可以通过UI界面组件Horizon直接访问OpenStack进行可视化操作,通过DashBoard实现虚拟网络拓扑环境的搭建,并创建虚拟云主机实例,此虚拟机便是实验用于监控的虚拟机。-25- 第5章云平台监控系统的实现5.1.3安装部署Nagios在安装Nagios之前先要检查Nagios的基础支持套件:gcc、glibc、glibc-common、gd、gd-devel、xinetd、openssl-devel。并设置防火墙已关闭:iptables:FirewallisnotrunningSELINUX=disabled然后再安装Nagios和Nagios的相关插件,安装过程不是本论文的研究重点,详细过程不再赘述。安装并配置完成后,在通过web浏览器就能进行访问,效果如图5.5所示。图5.5Nagios安装完成图Fig.5.5Ngiosinstallationcompleted5.2监控代理(Agent)的实现物理机和虚拟机监控性能数据的采集是监控的重要组成部分,监控数据的性能指标的采集主要是监控代理完成,它负责物理资源和虚拟机状态信息的采集。监控代理每隔一定周期采集物理机和虚拟机的性能数据,发送给控制端,由控制端将监控数据存入MySql数据库中。监控代理的启动流程:(1)Daemon进程读取配置文件,获取采集监控数据的插件信息,进行插件注册;(2)周期性调用各个监控数据釆集插件进行数据釆集;(3)Daemon将数据传送到控制端。程序的执行流程如5.6图所示。-26- 中国石油大学(北京)硕士专业学位论文图5.6监控代理执行流程Fig.5.6Agentexecutionflow5.2.1服务器信息获取服务器监控数据的性能的获取是通过Nagios监控工具,Nagios自身不具有监控主机和服务的功能。之所以能够完成这些,必须借助外部的插件。Nagios通过插件来完成监控、检测功能。在安装好Nagios相关软件后,通过配置文件对需要监控的信息进行修改。以服务器CPU利用率为例,首先在在配置文件中添加如图5.7所示的内容,然后对响应的监控插件进行开发。图5.7定义监控服务Fig.5.7Definemonitorservice-27- 第5章云平台监控系统的实现从配置文件中可以看出,需要重新定义主机的名字和监控服务器的描述。其中,check_server_cpu就是已经开发编译好的监控插件,用来获取服务器CPU的利用率。在插件中,不仅要获取监控数据,还要对监控返回的信息进程处理,把文字、符号等没用信息,关键流程如下:(1)打开/nagios/stat文件。if((fh=fopen(“/nagios/stat”,“r”))=null){charerrbuf[1024];ERROR(“cpuplugin:fopen(/nagios/stat)failed:%s”,sstrerror(erron,errbuf,sizeof(errbuf)));return(-1);}(2)进行关键信息获取。while(fgets(buf,1024,fh)!=null){if(strncmp(buf,”cpu”,3))continue;if((buf[3]<’0’)||(buf[3]>’9’))continue;numfields=strsplit(buf,fields,9);if(numfields<5)continue;}(3)完成信息提取,关闭文件。fclose(fh);5.2.2虚拟机信息获取虚拟机监控性能数据的获取可以通过LibvirtAPI调用来实现。Libvirt是一个能够对虚拟机、虚拟网络和虚拟存储进行管理的开源的应用程序接口、守护进程和管理工具。它提供了一个守护进程完成管理工作,同时提供了一套供用户或其他工具对各种不同形式的虚拟机进行管理。在这里,由于OpenStack云平台采用-28- 中国石油大学(北京)硕士专业学位论文Libvirt来对各个虚拟机进行管理,所以我们通过Libvirt来获取各个虚拟机的监控状态信息数据。通过研究,调用LibvirtAPI可以获得虚拟机监控性能数据。首先,需要打开一个与KVM(虚拟机管理器)的连接(conn),其次,获得虚拟机实例的domain,然后,调用相应的函数来获取虚拟机监控性能数据,最后,需要关闭连接。由于虚拟机各项监控性能指标的获取方法相似,只是获取信息时调用的Libvirt不同,下面以虚拟机CPU利用率监控性能数据的获取为例进行说明。(1)通过virConnetOpenReadOnly(constchar*name)函数建立一个连接,在该连接上可以使用一些查询的功能,但是不能使用创建、修改等功能。if(conn==NULL){conn=virConnetOpenReadOnly(conn_string);if(conn==NULL){c_complain(LOG_ERR,&conn_complain,”libvirtplugin:Unabletoconnet:”“virConnectOpenReadOnlyfaild.”);return-1;}}(2)利用根据域的值到virDomainLookupByID(virConnetPtrconn,intid)根据域的id值到conn这个连接上去查找相应的域,获得域相关的信息。Dom=virDomainLookupByID(conn,domids[i]);(3)调用LibvirtAPI获取虚拟机CPU相关信息。status=virDomainGetInfo(domains[i],*info);cpu_submit(info.cpuTime,domains[i],"virt_cpu_total");vinfo=malloc(info.nrVirtCpu*sizeof(vinfo[0]));status=virDomainGetVcpus(domains[i],vinfo,info.nrVirtCpu);(4)关闭与虚拟机管理器的连接。if(conn!=NULL)virConnectClose(conn);conn=NULL;return-1;-29- 第5章云平台监控系统的实现5.3监控系统的实现在实验中,利用cirros镜像创建了10个虚拟机实例,主机名称是instance-01到instance-10,并开启全部虚拟机实例。虚拟机实例列表如图5.8所示。图5.8定义监控服务Fig.5.8Definemonitorservice5.3.1虚拟机实例监控实现和展示5.3.1.1获取监控数据通过Nova计算模块创建的虚拟机实例instance-01详细信息:云主机名称:instance-01云主机ID:50161650-f7d2-4e1d-b4e3-95b141500401本次主要获取虚拟机实例的监控数据包括:check_instance_cpu(CPU利用率);check_instance_mem_use(以MB计内存的大小);check_instance_traffic_in(流入虚拟机网络接口的字节数目);check_instance_traffic_out(流出虚拟机网络接口的字节数目)。1、获取check_instance_cpu监控数据并保存至本地(1)数据的获取-30- 中国石油大学(北京)硕士专业学位论文通过调用监控插件程序check_instance_cpu.pl,获取虚拟机实例的CPU数据:sample-list-mcheck_instance_cpu.pl-qresource_id=云主机ID。(2)数据的保存通过执行脚本将获取的数据保存至本地的check_instance_cpu文件,脚本设置:#!/bin/bashsource/root//keystonerc_adminlist–mcheck_instance_cpu–qresource_id=云主机ID>check_instance_cpu.txt编译执行脚本(chmodu+xcheck_instance_cpu.pl./cpu_utl.pl)之后即可在根目录下看到生成的txt文件。2、获取其他需要的监控数据并保存至本地与上面获取check_instance_cpu监控数据并保存至本地一样,通过同样的方式将check_instance_mem_use(内存利用率)、check_instance_traffic_in(流入虚拟机网络接口的字节数目)check_instance_traffic_out(流出虚拟机网络接口的字节数目)的监控数据进行保存5.3.1.2存储监控数据将上面获取的监控数据写入MySql数据库openstack-data的对应表里面。本实验是通过check_history_back.php将监控数据写入数据库的,并在里面设置监控代理运行周期为20分钟(即每20分钟获取一次监控数据),下面以虚拟机实例CPU监控信息为例,介绍check_instance_cpu.txt写入数据库的方法,其他的数据也通过此方法写入数据库,具体实现如下:1、编辑check_history_back.php文件(1)首先将check_instance_cpu.txt文件的第一条数据读出存入output数组里output=array_slice(file('./check_instance_cpu.txt'),3,1);//读取文件的第四行(2)通过分离函数explode,第四行的字符串以|为标志,分段,并把每一段存到data数组里data=explode("|",$output[0]);(3)提取source_name,volumes和time三个值存入数据库表check_instance_cpu中$sql="insertintocheck_instance_cpu(name,output,time)values('$data[1]','$data2','$data[6]')";$res=mysql_query($sql,$conn);//sql语句传送-31- 第5章云平台监控系统的实现2、编译运行check_history_back.php文件通过CLI编译执行check_history_back.php文件之后,文件的第一条数据将存入数据库表check_instance_cpu里面,利用MySql数据管理工具Navicat,可以查看数据库里的新增的监控信息,check_instance_cpu表里新增一条监控信息,部分监控数据如下图5.9所示。图5.9check_instance_cpu表Fig.5.9check_instance_cputable5.3.1.3数据可视化展示数据可视化展示通过jpPlot绘图插件实现。jpPlot是一个jQuery的绘图插件,jqPlot能够产生很多漂亮的线图和条形图。它有如下的详细功能:有多种图标样式可供选择;可以自定义日期轴线;可设置旋转轴文字;自动计算趋势线;工具提示和高亮数据点;默认最优设置,非常易于使用等。下面以check_instance_cpu为例进行设计分析其关键实现:(1)接通启动数据库之后,通过MySqlCommand的ExecuteReader()方法构造DataReader对象,用于读取数据:MySqlDataReadermyreader=mycommand.ExecuteReader();(2)定义一个ArrayList的Volumes数组,将数据存入数组下:volumes.Add(myreader.GetString(0));(3)将Volumes的值循环输出保存至字符串变量ret2:ret2="[[";for(inti=0;i;varplot1=$.jqplot('chart1',arr);});虚拟机实例instance-01的CPU利用率监控结果如图5.10所示。图5.10虚拟机CPU利用率可视化展示Fig.5.10VirtualmachineCPUutilizationvisualizationdisplay可以根据下拉列表选择需要查询的监控项,然后点击“查询”按钮查看监控曲线图。虚拟机内存使用率监控结果如图5.11所示。-33- 第5章云平台监控系统的实现图5.11虚拟机内存使用率可视化展示Fig.5.11Virtualmachinememoryusagevisualizationdisplay虚拟机网卡输入速率监控结果如图5.12所示。图5.12虚拟机网卡输入速率可视化展示Fig.5.12Virtualmachinenetworkincomingratevisualizationdisplay虚拟机网卡输出速率监控结果如图5.13所示。-34- 中国石油大学(北京)硕士专业学位论文图5.13虚拟机网卡输入速率可视化展示Fig.5.13Virtualmachinenetworkoutcomingratevisualizationdisplay5.3.2物理服务器监控效果展示服务器监控可视化效果图如下所示,分别是CPU利用率、网卡进口、出口流量、内存使用率。服务器的CPU利用率监控结果如图5.14所示。-35- 第5章云平台监控系统的实现图5.14服务器CPU可视化展示Fig.5.14ServerCPUvisualizationdisplay虚拟机网卡输入速率监控结果如图5.15所示。图5.15服务器网卡输入速率可视化展示Fig.5.15Servernetworkincomingratevisualizationdisplay-36- 中国石油大学(北京)硕士专业学位论文服务器网卡输出速率监控结果如图5.16所示。图5.16服务器网卡输出速率可视化展示Fig.5.16Servernetworkincomingratevisualizationdisplay服务器的内存利用率监控结果如图5.17所示。图5.17虚拟机内存使用率可视化展示Fig.5.17Servermemoryusagevisualizationdisplay-37- 第5章云平台监控系统的实现5.4本章小结本章主要介绍了监控系统的实现。在明确了系统的整体架构和设计原则之后,在服务器上部署了OpenStack云平台以及Nagios监控工具。比较详细的介绍了利用Libvirt实现对虚拟机性能信息监控的全过程,包括获取监控数据和存储监控数据。最后以曲线图的形式对监控数据进行展示。-38- 中国石油大学(北京)硕士专业学位论文第6章总结与展望6.1总结通过对OpenStack云平台开放代码的研究,了解了其整体架构和每个组件的关系,并通过对比分析和结合国内外的研究状况,研究和实现了云平台中资源的监控系统,满足了实验室的需要。本文主要研究了OpenStack云平台下物理服务器和虚拟机实例的监控。首先对比分析了OpenStack、CloudStack两个个主流云计算平台,并说明选择OpenStack作为实验云平台的原因。然后分析了云计算中最重要的虚拟化技术,通过对比,阐述了OpenStack云平台实现虚拟化的方法,进而确定了虚拟机监控信息的数据采集方式。最后介绍了物理服务器的监控方式,采用Nagios作为监控系统,并且研究了Libvirt用处采集虚拟机信息的方法。本文的研究工作主要如下:(1)对两种云计算平台的进行了介绍和比较,研究了它们结构特点;然后分析了虚拟化技术,根据虚拟化技术实现的层次,分别介绍了系统虚拟化和软件虚拟化两种虚拟化方式。然后对监控技术做了研究,确定了物理服务器和虚拟机实例的各自的监控方式。(2)介绍了OpenStack的总体架构,包括各个子项目及其相互之间的服务关系,然后对OpenStack云平台中资源监控的需求做了详细的分析。分别从结构、业务和功能三个方面详细的做了分析。(3)OpenStack云平台的搭建及部署实现。首先对底层操作系统进行修改配置,然后安装部署OpenStack云平台(包括Nova、Swift、Glance等服务),通过OpenStack的Horizon服务实现可视化搭建虚拟网络拓扑环境,从用户申请到虚拟云主机实例的创建等一系列配置部署工作。接着安装部署了Nagios,并用自己开发的监控代理通过Nagios获取物理服务器的监控数据。(4)设计和实现了监控数据的存储,通过perl文件将获取的cpu、内存、网络、磁盘的监控数据写入新建的MySql数据库openstack_data,然后实现对物理机虚拟机的定时监控,监控数据的更新,以及通过绘图插件jpPlot将监控数据可视化展示出来。-39- 第6章总结与展望6.2展望通过本文对OpenStack云平台的研究和分析,并对物理机服务器和虚拟机实例的监控进行了需求分析并完成设计和实现工作。在云平台监控系统的开发过程中,发现了几点需要在今后的工作中需要改进和进一步研究的问题。(1)虚拟机实例的监控只是实现了对监控数据的查询与展示对应性能的参数,没有实现对虚拟机监控信息进行控制,希望能够实现对数据进行评估,设置性能瓶颈报警机制。(2)没有完成全部云平台监控系统页面展示的开发,目前只能通过曲线图来获取物理服务器和虚拟机实例的相关信息。(3)监控数据展示效果单一。目前,监控到的数据只是通过jpPlot插件绘制出来,以后的工作中也加入表格和筛选功能,让用户有更多的选择。(4)目前该云平台资源监控系统只能对资源进行监控,还没有完成对虚拟机实例的控制的开发,比如创建虚拟机实例、开启、关闭和删除等操作。-40- 中国石油大学(北京)硕士学位论文参考文献[1]薛洪尧.T公司云计算技术发展战略研究:(硕士学位论文).哈尔滨:哈尔滨工业大学.2012.[2]杜晖.虚拟化技术在中海油服的应用.中国科技信息.2009,(24):79-81.[3]沈汉标.基于网络的数字视频远程监控系统关键技术的研究:(硕士学位论文).杭州:浙江工业大学.2006.[4]焦术进.云计算中虚拟机动态迁移技术的研究:(硕士学位论文).太原:太原理工大学.2013.[5]VMwarevirtualizationtechnology.http://www.vmware.com.2008.[6]AlpernB,AuerbachJ,BalaV,FrauenhoferT,MummertT,PigottM.PDS:Avirtualexecutionenvironmentforsoftwaredeployment.Proc.oftheVirtualExecutionEnvironments,2005.[7]BurraR,YeoCS,VenugopalS,etal.CloudcomputingandemergingITplatforms:Vision,hype,andrealityfordeliveringcomputingasthe5thutility.FutureGenerationComputerSys-tems,2008.[8]李知杰,赵健飞.OpenStack开源云计算平台.软件导刊.2012,11(12):10-12.[9]姚晓静.云环境下的多源浮标数据集成与应用研究:(硕士学位论文).济南:山东科技大学,2012.[10]胡晓荷.虚拟化时代即将来临.信息安全与通信保密.2009,(3):14-17.[11]姚晔,宋诗瑶.虚拟化技术——计算机应用新宠.电脑知识与技术.2010,06(15):4287-4288.[12]OpenStackistheopenalternativetoproprietarycloudplatformsandlock-in.http://www.rackspace.com/cloud/OpenStack/,2012.[13]Rackspace.http://zh.wikipedia.org/wiki/Rackspace,2012.[14]OpenStack.http://www.OpenStack.org.cn/,2012.[15]OpenStack.http://hc.csdn.net/article.html?arcid=2808301,2012.[16]宋海峰.中国数字化监控的现状与发展.科技情报开发与经济.2003,13(10):204-205.[17]刘鹏.解读云计算与安防.中国安防.2011,(7):34-36.[18]黄莺.虚拟化技术在企业中的应用前景浅析.计算机光盘软件与应用.2010,(14):17-17.[19]卢静.嵌入式视频监控系统服务器软件研制:(硕士学位论文).郑州:郑州大学,2007.[20]赵英虎.应用服务器性能监控系统的设计与实现:(硕士学位论文).浙江:浙江大学,2007.[21]李小宁,李磊,金连文,等.基OpenStack构建私有云计算平台.电信科学.2012,28(9):1-8.[22]张耀祥.云计算和虚拟化技术.计算机安全.2011,(5).[23]朱鹏程.深入浅出云计算.现代计算机:下半月版.2009(9):59-61.[24]罗军舟,金嘉晖,宋爱波.云计算-体系架构与关键技术.通信学报.2011,32(7).[25]赵培,陆平,罗圣美.云计算技术及其应用.中兴通讯技术.2010,4:9-11.[26]王胜川.基于云计算的存储技术研究.石油工业计算机应用.2011(2):53-55.[27]张棋胜.云计算平台监控系统的研究与应用:(硕士学位论文).北京:北京交通大学,2011-41- 致谢致谢本文介绍了OpenStack云平台中资源监控系统的研究和实现,完成了以此为基础的学位论文。整个开发过程乃至三年的研究生生活,都离不开两位导师的谆谆教导和同学朋友的无私帮助。首先要感谢我的硕士生导师李洪奇教授,感谢他在我读研期间特别是毕业设计过程中,对我的指导,是他教会了我在学习过程中要保持严谨认真的学习态度,感谢他在论文写作过程中对我进行指导,给予我很多宝贵的建议。感谢朱丽萍老师在实验室期间对我理论上和设计上的指导,她教会了我软件设计开发过程的宏观到局部的设计知识。在我处于迷茫的阶段,给我指明了方向;在我松弛懈怠的时候,鼓励督促我继续努力。感谢实验室的高茂雨、张艳丽和魏子涵同学在我开发过程中对我的帮助,是他们让我实际体会了团队合作的重要性。感谢实验室其他同学在学习很生活上对我的帮助,让我体会到这个实验室大家庭的温暖。还要感谢我的父母和母校,你们给我了我深造的机会,我必不会辜负你们的期望。希望父母能够平安幸福,母校能够再创辉煌。-42-

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。
关闭