基于python的openstack資源監(jiān)控系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)_第1頁(yè)
基于python的openstack資源監(jiān)控系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)_第2頁(yè)
基于python的openstack資源監(jiān)控系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)_第3頁(yè)
基于python的openstack資源監(jiān)控系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)_第4頁(yè)
基于python的openstack資源監(jiān)控系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)_第5頁(yè)
已閱讀5頁(yè),還剩43頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

摘要為了優(yōu)化OpenStack監(jiān)控模塊在功能和可視化方面的不足,確保OpenStack實(shí)例的穩(wěn)定運(yùn)行,設(shè)計(jì)出一個(gè)用于OpenStack的監(jiān)控系統(tǒng)。通過(guò)使用Libvirt、Python編程語(yǔ)言、Django框架、Echarts等開(kāi)發(fā)技術(shù),完成了擁有實(shí)時(shí)監(jiān)控、實(shí)時(shí)報(bào)警功能的監(jiān)控系統(tǒng)。該系統(tǒng)主要是通過(guò)每秒數(shù)據(jù)的輸出繪制成圖表來(lái)實(shí)現(xiàn)實(shí)時(shí)監(jiān)控,還原當(dāng)前運(yùn)行資源的真實(shí)性。最后在本地虛擬環(huán)境下搭建OpenStack平臺(tái)進(jìn)行了測(cè)試,該系統(tǒng)能夠準(zhǔn)確的輸出實(shí)例當(dāng)前的資源狀態(tài),實(shí)現(xiàn)報(bào)警等功能。解決了OpenStack監(jiān)控模塊在功能和數(shù)據(jù)可視化方面的缺陷,并且對(duì)于OpenStack監(jiān)控模塊從Controller節(jié)點(diǎn)獲取資源數(shù)據(jù)而言,該系統(tǒng)直接從Computer節(jié)點(diǎn)獲取資源數(shù)據(jù),從而節(jié)省了Controller節(jié)點(diǎn)資源。關(guān)鍵詞:OpenStack;資源監(jiān)控;虛擬化;Libvirt;PythonAbstractInordertooptimizethefunctionandvisualizationoftheOpenStackmonitoringmoduleandensurethestableoperationoftheOpenStackinstance,amonitoringsystemforOpenStackwasdesigned.ThroughtheuseofLibvirt,Pythonprogramminglanguage,Djangoframework,Echartsandotherdevelopmenttechnologies,amonitoringsystemwithreal-timemonitoringandreal-timealarmfunctionshasbeencompleted.Thesystemmainlyrealizesreal-timemonitoringbydrawingdataoutputpersecondintoachart,restoringtheauthenticityofcurrentrunningresources.Finally,theOpenStackplatformwasbuiltandtestedinalocalvirtualenvironment.Thesystemcanaccuratelyoutputthecurrentresourcestatusoftheinstanceandimplementalarmandotherfunctions.SolvedthedefectsoftheOpenStackmonitoringmoduleintermsoffunctionanddatavisualization,andfortheOpenStackmonitoringmoduletoobtainresourcedatafromtheControllernode,thesystemdirectlyobtainsresourcedatafromtheComputernode,therebysavingControllernoderesources.Keywords:OpenStack;resourcemonitoring;virtualization;Libvirt;Python目錄TOC\o"1-4"\h\z\u第一章緒論 第一章緒論1.1項(xiàng)目研究背景及研究意義從二十世紀(jì)開(kāi)始,云計(jì)算技術(shù)就受到人們的贊賞和欣賞。從谷歌的成立到亞馬遜嘗試時(shí)的突破,它已成為一個(gè)巨大的工業(yè)和生態(tài)鏈。被稱為新世紀(jì)以來(lái)最大的技術(shù)進(jìn)步之一。今日云計(jì)算的發(fā)展“蓬勃”并非沒(méi)有理由。由于云計(jì)算可以產(chǎn)生較少的本地硬件和軟件,所以本地計(jì)算機(jī)只能執(zhí)行云計(jì)算系統(tǒng)的接口軟件。其余工作由網(wǎng)絡(luò)計(jì)算機(jī)、服務(wù)器和數(shù)據(jù)存儲(chǔ)系統(tǒng)負(fù)責(zé)[1]?;A(chǔ)架構(gòu)即服務(wù)一般都包含了平臺(tái)即服務(wù)與軟件即服務(wù)。而絕大多數(shù)情況下基礎(chǔ)架構(gòu)即服務(wù)都是需要虛擬化技術(shù)的支持。通過(guò)用戶層的虛擬化管理器,從真實(shí)硬件資源中虛擬出硬件資源,從而去新建虛擬機(jī)、刪除虛擬機(jī)、遷移虛擬機(jī)。單臺(tái)主機(jī)上的虛擬機(jī)可以通過(guò)簡(jiǎn)單的命令來(lái)管理,但是在現(xiàn)實(shí)生產(chǎn)環(huán)境中往往需要考慮環(huán)境的高可用性、負(fù)載均衡以及備份等問(wèn)題。因此會(huì)使用多臺(tái)主機(jī)集成虛擬化平臺(tái)。這樣做會(huì)帶來(lái)虛擬機(jī)運(yùn)維上面的問(wèn)題。這就需要應(yīng)用軟件來(lái)輔助人員去完成虛擬機(jī)任務(wù)的管理。這就是基礎(chǔ)架構(gòu)即服務(wù)系統(tǒng)產(chǎn)生的原因,也是OpenStack、AWS等項(xiàng)目所實(shí)現(xiàn)的價(jià)值。而云平臺(tái)資源監(jiān)控是一個(gè)關(guān)鍵的技術(shù)支撐,它是云平臺(tái)資源管理、遷移、調(diào)度、故障、分析、負(fù)載、報(bào)警與恢復(fù)的前提,監(jiān)控能幫助云平臺(tái)資源合理化使用、調(diào)度、定位故障、提升用戶體驗(yàn),大大提高了云平臺(tái)的服務(wù)效果。因此,設(shè)計(jì)出一個(gè)面向云平臺(tái)的監(jiān)控系統(tǒng)十分必要。其中OpenStack是當(dāng)前主流的云計(jì)算技術(shù)之一,發(fā)展速度也飛快。對(duì)此本課題將設(shè)計(jì)實(shí)現(xiàn)出一個(gè)針對(duì)OpenStack的監(jiān)控系統(tǒng)。1.2項(xiàng)目國(guó)內(nèi)外研究現(xiàn)狀在中國(guó),阿里云監(jiān)控系統(tǒng)是阿里巴巴云服務(wù)的監(jiān)控系統(tǒng)。阿里云監(jiān)控的執(zhí)行可以檢測(cè)阿里巴巴云資源情況,使阿里巴巴云用戶能夠快速了解他們使用的實(shí)例的資源和性能。阿里巴巴的云監(jiān)控主要可以監(jiān)控自己的云服務(wù)、可以監(jiān)控自己的網(wǎng)站和定制自己需要的監(jiān)控需求來(lái)進(jìn)行監(jiān)控。通過(guò)監(jiān)控,用戶可以清楚地看到自己監(jiān)控對(duì)象的數(shù)據(jù)。還可以使用資源監(jiān)控報(bào)警功能,當(dāng)用戶設(shè)置一個(gè)報(bào)警值,若用戶使用的服務(wù)超過(guò)設(shè)置的報(bào)警值,則會(huì)通知用戶。但目前阿里云監(jiān)控并不是全面免費(fèi)開(kāi)放。百度云亦是國(guó)內(nèi)優(yōu)秀的云廠商,而百度云觀測(cè)是百度開(kāi)發(fā)的一個(gè)監(jiān)控系統(tǒng),百度云觀測(cè)的主要服務(wù)對(duì)象是網(wǎng)站的站長(zhǎng),它針對(duì)網(wǎng)站的站長(zhǎng)設(shè)計(jì)出這一個(gè)對(duì)網(wǎng)站的安全監(jiān)控系統(tǒng),它提供給站長(zhǎng)報(bào)警服務(wù),并且監(jiān)控功能覆蓋全網(wǎng)站的運(yùn)行狀況、安全和訪問(wèn)速度等。并且它提供的是長(zhǎng)期免費(fèi)的服務(wù)。但主要是提供網(wǎng)站的監(jiān)控服務(wù)。從國(guó)外角度來(lái)看,亞馬遜云觀察(AmazonCloudWatch)是亞馬遜開(kāi)發(fā)的一個(gè)云監(jiān)控系統(tǒng),通過(guò)亞馬遜云觀察,用戶可以得到亞馬遜云的資源情況,能通過(guò)資源情況得到資源能力范圍,并且可以通過(guò)日志發(fā)現(xiàn)云資源問(wèn)題。亞馬遜云觀察能夠做到很細(xì)微的監(jiān)控,它能具體監(jiān)控進(jìn)程、數(shù)據(jù)庫(kù)等。當(dāng)然,亞馬遜云觀察也可以設(shè)置一個(gè)報(bào)警值,用來(lái)告訴用戶當(dāng)前云資源出現(xiàn)問(wèn)題。TeamViewer是國(guó)外著名的軟件公司,Monitis是TeamViewer旗下的一個(gè)子公司開(kāi)發(fā)出的一個(gè)監(jiān)控系統(tǒng),它提供了市場(chǎng)上比較好的云計(jì)算無(wú)代理監(jiān)控功能,并且有完善的監(jiān)控功能,也能支持用戶自定義監(jiān)控、分析數(shù)據(jù)等,重要的是它擁有一個(gè)良好的交互頁(yè)面,使得管理者在管理上得心應(yīng)手,相信所有管理者在第一次接觸管理系統(tǒng)時(shí)都希望使用一個(gè)簡(jiǎn)單易上手的交互頁(yè)面。1.3論文結(jié)構(gòu)安排第一章說(shuō)明了為何要針對(duì)云計(jì)算平臺(tái)開(kāi)發(fā)一個(gè)監(jiān)控系統(tǒng)。第二章介紹了選用的云計(jì)算平臺(tái)OpenStack,使用技術(shù)Python與Django框架、Libvirt、Echarts組件。第三章對(duì)OpenStack監(jiān)控系統(tǒng)的用戶、數(shù)據(jù)模塊進(jìn)行需求分析。第四章則是設(shè)計(jì)實(shí)現(xiàn)OpenStack監(jiān)控系統(tǒng)的用戶、數(shù)據(jù)模塊以及模塊當(dāng)中的各項(xiàng)功能。第五章對(duì)OpenStack監(jiān)控系統(tǒng)進(jìn)行測(cè)試。第六章是對(duì)監(jiān)控系統(tǒng)設(shè)計(jì)實(shí)現(xiàn)的結(jié)束總結(jié)以及系統(tǒng)優(yōu)化改善的方法。1.4本章小結(jié)本章對(duì)云計(jì)算平臺(tái)發(fā)展、云監(jiān)控重要性做出了分析。國(guó)內(nèi)外的大廠商都爭(zhēng)先的發(fā)展研究云計(jì)算,國(guó)內(nèi)有阿里、騰訊,國(guó)外有谷歌、亞馬遜。并且以上的廠商都擁有自己的云監(jiān)控平臺(tái)。但是開(kāi)源的云監(jiān)控學(xué)術(shù)研究還是寥寥可數(shù)。仍需要我們?yōu)樵票O(jiān)控學(xué)術(shù)做努力。本文就目前主流的開(kāi)源云計(jì)算技術(shù)OpenStack云平臺(tái)進(jìn)行研究,設(shè)計(jì)開(kāi)發(fā)出一個(gè)監(jiān)控功能較完善的OpenStack監(jiān)控平臺(tái),并且可以提供個(gè)人使用。第二章OpenStack與監(jiān)控系統(tǒng)相關(guān)技術(shù)2.1OpenStack介紹2.1.1OpenStack概述OpenStack是由Rackspace與NASA(美國(guó)國(guó)家航空航天局)聯(lián)合研發(fā)的管理云平臺(tái)操作系統(tǒng),可以控制一個(gè)數(shù)據(jù)中心內(nèi)的大型計(jì)算,存儲(chǔ)以及網(wǎng)絡(luò)資源池,所有這些資源均通過(guò)儀表盤進(jìn)行管理,該儀表盤可讓管理員進(jìn)行控制管理,同時(shí)授權(quán)其用戶通過(guò)Web界面配置資源[2]。作為一個(gè)開(kāi)源的項(xiàng)目,所有人都可以為其提交代碼,開(kāi)發(fā)、修改功能,使其不斷衍生出新的項(xiàng)目,對(duì)此OpenStack成為使用人數(shù)較多、應(yīng)用范圍較大的云平臺(tái)之一。2.1.2OpenStack架構(gòu)一般云計(jì)算平臺(tái)都是由各種組件構(gòu)成,OpenStack也不例外,OpenStack當(dāng)前比較重要的組件有:(1)Horizon(UI交互),Horizon提供了基于網(wǎng)頁(yè)的UI交互,即可以通過(guò)UI完成對(duì)實(shí)例的操作。(2)Glance(鏡像),Glance能夠存儲(chǔ)、檢索和注冊(cè)磁盤鏡像。(3)Neutron(網(wǎng)絡(luò)),Neutron主要能夠提供網(wǎng)絡(luò)。(4)Keystone(認(rèn)證),Keystone主要能夠給其他OpenStack服務(wù)進(jìn)行認(rèn)證以及授予權(quán)限,相當(dāng)于對(duì)操作指令請(qǐng)求者的確定性進(jìn)行鑒定。(5)Swift(對(duì)象存儲(chǔ)),Swift是一種高可用的分布式對(duì)象存儲(chǔ)服務(wù),其可以為OpenStack提供可拓展的存儲(chǔ)備份系統(tǒng)。(6)Cinder(塊存儲(chǔ)),Cinder主要是為實(shí)例提供持久性的塊存儲(chǔ)。(7)Nova(計(jì)算),Nova主要能夠管理實(shí)例。用戶操作實(shí)例也是通過(guò)它來(lái)進(jìn)行。OpenStack各個(gè)項(xiàng)目之間既是互相獨(dú)立又是互相緊密聯(lián)系的。獨(dú)立是指各個(gè)項(xiàng)目之間的安裝部署都是相互隔離,互不干擾的。而緊密聯(lián)系是指各個(gè)項(xiàng)目之間又是互相協(xié)調(diào)工作的。總體架構(gòu)如圖2-1。圖2-1OpenStack架構(gòu)圖2.2Python與Django框架2.2.1Python語(yǔ)言Python是一種開(kāi)放的、面向?qū)ο蟮母呒?jí)計(jì)算機(jī)編程翻譯語(yǔ)言,第一次于1991年公布[3]。Python是強(qiáng)大的,因?yàn)镻ython目前已經(jīng)擁有一個(gè)富有而強(qiáng)大的模塊庫(kù),因?yàn)檫@個(gè)庫(kù),Python處理事情十分的快速方便。不僅如此,Python還可以在其它語(yǔ)言中使用它們的各種模塊[4]。Python語(yǔ)言有以下幾個(gè)特點(diǎn):(1)容易學(xué)習(xí),不僅語(yǔ)法簡(jiǎn)單、結(jié)構(gòu)清晰而且固定關(guān)鍵字少,使得Python擁有良好的閱讀性。正式因?yàn)镻ython的簡(jiǎn)單理念,使得少量代碼能完成的需求在其他語(yǔ)言里面可能需要上百行代碼才能完成。由此可以看出,Python語(yǔ)言是十分簡(jiǎn)單易學(xué)的。(2)面向?qū)ο?,采用了“以程序?yàn)閷?dǎo)向的編程方法”,該程序包括可重復(fù)使用該代碼的功能或程序。使用面向?qū)ο蟮木幊?,程序由?duì)象構(gòu)造,對(duì)象由數(shù)據(jù)和功能組成。(3)可擴(kuò)展性,可以使用C或C++來(lái)寫入某些程序,以加速執(zhí)行批判碼,或防止發(fā)布某些重要算法,然后再用Python的程序來(lái)呈現(xiàn)。Python語(yǔ)言類的模塊庫(kù)不僅強(qiáng)大,而且非常豐富,它可以很容易地將其它語(yǔ)言(尤其是C語(yǔ)言或C++語(yǔ)言)制作的各種模塊連接起來(lái),并且可以擴(kuò)展Python的功能。(4)模塊庫(kù),模塊庫(kù)也能理解成一個(gè)十分巨大的對(duì)象庫(kù),是前人為做某件事情而編寫的“工具”,Python能夠引用它們,來(lái)幫助編寫者快速進(jìn)行編程。2.2.2Django框架Django用于開(kāi)發(fā)網(wǎng)站,而且遵循MVC的設(shè)計(jì)理念。勞倫斯出版集團(tuán)開(kāi)發(fā)了這一框架,最初是用于開(kāi)發(fā)一個(gè)側(cè)重于新聞內(nèi)容的網(wǎng)站,后來(lái)才在社區(qū)開(kāi)源。它強(qiáng)調(diào)了代碼的再使用,多個(gè)組件可以很容易地以“插件”的形式為整個(gè)框架服務(wù),Django有許多強(qiáng)大的第三方插件,甚至您也可以很容易地開(kāi)發(fā)自己的工具插件[5]。因?yàn)镈jango遵循了MVC的設(shè)計(jì)理念,因此MVC有的特性Django都有,但Django不滿足MVC的開(kāi)發(fā)速度,并加以改造,成為MVT模式。當(dāng)中,V做的是處理邏輯,T為頁(yè)面,而M則被封裝成一個(gè)對(duì)象使用。在MVT處理模式中,實(shí)現(xiàn)了一個(gè)更符合項(xiàng)目開(kāi)發(fā)過(guò)程的升級(jí)處理構(gòu)想。在這種處理模式中,具有相對(duì)簡(jiǎn)單功能的控制器部分被封裝在路徑中,并且路徑被用于完成請(qǐng)求的分發(fā),路徑通過(guò)配置實(shí)現(xiàn)(即Django框架中的url與setting)。2.3LibvirtLibvirt是目前為止使用最為廣泛的KVM虛擬機(jī)進(jìn)行管理的工具和API[6]。Libvirt由三個(gè)部分組成,分別是編程語(yǔ)言的API、進(jìn)程、命令操作工具。Libvirt支持許多語(yǔ)言對(duì)它進(jìn)行模型包裝,包裝完后提供給該編程語(yǔ)言使用。2014年前釋放的代碼包括Python界面,經(jīng)過(guò)2014年的一個(gè)版本形成獨(dú)立的Libvirt-Python庫(kù)。Libvirt還實(shí)現(xiàn)了Ruby、Java、Perl等語(yǔ)言的綁定。而且Libvirt也適用多種類的虛擬機(jī)監(jiān)視器。Libvirt可以做到:即使域不相同,還能對(duì)實(shí)例進(jìn)行操作,普通操作同時(shí)包括了資源操作;通過(guò)執(zhí)行本地Libvirt-daemon,本地和遠(yuǎn)程機(jī)器可以訪問(wèn)和使用Libvirt功能。遠(yuǎn)程則是配置SSH;可用于管理和創(chuàng)建虛擬網(wǎng)絡(luò)以及管理物理和邏輯網(wǎng)絡(luò)接口等。目前Libvirt已經(jīng)在生產(chǎn)環(huán)境中廣泛使用。應(yīng)用程式包括各種控制線工具、圖形接口工具、連續(xù)集成、Web應(yīng)用程序、IaaS服務(wù)(其中就包括OpenStack),從而極大地促進(jìn)了開(kāi)發(fā)和集成。2.4EchartsEcharts是百度的一款Javascript開(kāi)放源軟件,可以支持多種瀏覽器使用。Echarts提供了API接口和豐富的文檔,通過(guò)正確定義和組合背景下發(fā)送的Json數(shù)據(jù),可以顯示所需的數(shù)據(jù)圖標(biāo)[7]。Echarts具有各種功能和效果以及友好的視圖,提供給開(kāi)發(fā)者良好的數(shù)據(jù)顯示。Echarts的視圖類型特點(diǎn)有許多,其中包括折線、圓球、水球、區(qū)域、動(dòng)態(tài)、易用性、可拓展性等。Echarts的特性可以使數(shù)據(jù)可視化分析將提供更高的性能和更廣泛的適應(yīng)性。在開(kāi)發(fā)使用主題數(shù)據(jù)的系統(tǒng)時(shí),可以根據(jù)用戶的需要設(shè)計(jì)和設(shè)計(jì)網(wǎng)頁(yè)數(shù)據(jù)顯示格式和后端數(shù)據(jù)顯示的方法。這大大提高了用戶與開(kāi)發(fā)者控制數(shù)據(jù)的能力和用戶與數(shù)據(jù)處理的能力。2.5小結(jié)本章主要是對(duì)OpenStack監(jiān)控系統(tǒng)需要的技術(shù)做介紹。先是對(duì)OpenStack做了簡(jiǎn)單的介紹,并且說(shuō)明了OpenStack的主要核心項(xiàng)目,分析了OpenStack的基礎(chǔ)架構(gòu)。然后對(duì)Python與Django框架做了簡(jiǎn)單分析與總結(jié)。之后說(shuō)明了Libvirt與Echarts的作用。了解并掌握以上的技術(shù)后,就可以對(duì)項(xiàng)目進(jìn)行開(kāi)發(fā)。后續(xù)的章節(jié)將主要講述系統(tǒng)各個(gè)模塊需求分析、模塊設(shè)計(jì)與實(shí)現(xiàn)、系統(tǒng)測(cè)試與部署。第三章OpenStack監(jiān)控系統(tǒng)需求分析3.1OpenStack監(jiān)控系統(tǒng)模塊及工作流程3.1.1OpenStack監(jiān)控系統(tǒng)模塊需求分析OpenStack監(jiān)控系統(tǒng)是一個(gè)面向監(jiān)控人員可以方便監(jiān)控OpenStack云平臺(tái)資源使用情況的系統(tǒng),該系統(tǒng)的主要功能是讓監(jiān)控人員登陸系統(tǒng)后能對(duì)OpenStack實(shí)例、OpenStack的Computer節(jié)點(diǎn)的資源(包括CPU利用率、內(nèi)存利用率、網(wǎng)絡(luò)流量吞吐、硬盤使用情況等)當(dāng)前狀態(tài)的把控,并且可以有效的防止實(shí)例或系統(tǒng)狀態(tài)異常所帶來(lái)的一系列問(wèn)題。因此對(duì)本系統(tǒng)的實(shí)現(xiàn)提出用戶模塊與數(shù)據(jù)模塊。用戶模塊主要是區(qū)分監(jiān)控人員與管理人員,里面包含了創(chuàng)建賬戶、登陸、修改密碼等功能。數(shù)據(jù)模塊主要是用于數(shù)據(jù)的應(yīng)用,里面包含監(jiān)控與報(bào)警功能。系統(tǒng)模塊需求分析如圖3-1所示。圖3-1OpenStack監(jiān)控系統(tǒng)模塊圖3.1.2OpenStack監(jiān)控模塊間工作流程系統(tǒng)的模塊間工作流程是基于OpenStack平臺(tái)部署以及實(shí)例運(yùn)行完畢后,首先由用戶模塊中的監(jiān)控人員組在登陸模塊進(jìn)行登入系統(tǒng),再由OpenStack監(jiān)控系統(tǒng)的數(shù)據(jù)模塊采集獲取所需的監(jiān)控資源數(shù)據(jù),再對(duì)采集的資源數(shù)據(jù)進(jìn)行處理,之后將處理完的數(shù)據(jù)存入數(shù)據(jù)庫(kù)中,最后由監(jiān)控系統(tǒng)中數(shù)據(jù)模塊的監(jiān)控功能在前端頁(yè)面展示,報(bào)警功能則是當(dāng)數(shù)據(jù)有異常發(fā)出報(bào)警。綜上所述及圖3-1得出,系統(tǒng)之間兩個(gè)模塊及功能互相工作,密不可分。模塊工作之間流程關(guān)系如圖3-2所示。圖3-2OpenStack監(jiān)控系統(tǒng)模塊關(guān)系流程圖3.2用戶模塊需求分析OpenStack監(jiān)控平臺(tái)用戶管理模塊主要是用于用戶的權(quán)限區(qū)分。監(jiān)控人員不需要具有注冊(cè)賬號(hào)的權(quán)限,注冊(cè)賬號(hào)由管理員進(jìn)行操作。因此整個(gè)系統(tǒng)的登陸頁(yè)面有兩個(gè),其中管理員登陸頁(yè)面使用的是Django自帶的后臺(tái)登陸頁(yè)面。而監(jiān)控人員的登陸模塊則是前端登陸頁(yè)面。并且兩個(gè)登陸功能的賬號(hào)不互通。綜上提出對(duì)用戶模塊的需求分析(如圖3-3所示):(1)管理人員用戶需求:作為系統(tǒng)的管理者,具有監(jiān)控用戶的增、刪、改、查等操作權(quán)限。既可以為監(jiān)控人員創(chuàng)建登陸賬號(hào),為監(jiān)控人員初始化密碼,并且可以知道監(jiān)控人員賬號(hào)所有信息,擁有監(jiān)控用戶所有權(quán)。(2)監(jiān)控人員用戶需求:而監(jiān)控人員不能自行注冊(cè)監(jiān)控賬號(hào),只能登陸指定賬號(hào)對(duì)OpenStack實(shí)例進(jìn)行監(jiān)控,只擁有改、查等操作權(quán)限。即只能夠修改自己賬號(hào)密碼,當(dāng)監(jiān)控人員忘記自己密碼時(shí)只能聯(lián)系管理員進(jìn)行修改或者告知,能夠看見(jiàn)自己賬號(hào)的信息。(3)登陸功能需求:登陸功能主要是用于監(jiān)控人員登陸監(jiān)控平臺(tái)以及管理人員登陸后臺(tái)系統(tǒng)。判斷是否能登陸平臺(tái)及后臺(tái)的唯一憑證是用戶名與密碼。并且管理人員與監(jiān)控人員擁有兩個(gè)不同的登陸頁(yè)面。管理人員使用的是Django框架自帶的后臺(tái)登陸頁(yè)面,而監(jiān)控人員則使用本系統(tǒng)的登陸頁(yè)面。兩種用戶的區(qū)別是管理權(quán)限不同。但登陸憑證一樣都為自己的賬號(hào)密碼。管理用戶以及監(jiān)控用戶都需要輸入正確的賬號(hào)密碼才能登入系統(tǒng)以及后臺(tái)。(4)創(chuàng)建賬號(hào)需求:監(jiān)控用戶不能自主創(chuàng)建賬號(hào),只能通過(guò)管理員發(fā)放的賬號(hào)登陸。因此平臺(tái)的登陸模塊不需要注冊(cè)功能。(5)修改密碼需求:監(jiān)控人員與管理人員都能夠自主修改密碼。并且管理人員還能對(duì)監(jiān)控人員進(jìn)行密碼修改,當(dāng)監(jiān)控人員忘記密碼是,只能通過(guò)聯(lián)系管理人員進(jìn)行密碼修改或告知。圖3-3OpenStack監(jiān)控系統(tǒng)用戶模塊需求分析圖3.3數(shù)據(jù)模塊需求分析OpenStack監(jiān)控平臺(tái)數(shù)據(jù)模塊分別實(shí)現(xiàn)OpenStack實(shí)例資源數(shù)據(jù)的采集、數(shù)據(jù)的處理以及數(shù)據(jù)的輸出。因此提出數(shù)據(jù)管理模塊需求分析(需求分析圖可參考圖3-2):(1)數(shù)據(jù)的采集:監(jiān)控平臺(tái)需要及時(shí)準(zhǔn)確的清楚當(dāng)前實(shí)例的狀態(tài),因此OpenStack資源數(shù)據(jù)的采集需要準(zhǔn)確、實(shí)時(shí)。不僅要采集OpenStack實(shí)例的資源,同樣也需要采集物理主機(jī)的資源,因?yàn)槲锢碇鳈C(jī)的狀態(tài)決定了實(shí)例的狀態(tài)。采集時(shí)需要區(qū)分這兩個(gè)區(qū)別。(2)數(shù)據(jù)的處理:監(jiān)控平臺(tái)需要做到OpenStack實(shí)例以及物理主機(jī)實(shí)時(shí)監(jiān)控,則代表采集的數(shù)據(jù)量龐大,首先應(yīng)做到區(qū)分實(shí)例資源數(shù)據(jù)與主機(jī)資源數(shù)據(jù),需要將實(shí)例資源數(shù)據(jù)與主機(jī)資源數(shù)據(jù)分開(kāi)存儲(chǔ)。在實(shí)例資源數(shù)據(jù)與主機(jī)資源數(shù)據(jù)分開(kāi)存儲(chǔ)的同時(shí)也需要將不同的資源種類也分開(kāi)存儲(chǔ)。這樣更有益于我們對(duì)數(shù)據(jù)的使用。不同的資源數(shù)據(jù)可能擁有不同的特性,我們可以將采集的資源數(shù)據(jù)進(jìn)行格式統(tǒng)一化。這樣會(huì)更加方便存儲(chǔ)與處理應(yīng)用。(3)數(shù)據(jù)的輸出:系統(tǒng)采集、處理過(guò)后的資源數(shù)據(jù)需要在監(jiān)控平臺(tái)前端輸出,輸出的首要方式為動(dòng)態(tài)圖表顯示,動(dòng)態(tài)圖表需要能直觀的觀察到OpenStack實(shí)例以及物理主機(jī)的實(shí)時(shí)狀態(tài),因此需要簡(jiǎn)潔明了。次要方式為文字表達(dá),用文字顯示監(jiān)控時(shí)期每個(gè)時(shí)刻的實(shí)際狀態(tài)數(shù)據(jù),有利于監(jiān)控人員觀察實(shí)際數(shù)據(jù)發(fā)現(xiàn)問(wèn)題。并且能夠下載監(jiān)控時(shí)期的狀態(tài)圖表。(4)監(jiān)控功能:OpenStack監(jiān)控平臺(tái)監(jiān)控功能主要是用于查看OpenStack云平臺(tái)上運(yùn)行實(shí)例的狀態(tài)。用戶可以清楚的了解當(dāng)前云實(shí)例的狀態(tài)。監(jiān)控人員需要準(zhǔn)確知道當(dāng)前實(shí)例的運(yùn)行狀態(tài),因此資源數(shù)據(jù)的采集需要確保及時(shí)與準(zhǔn)確,這是監(jiān)控功能的前提。數(shù)據(jù)保存格式統(tǒng)一方便保存與使用。做到實(shí)例實(shí)時(shí)的監(jiān)控。能夠保存歷時(shí)監(jiān)控趨勢(shì)圖,并且不僅要圖表顯示,需要有真實(shí)文字監(jiān)控?cái)?shù)據(jù)。(5)報(bào)警功能:當(dāng)實(shí)例出現(xiàn)異常時(shí),監(jiān)控人員則需要精準(zhǔn)及時(shí)的收到實(shí)例錯(cuò)誤狀態(tài),由于每個(gè)使用者的實(shí)際情況可能不同,報(bào)警內(nèi)容能夠支持自定義設(shè)置,并且按實(shí)際要求設(shè)置報(bào)警閾值,達(dá)到這個(gè)閾值系統(tǒng)則發(fā)出報(bào)警,當(dāng)然也含有不報(bào)警的選項(xiàng)。報(bào)警方式可以有郵件報(bào)警、微信報(bào)警。3.4小結(jié)本章首先描述了OpenStack監(jiān)控系統(tǒng)的整體模塊結(jié)構(gòu)還有工作流程。然后對(duì)系統(tǒng)的用戶模塊的登陸功能、創(chuàng)建功能、刪除功能;數(shù)據(jù)模塊的數(shù)據(jù)采集、數(shù)據(jù)處理、數(shù)據(jù)輸出、監(jiān)控功能、報(bào)警功能等進(jìn)行需求分析。詳細(xì)描述了兩個(gè)模塊的工作內(nèi)容、兩個(gè)模塊所需要提供的功能、各個(gè)功能之間的聯(lián)系,并且提出以及區(qū)分管理人員和監(jiān)控人員兩個(gè)概念,為后續(xù)的設(shè)計(jì)與實(shí)現(xiàn)規(guī)劃了大致系統(tǒng)框架,并且奠定了基礎(chǔ)。在接下來(lái)的章節(jié),會(huì)根據(jù)本章的需求功能分析進(jìn)行具體的設(shè)計(jì)與系統(tǒng)開(kāi)發(fā)。第四章OpenStack監(jiān)控平臺(tái)設(shè)計(jì)與實(shí)現(xiàn)4.1監(jiān)控平臺(tái)整體結(jié)構(gòu)設(shè)計(jì)選擇Python編程語(yǔ)言進(jìn)行系統(tǒng)開(kāi)發(fā)的原因很簡(jiǎn)單,整個(gè)OpenStack項(xiàng)目就是用Python完成的,并且提供HTTP形式的RESTfulAPI與PythonClientAPI兩種API,而且在數(shù)據(jù)采集方面考慮到不能對(duì)OpenStack服務(wù)器性能影響過(guò)大的情況下,選用腳本采集數(shù)據(jù)的方法來(lái)進(jìn)行數(shù)據(jù)采集,再存進(jìn)數(shù)據(jù)庫(kù)服務(wù)器。因此OpenStack監(jiān)控平臺(tái)選擇使用Python語(yǔ)言進(jìn)行開(kāi)發(fā)。根據(jù)Django框架的特點(diǎn),滿足快速開(kāi)發(fā)監(jiān)控系統(tǒng)的需求。因此監(jiān)控平臺(tái)選擇Django框架作為系統(tǒng)的后端框架,AdminLTE[8]框架作為系統(tǒng)的前端框架,用作前端Web頁(yè)面渲染。在采集數(shù)據(jù)的工作上,采用Python編寫的腳本對(duì)OpenStack服務(wù)器進(jìn)行數(shù)據(jù)采集,并且使用Mysql數(shù)據(jù)庫(kù)存儲(chǔ)數(shù)據(jù)。監(jiān)控系統(tǒng)整體結(jié)構(gòu)如圖4-1。圖4-1OpenStack監(jiān)控系統(tǒng)整體框架圖OpenStack監(jiān)控平臺(tái)的開(kāi)發(fā)都按照Django項(xiàng)目開(kāi)發(fā)流程進(jìn)行,監(jiān)控系統(tǒng)項(xiàng)目結(jié)構(gòu)如圖4-2所示。圖4-2OpenStack監(jiān)控系統(tǒng)代碼結(jié)構(gòu)圖如圖4-2所示,整個(gè)OpenStack監(jiān)控系統(tǒng)包括三個(gè)部分。其中app為監(jiān)控系統(tǒng)的具體實(shí)現(xiàn)部分,負(fù)責(zé)整個(gè)系統(tǒng)的展現(xiàn)與邏輯處理,里面包含了所有模塊的實(shí)現(xiàn)代碼,是整個(gè)監(jiān)控系統(tǒng)的核心部分。myOS為監(jiān)控系統(tǒng)的配置文件,其中包括配置所需的數(shù)據(jù)庫(kù)、中間件與監(jiān)控系統(tǒng)入口url等。static則是監(jiān)控系統(tǒng)的前端渲染文件目錄,里面包含的是AdminLET渲染文件。4.2用戶模塊設(shè)計(jì)與實(shí)現(xiàn)4.2.1用戶創(chuàng)建由于監(jiān)控系統(tǒng)的賬戶由管理人員來(lái)創(chuàng)建,而且Django框架自帶一個(gè)管理后臺(tái),當(dāng)管理人員登陸后臺(tái)后,可以為用戶組新建用戶,如圖4-3所示。APP內(nèi)用戶則是監(jiān)控人員用戶組,可以點(diǎn)擊增加來(lái)新增監(jiān)控人員賬戶,認(rèn)證授權(quán)用戶則是管理員用戶組,可以增加一名管理員。圖4-3創(chuàng)建用戶圖創(chuàng)建監(jiān)控人員賬號(hào)需要填寫用戶名、密碼、郵箱、性別等基本信息,需要在models中添加模型代碼如圖4-4所示,實(shí)現(xiàn)出來(lái)創(chuàng)建用戶過(guò)程如圖4-5所示。實(shí)際過(guò)程就是通過(guò)后臺(tái)創(chuàng)建一用戶表,通過(guò)管理員點(diǎn)擊增加用戶完成監(jiān)控員注冊(cè)的部分,在系統(tǒng)數(shù)據(jù)庫(kù)中添加一條賬戶信息,使得監(jiān)控人員能夠獲得賬號(hào)密碼登陸監(jiān)控平臺(tái)。圖4-4創(chuàng)建用戶模型代碼圖4-5創(chuàng)建用戶過(guò)程圖4.2.2用戶登錄用戶登陸流程用戶登錄流程圖如圖4-6所示,監(jiān)控人員若進(jìn)入系統(tǒng)登錄界面進(jìn)行登陸操作,系統(tǒng)后臺(tái)會(huì)先檢測(cè)監(jiān)控人員是否輸入賬號(hào)密碼,若無(wú)則提示輸入。輸入賬號(hào)密碼后,后臺(tái)繼續(xù)對(duì)輸入的賬號(hào)密碼與數(shù)據(jù)庫(kù)進(jìn)行匹配,匹配成功則登陸成功,進(jìn)入系統(tǒng),匹配錯(cuò)誤則提醒監(jiān)控人員輸入正確的用戶名密碼。圖4-6OpenStack監(jiān)控系統(tǒng)登陸流程圖用戶登陸界面實(shí)現(xiàn)登陸頁(yè)面由一個(gè)文本表單、一個(gè)密碼表單以及一個(gè)按鈕構(gòu)成,如圖4-7所示。圖4-7登陸頁(yè)面登錄功能核心邏輯實(shí)現(xiàn)如圖4-8所示,login_form是先定義創(chuàng)建好的表單,is_valid()是Form表單里面封裝好的校驗(yàn)方法,結(jié)果返回True或者False,當(dāng)校驗(yàn)到表單中有值返回True,反之返回False,校驗(yàn)過(guò)后會(huì)將表單中的值存在cleaned_data字典中,login_form.cleaned_data.get('username')就是獲取校驗(yàn)過(guò)后表單中的用戶名,密碼同理。models.User.objects.get(name=username)是數(shù)據(jù)庫(kù)匹配,使用try異常機(jī)制,執(zhí)行如果錯(cuò)誤,說(shuō)明數(shù)據(jù)庫(kù)中不存在該username,就轉(zhuǎn)回登陸頁(yè),如果能夠正常獲取username,則進(jìn)行user.password==password密碼匹配。request.session['is_login']=True是創(chuàng)建session字典保存當(dāng)前用戶登錄狀態(tài)為True,下面的user_id、user_name同樣是使用session字典保存當(dāng)前用戶的信息。整體登錄邏輯流程為當(dāng)監(jiān)控人員輸入賬號(hào)密碼進(jìn)行登陸時(shí),后臺(tái)會(huì)先獲取輸入的值,若為空值則提醒用戶輸入正確內(nèi)容。如果輸入的用戶名在數(shù)據(jù)庫(kù)中存在,則進(jìn)行下一步密碼匹配,當(dāng)密碼匹配成功后,會(huì)分配出一個(gè)session字典寫入用戶狀態(tài)和數(shù)據(jù),session會(huì)保存在后臺(tái),目的是用session記錄用戶登錄狀態(tài),這樣做的好處可以防止用戶重復(fù)登陸與用戶數(shù)據(jù)調(diào)用。當(dāng)密碼匹配不成功,則提示密碼不正確。圖4-8登陸核心邏輯代碼4.2.3密碼修改修改密碼流程修改密碼的流程如圖4-9所示,在修改密碼時(shí)系統(tǒng)后臺(tái)會(huì)先檢測(cè)監(jiān)控人員是否輸入正確的數(shù)值內(nèi)容。當(dāng)檢測(cè)到有效內(nèi)容值后,會(huì)繼續(xù)判斷輸入的密碼都是否輸入正確。若都正確則修改成功,返回登陸頁(yè)面。若錯(cuò)誤則提示重新輸入。圖4-9修改密碼流程圖修改密碼實(shí)現(xiàn)修改密碼頁(yè)面由三個(gè)文本表單、一個(gè)超鏈接以及一個(gè)按鈕所構(gòu)成,如圖4-10所示。圖4-10修改密碼頁(yè)面修改密碼功能核心邏輯實(shí)現(xiàn)如圖4-11所示,代碼實(shí)現(xiàn)使用的邏輯方法與登陸功能實(shí)現(xiàn)代碼大同小異,先用is_valid()方法校驗(yàn)表單,cleaned_data字典保存表單值,再用ifelse語(yǔ)句判斷密碼是否相同,修改密碼整體邏輯流程為:當(dāng)監(jiān)控人員進(jìn)入修改密碼功能入口時(shí),系統(tǒng)會(huì)自動(dòng)去到修改密碼頁(yè)面,如圖4-10所示。監(jiān)控人員需要按照?qǐng)D片的需求填入密碼信息,后臺(tái)會(huì)先獲取輸入的值,進(jìn)行兩次密碼匹配,第一次對(duì)原密碼進(jìn)行匹配,若輸入的原密碼與登陸密碼(數(shù)據(jù)庫(kù)中密碼)相同后會(huì)進(jìn)行第二次新密碼與確認(rèn)密碼的匹配,當(dāng)兩次密碼匹配都通過(guò)時(shí),將當(dāng)前的session會(huì)話清除,并且返回登陸頁(yè)面。若匹配不成功,則提示哪個(gè)密碼輸入錯(cuò)誤,重新輸入。圖4-11修改密碼核心邏輯代碼4.3數(shù)據(jù)模塊設(shè)計(jì)與實(shí)現(xiàn)4.3.1數(shù)據(jù)采集數(shù)據(jù)采集主要是對(duì)OpenStack平臺(tái)實(shí)例資源數(shù)據(jù)的采集,Libvirt是一個(gè)良好的虛擬機(jī)API,并且Python對(duì)Libvirt有很好的支持。Python里面有Libvirt-python庫(kù)。對(duì)我們數(shù)據(jù)采集起了很大的幫助。數(shù)據(jù)采集主要通過(guò)Python-LivbirtAPI編寫腳本從OpenStack平臺(tái)獲取所需的監(jiān)控資源數(shù)據(jù)。經(jīng)過(guò)分析及對(duì)比,對(duì)于OpenStack實(shí)例而言,CPU利用率、內(nèi)存使用率、硬盤使用情況、網(wǎng)絡(luò)吞吐量都是OpenStack實(shí)例性能的重要指標(biāo),對(duì)此選擇這四個(gè)資源指標(biāo)作為采集對(duì)象。由于Libvirt無(wú)法直接采集CPU利用率、內(nèi)存使用率的數(shù)據(jù),我們通過(guò)獲取的資源來(lái)計(jì)算出我們所需的指標(biāo)。公式[10]為:(1)CPU利用率=100×(CPUTIMENOW-CPUTIMESECONDSAGO)/(TIME×CPUNUM×1e9)(2)內(nèi)存使用率=((TOTALMEM-FREEMEM)/TOTALMEM)(3)硬盤I/O可以通過(guò)Libvirt直接獲?。?)網(wǎng)絡(luò)I/O可以通過(guò)Libvirt直接獲取數(shù)據(jù)采集腳本核心代碼(以CPU利用率為例)如圖4-12所示。代碼中conn為定義虛擬機(jī)的打開(kāi)連接,lookupByUUIDString(i.UUIDString()為尋找虛擬機(jī)的UUID方法,其中i遍歷了所有虛擬機(jī),info()[4]為特定值cputime。time.sleep(1)是為了每隔1秒采集cputime,從而算出cpu利用率。圖4-12采集CPU利用率核心代碼當(dāng)腳本連接OpenStack服務(wù)器時(shí)獲取實(shí)例狀態(tài)連接與實(shí)例UUID,在保證會(huì)話連接后,以UUID為標(biāo)識(shí),以時(shí)間為單位獲取實(shí)例的CPU資源,其中time為當(dāng)前時(shí)間,cpuusertime為CPU使用時(shí)間,cpunum為CPU數(shù)量,再經(jīng)過(guò)CPU利用率計(jì)算公式得出當(dāng)前實(shí)例CPU利用率。4.3.2數(shù)據(jù)處理數(shù)據(jù)處理主要是對(duì)采集的數(shù)據(jù)進(jìn)行處理與存儲(chǔ),采集回來(lái)的數(shù)據(jù)必定很多[9],而且各資源數(shù)據(jù)的格式都有可能不一樣,為了方便存儲(chǔ),將獲取的數(shù)據(jù)全部轉(zhuǎn)化成int或字符串類型,方便存入數(shù)據(jù)庫(kù)。監(jiān)控?cái)?shù)據(jù)庫(kù)表設(shè)計(jì)如4-13圖所示:圖4-13監(jiān)控?cái)?shù)據(jù)表圖4-12中UUID為實(shí)例的標(biāo)識(shí)符,用來(lái)獲取實(shí)例資源;name為實(shí)例名稱;host為實(shí)例IP地址;CPU為CPU利用率;MEM為內(nèi)存使用率;NETOUT為網(wǎng)絡(luò)輸出流量;NETIN為網(wǎng)絡(luò)輸入流量;WRBYTES為硬盤寫入速度;RDBYTES為硬盤讀入速度。存儲(chǔ)數(shù)據(jù)核心代碼如圖4-14所示。圖4-14存儲(chǔ)數(shù)據(jù)核心代碼4.3.3數(shù)據(jù)輸出監(jiān)控功能系統(tǒng)的監(jiān)控功能需要有數(shù)據(jù)的支撐。有了前面的數(shù)據(jù)采集與數(shù)據(jù)處理,就可以將數(shù)據(jù)展現(xiàn)出來(lái)成為監(jiān)控功能。以CPU利用率為例,本系統(tǒng)選用了百度的Echarts圖表插件作為監(jiān)控輸出的依據(jù)。監(jiān)控功能頁(yè)面如圖4-15所示。圖4-15監(jiān)控頁(yè)面監(jiān)控頁(yè)面包含了選擇實(shí)例下拉框、報(bào)警閾值設(shè)置、報(bào)警方式設(shè)置與實(shí)時(shí)監(jiān)控表構(gòu)成。實(shí)施監(jiān)控表x坐標(biāo)為CPU利用率,y坐標(biāo)為實(shí)時(shí)時(shí)間。顯示的數(shù)據(jù)就是此刻時(shí)間數(shù)據(jù)庫(kù)中CPU利用率的數(shù)值。實(shí)現(xiàn)實(shí)時(shí)CPU利用率監(jiān)控?cái)?shù)據(jù)輸出的核心代碼如圖4-16所示。使用$.getJSON()方法訪問(wèn)訪問(wèn)后臺(tái)數(shù)據(jù),并且加入定時(shí)器每秒訪問(wèn)后臺(tái)數(shù)據(jù),data.push(randomData(ret.data))將數(shù)據(jù)放入圖表中。圖4-16CPU利用率監(jiān)控核心代碼整體輸出數(shù)據(jù)過(guò)程:當(dāng)采集的數(shù)據(jù)存入數(shù)據(jù)庫(kù)后,系統(tǒng)后臺(tái)將數(shù)據(jù)封裝成json數(shù)據(jù),使用ajax按每一秒輪詢后臺(tái)的數(shù)據(jù)將其輸出在Echarts圖表中。報(bào)警功能報(bào)警功能依然需要有前面采集的數(shù)據(jù)做支撐,與監(jiān)控不同的是,由于系統(tǒng)選用郵箱與微信作為報(bào)警媒介,因此報(bào)警功能所需的數(shù)據(jù)還需要報(bào)警閾值、郵箱、微信信息等。報(bào)警頁(yè)面如圖4-17與18所示。圖4-17CPU利用率郵箱報(bào)警頁(yè)面圖4-18CPU利用率微信報(bào)警頁(yè)面報(bào)警功能頁(yè)面由兩個(gè)區(qū)域,一個(gè)是郵箱報(bào)警設(shè)置,一個(gè)是微信報(bào)警設(shè)置,內(nèi)容收集都是用戶輸入信息點(diǎn)擊確定提交表單的形式獲取。當(dāng)設(shè)置完成后,可以看到當(dāng)前設(shè)置的內(nèi)容。值得注意的是當(dāng)信息填寫錯(cuò)誤時(shí)無(wú)法提醒錯(cuò)誤信息,因此填寫需要確保信息正確。報(bào)警功能實(shí)現(xiàn)的核心代碼如圖4-19與20所示。圖4-19CPU利用率郵箱報(bào)警核心代碼圖4-20CPU利用率微信報(bào)警核心代碼Django框架擁有自動(dòng)發(fā)送郵箱的功能,只要在setting文件夾中配置好自己郵箱的信息,然后調(diào)用EmailMultiAlternatives方法即可實(shí)現(xiàn)發(fā)送郵件。而微信發(fā)送則是使用企業(yè)微信的接口,將所需的企業(yè)微信信息打包成json數(shù)據(jù),相應(yīng)接口即可實(shí)現(xiàn)發(fā)送微信。而判斷是否發(fā)送郵件或微信的依據(jù)則是當(dāng)前數(shù)據(jù)是否超于設(shè)定的閾值。因此系統(tǒng)后臺(tái)判斷是否報(bào)警的核心邏輯代碼如圖4-21所示。同監(jiān)控中$.getJSON()方法訪問(wèn)后臺(tái)數(shù)據(jù),(0|ret.data1)>={{gezdyyz}}再判斷獲取的數(shù)據(jù)值是否大于設(shè)置的閾值({{gezdyyz}}),{{gesendfs}}為用戶選定的報(bào)警方式,用if邏輯語(yǔ)句判斷執(zhí)行那種報(bào)警方式,都確定好后$.ajax()方法訪問(wèn)對(duì)應(yīng)的url(報(bào)警方式)進(jìn)行報(bào)警。圖4-21CPU利用率判斷報(bào)警核心邏輯代碼當(dāng)此刻監(jiān)控中的數(shù)據(jù)大于設(shè)定的閾值數(shù)據(jù),系統(tǒng)后臺(tái)則判斷當(dāng)前選擇的報(bào)警方式,若選擇的是郵箱報(bào)警,則調(diào)用圖4-19的方法實(shí)現(xiàn)報(bào)警郵件的發(fā)送,選擇微信報(bào)警也是同理,當(dāng)然也可以選擇不報(bào)警。只要填寫正確的郵箱地址與企業(yè)微信號(hào)的信息與自定義報(bào)警的內(nèi)容。當(dāng)監(jiān)控的實(shí)例資源超過(guò)設(shè)定的閾值,并且選擇報(bào)警方式,系統(tǒng)就會(huì)發(fā)出警告。如圖4-22與23所示。圖4-22CPU利用率郵箱報(bào)警圖4-23CPU利用率微信報(bào)警4.4小結(jié)本章主要是描述了OpenStack監(jiān)控系統(tǒng)的整體架構(gòu)設(shè)計(jì);用戶模塊的用戶創(chuàng)建、用戶登錄、修改密碼的設(shè)計(jì)與實(shí)現(xiàn)以及數(shù)據(jù)模塊的數(shù)據(jù)采集、數(shù)據(jù)處理、數(shù)據(jù)輸出的設(shè)計(jì)與實(shí)現(xiàn)。詳細(xì)描述了兩個(gè)模塊的各個(gè)功能設(shè)計(jì)實(shí)現(xiàn)的過(guò)程,并且貼出了設(shè)計(jì)流程圖與核心邏輯代碼。第五章系統(tǒng)測(cè)試5.1系統(tǒng)測(cè)試5.1.1測(cè)試環(huán)境搭建本系統(tǒng)是在OpenStack云平臺(tái)的基礎(chǔ)下運(yùn)行的,因此在測(cè)試系統(tǒng)時(shí)先使用vmware搭建最小化的OpenStack環(huán)境[11]。環(huán)境拓?fù)淙鐖D5-1所示。圖5-1OpenStack環(huán)境搭建拓?fù)鋱D由于搭建過(guò)程不是本項(xiàng)目的重點(diǎn)內(nèi)容,因此忽略搭建過(guò)程,搭建完成后在OpenStack創(chuàng)建Win10與Ubuntu兩個(gè)實(shí)例。如圖5-2圖5-2OpenStack環(huán)境創(chuàng)建實(shí)例5.1.2測(cè)試過(guò)程(1)運(yùn)行Win10實(shí)例,確保Win10實(shí)例正常運(yùn)行。如圖5-3所示。圖5-3Win10實(shí)例運(yùn)行(2)運(yùn)行獲取資源腳本,如圖5-4所示。圖5-4運(yùn)行獲取資源腳本(3)登陸監(jiān)控系統(tǒng),填入監(jiān)控人員賬號(hào)密碼進(jìn)入系統(tǒng),如圖5-5所示。圖5-5登陸監(jiān)控系統(tǒng)(4)對(duì)實(shí)例進(jìn)行監(jiān)控,此處選擇Win10實(shí)例,并且報(bào)警方式先設(shè)置為不報(bào)警,如圖5-6所示圖5-6監(jiān)控實(shí)例CPU利用率(5)對(duì)比實(shí)時(shí)資源情況,結(jié)果監(jiān)控中的CPU利用率趨勢(shì)圖與Win10CPU利用率趨勢(shì)圖十分接近,(由于本電腦配置不足,導(dǎo)致OpenStack實(shí)例中資源CPU利用率經(jīng)常出現(xiàn)持續(xù)100%+的情況)如圖5-7所示。圖5-7監(jiān)控實(shí)例CPU利用率對(duì)比圖(6)測(cè)試報(bào)警功能,將閾值設(shè)置為30,使用微信報(bào)警并且填寫企業(yè)微信信息與自定義內(nèi)容,然后進(jìn)行監(jiān)控,得出報(bào)警效果如圖5-8與5-9所示。圖5-8CPU報(bào)警設(shè)置圖5-9CPU微信報(bào)警5.2小結(jié)本章主要描述了監(jiān)控系統(tǒng)的測(cè)試過(guò)程,在測(cè)試系統(tǒng)之前先部署了一個(gè)OpenStack環(huán)境用于系統(tǒng)測(cè)試,詳細(xì)的對(duì)登陸、數(shù)據(jù)采集、監(jiān)控功能、報(bào)警功能等進(jìn)行了測(cè)試,測(cè)試的目的主要是OpenStack監(jiān)控平臺(tái)對(duì)節(jié)點(diǎn)獲取數(shù)據(jù)穩(wěn)定性。系統(tǒng)數(shù)據(jù)的可靠性。系統(tǒng)的報(bào)警可靠性,結(jié)果以上測(cè)試結(jié)果均為正常。到此整個(gè)監(jiān)控系統(tǒng)的項(xiàng)目設(shè)計(jì)實(shí)現(xiàn)已經(jīng)接近尾聲。第六章總結(jié)與展望云計(jì)算的商業(yè)化使互聯(lián)網(wǎng)的發(fā)展發(fā)生了顛覆性的革命變化。正是OpenStack使用的人多,我們才會(huì)注意到一個(gè)監(jiān)控平臺(tái)對(duì)其的重要性,本文就是通過(guò)對(duì)相關(guān)監(jiān)控技術(shù)的研究,提出使用Python設(shè)計(jì)實(shí)現(xiàn)出一個(gè)OpenStack監(jiān)控平臺(tái)。本文研究的內(nèi)如主要有以下幾個(gè)部分:(1)調(diào)查OpenStack監(jiān)控項(xiàng)目的研究背景及意義,通過(guò)國(guó)內(nèi)外現(xiàn)況的調(diào)研,指出對(duì)OpenStack精準(zhǔn)監(jiān)控的必要性,明確本課題的研究?jī)?nèi)容和目的。(2)對(duì)本課題所需要涉及的相關(guān)技術(shù)進(jìn)行技術(shù)調(diào)研與介紹,研究OpenStack結(jié)構(gòu)以及各個(gè)組件的工作內(nèi)容與各組件之間的關(guān)系,確定使用相關(guān)技術(shù)后確定系統(tǒng)的大致框架,每個(gè)部分所使用的技術(shù)。(3)明確本系統(tǒng)的具體架構(gòu),對(duì)其進(jìn)行模塊的需求分析,并對(duì)模塊拆分成每個(gè)細(xì)節(jié)功能點(diǎn)進(jìn)行需求分析,這樣才能更好的對(duì)模塊進(jìn)行設(shè)計(jì)與實(shí)現(xiàn)。(4)確定好每個(gè)細(xì)節(jié)點(diǎn)的需求分析后,再對(duì)每個(gè)功能進(jìn)行設(shè)計(jì)與開(kāi)發(fā),在開(kāi)發(fā)過(guò)程中雖然遇到困難,但可以通過(guò)與他人進(jìn)行交流,逐步解決自己遇到的問(wèn)題。(5)當(dāng)系統(tǒng)開(kāi)發(fā)完畢后,測(cè)試系統(tǒng)是必不可少的步驟,是為了檢查系統(tǒng)功能的輸入以及輸出是否達(dá)到自己理想的狀態(tài)。OpenStack監(jiān)控系統(tǒng)雖然已經(jīng)簡(jiǎn)單的開(kāi)發(fā)完成,但其中還是有很多不足之處,比如系統(tǒng)用戶的權(quán)限管理還不夠明確,登陸界面也不夠完善,監(jiān)控的數(shù)據(jù)量比較龐大,可以對(duì)數(shù)據(jù)采集、處理進(jìn)行優(yōu)化。并且本系統(tǒng)可以往OpenStack管理平臺(tái)去發(fā)展,后續(xù)可以將自動(dòng)恢復(fù)異常實(shí)例、創(chuàng)建實(shí)例、刪除實(shí)例、云桌面等功能逐一實(shí)現(xiàn),成為一個(gè)比較完善的OpenStack管理平臺(tái)。而且OpenStack的更新速度很快,如果要做成一個(gè)緊追其步伐的系統(tǒng),必須時(shí)刻關(guān)注著OpenStack社區(qū)的發(fā)展,不斷的更新平臺(tái),才會(huì)使平臺(tái)做得更好。在導(dǎo)師的指導(dǎo)下,本次課題順利完成,通過(guò)本次課題的研究,其過(guò)程讓我受益匪淺,從沒(méi)接觸過(guò)Django框架,到從有到無(wú)設(shè)計(jì)開(kāi)發(fā)出一個(gè)監(jiān)控系統(tǒng)。過(guò)程無(wú)疑是心酸的,慶幸的是自己擁有一顆不放棄的心,慢慢的學(xué)習(xí),慢慢的成長(zhǎng)。最讓我感悟的是遇到問(wèn)題,要先主動(dòng)思考,將思考思路與別人分享,清楚自己的問(wèn)題出現(xiàn)在哪里,這樣下次遇到同樣的問(wèn)題,就知道自己的思路錯(cuò)在哪里,應(yīng)該怎么去思考才是正確的。因此我十分感恩我的導(dǎo)師與同學(xué)們,讓自己成長(zhǎng)的不僅僅只有自己,還有一路上的同伴。參考文獻(xiàn)[1]MiriamSubiksha.云計(jì)算技術(shù)將如何影響商業(yè)世界[N].中國(guó)信息化周報(bào),2018-12-17(015).[2]OpenStackOpenStack[EB/OL.]/install-guide/,2019[3]朱睿思.淺談不同編程語(yǔ)言對(duì)計(jì)算機(jī)軟件開(kāi)發(fā)的影響[J].電腦知識(shí)與技術(shù):學(xué)術(shù)交流,2018(8):3-3.[4]徐玉芳,蘇斌.Python語(yǔ)言特點(diǎn)及其在機(jī)器學(xué)習(xí)中的應(yīng)用[J].計(jì)算機(jī)產(chǎn)品與流通,2019(12):142.[5]DjangoDjango[EB/OL.]/,2019[6]LibvirtLibvirt[EB/OL.]https:///apps.html/,2019[7]黃宇棟.百度Echarts在數(shù)據(jù)可視化分析中的應(yīng)用[J].金融科技時(shí)代,2018(06):43-45.[8]AdminLTEAdminLTE[EB/OL.]https://adminlte.io,2019[9]朱園園董曄.基于OpenStack云資源監(jiān)控系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)[J].電腦知識(shí)與技術(shù),2019(18):247-248.[10]BLOGBLOG[EB/OL.]/10616534/1878609,2019[11]OpenStackOpenStack[EB/OL.]/install-guide/openstack-services.html致謝2020年是16級(jí)學(xué)子畢業(yè)的一年,這一篇畢業(yè)論文也代表著我們的本科生涯已經(jīng)快結(jié)束,在此,我十分感謝這4年來(lái)我遇到的每一個(gè)人,他們每一個(gè)人都或多或少使我成長(zhǎng)。讓我在廣東東軟學(xué)院留下了美好的回憶。對(duì)于這個(gè)課題的編寫,我由衷感謝我的指導(dǎo)老師冼敏儀老師,從確認(rèn)選題到完成論文。她給我許多幫助,在我無(wú)從下手時(shí)她給予了我前進(jìn)的方向,同時(shí)她也是我專業(yè)課的科任老師,她教會(huì)了我許多網(wǎng)絡(luò)工程的理論知識(shí)與實(shí)踐知識(shí),向她提問(wèn)總是耐心的解答我的問(wèn)題,正式因?yàn)槿绱?,也提高了我解決問(wèn)題的能力。因此我由衷的感謝她。同時(shí)我也十分感謝在設(shè)計(jì)與開(kāi)發(fā)給予我?guī)椭耐瑢W(xué),在遇到編成問(wèn)題時(shí)給我?guī)椭?,提出寶貴的意見(jiàn),積極的幫助我解決問(wèn)題,才能十分順利的完成設(shè)計(jì)與實(shí)現(xiàn)。最后,我特別感謝我的家人,在我畢業(yè)年期間給予我愛(ài)與包容,讓我更加感受到“家是最好的港灣”這句話。

