馬延立
(許昌職業(yè)技術(shù)學(xué)院信息中心 河南 許昌 461000)
計(jì)算機(jī)機(jī)房終端管理主要包括終端設(shè)備硬件的日常維護(hù)、系統(tǒng)軟件優(yōu)化、網(wǎng)絡(luò)信息配置與管理、故障終端的維修等。傳統(tǒng)機(jī)房終端管理軟件往往以客戶端的形式安裝在每個(gè)機(jī)房管理機(jī),不能做到集中管理,且功能較為簡(jiǎn)單,智能化水平不高[1-3]。針對(duì)傳統(tǒng)系統(tǒng)設(shè)計(jì)模式和功能存在的問(wèn)題,本文設(shè)計(jì)實(shí)現(xiàn)了一套機(jī)房終端在線監(jiān)測(cè)與遠(yuǎn)程管理系統(tǒng),該系統(tǒng)可實(shí)現(xiàn)機(jī)房管理員遠(yuǎn)程監(jiān)測(cè)所有終端運(yùn)行情況,實(shí)現(xiàn)終端故障及配件變更自動(dòng)告警、遠(yuǎn)程進(jìn)行網(wǎng)絡(luò)設(shè)置維護(hù)等功能。
機(jī)房終端在線監(jiān)測(cè)與遠(yuǎn)程管理系統(tǒng)的主要需求分析如下:
(1)資源可查可控
監(jiān)測(cè)機(jī)房終端設(shè)備的CPU、內(nèi)存、顯卡、硬盤、MAC地址、網(wǎng)絡(luò)資源等使用情況,實(shí)現(xiàn)對(duì)這些資源查看、管理的目的[4]。
(2)終端遠(yuǎn)程運(yùn)維
遠(yuǎn)程對(duì)終端進(jìn)行基礎(chǔ)的開關(guān)機(jī)及重啟操作,實(shí)現(xiàn)遠(yuǎn)程設(shè)置終端網(wǎng)絡(luò)信息,通過(guò)Shell命令實(shí)現(xiàn)遠(yuǎn)程運(yùn)維Linux服務(wù)器,減輕管理人員工作量。
(3)易于教學(xué)管理
便于對(duì)機(jī)房課表的管理,結(jié)合課表可設(shè)置終端自動(dòng)啟停??蓪?duì)機(jī)房利用率、終端維修率、終端使用率進(jìn)行統(tǒng)計(jì),以此為管理人員提供決策依據(jù)。
(4)客戶端易于部署
機(jī)房終端設(shè)備上安裝的客戶端軟件易于部署安裝,開機(jī)自啟,且支持多平臺(tái)操作系統(tǒng)。
機(jī)房終端在線監(jiān)測(cè)與遠(yuǎn)程管理系統(tǒng)的總體目標(biāo)為實(shí)現(xiàn)對(duì)機(jī)房終端的實(shí)時(shí)監(jiān)測(cè),通過(guò)遠(yuǎn)程管理終端、規(guī)范終端維修流程達(dá)到提高機(jī)房的管理水平和效率。系統(tǒng)整體功能可歸納為終端監(jiān)測(cè)、遠(yuǎn)程管理、終端報(bào)修、系統(tǒng)管理4部分。機(jī)房終端監(jiān)測(cè)與遠(yuǎn)程管理系統(tǒng)總體功能架構(gòu)見圖1。
圖1 機(jī)房終端監(jiān)測(cè)與遠(yuǎn)程管理系統(tǒng)總體功能架構(gòu)
(1)終端監(jiān)測(cè):終端開機(jī)后通過(guò)客戶端agent軟件自動(dòng)上報(bào)終端相關(guān)信息,系統(tǒng)根據(jù)每個(gè)機(jī)房IP段信息自動(dòng)把終端歸類到相應(yīng)機(jī)房。同時(shí)對(duì)在線終端的CPU、內(nèi)存、硬盤、網(wǎng)絡(luò)信息等進(jìn)行監(jiān)測(cè),當(dāng)監(jiān)測(cè)到最近兩次終端硬件發(fā)生變化時(shí)會(huì)自動(dòng)告警,向管理員發(fā)送通知,以便管理員可以及時(shí)處理。
(2)遠(yuǎn)程管理:機(jī)房管理人員可通過(guò)系統(tǒng)遠(yuǎn)程對(duì)終端進(jìn)行開機(jī)、關(guān)機(jī)、重啟等操作,可遠(yuǎn)程單個(gè)或批量修改機(jī)房的網(wǎng)絡(luò)信息,如IP地址、DNS、網(wǎng)關(guān)等。同時(shí)可通過(guò)發(fā)送命令的方式遠(yuǎn)程啟動(dòng)終端上安裝的軟件。
(3)終端維護(hù):系統(tǒng)管理員可對(duì)配件進(jìn)行新增、修改、刪除等操作,終端故障自動(dòng)上報(bào)后,管理員實(shí)際查看故障原因后可上報(bào)申請(qǐng)配件進(jìn)行維修,經(jīng)審核后可從配件中自動(dòng)調(diào)配相應(yīng)配件,同時(shí)生成配件及維修記錄[5]。
(4)系統(tǒng)管理:系統(tǒng)角色分為系統(tǒng)管理員、審核員、機(jī)房管理員,每個(gè)角色可靈活配置相應(yīng)權(quán)限。系統(tǒng)管理員有最高權(quán)限,審核員主要是對(duì)故障報(bào)修及配件進(jìn)行審核,機(jī)房管理員為該系統(tǒng)主要使用人員。系統(tǒng)管理還包括日志、報(bào)表的管理功能。
機(jī)房終端在線監(jiān)測(cè)與遠(yuǎn)程管理系統(tǒng)架構(gòu)見圖2。前端Web界面通過(guò)WebSocket向服務(wù)器端發(fā)送指令,服務(wù)器端收到相應(yīng)指令后轉(zhuǎn)發(fā)至相應(yīng)終端,終端執(zhí)行命令后返回?cái)?shù)據(jù)至服務(wù)器,并保存相應(yīng)數(shù)據(jù)至數(shù)據(jù)庫(kù),Web端調(diào)用相應(yīng)API獲取相應(yīng)數(shù)據(jù)。
圖2 系統(tǒng)架構(gòu)
(1)Web端:系統(tǒng)采用B/S系統(tǒng)架構(gòu),使用目前比較流行的前后端分離的MVVM架構(gòu)設(shè)計(jì)模式。前端采用Vue.js進(jìn)行開發(fā),Vue是一個(gè)輕量級(jí)前端框架,具有雙向數(shù)據(jù)綁定、組件化、數(shù)據(jù)和結(jié)構(gòu)的分離、虛擬DOM等特點(diǎn),且運(yùn)行速度快。Web端與服務(wù)器端的指令通過(guò)WebSocket進(jìn)行雙向通信,WebSocket可以在前端Web瀏覽器和服務(wù)器之間進(jìn)行任意的雙向數(shù)據(jù)傳輸。WebSocket協(xié)議基于TCP協(xié)議實(shí)現(xiàn),包含初始的握手過(guò)程以及后續(xù)的多次數(shù)據(jù)幀雙向傳輸過(guò)程,這樣做是為了在WebSocket應(yīng)用和WebSocket服務(wù)器進(jìn)行多次雙向通信時(shí),避免服務(wù)器打開多個(gè)HTTP連接,以此節(jié)約服務(wù)器資源,提高了資源利用率和工作效率。
(2)服務(wù)器端:服務(wù)器端主要提供系統(tǒng)API接口及Socket通信,其中API使用ThinkPHP5進(jìn)行開發(fā)。ThinkPHP是一個(gè)免費(fèi)開源的輕量級(jí)PHP開發(fā)框架,具有快速、簡(jiǎn)單的面向?qū)ο蟮忍攸c(diǎn),而ThinkPHP5專門為API開發(fā)進(jìn)行了性能優(yōu)化,很適合快速搭建API接口。Socket通信采用Workerman框架,Workerman是一款基于PHP的開源高性能異步socket框架,支持高并發(fā),支持TCP長(zhǎng)連接,支持WebSocket、HTTP等協(xié)議,支持自定義協(xié)議,穩(wěn)定性較高,應(yīng)用領(lǐng)域十分廣泛。
由于Web端的WebSocket服務(wù)無(wú)法與終端基于TCP的客戶端服務(wù)直接進(jìn)行通信,因此在服務(wù)器端開啟一個(gè)WebSocket服務(wù)與Web前端進(jìn)行通信,同時(shí)開啟一個(gè)TCP服務(wù)轉(zhuǎn)發(fā)前端命令與機(jī)房客戶端進(jìn)行通信。
(3)客戶端:系統(tǒng)通過(guò)在機(jī)房終端安裝agent客戶端軟件獲取終端資源信息,客戶端軟件基于Python開發(fā)。Python的基礎(chǔ)代碼庫(kù)和第三方庫(kù)非常完善,覆蓋了網(wǎng)絡(luò)、文件、GUI、數(shù)據(jù)庫(kù)、文本等多方面內(nèi)容,使用Python當(dāng)中的wmi、os、socket等模塊,可以很方便快捷地開發(fā)滿足本系統(tǒng)需求的客戶端軟件,且開發(fā)的客戶端軟件體積非常小,本系統(tǒng)終端運(yùn)行的客戶端軟件大小不到2 M。
由于Python語(yǔ)言是跨平臺(tái)的,所以客戶端支持Windows和Linux操作系統(tǒng),但是因?yàn)閃indows操作系統(tǒng)存在的版本較多且不同版本之間差異性較大,目前客戶端暫時(shí)只支持Linux、Windows server 2008以上及Windows 7以上操作系統(tǒng)。
為了使系統(tǒng)能夠更加靈活、快速地部署在不同操作系統(tǒng)的服務(wù)器上,本系統(tǒng)選擇使用的數(shù)據(jù)庫(kù)為MySQL,MySQL是一個(gè)具有體積小、命令執(zhí)行速度快、總體擁有成本低、跨平臺(tái)等優(yōu)點(diǎn)的開源數(shù)據(jù)庫(kù)。
(1)終端基本信息表(BaseInfo):該表主要存放終端的基本信息,包括IP地址、MAC地址、硬件信息等,表內(nèi)數(shù)據(jù)的獲取由終端開機(jī)后自動(dòng)向服務(wù)器發(fā)送保存。由于不同終端基本信息有差異,比如內(nèi)存條的個(gè)數(shù)不確定,就不便使用某個(gè)固定字段去存放內(nèi)存信息,因此本系統(tǒng)將終端發(fā)送的基本信息數(shù)據(jù)以JSON格式存放在單個(gè)字段bi_info內(nèi),讀取數(shù)據(jù)時(shí)后臺(tái)接口通過(guò)算法解析數(shù)據(jù)后發(fā)送前端顯示。
(2)終端使用情況表(UsedInfo):該表主要存放終端內(nèi)存、CPU、硬盤使用情況及網(wǎng)卡流量等需要監(jiān)測(cè)的數(shù)據(jù),由于系統(tǒng)要不斷監(jiān)測(cè)終端的實(shí)時(shí)使用情況及歷史記錄,因此該表也是數(shù)據(jù)量最大、交互最為頻繁的表。對(duì)于硬件使用情況的歷史記錄存放范圍,在系統(tǒng)中可以自由設(shè)置,默認(rèn)普通PC終端保存最近一周使用情況,服務(wù)器終端則保存最近3天的記錄。
(3)終端在線情況表(OnlineInfo):該表設(shè)計(jì)存放在線終端的MAC、最近一次終端在線時(shí)間、終端離線時(shí)間。當(dāng)終端首次上線后,該表保存終端MAC地址及上線時(shí)間,當(dāng)后臺(tái)服務(wù)在約定時(shí)間內(nèi)監(jiān)測(cè)不到終端發(fā)送的心跳包后認(rèn)為終端離線,此時(shí)向表中插入終端離線時(shí)間。當(dāng)同一終端再次上線、離線后更新表中數(shù)據(jù),每個(gè)終端最多在表中生成兩條記錄。
(1)資源監(jiān)測(cè):機(jī)房管理員設(shè)置每個(gè)機(jī)房的IP地址范圍,終端開機(jī)后客戶端軟件首先自動(dòng)上報(bào)資源信息,系統(tǒng)根據(jù)終端IP自動(dòng)把終端歸類到相應(yīng)機(jī)房,可監(jiān)測(cè)終端CUP、內(nèi)存、操作系統(tǒng)等資源信息。資源監(jiān)測(cè)使機(jī)房管理員可整體掌握每個(gè)機(jī)房終端狀況,發(fā)現(xiàn)異?;蚬收辖K端可及時(shí)處理,提高了處理效率。系統(tǒng)監(jiān)測(cè)到終端硬件參數(shù)發(fā)生變化時(shí),系統(tǒng)會(huì)自動(dòng)發(fā)出告警提示,在硬件變更監(jiān)測(cè)中可以查看具體發(fā)生變化的硬件參數(shù)。系統(tǒng)監(jiān)測(cè)終端上報(bào)的資源信息如下:
(2)遠(yuǎn)程操作:機(jī)房管理員可單個(gè)或者批量修改終端的網(wǎng)絡(luò)設(shè)置信息,當(dāng)選擇批量修改時(shí),只需填入首個(gè)終端IP地址、掩碼、網(wǎng)關(guān)等信息,系統(tǒng)根據(jù)所選終端數(shù)量IP地址自動(dòng)進(jìn)行增加,實(shí)現(xiàn)了對(duì)機(jī)房網(wǎng)絡(luò)資源的統(tǒng)一管理。當(dāng)需要進(jìn)行遠(yuǎn)程關(guān)機(jī)或者重啟終端時(shí),客戶端收到前端發(fā)送的指令后,在預(yù)設(shè)的時(shí)間內(nèi)進(jìn)行相應(yīng)操作,其中關(guān)機(jī)、重啟操作調(diào)用Python中的os模塊來(lái)實(shí)現(xiàn),關(guān)機(jī)代碼為os.system('shutdown /s /t 0'),重啟代碼為os.system('shutdown /r /t 0')。遠(yuǎn)程開機(jī)指令則需要終端開啟“允許魔法包喚醒”,通過(guò)網(wǎng)卡接收指定的喚醒數(shù)據(jù)進(jìn)行開機(jī)。同時(shí)結(jié)合機(jī)房的課表,系統(tǒng)可設(shè)置每個(gè)機(jī)房的終端自動(dòng)開關(guān)機(jī)時(shí)間,這極大地減輕了管理人員的工作量。遠(yuǎn)程網(wǎng)絡(luò)設(shè)置主要實(shí)現(xiàn)的Python代碼如下:
(3)Linux服務(wù)器運(yùn)維:選擇要運(yùn)維的Linux服務(wù)器之后,通過(guò)選擇系統(tǒng)中設(shè)定的常用Shell命令模板或者輸入命令進(jìn)行執(zhí)行,可以得到命令執(zhí)行的結(jié)果。同時(shí)通過(guò)“任務(wù)計(jì)劃”菜單新建任務(wù),設(shè)置任務(wù)執(zhí)行頻率,可以進(jìn)行Shell命令自動(dòng)按計(jì)劃執(zhí)行,達(dá)到對(duì)Linux服務(wù)器的自動(dòng)運(yùn)維。任務(wù)執(zhí)行失敗時(shí),可通過(guò)“任務(wù)告警”菜單進(jìn)行查看。
(4)故障上報(bào):機(jī)房終端開機(jī)后在約定的時(shí)間內(nèi)不在線的終端會(huì)被認(rèn)定為存在故障,系統(tǒng)會(huì)自動(dòng)向管理員發(fā)出告警,管理員需要實(shí)地查看確認(rèn)終端是否存在故障,若確實(shí)終端存在異常,機(jī)房管理員查明故障原因后可以通過(guò)故障維修申請(qǐng)配件進(jìn)行維修,提交申請(qǐng)后,按照維修流程,審核員需進(jìn)行審核,同意維修后發(fā)放配件維修。這種方式能夠讓管理員主動(dòng)去發(fā)現(xiàn)解決問(wèn)題,規(guī)范維修配件使用流程,保證機(jī)房可用終端數(shù)量,為計(jì)算機(jī)教學(xué)提供有力保障。
(5)權(quán)限管理:系統(tǒng)對(duì)不同角色分配不同菜單顯示權(quán)限、按鈕操作權(quán)限。用戶登錄后,根據(jù)數(shù)據(jù)庫(kù)保存的用戶角色權(quán)限列表,前端通過(guò)動(dòng)態(tài)路由加載顯示菜單信息。通過(guò)配置按鈕操作權(quán)限實(shí)現(xiàn)前端頁(yè)面增加、刪除、修改按鈕的顯示或者可用狀態(tài)。
(6)客戶端軟件:客戶端軟件安裝后自動(dòng)設(shè)置為開機(jī)自啟。客戶端啟動(dòng)后自動(dòng)上報(bào)本機(jī)資源信息及網(wǎng)絡(luò)狀態(tài),若由于網(wǎng)絡(luò)故障等原因發(fā)生連接服務(wù)器超時(shí),客戶端則會(huì)一直保持重連狀態(tài),直到連接成功,之后客戶端按照設(shè)定的心跳間隔發(fā)送指定數(shù)據(jù)并等待響應(yīng)前端指令。客戶端軟件默認(rèn)后臺(tái)運(yùn)行,終端使用者無(wú)感知??蛻舳俗詥㈥P(guān)鍵代碼如下:
本文設(shè)計(jì)實(shí)現(xiàn)的機(jī)房終端在線監(jiān)測(cè)與遠(yuǎn)程管理系統(tǒng)為計(jì)算機(jī)機(jī)房管理提供了一套切實(shí)可行的方案,是對(duì)機(jī)房管理工作的創(chuàng)新和升級(jí)。后期可把機(jī)房空調(diào)、門禁、監(jiān)控等物理設(shè)備的管理加入系統(tǒng)之中,實(shí)現(xiàn)更為綜合、完整的機(jī)房管理系統(tǒng)。