服務器應用監(jiān)控系統(tǒng)畢業(yè)設計說明書_第1頁
服務器應用監(jiān)控系統(tǒng)畢業(yè)設計說明書_第2頁
服務器應用監(jiān)控系統(tǒng)畢業(yè)設計說明書_第3頁
服務器應用監(jiān)控系統(tǒng)畢業(yè)設計說明書_第4頁
服務器應用監(jiān)控系統(tǒng)畢業(yè)設計說明書_第5頁
已閱讀5頁,還剩56頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

畢業(yè)設計題目:服務器應用監(jiān)控系統(tǒng)院、系:計算機科學與技術學院計算機系畢業(yè)設計(論文)評語學生姓名:學號:學院:計算機科學與技術專業(yè):計算機科學與技術任務起止時間:2013年3月5日至2013年6月20日畢業(yè)設計(論文)題目:指導教師對畢業(yè)設計(論文)的評語:指導教師簽名:指導教師職稱:評閱教師對畢業(yè)設計(論文)的評語:評閱教師簽名:評閱教師職稱:答辯委員會對畢業(yè)設計(論文)的評語:答辯委員會評定,該生畢業(yè)設計(論文)成績?yōu)椋捍疝q委員會主席簽名:職稱:年月日任務書學生姓名:學號:學院:計算機科學與技術專業(yè):計算機科學與技術任務起止時間:畢業(yè)設計(論文)題目:服務器應用監(jiān)控系統(tǒng)畢業(yè)設計工作內(nèi)容:收集資料3.1—3.20確定主題3.21—4.1規(guī)劃后臺與網(wǎng)站4.1—4.2選擇合適的制作工具4.20—5.10實現(xiàn)設計5.10—6.1撰寫論文、準備答辯6.1—6.20資料:1、Java編程思想作者:BruceEckel著,出版社:機械工業(yè)出版社2、數(shù)據(jù)結(jié)構(gòu)與算法分析作者:MarkAllenWeiss,出版社:機械工業(yè)出版社3、操作系統(tǒng)精髓與設計原理作者:WilliamStallings,出版社:機械工業(yè)出版社指導教師意見:簽名:年月日系主任意見:簽名:年月日服務器應用監(jiān)控系統(tǒng)摘要隨著各行業(yè)信息化建設的不斷深入發(fā)展,單獨的服務器已經(jīng)再無法滿足企業(yè)的需求。網(wǎng)絡和應用規(guī)模日趨擴大,服務器網(wǎng)絡集群大量應用于中、小型企業(yè)中,服務器性能監(jiān)控和日常維護變得復雜。服務器管理員迫切需要一個實用的監(jiān)控系統(tǒng)來幫助他們實時了解服務器的運行狀態(tài),檢測服務器故障,令維護服務器的正常運行。服務器性能監(jiān)控是指針對服務器系統(tǒng)的運行狀態(tài)以及各項指標的監(jiān)控。監(jiān)控指標包括:CPU使用率、CPU負載、內(nèi)存使用率、磁盤I/O、磁盤空間、網(wǎng)絡流量等。并實時的將監(jiān)控獲得的服務器性能參數(shù)傳回來顯示在客戶端,同時上傳至中心服務器上的數(shù)據(jù)庫中,便于以后查詢,分析。本文圍繞服務器應用性能監(jiān)控系統(tǒng)的研究與實現(xiàn),研究了Web服務技術,服務器的性能參數(shù)獲取和利用Char組件動態(tài)顯示服務器的運行狀態(tài)。Web服務的使用簡化了客戶端系統(tǒng),服務器的性能參數(shù)獲取過程封裝在一個Windows進程中,系統(tǒng)具有很好的擴展性。系統(tǒng)的實現(xiàn)目標是服務器性能的遠程監(jiān)控,一對多監(jiān)控,服務器管理員可以查看服務器歷史一段時間運行狀態(tài)。關鍵詞服務器應用監(jiān)控;遠程監(jiān)控;Web服務;Windows性能ServerApplicationMonitoringSystemAbstractWiththerapiddevelopmentofnetworktechnologyandapplication,asingleserverhasfailedtomeettheneedsoftheenterprises.Withtheserverscaleincreasingdayafterday,andserverclusterwidelyusedinthemediumandsmallenterprises,aserver’smanagementandmaintenancearebecomingdifficult.Thesystemadministratorurgentlyneedapracticalserverperformancemonitoringsystemtohelpthemknowserver’soperationstatereal-time,monitoringserverfailure,inordertomaketheserverworknormally.ThisWebservicetechnology,theserverperformanceparametersoftheacquisitionanduseofMicrosoftChartcomponentdynamicdisplayoftheserverrunningstate.Thispaperfocusontheserverperformancemonitoringsystemofresearchandimplementation,researchtheWebservicetechnology,theserverperformanceparametersoftheacquisitionanduseofMicrosoftChartcomponentdynamicdisplayoftheserverrunningstate.WiththeWebservice,theclientbecomesmuchsimple.PackingprocessofgettingtheserverperformanceparametersasaserviceofWindowsmakethesystemhasgoodexpansibility.Systemgoalistorealizetheserverperformanceforremotemonitoring,amonitoringmore,enablethemanagerinquiringtheserver’ssomepastperiodoftimerunningstate.KeywordsServerPerformanceMonitoringSystem;RemoteMonitoring;WebService;WindowsPerformance目錄摘要…… =1\*ROMANIAbstract =2\*ROMANII第1章緒論51.1選題目的和意義51.2國內(nèi)外文獻綜述51.3論文研究內(nèi)容6第2章相關技術概述72.1服務器應用性能監(jiān)控72.2服務器性能參數(shù)獲取7使用Sigar7使用Windows性能計數(shù)器82.3Web服務概述82.4本章小結(jié)8第3章系統(tǒng)需求分析93.1需求背景93.2系統(tǒng)總體的需求93.3系統(tǒng)功能性需求分析10系統(tǒng)功能103.3.2WindowsInfoMonitor服務功能需求103.3.3ShowWinInfo客戶端程序功能需求113.4系統(tǒng)非功能性需求分析12可靠性要求12易用性要求12效率要求12可移植性要求133.5系統(tǒng)開發(fā)環(huán)境13軟件環(huán)境13硬件環(huán)境133.6本章小結(jié)13第4章系統(tǒng)設計144.1系統(tǒng)概述144.2系統(tǒng)總體架構(gòu)144.3劃分功能模塊144.4獨立模塊設計154.4.1WindowsInfoMonitor服務模塊設計154.4.2ShowWinInfo客戶端程序設計174.5數(shù)據(jù)模型設計174.6本章小結(jié)18第5章系統(tǒng)實現(xiàn)195.1WindowsInfoMonitor服務實現(xiàn)19獲取服務器的性能參數(shù)19向指定數(shù)據(jù)庫持久化服務器性能參數(shù)245.2ShowWinInfo客戶端程序的實現(xiàn)25使用Highcharts插件26整站效果27使用tablesorter29使用JSP31使用Ajax31使用Struts315.3本章小結(jié)32結(jié)論33致謝35參考文獻36附錄37附錄A英文原文37附錄B英文譯文39附錄C服務器信息采集核心代碼41附錄D前臺展示業(yè)務核心代碼49緒論選題目的和意義在網(wǎng)絡中部署的服務器系統(tǒng),隨著時間的推移,系統(tǒng)中的用戶數(shù)量和數(shù)據(jù)量不斷增加,系統(tǒng)壓力越來越大,系統(tǒng)速度越來越慢,對客戶端的響應時間越來越長,有時服務器甚至會停止服務,無法響應用戶請求,從而使整個網(wǎng)絡陷入癱瘓。面對這樣的情況,網(wǎng)絡管理員總希望在第一時間找到問題出在哪里,而往往由于缺少必要的分析和診斷工具,無法迅速找到到底是CPU,內(nèi)存,磁盤,網(wǎng)絡等哪個部分出了問題,是硬件配置較低需要升級設備,還是受到木馬攻擊,被木馬搶占了資源。如何監(jiān)控和解決服務器性能問題,成為管理員面臨的最棘手的問題。尤其是隨著互聯(lián)網(wǎng)絡的發(fā)展,單一的服務器已經(jīng)無法滿足企業(yè)需求,大規(guī)模的服務器集群得到廣泛應用,云計算發(fā)展勢頭迅猛,如何調(diào)整服務器部署,均衡負載,使服務器資源得到充分利用,大大提高資源的利用率成為最重要的關注點。服務器的性能監(jiān)控顯得越來越重要了。國內(nèi)外文獻綜述當前,企業(yè)信息化規(guī)模越來越大,水平不斷提高,如何維護并有效管理這些資源,已經(jīng)成為企業(yè)信息化過程中面臨的嚴峻問題和關注的焦點。在對這些資源的管理中,服務器是核心設備,對它的管理至關重要。Windows服務在企業(yè)中應用十分廣泛,對其性能進行管理非常必要。Windows服務器自帶有性能管理功能,但只能在本機上才能查看其運行情況。而且只能實時查看,無法查看過去一段時間內(nèi)的服務器運行狀態(tài)。目前知名的Windows服務器性能監(jiān)控系統(tǒng)有NEC公司的MasterScopeSystemManager,Micrisoft公司的WMI,Bakbone公司的SpotlightOnWindows,上海哲濤公司的SUM(ServerUnifiedMonitor&Management),神舟泰岳的Ultr@NMS。相比較而言,國外產(chǎn)品功能強大,但價格昂貴,操作界面不符合中國人習慣;而國內(nèi)產(chǎn)品技術落后,可移植性差。服務器應用性能監(jiān)控可以了解到服務器的各種狀態(tài),比如CPU的利用率,內(nèi)存的占用率,磁盤的I/O速率,虛擬內(nèi)存的占用率等。可以根據(jù)監(jiān)控的數(shù)據(jù)結(jié)果來判定企業(yè)應用的工作情況,可以查看數(shù)據(jù)庫內(nèi)的監(jiān)控數(shù)據(jù),分析出服務器的性能,便于服務器的部署,使資源得到更有效更充分的利用。未來服務器不再是傳統(tǒng)的單服務器,而是由多個服務器構(gòu)成的服務器群。對于服務器群來說,服務器的管理變得更加重要。合理的利用資源,使所有服務器資源得到最大化利用,不僅僅可以節(jié)約硬件上的成本,同時可以加快服務器的響應速度,提高服務器的吞吐量,而要實現(xiàn)服務器的管理,依據(jù)的就是服務器的性能,了解單服務器的性能,均衡服務器,避免服務器出現(xiàn)“饑飽過度”。服務器應用性能監(jiān)控將在提高服務器性能方面發(fā)揮重大作用。論文研究內(nèi)容本課題主要研究服務器應用的性能監(jiān)控,獲取服務器的性能參數(shù),保存至數(shù)據(jù)庫并且顯示,提供用戶可以查看過去一段時間服務器的運行狀態(tài)。具體內(nèi)容包括以下幾個方面:獲取服務器的性能參數(shù):設計一個組件WindowsInfoMonitor,WindowsInfoMonitor是一個Windows下進行的線程,里面使用Sigar獲取服務器的性能,包括CPU的利用率,內(nèi)存的占用率,磁盤I/O的數(shù)據(jù)傳輸速度,網(wǎng)絡帶寬等信息。服務器性能數(shù)據(jù)上傳至中心服務器數(shù)據(jù)庫:通過在中心服務器安裝的WebService提供的借口,將服務器的性能數(shù)據(jù)上傳到中心服務器的數(shù)據(jù)庫中??蛻舳藦闹行姆掌鲾?shù)據(jù)庫提取數(shù)據(jù):客戶端通過在中心服務器安裝的WebService提供的接口,獲取數(shù)據(jù)庫內(nèi)服務器的性能數(shù)據(jù)。服務器性能參數(shù)在客戶端界面上的顯示:使用Jsp技術和Highcharts控件將服務器的性能數(shù)據(jù)顯示在客戶端界面上,用繪制曲線圖,直方圖條或者文字報告等形式展示,直觀的向用戶展示服務器性能。相關技術概述本章將主要介紹系統(tǒng)使用到的相關技術。服務器應用性能監(jiān)控實現(xiàn)遠程監(jiān)控,用到JavaWeb技術。Web服務提供接口,將系統(tǒng)的業(yè)務邏輯從客戶端移到了中心服務器上,大大簡化客戶端操作。服務器應用性能監(jiān)控服務器性能監(jiān)控是指針對服務器系統(tǒng)的運行狀態(tài)以及各項指標的監(jiān)控。監(jiān)控指標包括:CPU使用率、CPU負載、內(nèi)存使用率、磁盤I/O、磁盤空間、網(wǎng)絡流量等。遠程服務器監(jiān)控系統(tǒng)是本地計算機通過網(wǎng)絡系統(tǒng)Internet/Intranet,對遠程服務器進行監(jiān)控和控制。并實時的將監(jiān)控獲得的服務器性能參數(shù)傳回來顯示在客戶端,同時上傳至中心服務器上的數(shù)據(jù)庫中,便于以后查詢,分析。服務器性能監(jiān)控技術目前比較成熟,并且應用在調(diào)整服務器部署中。服務器的穩(wěn)定性及其性能資源利用狀態(tài)需要長時間的累計服務器相關數(shù)據(jù),然后進行分析,最后得出正確結(jié)論??梢葬槍λ性O備的CPU負載、內(nèi)存利用率等進行全網(wǎng)記錄。也可以對單獨的應用服務器等進行記錄。服務器的網(wǎng)絡流量來自服務器與外界的數(shù)據(jù)交換。這個流量包括了正常的應用程序與外界的數(shù)據(jù)交換,也包括了非法服務或進程(例如病毒)產(chǎn)生的數(shù)據(jù)量。定期分析一段時間來的服務器網(wǎng)卡流量,可以發(fā)現(xiàn)是否有不正常的變化,如突然增高或突然很低,這對檢查服務器的運行狀態(tài)很有幫助。對應用服務器的性能資源進行記錄,幫助管理人員根據(jù)這些統(tǒng)計結(jié)果分析出這些設備的主要運行參數(shù)的變化規(guī)律,從而為正確評定用戶網(wǎng)絡設備的承載能力提供依據(jù)。另外,如果必要的話,也可以對所有的服務器連接線路的流量指標進行記錄,以便對整個網(wǎng)絡的流量分布全面了解,以確定網(wǎng)絡的瓶頸,為今后的網(wǎng)絡擴容提供依據(jù)。服務器性能參數(shù)獲取服務器性能參數(shù)獲取是指通過一定的方法,獲取服務器的性能指標的過程。服務器的性能指標包括CPU使用率、內(nèi)存使用率、磁盤I/O、磁盤空間、網(wǎng)絡流量等。Java語言下服務器性能參數(shù)選擇利用sigar控件和Windows性能計數(shù)器。使用SigarSigar是英文SystemInformationGathererAndReporter的簡寫,中文意思是系統(tǒng)信息采集者,是一個開源的工具,提供了跨平臺的系統(tǒng)信息收集的API,由C語言實現(xiàn)的??梢允占男畔ǎ篊PU信息,包括基本信息(vendor、model、mhz、cacheSize)和統(tǒng)計信息(user、sys、idle、nice、wait);文件系統(tǒng)信息,包括Filesystem、Size、Used、Avail、Use%、Type;事件信息,類似ServiceControlManager;內(nèi)存信息,物理內(nèi)存和交換內(nèi)存的總數(shù)、使用數(shù)、剩余數(shù);RAM的大??;網(wǎng)絡信息,包括網(wǎng)絡接口信息和網(wǎng)絡路由信息;進程信息,包括每個進程的內(nèi)存、CPU占用數(shù)、狀態(tài)、參數(shù)、句柄;I/O信息,包括I/O的狀態(tài),讀寫大小等;服務狀態(tài)信息;系統(tǒng)信息,包括操作系統(tǒng)版本,系統(tǒng)資源限制情況,系統(tǒng)運行時間以及負載,JAVA的版本信息等;使用Windows性能計數(shù)器服務器性能監(jiān)視,是WindowsNT提供的一種系統(tǒng)功能。WindowsNT一直以來總是集成了性能監(jiān)視工具,它提供了有關操作系統(tǒng)當前運行狀況的信息,針對各種對象提供了數(shù)百個性能計數(shù)器,在本地計算機可以打開管理工具,選擇性能監(jiān)視器,點擊添加計數(shù)器按鈕,可以查看WindowsNT具體提供了哪些性能計數(shù)器,同時可以查看性能監(jiān)視對象,對象實例等。性能計數(shù)器能實時采集系統(tǒng)內(nèi)的應用程序、服務、驅(qū)動程序等的性能數(shù)據(jù),以此來分析系統(tǒng)的瓶頸,最終幫助用戶進行系統(tǒng)的合理調(diào)配。通過編寫程序可以訪問所有的Windows性能計數(shù)器,通過計數(shù)器可以獲得服務器的性能參數(shù)。Web服務概述Web服務(WebService)是一種實現(xiàn)Internet環(huán)境下組建開發(fā)的技術。目標是把全世界的Internet/Intranet變成一個虛擬計算環(huán)境,實現(xiàn)跨平臺的可操作性。本章小結(jié)本章主要對服務器應用監(jiān)控系統(tǒng)用到的技術進行了闡述,包括服務器性能監(jiān)控,Web服務技術。系統(tǒng)需求分析本章將主要對系統(tǒng)的需求進行分析。主要從系統(tǒng)的功能性需求和非功能性需求進行深入細致的分析。對系統(tǒng)需求進行全面細致的分析是系統(tǒng)快速高效開發(fā)的前提,才能保證設計實現(xiàn)的系統(tǒng)滿足系統(tǒng)的需求。需求背景隨著網(wǎng)絡的發(fā)展,單一服務器已經(jīng)無法滿足企業(yè)需要,服務器集群已廣泛應用。服務器部署,服務器管理越來越重要。服務器監(jiān)控是服務器管理的前提,只有監(jiān)控了服務器運行狀態(tài),才能合理部署服務器,調(diào)整服務器,均衡服務器,使服務器資源得到充分利用,避免出現(xiàn)服務器“過度饑飽”的情況。網(wǎng)絡中的服務器系統(tǒng)部署完成后,隨著時間的推移,系統(tǒng)的數(shù)據(jù)量和用戶量不斷增加,系統(tǒng)壓力越來越大,系統(tǒng)運行速度越來越慢,客戶端用戶等待時間越來越長,有時甚至等待不到響應。Windows網(wǎng)絡服務系統(tǒng)自帶的服務器性能監(jiān)視工具只可以在本地監(jiān)視自身系統(tǒng),無法遠程監(jiān)控其他服務器,但現(xiàn)在的服務器不再單一,管理員需要同時監(jiān)控多個服務器,而且有時管理員有事離開,回來發(fā)現(xiàn)服務器癱瘓了,無法知道服務器癱瘓原因,因此還要求服務器監(jiān)控系統(tǒng)能提供查詢功能,查詢服務器過去一段時間的運行狀態(tài)。服務器性能監(jiān)控技術已經(jīng)比較成熟了,只是沒有實現(xiàn)遠程監(jiān)控,不提供查詢功能,只是提供了日志,而沒有更詳細的記錄服務器過去一段時間的運行狀態(tài)。目前云計算非常流行,幾大云計算公司都針對自己的云計算平臺開發(fā)了監(jiān)控系統(tǒng),比如盛大的“云監(jiān)控”,亞馬遜的“AWS”等,這些監(jiān)控系統(tǒng)雖然功能很強大,但是系統(tǒng)太大,對于小企業(yè),小范圍內(nèi)的服務器群監(jiān)控不太適合,在小規(guī)模的服務器群遠程監(jiān)控這一塊,市場幾乎是空白。雖然服務器群在朝著更大,更集中發(fā)展,但小規(guī)模的服務器群還將在未來一段時間長久存在,而服務器的監(jiān)控則在任何大小的服務器群中都是必須的,因為服務器的監(jiān)控對服務器的調(diào)整至關重要。系統(tǒng)總體的需求本系統(tǒng)主要實現(xiàn)服務器遠程監(jiān)控功能。本系統(tǒng)的設計首先滿足服務器性能監(jiān)控的要求,同時要考慮到系統(tǒng)的可靠性,靈活性,方便管理員管理監(jiān)視服務器。服務器集群數(shù)量比較大,管理員需要同時監(jiān)控多個服務器,管理員可能有事離開,但監(jiān)視不停,之后可以查閱之前一段時間服務器的運行狀態(tài)。直觀的顯示服務器運行狀態(tài)便于管理員了解服務器的運行情況。本系統(tǒng)正常運行需要如下三個環(huán)節(jié):首先開啟被監(jiān)控服務器上的WindowsInfoMonitor服務,其次開啟中心服務器上的ShowWinInfo程序,最后打開瀏覽器根據(jù)設定進行監(jiān)控。本系統(tǒng)功能用組成如圖3-1所示。圖3-1系統(tǒng)功能做成圖系統(tǒng)功能性需求分析本系統(tǒng)在功能上主要分為WindowsInfoMonitor服務和ShowWinInfo程序。WindowsInfoMonitor服務又分為獲取服務器性能和持久化數(shù)據(jù)兩大模塊。ShowWinInfo程序主要為查詢數(shù)據(jù)庫中存儲的持久化數(shù)據(jù),并且在瀏覽器中進行顯示,這個是管理員最直接接觸到的。系統(tǒng)功能本系統(tǒng)的功能是服務器上WindowsInfoMonitor服務采集服務器的運行狀態(tài),然后發(fā)送給客戶端提供客戶端顯示,同時把性能參數(shù)存儲到服務器上的數(shù)據(jù)庫。遠程監(jiān)控可以使得一個管理員可以在客戶端同時監(jiān)控幾臺服務器,中心服務器提供數(shù)據(jù)庫,使得管理員可以查看過去一段時間服務器的運行狀態(tài)。WindowsInfoMonitor服務功能需求WindowsInfoMonitor服務是安裝在服務器上,獲取服務器的性能參數(shù)。在服務運行時候需要向中心服務器注冊自己的服務器信息,包括服務器名和服務器的IP地址,注冊的目的是客戶端可以訪問中心服務器獲取服務器的信息,和服務器進行通信。WindowsInfoMonitor服務運行后要實時監(jiān)聽客戶端ShowWinInfo發(fā)來的監(jiān)控命令,包括開始監(jiān)控,停止監(jiān)控等。根據(jù)命令控制服務器監(jiān)控線程的運行。在監(jiān)控線程中,每隔一段時間獲取一次服務器的性能參數(shù),然后向中心服務器發(fā)送性能參數(shù),存入數(shù)據(jù)庫,同時把性能參數(shù)發(fā)送給客戶端ShowWinInfo用于客戶端顯示。WindowsInfoMonitor服務功能用組成如圖3-3.圖3-3WindowsInfoMonitor服務功能組成圖ShowWinInfo客戶端程序功能需求ShowWinInfo客戶端為架設在中心服務器上的以web技術為基礎的程序,管理員可以直接使用,發(fā)出監(jiān)控命令,同時直觀顯示服務器的運行狀態(tài)供管理員查看,分析調(diào)整服務器部署。ShowWinInfo客戶端在運行時訪問中心服務器上的數(shù)據(jù)庫,獲取所存儲的服務器的信息,添加到服務器列表中,管理員可以選擇這些服務器進行監(jiān)控。管理員可以通過添加性能計數(shù)器,移除性能計數(shù)器選擇要監(jiān)控的服務器性能參數(shù)。發(fā)送開始監(jiān)控,停止監(jiān)控,更新,查詢過去一段時間的服務器的運行狀態(tài)等命令,獲取服務器的性能參數(shù),再以直方圖型,線條,報告等形式顯示在瀏覽器窗口中。服務器的性能是實時動態(tài)顯示的,非常直觀。更新頻率決定了監(jiān)控的強度。更新間隔時間越短,監(jiān)控強度越大,能發(fā)現(xiàn)服務器出現(xiàn)的瞬間癱瘓原因。但不是更新時間越短越好,更新時間越短。服務器的開銷越大。ShowWinInfo客戶端程序功能組成圖如3-4。圖3-4ShowWinInfo客戶端程序功能組成圖系統(tǒng)非功能性需求分析系統(tǒng)的非功能性需求,是指系統(tǒng)為滿足用戶業(yè)務需求而必須具有的妾除功能需求以外的特性。往往包括可靠性、易用性、效率、維護性、可移植性等。可靠性要求本系統(tǒng)要實現(xiàn)服務器性能的遠程監(jiān)控,服務器的性能參數(shù)較多,同時一個管理員要能同時監(jiān)控多臺服務器,服務器性能的監(jiān)控過程是間隔一段時間獲取一次服務器的性能參數(shù),間隔時間太長就失去了實時監(jiān)控的效果,間隔時間一般在5S左右,一段時間內(nèi)產(chǎn)生的數(shù)據(jù)量比較大,對中心服務器上的數(shù)據(jù)庫是一個考驗,可靠性非常重要。在客戶端要實時顯示服務器運行狀態(tài),較短時間內(nèi)處理較大量的數(shù)據(jù),軟件的壓力比較大,可靠性是非常重要的。易用性要求本系統(tǒng)目標是把管理員從復雜的服務器監(jiān)控中解放出來,因此要具有很好的易用性。服務器的性能的參數(shù)很多,選擇必要的性能參數(shù),直觀的顯示給管理員,便于管理員分析然后調(diào)整服務器的部署,均衡服務器是非常必要的。管理員不一定對服務器的性能有很深的研究,因此易用性,直觀的顯示給管理員是本系統(tǒng)的要求。效率要求本系統(tǒng)是實時監(jiān)控,處理的數(shù)據(jù)量較大,效率很重要,要在間隔時間內(nèi)把數(shù)據(jù)發(fā)存入中心服務器的數(shù)據(jù)庫,同時發(fā)送到客戶端顯示,如果效率很低,則這次處理還未完成,下次數(shù)據(jù)已經(jīng)到來,可能沖掉上一次的數(shù)據(jù),這要求系統(tǒng)的處理速度很快,同時間隔時間不能太短。還有隨時間的推移,中心服務器上數(shù)據(jù)庫的數(shù)據(jù)量逐漸增大,數(shù)據(jù)量可能太大,占滿磁盤空間,因此需要清除一部分數(shù)據(jù),只保存一段時間內(nèi)的數(shù)據(jù)??梢浦残砸笥捎诒鞠到y(tǒng)中的WindowsInfoMonitor是安裝在每個服務器上的,因此要有很好的移植性,便于WindowsInfoMonitor的安裝,運行。系統(tǒng)開發(fā)環(huán)境系統(tǒng)的開發(fā)環(huán)境包括軟件環(huán)境和硬件環(huán)境兩部分。是開發(fā)系統(tǒng)必備的環(huán)境。軟件環(huán)境客戶端操作系統(tǒng)為MicrosoftWindows7及以上版本。服務器端和中心服務器端的操作系統(tǒng)為WindowsServer2000版本及以上版本。采用Windows系統(tǒng)是因為本系統(tǒng)是調(diào)用Sigar工具來獲取服務器的性能數(shù)據(jù)。數(shù)據(jù)庫操作系統(tǒng)為MySQL5.1。系統(tǒng)開發(fā)語言:JAVA程序設計語言。系統(tǒng)開發(fā)工具:MyEclipse8.5及MySQL-Front工具。系統(tǒng)運行環(huán)境:JDK1.6。硬件環(huán)境客戶機配置:建議采用Intel處理器(1.5GHz)以上、內(nèi)存2GB、硬盤100GB以上。中心服務器配置:建議采用Intel雙核處理器(2.0GHz)、內(nèi)存2GB、硬盤150GB以上。服務器配置:建議采用Intel處理器(1.5GHz)以上、內(nèi)存2GB、硬盤100GB以上。本章小結(jié)本章先闡述了需求的背景,然后對系統(tǒng)進行了各方面的需求分析,主要包括:系統(tǒng)總體需求分析、系統(tǒng)功能性分析、系統(tǒng)非功能性需求分析。在系統(tǒng)的功能需求分析中對系統(tǒng)功能進行了詳細化劃分,畫出了用例圖,并描述各個模塊的功能需求。在非功能性分析中對系統(tǒng)的可靠性、易用性、效率、可移植性需求進行了分析。最后,對系統(tǒng)的開發(fā)環(huán)境進行簡要的介紹。系統(tǒng)設計本章將主要是系統(tǒng)的設計階段。根據(jù)第三章的系統(tǒng)需求分析主要從系統(tǒng)的總體架構(gòu)、系統(tǒng)的功能模塊劃分、獨立模塊的設計以及數(shù)據(jù)模型的設計等方面對系統(tǒng)進行了詳細設計。采用了Web服務技術,使系統(tǒng)具有了松散耦合性,良好的擴展性和可移植性特點。系統(tǒng)概述WindowsInfoMonitor服務和ShowWinInfo程序組成了服務器應用監(jiān)控系統(tǒng)。WindowsInfoMonitor服務安裝在服務器上,獲取服務器的性能參數(shù)。ShowWinInfo程序是管理員操作端,所有的監(jiān)控命令都是由此發(fā)出,監(jiān)控到的服務器性能參數(shù)返回到瀏覽器中,在瀏覽器中動態(tài)直觀的顯示服務器當前的運行狀態(tài)。系統(tǒng)總體架構(gòu)本系統(tǒng)主要實現(xiàn)服務器遠程監(jiān)控功能。在一個客戶端瀏覽器中可以同時監(jiān)控多臺服務器,服務器的性能參數(shù)上傳至中心服務器數(shù)據(jù)庫中,在客戶端可以訪問中心服務器上的數(shù)據(jù)庫,查詢服務器的性能參數(shù),并在客戶端動態(tài)顯示。系統(tǒng)的總體架構(gòu)圖如下圖4-1。圖4-1系統(tǒng)總體架構(gòu)圖劃分功能模塊本系統(tǒng)實現(xiàn)的服務器應用監(jiān)控。實現(xiàn)遠程監(jiān)控。并非本地監(jiān)控,但同時利用了sigar采集系統(tǒng)性能參數(shù),因此把服務器性能參數(shù)獲取放在服務器上,同時在中心服務器上保存服務器的性能參數(shù)及服務器信息。客戶端用于管理員操作,發(fā)送監(jiān)控命令,查看服務器運行狀態(tài)。系統(tǒng)分為兩大模塊WindowsInfoMonitor服務模塊和ShowWinInfo程序模塊。系統(tǒng)的邏輯模塊圖如圖4-2所示。圖4-2系統(tǒng)的邏輯模塊圖獨立模塊設計WindowsInfoMonitor服務模塊設計WindowsInfoMonitor服務模塊主要用于獲取服務器的性能參數(shù),并將服務器的性能參數(shù)發(fā)送到客戶端程序及存入中心服務器上的數(shù)據(jù)庫。服務性能參數(shù)的獲取是通過使用Sigar工具包。服務器的性能參數(shù)根據(jù)性能對象分為操作系統(tǒng)、文件存儲、CPU_內(nèi)存、分區(qū)、磁盤I/O、TOP進程、網(wǎng)卡流量、登錄用戶、用戶操作。操作系統(tǒng)對象的主要性能參數(shù)有設備ID、主機名稱、操作系統(tǒng)版本、操作系統(tǒng)內(nèi)核、開機時間等。文件存儲對象的主要性能參數(shù)有設備ID、類別、文件存儲目錄、文件大小等。CPU_內(nèi)存對象的主要性能參數(shù)有設備ID、CPU個數(shù)、CPU主頻、CPU使用率、內(nèi)存總量、內(nèi)存使用數(shù)量、內(nèi)存剩余數(shù)量、內(nèi)存使用率等。分區(qū)對象的主要性能參數(shù)有設備ID、磁盤名稱、分區(qū)掛載點、分區(qū)名稱、分區(qū)總量、分區(qū)使用量、分區(qū)剩余量、分區(qū)使用率等。磁盤I/O對象的主要性能參數(shù)有設備ID、磁盤名稱、單位時間讀次數(shù)、單位時間寫次數(shù)。TOP進程對象的主要性能參數(shù)有設備ID、進程名、所屬用戶名、PID、虛擬內(nèi)存、常駐內(nèi)存、共享內(nèi)存、CPU使用率、運行時間長度等。網(wǎng)卡流量對象的主要性能參數(shù)有設備ID、網(wǎng)卡名稱、IP地址、單位時間流量、單位時間輸入丟包數(shù)、網(wǎng)卡流入使用率、單位時間流出量、單位時間丟包數(shù)、單位時間輸入錯包數(shù)、網(wǎng)卡流出使用率等。登錄用戶對象的主要性能參數(shù)有設備ID、登陸用戶名、登陸時間、客戶端IP。用戶操作對象的主要性能有登陸用戶名、登陸時間、客戶端IP、操作命令、退出時間等。WindowsInfoMonitor服務模塊的運行流程圖如4-3。圖4-3WindowsInfoMonitor服務模塊的運行流程圖ShowWinInfo客戶端程序設計ShowWinInfo程序模塊主要是安裝在中心服務器,由管理員直接使用的模塊。管理員在瀏覽器中選擇要監(jiān)控的服務器,同時選擇要監(jiān)控的服務器性能參數(shù),點擊開始監(jiān)控按鈕,開始監(jiān)控。檢索數(shù)據(jù)庫中的服務器性能參數(shù),然后顯示在客戶端。管理員可以查看過去一段時間服務器的運行狀態(tài)。為了方便管理員查看服務器的運行狀態(tài),頁面顯示部分使用Highcharts控件,顯示效果為餅形圖,直方圖線條等。ShowWinInfo程序的運行流程圖如圖4-4。圖4-4ShowWinInfo程序的運行流程圖數(shù)據(jù)模型設計本系統(tǒng)主要是在中心服務器上需要保存數(shù)據(jù),以便客戶端查詢。需要保存的數(shù)據(jù)包括兩部分:服務器的信息和服務器性能參數(shù)。服務器的性能參數(shù)較多,而且每隔一段時間就會增加新的信息,因此采用MySQL數(shù)據(jù)庫來管理服務器性能參數(shù)數(shù)據(jù)。采用數(shù)據(jù)庫數(shù)據(jù)的插入,查詢就變得非常容易了。由于本系統(tǒng)實現(xiàn)的是同時監(jiān)控多臺服務器,因此對應于每個服務器建立一張表,以服務器的名字作為ID名。由于服務器的性能參數(shù)都一樣,所以每個表的字段都是一樣的。表內(nèi)的字段為服務器的性能參數(shù)。由于需要采集的信息比較多,所以分類型分別制定表的結(jié)構(gòu)為操作系統(tǒng)(sbcj_czxt)、文件存儲(sbcj_wjcc)、CPU_內(nèi)存(sbcj_cpu_nc)、分區(qū)(sbcj_fq)、磁盤I/O(sbcj_cpio)、TOP進程(sbcj_top)、網(wǎng)卡流量(sbcj_wkll)、登錄用戶(sbcj_dlyh)、用戶操作(sbcj_yhcz)、狀態(tài)總結(jié)(sbcj_ztzj)。各表詳細分布如下:操作系統(tǒng)表詳見表4-1;文件存儲表詳見表4-2;表4-1操作系統(tǒng)(sbcj_czxt)描述名稱類型可空備注(P為主鍵)設備IDSbidNumber(10)NotNull主鍵主機名稱ZjmcVarchar(200)Null操作系統(tǒng)版本CzxtbbVarchar(200)Null操作系統(tǒng)內(nèi)核CzxtnhVarchar(200)Null開機時間KjsjDateNull當前時間DqsjDateNull是否文件只讀SfwjzdNumber(1)Null采集時間CjsjDateNotNull入庫時間RksjDateNotNull表4-2文件存儲(sbcj_wjcc)描述名稱類型可空備注(P為主鍵)設備IDSbidNumber(10)Notnull主鍵類別LbVarchar(100)Notnull文件存儲目錄WjccmlVarchar(100)Notnull文件大小WjdxNumber(20)Notnull采集時間CjsjDateNotnull入庫時間RksjDateNotnull本章小結(jié)本章是對系統(tǒng)進行設計,先對系統(tǒng)進行了整體性概述,設計系統(tǒng)整體架構(gòu),然后進行系統(tǒng)功能性模塊化劃分,合理的劃分出兩大模塊,并對兩大模塊進行更一步的設計,最后,進行了詳細的數(shù)據(jù)庫表模型設計。系統(tǒng)實現(xiàn)本章將主要編程實現(xiàn)系統(tǒng)。在第四章系統(tǒng)設計的基礎上編程實現(xiàn)系統(tǒng)。按照第四章的功能模塊劃分,本章首先實現(xiàn)獨立功能模塊,然后是模塊間的數(shù)據(jù)通信,整個系統(tǒng)整合運行起來。系統(tǒng)實現(xiàn)首先獨立功能模塊的實現(xiàn),然后實現(xiàn)獨立功能模塊間的通信,使獨立功能模塊組合連接起來形成系統(tǒng)。WindowsInfoMonitor服務實現(xiàn)WindowsInfoMonitor服務要實現(xiàn)的功能主要包括以下幾個方面:獲取服務器的性能參數(shù)。向指定數(shù)據(jù)庫持久化服務器性能參數(shù)獲取服務器的性能參數(shù)WindowsInfoMonito服務獲取服務器的性能參數(shù)是通過調(diào)用Sigar工具來實現(xiàn)。采集服務器操作系統(tǒng)信息,可獲取到服務器主機名稱,操作系統(tǒng)版本,操作系統(tǒng)內(nèi)核,調(diào)用sigar中getenv()方法得到數(shù)據(jù),部分代碼如下://操作系統(tǒng)publicvoidCzxt(){ sbcj_czxtczxtVO=newsbcj_czxt(); //獲取主機名稱 Map<String,String>map=System.getenv(); StringZjmc=map.get("COMPUTERNAME"); //獲取操作系統(tǒng)版本 Propertiesprops=System.getProperties(); StringCzxtbb=props.getProperty(""); //操作系統(tǒng)內(nèi)核 StringCzxtnh=props.getProperty("os.arch"); czxtVO.setZjmc(Zjmc); czxtVO.setCzxtbb(Czxtbb); czxtVO.setCzxtnh(Czxtnh); dao.addSbcj_czxt(czxtVO); }采集服務器文件存儲信息,可獲取到盤符類型,文件存儲目錄,文件大小,調(diào)用sigar中getFileSystemList()方法得到數(shù)據(jù),部分代碼如下://文件存儲publicvoidWjcc()throwsSigarException{ Sigarsigar=newSigar(); FileSystemfslist[]=sigar.getFileSystemList();for(inti=0;i<fslist.length;i++){ sbcj_wjccwjccVO=newsbcj_wjcc(); FileSystemfs=fslist[i]; //獲取盤符類型 StringLb=fs.getSysTypeName(); //文件存儲目錄 StringWjccml=fs.getDirName(); //文件大小longWjdx=0;if(!(fs.getSysTypeName()).equals("cdrom")){ FileSystemUsageusage=null; usage=sigar.getFileSystemUsage(fs.getDirName());switch(fs.getType()){case0://TYPE_UNKNOWN:未知break;case1://TYPE_NONEbreak;case2: Wjdx=usage.getTotal()/1024; } } wjccVO.setLb(Lb); wjccVO.setWjccml(Wjccml); wjccVO.setWjdx(Wjdx); dao.addSbcj_wjcc(wjccVO); } }采集服務器CPU內(nèi)存信息,可獲取CPU個數(shù),CPU主頻,調(diào)用sigar中getCpuInfoList()方法得到數(shù)據(jù),部分代碼如下: //CPU內(nèi)存publicvoidCPU_nc()throwsSigarException{ sbcj_cpu_nccpu_ncVO=newsbcj_cpu_nc(); Sigarsigar=newSigar(); CpuInfoinfos[]=sigar.getCpuInfoList(); //獲取CPU個數(shù)intGs=infos.length; //獲取CPU主頻longzp=0;for(inti=0;i<infos.length;i++){ CpuInfoinfo=infos[i]; zp+=info.getMhz(); } Memmem=sigar.getMem();longZl=mem.getTotal()/1024L/1024;longSysl=mem.getUsed()/1024L/1024;longNcsy=mem.getFree()/1024L/1024;floatNc_Syl=Sysl/Zl; cpu_ncVO.setGs(Gs); cpu_ncVO.setZp(zp+""); cpu_ncVO.setZl(Zl); cpu_ncVO.setSysl(Sysl); cpu_ncVO.setNcsy(Ncsy); cpu_ncVO.setNc_Syl(Nc_Syl); dao.addSbcj_cpu_nc(cpu_ncVO); }采集服務器磁盤I/O信息,可獲取磁盤名稱,單位時間讀次數(shù),單位時間寫次數(shù),調(diào)用sigar中getFileSystemList()方法得到數(shù)據(jù),部分代碼如下://磁盤I/OpublicvoidCpio()throwsSigarException{ Sigarsigar=newSigar(); FileSystemfslist[]=sigar.getFileSystemList();for(inti=0;i<fslist.length;i++){ sbcj_cpiocpioVO=newsbcj_cpio(); FileSystemfs=fslist[i]; if(!(fs.getSysTypeName()).equals("cdrom")){ //獲取磁盤名稱 StringCpmc=fs.getDevName(); FileSystemUsageusage=null; usage=sigar.getFileSystemUsage(fs.getDirName()); //獲取單位時間讀次數(shù)floatDcs=usage.getDiskReads(); //獲取單位時間寫次數(shù)floatXcs=usage.getDiskWrites(); cpioVO.setCpmc(Cpmc); cpioVO.setDcs(Dcs); cpioVO.setXcs(Xcs); dao.addSbcj_cpio(cpioVO); } } }采集服務器網(wǎng)卡流量信息,可獲取網(wǎng)卡名稱,IP地址,單位時間流入量,單位時間輸入丟包數(shù),單位時間輸入錯包數(shù),單位時間輸入錯包數(shù),單位時間流出量,單位時間輸出丟包數(shù),單位時間輸出錯包數(shù),調(diào)用sigar中getNetInterfaceList()方法得到數(shù)據(jù),部分代碼如下://網(wǎng)卡流量publicvoidWkll()throwsSigarException{ sbcj_wkllwkllVO=newsbcj_wkll(); Sigarsigar=newSigar(); StringifNames[]=sigar.getNetInterfaceList();for(inti=0;i<ifNames.length;i++){ //獲取網(wǎng)卡名稱 Stringname=ifNames[i]; NetInterfaceConfigifconfig=sigar.getNetInterfaceConfig(name); //獲取IP地址 StringIP=ifconfig.getAddress(); NetInterfaceStatifstat=sigar.getNetInterfaceStat(name); //獲取單位時間流入量longLrl=ifstat.getRxBytes(); //獲取單位時間輸入丟包數(shù)longSrdbs=ifstat.getRxDropped(); //獲取單位時間輸入錯包數(shù);longSrcbs=ifstat.getRxErrors(); //獲取單位時間流出量longLcl=ifstat.getTxBytes(); //獲取單位時間輸出丟包數(shù)longScdbs=ifstat.getTxDropped(); //獲取單位時間輸出錯包數(shù)longSccbs=ifstat.getTxErrors(); dao.addSbcj_wkll(wkllVO); } }采集服務器登錄用戶信息,可獲取登陸用戶名,登錄用戶IP,調(diào)用sigar中getenv()方法得到數(shù)據(jù),部分代碼如下://登錄用戶publicvoidDlyh()throwsUnknownHostException{ sbcj_dlyhdlyhVO=newsbcj_dlyh();//登錄用戶 Map<String,String>map=System.getenv(); StringYhm=map.get("USERNAME");//獲取用戶名 InetAddressaddr; addr=InetAddress.getLocalHost(); StringIP=addr.getHostAddress();//獲取IP dlyhVO.setYhm(Yhm); dlyhVO.setIP(IP); dao.addSbcj_dlyh(dlyhVO); }采集服務器用戶操作信息,調(diào)用sigar中getenv()方法得到數(shù)據(jù),部分代碼如下://用戶操作publicvoidYhcz()throwsUnknownHostException{ sbcj_yhczyhczVO=newsbcj_yhcz();//登錄用戶 Map<String,String>map=System.getenv(); StringYhm=map.get("USERNAME");//獲取用戶名 InetAddressaddr; addr=InetAddress.getLocalHost(); StringIP=addr.getHostAddress();//獲取IP yhczVO.setYhm(Yhm); yhczVO.setIP(IP); dao.addSbcj_yhcz(yhczVO); }采集服務器狀態(tài)總結(jié)信息的意義在于前臺頁面的調(diào)用,前臺需要的數(shù)據(jù)在后臺存儲的過程中進行處理,處理后存在一張?zhí)囟ǖ谋碇?,當前臺需要數(shù)據(jù)時直接到此表中進行讀取,減少前臺頁面的請求時間,部分代碼如下://狀態(tài)總結(jié)sbcj_ztzjztzjVO=newsbcj_ztzj(); //01.獲取主機名稱 Map<String,String>map=System.getenv(); StringZjmc=map.get("COMPUTERNAME"); //02.獲取操作系統(tǒng)版本 Propertiesprops=System.getProperties(); StringCzxtbb=props.getProperty(""); //03.操作系統(tǒng)內(nèi)核 StringCzxtnh=props.getProperty("os.arch"); Sigarsigar=newSigar(); CpuInfoinfos[]=sigar.getCpuInfoList(); //04.獲取CPU個數(shù)intGs=infos.length; //05.獲取CPU主頻longZp=0;for(inti=0;i<infos.length;i++){ CpuInfoinfo=infos[i]; Zp+=info.getMhz(); } //06.CPU使用率 //07.內(nèi)存總量 Memmem=sigar.getMem();longZl=mem.getTotal()/1024L/1024; //08.內(nèi)存使用數(shù)量longSysl=mem.getUsed()/1024L/1024; //09.內(nèi)存使用率floatNc_Syl=Sysl/Zl; FileSystemfslist[]=sigar.getFileSystemList(); //10.磁盤總量longCpzl=0;當服務器運行時間較長之后,表中無用的數(shù)據(jù)過多會影響系統(tǒng)的運行效率,故此可以設定自動清理表數(shù)據(jù)操作,清除無用的舊數(shù)據(jù),部分代碼如下://清空表操作publicvoidtruncate(){ dao.truncate(); }向指定數(shù)據(jù)庫持久化服務器性能參數(shù)利用mysql-connector-java--bin.jar可以令JAVA連接MySQL數(shù)據(jù)庫。數(shù)據(jù)庫連接驅(qū)動工具類代碼如下:/***MySQL數(shù)據(jù)庫連接驅(qū)動類*@author孟令偉**/publicstaticConnectiongetConnection(){ Connectionconn=null;//創(chuàng)建用于連接數(shù)據(jù)庫的Connection對象try{ Class.forName("com.mysql.jdbc.Driver");//加載Mysql數(shù)據(jù)驅(qū)動 conn=DriverManager.getConnection("jdbc:mysql://localhost:3306/mysql01","root","root");//創(chuàng)建數(shù)據(jù)連接 }catch(Exceptione){ System.out.println("數(shù)據(jù)庫連接失敗"+e.getMessage()); }returnconn;//返回所建立的數(shù)據(jù)庫連接 }利用上述寫好的工具類可以將在中獲取的數(shù)據(jù)寫入數(shù)據(jù)庫中,具體部分SQL代碼如下:/***設備數(shù)據(jù)采集——狀態(tài)總結(jié)(sbcj_ztzj)*@paramvo*/ insertintosbcj_ztzj(Sbid,Zjmc,Czxtbb,Czxtnh,Kjsj,Dqsj,Sfwjzd,Gs,Zp,Cpu_Syl,Zl,Sysl,Nc_Syl,Cpzl,Cpsyl,Cp_Syl,Lrl,Lcl,Zhdlyh,Zhdlsj,Rksj)values(001,?,?,?,sysdate(),sysdate(),1,?,?,?,?,?,?,?,?,?,?,?,?,sysdate(),sysdate()); 系統(tǒng)運行時間較長時,數(shù)據(jù)庫內(nèi)存儲數(shù)據(jù)過多,可以執(zhí)行下述方法,清空數(shù)據(jù)庫并保留數(shù)據(jù)庫表結(jié)構(gòu),部分SQL代碼如下:/***執(zhí)行此sql會將數(shù)據(jù)庫中所有數(shù)據(jù)清空,但保留表結(jié)構(gòu)*/truncatetablesbcj_czxtShowWinInfo客戶端程序的實現(xiàn)ShowWinInfo客戶端程序為主要使用JSP技術實現(xiàn)的網(wǎng)站。為管理員提供操作界面,并在瀏覽器中顯示服務器的運行狀態(tài)。首先設計網(wǎng)站界面,網(wǎng)站頁面主要使用html語言和css進行編寫。部分css代碼如下:h1{font-size:20px;color:#4D4D4D;}h3{font-size:16px;color:#3D3D3D;}由于使用CSS控制頁面樣式,使得頁面代碼整齊美觀,耦合性較低,且易讀易改。部分網(wǎng)站頁面代碼如下:<divclass="post"><h2>應用技術</h2><li><em>開發(fā)語言:</em></li><li><em>使用框架:</em></li><li><em>軟件平臺:</em></li><li><em>硬件平臺:</em></li><li><em>開發(fā)工具:<em/></li><li><em>數(shù)據(jù)庫☆:</em></li></div>使用Highcharts插件 Highcharts是一個純JavaScript編寫的一個圖標庫,能夠很簡單便捷的在web網(wǎng)站或是web應用程序添加有交互性的圖像,并且免費提供給個人學習、個人網(wǎng)站和非商業(yè)用途使用。目前Highcharts支持的圖表類型有曲線圖、區(qū)域圖、柱狀圖、餅狀圖、散狀點圖和綜合圖表。Highcharts界面美觀,由于使用JavaScript編寫,所以不需要像Flash和Java那樣需要插件才可以運行,而且運行速度快。部分使用Highcharts的代碼如下:$(document).ready(function(){chart=newHighcharts.Chart({ chart:{ renderTo:'container3_1', backgroundColor:'#F8F8FF', type:'bar' },title:{ text:'CPU'},xAxis:{ categories:['最大值','平均值'], title:{ text:null } }, yAxis:{ min:0, title:{ text:'', align:'high' }, labels:{ overflow:'justify' }},tooltip:{ formatter:function(){ return''+ +':'+this.y+'%';}},series:[{ name:'百分比', data:[71,37]}] });});整站效果網(wǎng)站整體效果見圖5-1。圖5-1網(wǎng)站整體效果圖 點擊右側(cè)菜單欄,即可進行相應的操作,如圖5-2所示。圖5-2點擊操作系統(tǒng)效果圖 使用Highcharts插件進行數(shù)據(jù)顯示,分別點擊文件存儲和磁盤I/O,具體效果如圖5-3.、圖5-4所示。圖5-3Highcharts插件效果圖一圖5-4Highcharts插件效果圖二使用tablesorter在行業(yè)系統(tǒng)的開發(fā)中,數(shù)據(jù)的排序是免不了的,在c/s開發(fā)中,數(shù)據(jù)的排序比較簡單,而在b/s的開發(fā)中,通常排序是靠與服務端交互來完成,每一次排序都需要提起一次數(shù)據(jù)。這樣很麻煩,而且對數(shù)據(jù)庫的壓力也很大。現(xiàn)在我們使用jquery插件tablesorter來完成靜態(tài)排序,大大減輕了數(shù)據(jù)庫的壓力。部分具體使用代碼:$(function(){ $("table") .tablesorter({debug:true,widgets:['zebra']}) .tablesorterPager({container:$("#pager")}); }); <tableborder="1"id="large"class="tablesorter"> <thead> <trclass="header"> <th>設備ID</th><th>磁盤名稱</th><th>單位時間讀次數(shù)</th><th>單位時間寫次數(shù)</th><th>采集時間</th><th>入庫時間</th> </tr> </thead> <tbody> <s:iteratorvalue="listCpio"> <tr> <td><s:propertyvalue="Sbid"/></td> <td><s:propertyvalue="Cpmc"/></td> <td><s:propertyvalue="Dcs"/></td> <td><s:propertyvalue="Xcs"/></td> <td><s:propertyvalue="Cjsj"/></td> <td><s:propertyvalue="Rksj"/></td> </tr> </s:iterator><s:iteratorvalue="listCpio"> <tr> <td><s:propertyvalue="Sbid"/></td> <td><s:propertyvalue="Cpmc"/></td> <td><s:propertyvalue="Dcs"/></td> <td><s:propertyvalue="Xcs"/></td> <td><s:propertyvalue="Cjsj"/></td> <td><s:propertyvalue="Rksj"/></td> </tr> </s:iterator> </tbody> </table>使用tablesorter后的表格效果如圖5-5所示。圖5-5tablesorter插件效果圖一 點擊表頭進行排序操作,效果如圖5-6所示。圖5-6tablesorter插件效果圖二使用JSPJSP(JavaServerPages)是由SunMicrosystems公司倡導、許多公司參與一起建立的一種動態(tài)網(wǎng)頁技術標準。JSP技術有點類似ASP技術,它是在傳統(tǒng)的網(wǎng)頁HTML文件(*.htm,*.html)中插入Java程序段(Scriptlet)和JSP標記(tag),從而形成JSP文件(*.jsp)。用JSP開發(fā)的Web應用是跨平臺的,既能在Linux下運行,也能在其他操作系統(tǒng)上運行。使用Ajax為了提高頁面的響應速率,選擇使用Ajax技術。AJAX不是一種新的編程語言,而是一種用于創(chuàng)建更好更快以及交互性更強的Web應用程序的技術。通過AJAX,JavaScript可使用JavaScript的XMLHttpRequest對象來直接與服務器進行通信。通過這個對象,JavaScript可在不重載頁面的情況與Web服務器交換數(shù)據(jù)。AJAX在瀏覽器與Web服務器之間使用異步數(shù)據(jù)傳輸(HTTP請求),這樣就可使網(wǎng)頁從服務器請求少量的信息,而不是整個頁面。使用StrutsStruts是Apache軟件基金會(ASF)贊助的一個開源項目。它最初是Jakarta項目中的一個子項目,并在2004年3月成為ASF的頂級項目。它通過采用JavaServlet/JSP技術,實現(xiàn)了基于JavaEEWeb應用的MVC設計模式的應用框架,是MVC經(jīng)典設計模式中的一個經(jīng)典產(chǎn)品。本章小結(jié)本章主要是進行系統(tǒng)的編碼實現(xiàn)。在實現(xiàn)的時候先實現(xiàn)獨立功能的模塊,然后再實現(xiàn)幾個模塊間通信,將模塊連接起來形成服務器應用監(jiān)控系統(tǒng),并詳細介紹了所用到的各項技術要點。結(jié)論 論文以目前網(wǎng)絡發(fā)展,服務器集群廣泛應用為背景,設計實現(xiàn)服務器應用監(jiān)控系統(tǒng)。小型服務器集群廣泛應用于企業(yè)中,服務器管理耗費大量的人力、物力。雖然市面上有很多服務器應用監(jiān)控系統(tǒng),系統(tǒng)功能很豐富,而系統(tǒng)一般較復雜,而且很多功能往往都用不到。論文設計的服務器應用監(jiān)控系統(tǒng)功能簡單,操作方便,非常適合小型服務器集群的性能監(jiān)控。只監(jiān)控服務器的一些重要的性能參數(shù),將復雜的性能監(jiān)控簡單化。 論文實現(xiàn)的服務器應用監(jiān)控系統(tǒng)實現(xiàn)了服務器的遠程監(jiān)控,同時監(jiān)控多臺服務器,提供查詢服務器過去一段時間運行狀態(tài)的功能。系統(tǒng)非常人性化交互性很好。 在本文主要在以下幾個方面做了一些研究工作:對服務器監(jiān)控技術進行了全面的分析和研究。學了sigar工具的原理和使用方法,服務器性能指標,如何分析服務器的性能參數(shù)。系統(tǒng)采用了Web服務提供接口供客戶端和服務器訪問,把大量的業(yè)務邏輯處理放在Web服務上,簡化客戶端功能。系統(tǒng)實現(xiàn)遠程監(jiān)控,全面了解數(shù)據(jù)庫編程知識??蛻舳朔掌鲃討B(tài)顯示服務器運行狀態(tài)。使用了Highcharts插件顯示圖表數(shù)據(jù),使數(shù)據(jù)更加直觀;使用tablesorter插件進行表格美觀和表格前端排序,減輕了對服務器的壓力;使用JSP技術減少數(shù)據(jù)耦合度,增強程序的維護性和可拓展性;使用Ajax技術提高頁面響應速度,減輕中心服務器壓力。 受時間、精力以及本人的研究水平等所限,論文所做的研究還不夠細致和深入,存在諸多不足,有待更一步的研究、補充和完善。今后主要的研究工作有以下幾個方面:面向服務是現(xiàn)在網(wǎng)絡發(fā)展的潮流,云計算的SaaS技術就是使用了面向服務的技術。本論文只是用到了Web服務,學會了Web服務器的創(chuàng)建,發(fā)布和訪問。對于Web服務體系架構(gòu)的實現(xiàn)原理沒有做全面深入的研究。系統(tǒng)的界面不是很美觀,不能給人賞心悅目的感覺。需要在未來繼續(xù)加強界面美化的學習。好的軟件,優(yōu)美的界面,良好的互動性操作是前提。本系統(tǒng)對服務器性能沒有做深入研究,只是獲取了服務器的一些主要性能參數(shù),對服務器性能參數(shù)的計算原理沒有做深入研究。本系統(tǒng)實現(xiàn)一個客戶端同時監(jiān)控多臺服務器,考慮到數(shù)據(jù)庫的壓力,服務器性能參數(shù)獲取的時間間隔較長。提高數(shù)據(jù)庫性能可以更加細致的分析服務器運行狀態(tài),分析癱瘓原因。致謝在指導老師的指導和同學幫助之下,我順利地完成了本次畢業(yè)設計。在畢業(yè)設計這段時間里,我認識到了自己的不足并努力的爭取獨立完成我的設計,最終收獲很多,學到了以前很多沒有學到的知識,同時也鞏固了所學過的知識。首先,感謝我的指導老師沈泓老師。作為我的導師,無論是在理論還是實踐方面都給我提了很多寶貴的意見,使我的畢業(yè)設計在有條不紊的環(huán)境下進行,逐步趨于完善,得以順利完成。其次,我也很感謝在開題檢查時老師給我提出寶貴意見,還有其他老師在此期間的關懷和幫助,以及學院為我提供良好的畢業(yè)設計環(huán)境。最后,感謝在畢業(yè)設計中為我提供幫助的學院的老師和同學,以及在畢業(yè)設計中被我引用或參考的論著的作者,總之感謝在畢業(yè)設計期間給予我?guī)椭乃欣蠋熀屯瑢W,感謝你們對我的支持。參考文獻1[美]BruceEckel著.陳昊鵬譯.Java編程思想[M].機械工業(yè)出版社,19942胡艷.軟件工程與標準化.信息技術與標準化.2004:17-213盛仲彪.JSP中數(shù)據(jù)庫訪問的性能優(yōu)化研究.微型電腦應用.2008:16-174董紀陽.軟件設計中的需求分析.電腦知識與技術.2008:56-575林華靈.基于Struts框架技術的Web應用.中國

溫馨提示

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

評論

0/150

提交評論