怎樣提高電腦系統(tǒng)運(yùn)行速度WindowsXP的啟動(dòng)速度比Windows2000要快30%左右,但相對(duì)于Windows98仍然要慢了不少,不過(guò),我們可以通過(guò)優(yōu)化設(shè)置,來(lái)大大提高WindowsXP的啟動(dòng)速度。加快系統(tǒng)啟動(dòng)速度主要有以下方法:盡量減少系統(tǒng)在啟動(dòng)時(shí)加載的程序與服務(wù);對(duì)磁盤及CPU等硬件進(jìn)行優(yōu)化設(shè)置;修改默認(rèn)設(shè)置,減少啟動(dòng)等待時(shí)間等。這些方法大部分既可減少系統(tǒng)啟動(dòng)的時(shí)間,又可以節(jié)省系統(tǒng)資源,加快電腦運(yùn)行速度。1.加快系統(tǒng)啟動(dòng)速度WindowsXP的啟動(dòng)速度比Windows2000要快30%左右,但相對(duì)于Windows98仍然要慢了不少,不過(guò),我們可以通過(guò)優(yōu)化設(shè)置,來(lái)大大提高WindowsXP的啟動(dòng)速度。加快系統(tǒng)啟動(dòng)速度主要有以下方法:盡量減少系統(tǒng)在啟動(dòng)時(shí)加載的程序與服務(wù);對(duì)磁盤及CPU等硬件進(jìn)行優(yōu)化設(shè)置;修改默認(rèn)設(shè)置,減少啟動(dòng)等待時(shí)間等。這些方法大部分既可減少系統(tǒng)啟動(dòng)的時(shí)間,又可以節(jié)省系統(tǒng)資源,加快電腦運(yùn)行速度。(1)MsconfigWindowsXP的啟動(dòng)速度在系統(tǒng)安裝初期還比較快,但隨著安裝的軟件不斷增多,系統(tǒng)的啟動(dòng)速度會(huì)越來(lái)越慢,這是由于許多軟件把自己加在了啟動(dòng)程序中,這樣開(kāi)機(jī)即需運(yùn)行,大大降低了啟動(dòng)速度,而且也占用了大量的系統(tǒng)資源。對(duì)于這樣一些程序,我們可以通過(guò)系統(tǒng)配置實(shí)用程序Msconfig將它們從啟動(dòng)組中排除出去。選擇“開(kāi)始”菜單中的“運(yùn)行”命令,在“運(yùn)行”對(duì)話框中鍵入“Msconfig”,回車后會(huì)彈出“系統(tǒng)配置實(shí)用程序”對(duì)話框,選擇其中的“啟動(dòng)”選項(xiàng)卡(如圖1),該選項(xiàng)卡中列出了系統(tǒng)啟動(dòng)時(shí)加載的項(xiàng)目及來(lái)源,仔細(xì)查看每個(gè)項(xiàng)目是否需要自動(dòng)加載,否則清除項(xiàng)目前的復(fù)選框,加載的項(xiàng)目越少,啟動(dòng)的速度就越快。設(shè)置完成后需要重新啟動(dòng)方能生效。(2)BootvisBootvis是微軟提供的一個(gè)啟動(dòng)優(yōu)化工具,可提高WindowsXP的啟動(dòng)速度。用BootVis提升WindowsXP的啟動(dòng)速度必須按照正確的順序進(jìn)行操作,否則將不會(huì)起到提速的效果。其正確的操作方法如下:?jiǎn)?dòng)Bootvis,從其主窗口(如圖2)中選擇“工具”菜單下的“選項(xiàng)”命令,在“符號(hào)路徑”處鍵入Bootvis的安裝路徑,如“C:\ProgramFiles\Bootvis”,單擊“保存”退出。從“跟蹤”菜單中選擇“下次引導(dǎo)”命令,會(huì)彈出“重復(fù)跟蹤”對(duì)話框,單擊“確定”按鈕,BootVis將引導(dǎo)WindowsXP重新啟動(dòng),默認(rèn)的重新啟動(dòng)時(shí)間是10秒。系統(tǒng)重新啟動(dòng)后,BootVis自動(dòng)開(kāi)始運(yùn)行并記錄啟動(dòng)進(jìn)程,生成啟動(dòng)進(jìn)程的相關(guān)BIN文件,并把這個(gè)記錄文件自動(dòng)命名為TRACE_BOOT_1_1。程序記錄完啟動(dòng)進(jìn)程文件后,會(huì)重新啟動(dòng)BootVis主界面,在“文件”菜單中選擇剛剛生成的啟動(dòng)進(jìn)程文件“TRACE_BOOT_1_1”。窗口中即會(huì)出現(xiàn)“CPU>使用”、“磁盤I/O”、“磁盤使用”、“驅(qū)動(dòng)程序延遲”等幾項(xiàng)具體圖例供我們分析,不過(guò)最好還是讓BootVis程序來(lái)自動(dòng)進(jìn)行分析:從“跟蹤”菜單中選擇“系統(tǒng)優(yōu)化”命令,程序會(huì)再次重新啟動(dòng)計(jì)算機(jī),并分析啟動(dòng)進(jìn)程文件,從而使計(jì)算機(jī)啟動(dòng)得更快。(3)禁用多余的服務(wù)WindowsXP在啟動(dòng)時(shí)會(huì)有眾多程序或服務(wù)被調(diào)入到系統(tǒng)的內(nèi)存中,它們往往用來(lái)控制Windows系統(tǒng)的硬件設(shè)備、內(nèi)存、文件管理或者其他重要的系統(tǒng)功能。但這些服務(wù)有很多對(duì)我們用途不大甚至根本沒(méi)有用,它們的存在會(huì)占用內(nèi)存和系統(tǒng)資源,所以應(yīng)該將它們禁用,這樣最多可以節(jié)省70MB的內(nèi)存空間,系統(tǒng)速度自然也會(huì)有很大的提高。選擇“開(kāi)始”菜單中的“運(yùn)行”命令,在“運(yùn)行”對(duì)話框鍵入“services.msc”后回車,即可打開(kāi)“服務(wù)”窗口。窗口的服務(wù)列表中列出了系統(tǒng)提供的所有服務(wù)的名稱、狀態(tài)及啟動(dòng)類型。要修改某個(gè)服務(wù),可從列表雙擊它,會(huì)彈出它的屬性對(duì)話框(如圖3),你可從“常規(guī)”選項(xiàng)卡對(duì)服務(wù)進(jìn)行修改,通過(guò)單擊“啟動(dòng)”、“停止”、“暫?!?、“恢復(fù)”四個(gè)按鈕來(lái)修改服務(wù)的狀態(tài),并可從“啟動(dòng)類型”下拉列表中修改啟動(dòng)類型,啟動(dòng)類型有“自動(dòng)”、“手動(dòng)”、“已禁用”三種。如果要禁止某個(gè)服務(wù)在啟動(dòng)自動(dòng)加載,可將其啟動(dòng)類型改為“已禁用”。WindowsXP提供的所有服務(wù)有36個(gè)默認(rèn)是自動(dòng)啟動(dòng)的,實(shí)際上,其中只有8個(gè)是必須保留的(見(jiàn)下表),其他的則可根據(jù)自己的需要進(jìn)行設(shè)置,每種服務(wù)的作用在軟件中有提示。4)修改注冊(cè)表來(lái)減少預(yù)讀取,減少進(jìn)度條等待時(shí)間WindowsXP在啟動(dòng)過(guò)程中會(huì)出現(xiàn)一個(gè)進(jìn)度條,我們可以通過(guò)修改注冊(cè)表,讓進(jìn)度條只跑一圈就進(jìn)入登錄畫面。選擇“開(kāi)始”菜單中的“運(yùn)行”命令,在“運(yùn)行”對(duì)話框鍵入“regedit”命令后回車,即可啟動(dòng)注冊(cè)表編輯器,在注冊(cè)表中找HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SessionManager\MemoryManagement\PrefetchParameters,選擇其下的EnablePrefetcher鍵,把它的鍵值改為“1”即可。(5)減少開(kāi)機(jī)磁盤掃描等待時(shí)間當(dāng)Windows日志中記錄有非正常關(guān)機(jī)、死機(jī)引起的重新啟動(dòng),系統(tǒng)就會(huì)自動(dòng)在啟動(dòng)的時(shí)候運(yùn)行磁盤掃描程序。在默認(rèn)情況下,掃描每個(gè)分區(qū)前會(huì)等待10秒鐘,如果每個(gè)分區(qū)都要等上10秒才能開(kāi)始進(jìn)行掃描,再加上掃描本身需要的時(shí)間,會(huì)耗費(fèi)相當(dāng)長(zhǎng)的時(shí)間才能完成啟動(dòng)過(guò)程。對(duì)于這種情況我們可以設(shè)置取消磁盤掃描的等待時(shí)間,甚至禁止對(duì)某個(gè)磁盤分區(qū)進(jìn)行掃描。選擇“開(kāi)始→運(yùn)行”,在運(yùn)行對(duì)話框中鍵入“chkntfs/t:0”,即可將磁盤掃描等待時(shí)間設(shè)置為0;如果要在計(jì)算機(jī)啟動(dòng)時(shí)忽略掃描某個(gè)分區(qū),比如C盤,可以輸入“chkntfs/xc:”命令;如果要恢復(fù)對(duì)C盤的掃描,可使用“chkntfs/dc:”命令,即可還原所有chkntfs默認(rèn)設(shè)置,除了自動(dòng)文件檢查的倒計(jì)時(shí)之外。2.提高系統(tǒng)運(yùn)行速度提升系統(tǒng)運(yùn)行速度的思路與加快啟動(dòng)的速度類似:盡量?jī)?yōu)化軟硬件設(shè)置,減輕系統(tǒng)負(fù)擔(dān)。以下是一些常用的優(yōu)化手段。(1)設(shè)置處理器二級(jí)緩存容量WindowsXP無(wú)法自動(dòng)檢測(cè)處理器的二級(jí)緩存容量,需要我們自己在注冊(cè)表中手動(dòng)設(shè)置,首先打開(kāi)注冊(cè)表,找到“HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SessionManager\MemoryManagement\”,選擇其下的“SecondLevelDataCache”,根據(jù)自己所用的處理器設(shè)置即可,例如PIIICoppermine/P4Willamette是“256”,AthlonXP是“384”,P4Northwood是“512”。(2)提升系統(tǒng)緩存同樣也是在“HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SessionManager\MemoryManagement\”位置,把其下的“LargeSystemCache”鍵值從0改為1,WindowsXP就會(huì)把除了4M之外的系統(tǒng)內(nèi)存全部分配到文件系統(tǒng)緩存中,這樣X(jué)P的內(nèi)核能夠在內(nèi)存中運(yùn)行,大大提高系統(tǒng)速度。通常來(lái)說(shuō),該優(yōu)化會(huì)使系統(tǒng)性能得到相當(dāng)?shù)奶嵘?,但也有可能?huì)使某些應(yīng)用程序性能降低。需要注意的是必須有256M以上的內(nèi)存,激活LargeSystemCache才可起到正面的作用,否則不要輕易改動(dòng)它。(3)改進(jìn)輸入/輸出性能這個(gè)優(yōu)化能夠提升系統(tǒng)進(jìn)行大容量文件傳輸時(shí)的性能,不過(guò)這只對(duì)服務(wù)器用戶才有實(shí)在意義。我們可在中新建一個(gè)DWORD(雙字節(jié)值)鍵值,命名為IOPageLockLimit。一般情況下把數(shù)據(jù)設(shè)置8~16MB之間性能最好,要記住這個(gè)值是用字節(jié)來(lái)計(jì)算的,例如你要分配10MB的話,就是10×?1024×1024,也就是10485760。這里的優(yōu)化也需要你的機(jī)器擁有大于256M的內(nèi)存。(4)禁用內(nèi)存頁(yè)面調(diào)度在正常情況下,XP會(huì)把內(nèi)存中的片斷寫入硬盤,我們可以阻止它這樣做,讓數(shù)據(jù)保留在內(nèi)存中,從而提升系統(tǒng)性能。在注冊(cè)表中找到“HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SessionManager\MemoryManagement\”下的“DisablePagingExecutive”鍵,把它的值從0改為1即可禁止內(nèi)存頁(yè)面調(diào)度了。(5)關(guān)閉自動(dòng)重新啟動(dòng)功能當(dāng)WindowsXP遇到嚴(yán)重問(wèn)題時(shí)便會(huì)突然重新開(kāi)機(jī),可從注冊(cè)表將此功能取消。打開(kāi)注冊(cè)表編輯器,找到“HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\CrashControl\”將AutoReboot鍵的Dword值更改為0,重新啟動(dòng)后設(shè)置即可生效。(6)改變視覺(jué)效果WindowsXP在默認(rèn)情況下啟用了幾乎所有的視覺(jué)效果,如淡入淡出、在菜單下顯示陰影。這些視覺(jué)效果雖然漂亮,但對(duì)系統(tǒng)性能會(huì)有一定的影響,有時(shí)甚至造成應(yīng)用軟件在運(yùn)行時(shí)出現(xiàn)停頓。一般情況下建議少用或者取消這些視覺(jué)效果。選擇桌面上“我的電腦”圖標(biāo),單擊鼠標(biāo)右鍵,在彈出的快捷菜單中選擇“屬性”命令,打開(kāi)“系統(tǒng)屬性”對(duì)話框。選擇“高級(jí)”選項(xiàng)卡,在其中的“性能”欄中單擊“設(shè)置”按鈕,會(huì)彈出“性能選項(xiàng)”對(duì)話框(如圖4),可選擇“調(diào)整為最佳性能”單選框來(lái)關(guān)閉所有的視覺(jué)效果,也可選擇“自定義”然后選擇自己需要的視覺(jué)效果。(7)合理設(shè)置頁(yè)面虛擬內(nèi)存同樣也是在“性能選項(xiàng)”對(duì)話框中,選擇“高級(jí)”選項(xiàng)卡,在其中的“虛擬內(nèi)存”欄中單擊“更改”按鈕,接下來(lái)選擇虛擬內(nèi)存為“自定義大小”,然后設(shè)置其數(shù)值。一般情況下,把虛擬設(shè)為不小于256M,不大于382M比較合適,而且最大值和最小值最好一樣。(8)修改外觀方案WindowsXP默認(rèn)的外觀方案雖然漂亮,但對(duì)系統(tǒng)資源的占用也多,可將其改為經(jīng)典外觀以獲得更好的性能。在桌面空白位置單擊鼠標(biāo)右鍵,從彈出的快捷菜單中選擇“屬性”命令,會(huì)打開(kāi)“顯示屬性”對(duì)話框,在“主題”選項(xiàng)卡選擇主題為“Windows經(jīng)典”,即可將外觀修改為更為經(jīng)濟(jì)的Windows經(jīng)典外觀。(9)取消XP對(duì)ZIP支持WindowsXP在默認(rèn)情況下打開(kāi)了對(duì)zip文件支持,這要占用一定的系統(tǒng)資源,可選擇“開(kāi)始→運(yùn)行”,在“運(yùn)行”對(duì)話框中鍵入“regsvr32/uzipfldr.dll”,回車確認(rèn)即可取消XP對(duì)ZIP解壓縮的支持,從而節(jié)省系統(tǒng)資源。(10)關(guān)閉Dr.WatsonDr.Watson是WindowsXP的一個(gè)崩潰分析工具,它會(huì)在應(yīng)用程序崩潰的時(shí)候自動(dòng)彈出,并且在默認(rèn)情況下,它會(huì)將與出錯(cuò)有關(guān)的內(nèi)存保存為DUMP文件以供程序員分析。不過(guò),記錄DUMP文件對(duì)普通用戶則毫無(wú)幫助,反而會(huì)帶來(lái)很大的不便:由于Dr.Watson在應(yīng)用程序崩潰時(shí)會(huì)對(duì)內(nèi)存進(jìn)行DUMP記錄,將出現(xiàn)長(zhǎng)時(shí)間硬盤讀寫操作,要很長(zhǎng)一斷時(shí)間程序才能關(guān)閉,并且DUMP文件還會(huì)占用大量磁盤空間。要關(guān)閉Dr.Watson可打開(kāi)注冊(cè)表編輯器,找到“HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WindowsNT\CurrentVersion\AeDebug”分支,雙擊其下的Auto鍵值名稱,將其“數(shù)值數(shù)據(jù)”改為0,最后按F5刷新使設(shè)置生效,這樣就取消它的運(yùn)行了。同樣,我們可以把所有具備調(diào)試功能的選項(xiàng)取消,比如藍(lán)屏?xí)r出現(xiàn)的memory.dmp,可在“系統(tǒng)屬性”對(duì)話框中選擇“高級(jí)”選項(xiàng)卡,單擊“啟動(dòng)和故障恢復(fù)”欄中的“設(shè)置”按鈕,并在彈出的“啟動(dòng)和故障恢復(fù)”對(duì)話框中選擇“寫入調(diào)試信息”為“無(wú)”(如圖5)。(11)啟動(dòng)硬盤/光驅(qū)DMA模式打開(kāi)“系統(tǒng)屬性”對(duì)話框,選擇“硬件”選擇卡中的“設(shè)備管理器”按鈕,打開(kāi)“設(shè)備管理器”窗口,在設(shè)備列表中選擇“IDEATA/ATAPI控制器”,雙擊“主要IDE通道”或“次要IDE通過(guò)”,在其屬性對(duì)話框的“高級(jí)設(shè)置”選項(xiàng)卡中檢查DMA模式是否已啟動(dòng),一般來(lái)說(shuō)如果設(shè)備支持,系統(tǒng)就會(huì)自動(dòng)打開(kāi)DMA功能,如果沒(méi)有打開(kāi)可將“傳輸模式”設(shè)為“DMA(若可用)”。(12)關(guān)掉不用的設(shè)備WindowsXP總是盡可能為電腦的所有設(shè)備安裝驅(qū)動(dòng)程序并進(jìn)行管理,這不僅會(huì)減慢系統(tǒng)啟動(dòng)的速度,同時(shí)也造成了系統(tǒng)資源的大量占用。針對(duì)這一情況,你可在設(shè)備管理器中,將PCMCIA卡、調(diào)制解調(diào)器、紅外線設(shè)備、打印機(jī)端口(LPT1)或者串口(COM1)等不常用的設(shè)備停用,方法是雙擊要停用的設(shè)備,在其屬性對(duì)話框中的“常規(guī)”選項(xiàng)卡中選擇“不要使用這個(gè)設(shè)備(停用)”。在重新啟動(dòng)設(shè)置即可生效,當(dāng)需要使用這些設(shè)備時(shí)再?gòu)脑O(shè)備管理器中啟用它們。(13)關(guān)閉錯(cuò)誤報(bào)告當(dāng)應(yīng)用程序出錯(cuò)時(shí),會(huì)彈出發(fā)送錯(cuò)誤報(bào)告的窗口,其實(shí)這樣的錯(cuò)誤報(bào)告對(duì)普通用戶而言幾乎沒(méi)有任何意義,關(guān)閉它是明智的選擇。在“系統(tǒng)屬性”對(duì)話框中選擇“高級(jí)”選項(xiàng)卡,單擊“錯(cuò)誤報(bào)告”按鈕,在彈出的“錯(cuò)誤匯報(bào)”對(duì)話框中,選擇“禁用錯(cuò)誤匯報(bào)”單選項(xiàng),最后單擊“確定”即可。另外我們也可以從組策略中關(guān)閉錯(cuò)誤報(bào)告:從“運(yùn)行”中鍵入“gpedit.msc”,運(yùn)行“組策略編輯器”,展開(kāi)“計(jì)算機(jī)配置→管理模板→系統(tǒng)→錯(cuò)誤報(bào)告功能”,雙擊右邊設(shè)置欄中的“報(bào)告錯(cuò)誤”,在彈出的“屬性”對(duì)話框中選擇“已禁用”單選框即可將“報(bào)告錯(cuò)誤”禁用。(14)關(guān)閉自動(dòng)更新“自動(dòng)更新”功能對(duì)許多WindowsXP用戶而言并不是必需的,可將其關(guān)閉以節(jié)省系統(tǒng)資源。在“我的電腦”上單擊鼠標(biāo)右鍵,從快捷菜單中選擇“屬性”命令,選擇“系統(tǒng)屬性”對(duì)話框中的“自動(dòng)更新”選項(xiàng)卡,勾選“關(guān)閉自動(dòng)更新,我將手動(dòng)更新計(jì)算機(jī)”單選框,單擊“確定”按鈕即可關(guān)閉自動(dòng)更新功能。如果在“服務(wù)”已經(jīng)將“AutomaticUpdates”服務(wù)關(guān)閉,“系統(tǒng)屬性”對(duì)話框中的“自動(dòng)更新”選項(xiàng)卡就不能進(jìn)行任何設(shè)置了。(15)去掉菜單延遲去掉菜單彈出時(shí)的延遲,可以在一定程度上加快XP。要修改的鍵值位置在“HKEY_CURRENT_USER\ControlPanel\Desktop”。修改其下的“MenuShowDelay”鍵,把默認(rèn)的400修改為0,按F5刷新注冊(cè)表即可生效。(16)清除預(yù)讀文件WindowsXP的預(yù)讀設(shè)置雖然可以提高系統(tǒng)速度,但是使用一段時(shí)間后,預(yù)讀文件夾里的文件數(shù)量會(huì)變得相當(dāng)龐大,導(dǎo)致系統(tǒng)搜索花費(fèi)的時(shí)間變長(zhǎng)。而且有些應(yīng)用程序會(huì)產(chǎn)生死鏈接文件,更加重了系統(tǒng)搜索的負(fù)擔(dān)。所以,應(yīng)該定期刪除這些預(yù)讀文件。預(yù)計(jì)文件存放在WindowsXP系統(tǒng)文件夾的Prefetch文件夾中,該文件夾下的所有文件均可刪除。(17)關(guān)閉自動(dòng)播放功能在WindowsXP中,當(dāng)往光驅(qū)中放入光盤或?qū)SB硬盤接上電腦時(shí),系統(tǒng)都會(huì)自動(dòng)將光驅(qū)或USB硬盤掃描一遍,同時(shí)提示你是否播放里面的圖片、視頻、音樂(lè)等文件,如果是擁有多個(gè)分區(qū)的大容量的USB硬盤,掃描會(huì)耗費(fèi)很長(zhǎng)的時(shí)間,而且你得多次手動(dòng)關(guān)閉提示窗口,非常麻煩。這種情況下我們可以將WindowsXP的自動(dòng)播放功能關(guān)閉。運(yùn)行“組策略”程序。在組策略窗口左邊欄中,打開(kāi)“計(jì)算機(jī)配置”,選擇“管理模板”下的“系統(tǒng)”,然后在右邊的配置欄中找到“關(guān)閉自動(dòng)播放”并雙擊它,會(huì)彈出“關(guān)閉自動(dòng)播放屬性”對(duì)話框。在其中“設(shè)置”選項(xiàng)卡中選擇“已啟用”,“關(guān)閉自動(dòng)播放”下拉列表中選擇“所有驅(qū)動(dòng)器”(如圖6)。這樣以后就不用擔(dān)心WindowsXP的“自動(dòng)播放”功能帶來(lái)的麻煩了。如果你只是想禁止系統(tǒng)掃描某個(gè)驅(qū)動(dòng)器(如USB硬盤)上的文件,可采用下面的方法。先連上你的USB硬盤,讓系統(tǒng)將它識(shí)別出來(lái)。然后打開(kāi)“我的電腦”,選擇USB硬盤上的某個(gè)分區(qū),按鼠標(biāo)右鍵,會(huì)彈出磁盤屬性窗口,選取“自動(dòng)播放”選項(xiàng)卡,將所有內(nèi)容的類型都選擇為不執(zhí)行操作。如果USB硬盤有多個(gè)分區(qū),對(duì)所有分區(qū)都進(jìn)行同樣的操作,這樣當(dāng)你將USB驅(qū)動(dòng)器拔掉再重新接上時(shí),系統(tǒng)會(huì)將USB硬盤識(shí)別出來(lái),而不會(huì)反復(fù)問(wèn)你是否播放USB硬盤中的文件了。3.加快關(guān)機(jī)速度WindowsXP的關(guān)機(jī)速度要慢于啟動(dòng)速度,特別有些任務(wù)還需要手工結(jié)束,更加延緩了關(guān)機(jī)速度。因此,要加快關(guān)機(jī)速度,首先要開(kāi)啟WindowsXP的自動(dòng)結(jié)束任務(wù)功能。具體步驟是:從注冊(cè)表中找到“HKEY_CURRENT_USER\ControlPanel\Desktop”,把“AutoEndTasks”的鍵值設(shè)置為1即可。然后再修改“HungAppTimeout”為“4000(或更小)”(預(yù)設(shè)為5000),該鍵值同樣也在“HKEY_CURRENT_USER\ControlPanel\Desktop”下;最后一步再找到“HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\”,同樣把WaitToKillServiceTimeout設(shè)置為“4000”;通過(guò)這樣設(shè)置后的關(guān)機(jī)速度明顯要加快了。夠全面吧~~◆二、硬件優(yōu)化設(shè)置◆1、關(guān)掉不用的設(shè)備

