基于python的openstack资源监控系统设计与实现.docx

上传人:温桑 文档编号:48544376 上传时间:2022-10-06 格式:DOCX 页数:40 大小:1.73MB
返回 下载 相关 举报
基于python的openstack资源监控系统设计与实现.docx_第1页
第1页 / 共40页
基于python的openstack资源监控系统设计与实现.docx_第2页
第2页 / 共40页
点击查看更多>>
资源描述

《基于python的openstack资源监控系统设计与实现.docx》由会员分享,可在线阅读,更多相关《基于python的openstack资源监控系统设计与实现.docx(40页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、本科毕业设计(论文)基于Python的OpenStack资源监控系统设计与实现Design and Implementation of OpenStack Resource Monitoring System Based on Python院(系)计算机学院专 业网络工程班 级三班学 号16210220320学生姓名李炳亮指导教师冼敏仪提交日期2020年4月 21日毕业设计(论文)原创性声明本人郑重声明:所呈交的毕业设计(论文),是本人在指导老师的指导下,独立进行的设计(研究)工作及取得的成果,论文中引用他人的文献、数据、图件、资料均已明确标注出,论文中的结论和结果为本人独立完成,不包人已含他

2、经发表或撰写的作品及成果。对本文的研究作出贡献的个人和集体,均已在论文中作了明确的说明。本人完全意识到本声明的法律结果由本人承担。毕业论文作者(签字): 签字日期: 年 月 日成绩评定 成绩项论文成绩(百分制)折合比例实得成绩(折合分)指导教师成绩30%评阅教师成绩20%答辩成绩50%总评成绩 注:毕业设计(论文)成绩按百分制评定。答辩成绩不及格的(评分低于60分的),则该毕业设计(论文)总评成绩为答辩成绩。 摘 要为了优化OpenStack监控模块在功能和可视化方面的不足,确保OpenStack实例的稳定运行,设计出一个用于OpenStack的监控系统。通过使用Libvirt、Python编

3、程语言、Django框架、Echarts等开发技术,完成了拥有实时监控、实时报警功能的监控系统。该系统主要是通过每秒数据的输出绘制成图表来实现实时监控,还原当前运行资源的真实性。最后在本地虚拟环境下搭建OpenStack平台进行了测试,该系统能够准确的输出实例当前的资源状态,实现报警等功能。解决了OpenStack监控模块在功能和数据可视化方面的缺陷,并且对于OpenStack监控模块从Controller节点获取资源数据而言,该系统直接从Computer节点获取资源数据,从而节省了Controller节点资源。关键词:OpenStack;资源监控;虚拟化;Libvirt;Python Abs

4、tractIn order to optimize the function and visualization of the OpenStack monitoring module and ensure the stable operation of the OpenStack instance, a monitoring system for OpenStack was designed. Through the use of Libvirt, Python programming language, Django framework, Echarts and other developm

5、ent technologies, a monitoring system with real-time monitoring and real-time alarm functions has been completed. The system mainly realizes real-time monitoring by drawing data output per second into a chart, restoring the authenticity of current running resources.Finally, the OpenStack platform wa

6、s built and tested in a local virtual environment. The system can accurately output the current resource status of the instance and implement alarm and other functions. Solved the defects of the OpenStack monitoring module in terms of function and data visualization, and for the OpenStack monitoring

7、 module to obtain resource data from the Controller node, the system directly obtains resource data from the Computer node, thereby saving Controller node resources.Key words: OpenStack; resource monitoring; virtualization; Libvirt; Python目 录第一章 绪论11.1 项目研究背景及研究意义11.2 项目国内外研究现状11.3论文结构安排21.4本章小结2第二章

8、 OpenStack与监控系统相关技术概述42.1 OpenStack介绍42.1.1 OpenStack概述42.1.2 OpenStack架构42.2 Python与Django框架52.2.1 Python语言52.2.2 Django框架62.3 Libvirt62.4 Echarts72.5 小结7第三章 OpenStack监控系统需求分析83.1 OpenStack监控系统模块及工作流程83.1.1 OpenStack监控系统模块需求分析83.1.2 OpenStack监控模块间工作流程83.2 用户模块需求分析93.3数据模块需求分析103.4小结11第四章 OpenStack监

9、控平台设计与实现124.1 监控平台整体结构设计124.2 用户模块设计与实现134.2.1 用户创建134.2.2 用户登录144.2.2.1 用户登陆流程144.2.2.2 用户登陆界面实现154.2.3 密码修改164.2.3.1 修改密码流程164.2.3.2 修改密码实现174.3数据模块设计与实现184.3.1 数据采集184.3.2 数据处理194.3.3 数据输出204.3.3.1 监控功能204.3.3.2 报警功能214.4小结25第五章 系统测试265.1 系统测试265.1.1 测试环境搭建265.1.2 测试过程275.2小结30第六章 总结与展望31参考文献32致

10、谢33广东东软学院本科生毕业设计(论文)第一章 绪论1.1 项目研究背景及研究意义从二十世纪开始,云计算技术就受到人们的赞赏和欣赏。从谷歌的成立到亚马逊尝试时的突破,它已成为一个巨大的工业和生态链。被称为新世纪以来最大的技术进步之一。今日云计算的发展“蓬勃”并非没有理由。由于云计算可以产生较少的本地硬件和软件,所以本地计算机只能执行云计算系统的接口软件。其余工作由网络计算机、服务器和数据存储系统负责1。基础架构即服务一般都包含了平台即服务与软件即服务。而绝大多数情况下基础架构即服务都是需要虚拟化技术的支持。通过用户层的虚拟化管理器,从真实硬件资源中虚拟出硬件资源,从而去新建虚拟机、删除虚拟机、

11、迁移虚拟机。单台主机上的虚拟机可以通过简单的命令来管理,但是在现实生产环境中往往需要考虑环境的高可用性、负载均衡以及备份等问题。因此会使用多台主机集成虚拟化平台。这样做会带来虚拟机运维上面的问题。这就需要应用软件来辅助人员去完成虚拟机任务的管理。这就是基础架构即服务系统产生的原因,也是OpenStack、AWS等项目所实现的价值。而云平台资源监控是一个关键的技术支撑,它是云平台资源管理、迁移、调度、故障、分析、负载、报警与恢复的前提,监控能帮助云平台资源合理化使用、调度、定位故障、提升用户体验,大大提高了云平台的服务效果。因此,设计出一个面向云平台的监控系统十分必要。其中OpenStack是当

12、前主流的云计算技术之一,发展速度也飞快。对此本课题将设计实现出一个针对OpenStack的监控系统。1.2 项目国内外研究现状在中国,阿里云监控系统是阿里巴巴云服务的监控系统。阿里云监控的执行可以检测阿里巴巴云资源情况,使阿里巴巴云用户能够快速了解他们使用的实例的资源和性能。阿里巴巴的云监控主要可以监控自己的云服务、可以监控自己的网站和定制自己需要的监控需求来进行监控。通过监控,用户可以清楚地看到自己监控对象的数据。还可以使用资源监控报警功能,当用户设置一个报警值,若用户使用的服务超过设置的报警值,则会通知用户。但目前阿里云监控并不是全面免费开放。百度云亦是国内优秀的云厂商,而百度云观测是百度

13、开发的一个监控系统,百度云观测的主要服务对象是网站的站长,它针对网站的站长设计出这一个对网站的安全监控系统,它提供给站长报警服务,并且监控功能覆盖全网站的运行状况、安全和访问速度等。并且它提供的是长期免费的服务。但主要是提供网站的监控服务。从国外角度来看,亚马逊云观察(Amazon CloudWatch)是亚马逊开发的一个云监控系统,通过亚马逊云观察,用户可以得到亚马逊云的资源情况,能通过资源情况得到资源能力范围,并且可以通过日志发现云资源问题。亚马逊云观察能够做到很细微的监控,它能具体监控进程、数据库等。当然,亚马逊云观察也可以设置一个报警值,用来告诉用户当前云资源出现问题。TeamView

14、er是国外著名的软件公司,Monitis是TeamViewer旗下的一个子公司开发出的一个监控系统,它提供了市场上比较好的云计算无代理监控功能,并且有完善的监控功能,也能支持用户自定义监控、分析数据等,重要的是它拥有一个良好的交互页面,使得管理者在管理上得心应手,相信所有管理者在第一次接触管理系统时都希望使用一个简单易上手的交互页面。1.3论文结构安排第一章说明了为何要针对云计算平台开发一个监控系统。第二章介绍了选用的云计算平台OpenStack,使用技术Python与Django框架、Libvirt、Echarts组件。第三章对OpenStack监控系统的用户、数据模块进行需求分析。第四章则

15、是设计实现OpenStack监控系统的用户、数据模块以及模块当中的各项功能。第五章对OpenStack监控系统进行测试。第六章是对监控系统设计实现的结束总结以及系统优化改善的方法。1.4本章小结本章对云计算平台发展、云监控重要性做出了分析。国内外的大厂商都争先的发展研究云计算,国内有阿里、腾讯,国外有谷歌、亚马逊。并且以上的厂商都拥有自己的云监控平台。但是开源的云监控学术研究还是寥寥可数。仍需要我们为云监控学术做努力。本文就目前主流的开源云计算技术OpenStack云平台进行研究,设计开发出一个监控功能较完善的OpenStack监控平台,并且可以提供个人使用。第二章 OpenStack与监控系

16、统相关技术2.1 OpenStack介绍2.1.1 OpenStack概述OpenStack是由Rackspace与NASA(美国国家航空航天局)联合研发的管理云平台操作系统,可以控制一个数据中心内的大型计算,存储以及网络资源池,所有这些资源均通过仪表盘进行管理,该仪表盘可让管理员进行控制管理,同时授权其用户通过Web界面配置资源2。作为一个开源的项目,所有人都可以为其提交代码,开发、修改功能,使其不断衍生出新的项目,对此OpenStack成为使用人数较多、应用范围较大的云平台之一。2.1.2 OpenStack架构一般云计算平台都是由各种组件构成,OpenStack也不例外,OpenStac

17、k当前比较重要的组件有:(1)Horizon(UI交互),Horizon提供了基于网页的UI交互 ,即可以通过UI完成对实例的操作。(2)Glance(镜像),Glance能够存储、检索和注册磁盘镜像。(3)Neutron(网络),Neutron主要能够提供网络。(4)Keystone(认证),Keystone主要能够给其他OpenStack服务进行认证以及授予权限,相当于对操作指令请求者的确定性进行鉴定。(5)Swift(对象存储),Swift是一种高可用的分布式对象存储服务,其可以为OpenStack提供可拓展的存储备份系统。(6)Cinder(块存储),Cinder主要是为实例提供持久性

18、的块存储。(7)Nova(计算),Nova主要能够管理实例。用户操作实例也是通过它来进行。OpenStack各个项目之间既是互相独立又是互相紧密联系的。独立是指各个项目之间的安装部署都是相互隔离,互不干扰的。而紧密联系是指各个项目之间又是互相协调工作的。总体架构如图2-1。图2-1 OpenStack架构图2.2 Python与Django框架2.2.1 Python语言Python是一种开放的、面向对象的高级计算机编程翻译语言,第一次于1991年公布3。Python是强大的,因为Python目前已经拥有一个富有而强大的模块库,因为这个库,Python处理事情十分的快速方便。不仅如此,Pyth

19、on还可以在其它语言中使用它们的各种模块 4。Python语言有以下几个特点:(1)容易学习,不仅语法简单、结构清晰而且固定关键字少,使得Python拥有良好的阅读性。正式因为Python的简单理念,使得少量代码能完成的需求在其他语言里面可能需要上百行代码才能完成。由此可以看出,Python语言是十分简单易学的。(2)面向对象,采用了“以程序为导向的编程方法”,该程序包括可重复使用该代码的功能或程序。使用面向对象的编程,程序由对象构造,对象由数据和功能组成。(3)可扩展性,可以使用C或C+来写入某些程序,以加速执行批判码,或防止发布某些重要算法,然后再用Python的程序来呈现。Python语

20、言类的模块库不仅强大,而且非常丰富,它可以很容易地将其它语言(尤其是C语言或C+语言)制作的各种模块连接起来,并且可以扩展Python的功能。(4)模块库,模块库也能理解成一个十分巨大的对象库,是前人为做某件事情而编写的“工具”,Python能够引用它们,来帮助编写者快速进行编程。2.2.2 Django框架Django用于开发网站,而且遵循MVC的设计理念。劳伦斯出版集团开发了这一框架,最初是用于开发一个侧重于新闻内容的网站,后来才在社区开源。它强调了代码的再使用,多个组件可以很容易地以“插件”的形式为整个框架服务,Django有许多强大的第三方插件,甚至您也可以很容易地开发自己的工具插件5

21、。因为Django遵循了MVC的设计理念,因此MVC有的特性Django都有,但Django不满足MVC的开发速度,并加以改造,成为MVT模式。当中,V做的是处理逻辑,T为页面,而M则被封装成一个对象使用。在MVT处理模式中,实现了一个更符合项目开发过程的升级处理构想。在这种处理模式中,具有相对简单功能的控制器部分被封装在路径中,并且路径被用于完成请求的分发,路径通过配置实现(即Django框架中的url与setting)。2.3 LibvirtLibvirt是目前为止使用最为广泛的KVM虚拟机进行管理的工具和API6。Libvirt由三个部分组成,分别是编程语言的API、进程、命令操作工具。

22、Libvirt支持许多语言对它进行模型包装,包装完后提供给该编程语言使用。2014年前释放的代码包括Python界面,经过2014年的一个版本形成独立的Libvirt-Python库。Libvirt还实现了Ruby、Java、Perl等语言的绑定。而且Libvirt也适用多种类的虚拟机监视器。 Libvirt可以做到:即使域不相同,还能对实例进行操作,普通操作同时包括了资源操作;通过执行本地Libvirt-daemon,本地和远程机器可以访问和使用Libvirt功能。远程则是配置SSH;可用于管理和创建虚拟网络以及管理物理和逻辑网络接口等。目前Libvirt已经在生产环境中广泛使用。应用程式包

23、括各种控制线工具、图形接口工具、连续集成、Web应用程序、IaaS服务(其中就包括OpenStack),从而极大地促进了开发和集成。2.4 EchartsEcharts是百度的一款Javascript开放源软件,可以支持多种浏览器使用。Echarts提供了API接口和丰富的文档,通过正确定义和组合背景下发送的Json数据,可以显示所需的数据图标7。Echarts具有各种功能和效果以及友好的视图,提供给开发者良好的数据显示。Echarts的视图类型特点有许多,其中包括折线、圆球、水球、区域、动态、易用性、可拓展性等。Echarts的特性可以使数据可视化分析将提供更高的性能和更广泛的适应性。在开发

24、使用主题数据的系统时,可以根据用户的需要设计和设计网页数据显示格式和后端数据显示的方法。这大大提高了用户与开发者控制数据的能力和用户与数据处理的能力。2.5 小结本章主要是对OpenStack监控系统需要的技术做介绍。先是对OpenStack做了简单的介绍,并且说明了OpenStack的主要核心项目,分析了OpenStack的基础架构。然后对Python与Django框架做了简单分析与总结。之后说明了Libvirt与Echarts的作用。了解并掌握以上的技术后,就可以对项目进行开发。后续的章节将主要讲述系统各个模块需求分析、模块设计与实现、系统测试与部署。 第三章 OpenStack监控系统需

25、求分析3.1 OpenStack监控系统模块及工作流程3.1.1 OpenStack监控系统模块需求分析OpenStack监控系统是一个面向监控人员可以方便监控OpenStack云平台资源使用情况的系统,该系统的主要功能是让监控人员登陆系统后能对OpenStack实例、OpenStack的Computer节点的资源(包括CPU利用率、内存利用率、网络流量吞吐、硬盘使用情况等)当前状态的把控,并且可以有效的防止实例或系统状态异常所带来的一系列问题。因此对本系统的实现提出用户模块与数据模块。用户模块主要是区分监控人员与管理人员,里面包含了创建账户、登陆、修改密码等功能。数据模块主要是用于数据的应用

26、,里面包含监控与报警功能。系统模块需求分析如图3-1所示。图3-1 OpenStack监控系统模块图3.1.2 OpenStack监控模块间工作流程系统的模块间工作流程是基于OpenStack平台部署以及实例运行完毕后,首先由用户模块中的监控人员组在登陆模块进行登入系统,再由OpenStack监控系统的数据模块采集获取所需的监控资源数据,再对采集的资源数据进行处理,之后将处理完的数据存入数据库中,最后由监控系统中数据模块的监控功能在前端页面展示,报警功能则是当数据有异常发出报警。综上所述及图3-1得出,系统之间两个模块及功能互相工作,密不可分。模块工作之间流程关系如图3-2所示。图3-2 Op

27、enStack监控系统模块关系流程图3.2 用户模块需求分析OpenStack监控平台用户管理模块主要是用于用户的权限区分。监控人员不需要具有注册账号的权限,注册账号由管理员进行操作。因此整个系统的登陆页面有两个,其中管理员登陆页面使用的是Django自带的后台登陆页面。而监控人员的登陆模块则是前端登陆页面。并且两个登陆功能的账号不互通。综上提出对用户模块的需求分析(如图3-3所示):(1)管理人员用户需求:作为系统的管理者,具有监控用户的增、删、改、查等操作权限。既可以为监控人员创建登陆账号,为监控人员初始化密码,并且可以知道监控人员账号所有信息,拥有监控用户所有权。(2)监控人员用户需求:

28、而监控人员不能自行注册监控账号,只能登陆指定账号对OpenStack实例进行监控,只拥有改、查等操作权限。即只能够修改自己账号密码,当监控人员忘记自己密码时只能联系管理员进行修改或者告知,能够看见自己账号的信息。(3)登陆功能需求:登陆功能主要是用于监控人员登陆监控平台以及管理人员登陆后台系统。判断是否能登陆平台及后台的唯一凭证是用户名与密码。并且管理人员与监控人员拥有两个不同的登陆页面。管理人员使用的是Django框架自带的后台登陆页面,而监控人员则使用本系统的登陆页面。两种用户的区别是管理权限不同。但登陆凭证一样都为自己的账号密码。管理用户以及监控用户都需要输入正确的账号密码才能登入系统以

29、及后台。(4)创建账号需求:监控用户不能自主创建账号,只能通过管理员发放的账号登陆。因此平台的登陆模块不需要注册功能。(5)修改密码需求:监控人员与管理人员都能够自主修改密码。并且管理人员还能对监控人员进行密码修改,当监控人员忘记密码是,只能通过联系管理人员进行密码修改或告知。图3-3 OpenStack监控系统用户模块需求分析图3.3数据模块需求分析OpenStack监控平台数据模块分别实现OpenStack实例资源数据的采集、数据的处理以及数据的输出。因此提出数据管理模块需求分析(需求分析图可参考图3-2):(1)数据的采集:监控平台需要及时准确的清楚当前实例的状态,因此OpenStack

30、资源数据的采集需要准确、实时。不仅要采集OpenStack实例的资源,同样也需要采集物理主机的资源,因为物理主机的状态决定了实例的状态。采集时需要区分这两个区别。(2)数据的处理:监控平台需要做到OpenStack实例以及物理主机实时监控,则代表采集的数据量庞大,首先应做到区分实例资源数据与主机资源数据,需要将实例资源数据与主机资源数据分开存储。在实例资源数据与主机资源数据分开存储的同时也需要将不同的资源种类也分开存储。这样更有益于我们对数据的使用。不同的资源数据可能拥有不同的特性,我们可以将采集的资源数据进行格式统一化。这样会更加方便存储与处理应用。(3)数据的输出:系统采集、处理过后的资源

31、数据需要在监控平台前端输出,输出的首要方式为动态图表显示,动态图表需要能直观的观察到OpenStack实例以及物理主机的实时状态,因此需要简洁明了。次要方式为文字表达,用文字显示监控时期每个时刻的实际状态数据,有利于监控人员观察实际数据发现问题。并且能够下载监控时期的状态图表。(4)监控功能:OpenStack监控平台监控功能主要是用于查看OpenStack云平台上运行实例的状态。用户可以清楚的了解当前云实例的状态。监控人员需要准确知道当前实例的运行状态,因此资源数据的采集需要确保及时与准确,这是监控功能的前提。数据保存格式统一方便保存与使用。做到实例实时的监控。能够保存历时监控趋势图,并且不

32、仅要图表显示,需要有真实文字监控数据。(5)报警功能:当实例出现异常时,监控人员则需要精准及时的收到实例错误状态,由于每个使用者的实际情况可能不同,报警内容能够支持自定义设置,并且按实际要求设置报警阈值,达到这个阈值系统则发出报警,当然也含有不报警的选项。报警方式可以有邮件报警、微信报警。3.4小结本章首先描述了OpenStack监控系统的整体模块结构还有工作流程。然后对系统的用户模块的登陆功能、创建功能、删除功能;数据模块的数据采集、数据处理、数据输出、监控功能、报警功能等进行需求分析。详细描述了两个模块的工作内容、两个模块所需要提供的功能、各个功能之间的联系,并且提出以及区分管理人员和监控

33、人员两个概念,为后续的设计与实现规划了大致系统框架,并且奠定了基础。在接下来的章节,会根据本章的需求功能分析进行具体的设计与系统开发。第四章 OpenStack监控平台设计与实现4.1 监控平台整体结构设计选择Python编程语言进行系统开发的原因很简单,整个OpenStack项目就是用Python完成的,并且提供HTTP形式的RESTful API与Python Client API两种API,而且在数据采集方面考虑到不能对OpenStack服务器性能影响过大的情况下,选用脚本采集数据的方法来进行数据采集,再存进数据库服务器。因此OpenStack监控平台选择使用Python语言进行开发。根

34、据Django框架的特点,满足快速开发监控系统的需求。因此监控平台选择Django框架作为系统的后端框架,AdminLTE8框架作为系统的前端框架,用作前端Web页面渲染。在采集数据的工作上,采用Python编写的脚本对OpenStack服务器进行数据采集,并且使用Mysql数据库存储数据。监控系统整体结构如图4-1。图4-1 OpenStack监控系统整体框架图OpenStack监控平台的开发都按照Django项目开发流程进行,监控系统项目结构如图4-2所示。图4-2 OpenStack监控系统代码结构图如图4-2所示,整个OpenStack监控系统包括三个部分。其中app为监控系统的具体实

35、现部分,负责整个系统的展现与逻辑处理,里面包含了所有模块的实现代码,是整个监控系统的核心部分。myOS为监控系统的配置文件,其中包括配置所需的数据库、中间件与监控系统入口url等。static则是监控系统的前端渲染文件目录,里面包含的是AdminLET渲染文件。4.2 用户模块设计与实现4.2.1 用户创建由于监控系统的账户由管理人员来创建,而且Django框架自带一个管理后台,当管理人员登陆后台后,可以为用户组新建用户,如图4-3所示。APP内用户则是监控人员用户组,可以点击增加来新增监控人员账户,认证授权用户则是管理员用户组,可以增加一名管理员。图4-3 创建用户图创建监控人员账号需要填写

36、用户名、密码、邮箱、性别等基本信息,需要在models中添加模型代码如图4-4所示,实现出来创建用户过程如图4-5所示。实际过程就是通过后台创建一用户表,通过管理员点击增加用户完成监控员注册的部分,在系统数据库中添加一条账户信息,使得监控人员能够获得账号密码登陆监控平台。图4-4 创建用户模型代码图4-5 创建用户过程图4.2.2 用户登录4.2.2.1 用户登陆流程用户登录流程图如图4-6所示,监控人员若进入系统登录界面进行登陆操作,系统后台会先检测监控人员是否输入账号密码,若无则提示输入。输入账号密码后,后台继续对输入的账号密码与数据库进行匹配,匹配成功则登陆成功,进入系统,匹配错误则提醒

37、监控人员输入正确的用户名密码。图4-6 OpenStack监控系统登陆流程图4.2.2.2 用户登陆界面实现登陆页面由一个文本表单、一个密码表单以及一个按钮构成,如图4-7所示。图4-7登陆页面登录功能核心逻辑实现如图4-8所示,login_form是先定义创建好的表单,is_valid()是Form表单里面封装好的校验方法,结果返回True或者False,当校验到表单中有值返回True,反之返回False,校验过后会将表单中的值存在cleaned_data字典中,login_form.cleaned_data.get(username)就是获取校验过后表单中的用户名,密码同理。models.

38、User.objects.get(name=username)是数据库匹配,使用try异常机制,执行如果错误,说明数据库中不存在该username,就转回登陆页,如果能够正常获取username,则进行user.password = password密码匹配。request.sessionis_login = True是创建session字典保存当前用户登录状态为True,下面的user_id、user_name同样是使用session字典保存当前用户的信息。整体登录逻辑流程为当监控人员输入账号密码进行登陆时,后台会先获取输入的值,若为空值则提醒用户输入正确内容。如果输入的用户名在数据库中存在

39、,则进行下一步密码匹配,当密码匹配成功后,会分配出一个session字典写入用户状态和数据,session会保存在后台,目的是用session记录用户登录状态,这样做的好处可以防止用户重复登陆与用户数据调用。当密码匹配不成功,则提示密码不正确。图4-8登陆核心逻辑代码4.2.3 密码修改4.2.3.1 修改密码流程修改密码的流程如图4-9所示,在修改密码时系统后台会先检测监控人员是否输入正确的数值内容。当检测到有效内容值后,会继续判断输入的密码都是否输入正确。若都正确则修改成功,返回登陆页面。若错误则提示重新输入。图4-9修改密码流程图4.2.3.2 修改密码实现修改密码页面由三个文本表单、一

40、个超链接以及一个按钮所构成,如图4-10所示。图4-10修改密码页面修改密码功能核心逻辑实现如图4-11所示,代码实现使用的逻辑方法与登陆功能实现代码大同小异,先用is_valid()方法校验表单,cleaned_data字典保存表单值,再用ifelse语句判断密码是否相同,修改密码整体逻辑流程为:当监控人员进入修改密码功能入口时,系统会自动去到修改密码页面,如图4-10所示。监控人员需要按照图片的需求填入密码信息,后台会先获取输入的值,进行两次密码匹配,第一次对原密码进行匹配,若输入的原密码与登陆密码(数据库中密码)相同后会进行第二次新密码与确认密码的匹配,当两次密码匹配都通过时,将当前的s

41、ession会话清除,并且返回登陆页面。若匹配不成功,则提示哪个密码输入错误,重新输入。 图4-11修改密码核心逻辑代码4.3数据模块设计与实现4.3.1 数据采集数据采集主要是对OpenStack平台实例资源数据的采集,Libvirt是一个良好的虚拟机API,并且Python对Libvirt有很好的支持。Python里面有Libvirt-python库。对我们数据采集起了很大的帮助。数据采集主要通过Python-Livbirt API编写脚本从OpenStack平台获取所需的监控资源数据。经过分析及对比,对于OpenStack实例而言,CPU利用率、内存使用率、硬盘使用情况、网络吞吐量都是O

42、penStack实例性能的重要指标,对此选择这四个资源指标作为采集对象。由于Libvirt无法直接采集CPU利用率、内存使用率的数据,我们通过获取的资源来计算出我们所需的指标。公式10为:(1)CPU利用率 = 100 (CPUTIMENOW - CPUTIMESECONDSAGO)/ (TIME CPUNUM 1e9)(2)内存使用率 = (TOTALMEM - FREEMEM) / TOTALMEM)(3)硬盘I/O可以通过Libvirt直接获取(4)网络I/O可以通过Libvirt直接获取数据采集脚本核心代码(以CPU利用率为例)如图4-12所示。代码中conn为定义虚拟机的打开连接,l