在設(shè)備管理器中,將PCMCIA卡、調(diào)制解調(diào)器、紅外線設(shè)備、打印機(jī)端口(LPT1)或者串口(COM1)等不常用的設(shè)備停用,在要停用設(shè)備屬性對(duì)話框中的“常規(guī)”選項(xiàng)卡中選擇“不要使用這個(gè)設(shè)備(停用)”。當(dāng)需要使用這些設(shè)備時(shí)再?gòu)脑O(shè)備管理器中啟用它們?!?、內(nèi)存性能優(yōu)化

WindowsXP中有幾個(gè)選項(xiàng)可以優(yōu)化內(nèi)存性能,它們?nèi)荚谧?cè)表下面位置:HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlSession

ManagerMemory

Management

1)禁用內(nèi)存頁(yè)面調(diào)度(Paging

Executive)

XP會(huì)把內(nèi)存中的片斷寫入硬盤,我們可以阻止它這樣做,讓數(shù)據(jù)保留在內(nèi)存中,從而提升系統(tǒng)性能。256M以上內(nèi)存才使用這個(gè)設(shè)置。把“DisablePagingExecutive”的值從0改為1就可以禁止內(nèi)存頁(yè)面調(diào)度了。

2)提升系統(tǒng)緩存

必須有256M以上的內(nèi)存,才激活它。把LargeSystemCache鍵值從0改為1,一般來(lái)說(shuō),這項(xiàng)優(yōu)化會(huì)使系統(tǒng)性能得到相當(dāng)?shù)奶嵘?,但也有可能?huì)使某些應(yīng)用程序性能降低。