43、ookupByUUIDString(i.UUIDString()为寻找虚拟机的UUID方法,其中i遍历了所有虚拟机,info()4为特定值cputime。time.sleep(1)是为了每隔1秒采集cputime,从而算出cpu利用率。图4-12采集CPU利用率核心代码当脚本连接OpenStack服务器时获取实例状态连接与实例UUID,在保证会话连接后,以UUID为标识,以时间为单位获取实例的CPU资源,其中time为当前时间,cpuusertime为CPU使用时间,cpunum为CPU数量,再经过CPU利用率计算公式得出当前实例CPU利用率。4.3.2 数据处理数据处理主要是对采集的数据进行

44、处理与存储,采集回来的数据必定很多9,而且各资源数据的格式都有可能不一样,为了方便存储,将获取的数据全部转化成int或字符串类型,方便存入数据库。监控数据库表设计如4-13图所示:图4-13监控数据表图4-12中UUID为实例的标识符,用来获取实例资源;name为实例名称;host为实例IP地址;CPU为CPU利用率;MEM为内存使用率;NETOUT为网络输出流量;NETIN为网络输入流量;WRBYTES为硬盘写入速度;RDBYTES为硬盘读入速度。存储数据核心代码如图4-14所示。图4-14存储数据核心代码4.3.3 数据输出4.3.3.1 监控功能系统的监控功能需要有数据的支撑。有了前面的

45、数据采集与数据处理,就可以将数据展现出来成为监控功能。以CPU利用率为例,本系统选用了百度的Echarts图表插件作为监控输出的依据。监控功能页面如图4-15所示。图4-15监控页面监控页面包含了选择实例下拉框、报警阈值设置、报警方式设置与实时监控表构成。实施监控表x坐标为CPU利用率,y坐标为实时时间。显示的数据就是此刻时间数据库中CPU利用率的数值。实现实时CPU利用率监控数据输出的核心代码如图4-16所示。使用$.getJSON()方法访问访问后台数据,并且加入定时器每秒访问后台数据,data.push(randomData(ret.data)将数据放入图表中。图4-16 CPU利用率监

46、控核心代码整体输出数据过程:当采集的数据存入数据库后,系统后台将数据封装成json数据,使用ajax按每一秒轮询后台的数据将其输出在Echarts图表中。4.3.3.2 报警功能报警功能依然需要有前面采集的数据做支撑,与监控不同的是,由于系统选用邮箱与微信作为报警媒介,因此报警功能所需的数据还需要报警阈值、邮箱、微信信息等。报警页面如图4-17与18所示。图4-17 CPU利用率邮箱报警页面图4-18 CPU利用率微信报警页面报警功能页面由两个区域,一个是邮箱报警设置,一个是微信报警设置,内容收集都是用户输入信息点击确定提交表单的形式获取。当设置完成后,可以看到当前设置的内容。值得注意的是当信

47、息填写错误时无法提醒错误信息,因此填写需要确保信息正确。报警功能实现的核心代码如图4-19与20所示。图4-19 CPU利用率邮箱报警核心代码图4-20 CPU利用率微信报警核心代码Django框架拥有自动发送邮箱的功能,只要在setting文件夹中配置好自己邮箱的信息,然后调用EmailMultiAlternatives方法即可实现发送邮件。而微信发送则是使用企业微信的接口,将所需的企业微信信息打包成json数据,相应接口即可实现发送微信。而判断是否发送邮件或微信的依据则是当前数据是否超于设定的阈值。因此系统后台判断是否报警的核心逻辑代码如图4-21所示。同监控中$.getJSON()方法访问后台数据,(0 | ret.data1) = gezdyyz 再判断获取的数据值是否大于设置的阈值(gezdyyz), gesendfs 为用户选定的报警方式,用if逻辑语句判断执行那种报警方式,都确定好后$.ajax()方法访问对应的url(报警方式)进行报警。图4-21 CPU利用率判断报警核心逻辑代码

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 大学资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