3)輸入/輸出性能

內(nèi)存大于256M才更改這里的值,這個(gè)優(yōu)化只對(duì)server(服務(wù)器)用戶才有實(shí)在意義,它能夠提升系統(tǒng)進(jìn)行大容量文件傳輸時(shí)的性能。建一個(gè)DWORD(雙字節(jié)值)鍵值,命名為IOPageLockLimit,數(shù)值設(shè)8M-16M字節(jié)之間性能最好,具體設(shè)什么值,可試試哪個(gè)值可獲得最佳性能。這個(gè)值是用字節(jié)來(lái)計(jì)算的,比如你要分配12M,就是12×1024×1024,也就是12582912?!?、啟動(dòng)硬盤/光驅(qū)DMA模式

“系統(tǒng)屬性”-“硬件”-“設(shè)備管理器”,在設(shè)備列表中選擇“IDE

ATA/ATAPI控制器”,雙擊“主要

IDE

通道”或“次要

IDE

通道”,在其屬性對(duì)話框的“高級(jí)設(shè)置”選項(xiàng)卡中檢查DMA模式是否已啟動(dòng),一般來(lái)說(shuō)如果設(shè)備支持,系統(tǒng)就會(huì)自動(dòng)打開(kāi)DMA功能,如果沒(méi)有打開(kāi)可將“傳輸模式”設(shè)為“DMA(若可用)”(在BIOS里也應(yīng)該要先設(shè)為支持DMA)。

◆4、關(guān)閉自動(dòng)播放功能

運(yùn)行“組策略”程序,在組策略窗口左邊欄中打開(kāi)“計(jì)算機(jī)配置”,選擇“管理模板”下的“系統(tǒng)”,然后在右邊的配置欄中找到“關(guān)閉自動(dòng)播放”并雙擊它,會(huì)彈出“關(guān)閉自動(dòng)播放屬性”對(duì)話框,在其中“設(shè)置”選項(xiàng)卡中選擇“已啟用”,“關(guān)閉自動(dòng)播放”下拉列表中選擇“

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論