嚴(yán)競(jìng)雄
(南通墅勤數(shù)據(jù)科技有限公司 江蘇省南通市 226002)
當(dāng)前,云計(jì)算、大數(shù)據(jù)、區(qū)塊鏈等新興技術(shù)日新月異,發(fā)展十分迅速。一些傳統(tǒng)的信息技術(shù)已經(jīng)被分布式系統(tǒng)、分布式數(shù)據(jù)庫、分布式計(jì)算所取代,對(duì)于線上服務(wù)器資源總量與利用率的數(shù)據(jù)獲取,目前有多種實(shí)現(xiàn)方式,比如Hadoop YARN、Spark等大數(shù)據(jù)平臺(tái)提供在線資源展示頁面,但是有的平臺(tái),例如一些流媒體服務(wù)并不提供此類系統(tǒng)資源數(shù)據(jù)的獲取接口。同時(shí),不同的平臺(tái)、不同的操作系統(tǒng)之間,數(shù)據(jù)的訪問與監(jiān)控也難以做到一致,不便于資源的統(tǒng)一管理、統(tǒng)一監(jiān)控和個(gè)性化定制,對(duì)于服務(wù)器集群或者是云平臺(tái)資源一體化管理還存在較多可以優(yōu)化和建設(shè)之處。因此,建立一款基于Webservice的個(gè)性化資源監(jiān)控系統(tǒng)對(duì)于云平臺(tái)建設(shè)具有積極的意義和推動(dòng)作用。
Webservice是一種具有低耦合性的Web應(yīng)用程序,使用XML來實(shí)現(xiàn)多平臺(tái),多系統(tǒng)間的數(shù)據(jù)交互,提供各個(gè)平臺(tái)系統(tǒng)間相互協(xié)同工作的能力。
運(yùn)用Webservice,研發(fā)人員可以更好的將時(shí)間和精力聚焦到業(yè)務(wù)流程或者是業(yè)務(wù)邏輯的具體實(shí)現(xiàn),通過接口技術(shù),使建立在不同操作系統(tǒng)之上的應(yīng)用程序數(shù)據(jù)交互更為方便。

圖1:系統(tǒng)架構(gòu)示意圖
整個(gè)系統(tǒng)架構(gòu)示意圖如圖1所示,大致分為三部分,即C端(客戶端)、Web/Webservice服務(wù)器端和MySQL數(shù)據(jù)庫服務(wù)器端,客戶端通過系統(tǒng)信息收集軟件將CPU的利用率,內(nèi)存利用率、硬盤使用情況等資源信息的相關(guān)數(shù)據(jù)通過發(fā)送至Webservice的指定接口,Webservice接收到數(shù)據(jù),將數(shù)據(jù)處理、提交給后臺(tái)的MySQL數(shù)據(jù)庫服務(wù)器,后臺(tái)MySQL數(shù)據(jù)庫負(fù)責(zé)對(duì)數(shù)據(jù)的處理和存儲(chǔ),實(shí)現(xiàn)數(shù)據(jù)的及時(shí)記錄與更新。系統(tǒng)維護(hù)人員可訪問Web服務(wù)器訪問統(tǒng)計(jì)數(shù)據(jù),根據(jù)得到的數(shù)據(jù)實(shí)現(xiàn)在線服務(wù)器的資源監(jiān)控。
數(shù)據(jù)庫采用MySQL,MySQL是一種關(guān)系型數(shù)據(jù)庫,支持Windows、Linux、FreeBSD等操作系統(tǒng),提供C、C++、Python、.NET等多種編程語言接口,為程序員跨平臺(tái)跨系統(tǒng)開發(fā)提供了方便。關(guān)于數(shù)據(jù)庫的設(shè)計(jì),首先在MySQL中新建一個(gè)數(shù)據(jù)庫,并在新建的數(shù)據(jù)庫中新建一張表,表內(nèi)設(shè)有timestamp、ip、computer、system、releaseversion、platformversion、osversion、platform、machine、osarch、cpuname、cpucores、cpuuse、memcapa、memoryuse、diskinfor、diskuse、cpusn、boardsn、biossn、mac字段,分別代表時(shí)間戳、IP地址、計(jì)算機(jī)名、系統(tǒng)、發(fā)布版本號(hào)、平臺(tái)版本號(hào)、操作系統(tǒng)版本號(hào)、所屬平臺(tái)、系統(tǒng)架構(gòu)、位數(shù)、CPU型號(hào)、CPU核數(shù)、CPU利用率、內(nèi)存容量、內(nèi)存利用率、磁盤序列號(hào)、磁盤分區(qū)大小、CPU序列號(hào)、主板序列號(hào)、BIOS序列號(hào)和MAC地址。
Python支持跨平臺(tái)開發(fā)和部署,客戶端采用PyCharm作為IDE進(jìn)行軟件開發(fā),客戶端主要分為兩部分,即信息搜集和信息上報(bào),系統(tǒng)信息的搜集主要用到了WMI模塊,WMI的全稱為Windows Management Instrumentation,通過WMI模塊可以搜集當(dāng)前系統(tǒng)相關(guān)信息。在使用WMI模塊前,首先要通過import wmi代碼語句引入。如,需要獲取系統(tǒng)的版本信息和位數(shù)信息,可通過編輯如下代碼得到。

同樣,通過WMI模塊還可以獲得CPU信息、內(nèi)存信息、磁盤信息等,十分方便。
信息上報(bào)采用suds模塊調(diào)用Webservice接口,在使用前,通過from suds.client import Client代碼引入suds模塊,Webservice接口調(diào)用如下所示:

因?yàn)閃ebservice服務(wù)端設(shè)有SOAP Header認(rèn)證,因此,在客戶端中引入了token進(jìn)行用戶鑒權(quán),通過Webservice的ClientInformationCollecter接口進(jìn)行數(shù)據(jù)上報(bào)。
Webservice采用.NET Framework和C#語言進(jìn)行設(shè)計(jì)開發(fā),通過MySqlConnection conn=ConnectionPool.getPool().getConnection();語句,使用MySQL連接池技術(shù)作為數(shù)據(jù)庫連接的資源分配手段,實(shí)現(xiàn)了Webservice與數(shù)據(jù)庫之間統(tǒng)一的連接管理,避免數(shù)據(jù)庫連接泄露,從而實(shí)現(xiàn)了連接復(fù)用和更快的系統(tǒng)響應(yīng)速度。使用SOAP Header消息認(rèn)證,如在API接口函數(shù)執(zhí)行開始處調(diào)用if (header.ValideUser(header.UserName,header.PassWord))判斷語句,在客戶端連接Webservice時(shí),通過用戶鑒權(quán),如果鑒權(quán)成功,才能對(duì)接Webservice接口進(jìn)行數(shù)據(jù)傳輸,否則則返回認(rèn)證錯(cuò)誤信息,從而提高了Webservice數(shù)據(jù)傳輸?shù)陌踩浴T跀?shù)據(jù)入庫前,Webservice應(yīng)用程序會(huì)先判斷數(shù)據(jù)庫中是否已經(jīng)含有需要存儲(chǔ)數(shù)據(jù)的表,若表不存在,則會(huì)先按照規(guī)定格式,如表前綴名加日期名,創(chuàng)建新的數(shù)據(jù)庫表,創(chuàng)建成功后,再在表內(nèi)添加數(shù)據(jù)。實(shí)現(xiàn)數(shù)據(jù)的按表、按天存放,使數(shù)據(jù)的存儲(chǔ)更加合理有序。
開發(fā)完畢后,需要對(duì)客戶端和服務(wù)端的程序分別打包發(fā)布,對(duì)于客戶端,可以使用pyinstaller對(duì)python程序進(jìn)行打包,生成單個(gè)exe文件。對(duì)于服務(wù)端的Webservice應(yīng)用程序,可點(diǎn)擊Visual Studio菜單欄的生成,在下拉菜單中,點(diǎn)擊發(fā)布,在彈出的發(fā)布頁中選擇需要生成的文件路徑,點(diǎn)擊發(fā)布后即可。發(fā)布生成后,可將生成的一系列文件復(fù)制到IIS服務(wù)器指定目錄下,在IIS管理器中新建添加網(wǎng)站,在添加網(wǎng)站窗口中填入網(wǎng)站名稱、網(wǎng)站物理路徑等信息,同時(shí),添加傳遞身份認(rèn)證。完成后點(diǎn)擊確定按鈕,啟動(dòng)網(wǎng)站即可。
在客戶端運(yùn)行系統(tǒng)信息搜集軟件,若數(shù)據(jù)庫表中產(chǎn)生數(shù)據(jù),則證明客戶端與服務(wù)端系統(tǒng)數(shù)據(jù)聯(lián)通。
通過分別對(duì)客戶端、服務(wù)端程序的設(shè)計(jì)、開發(fā)、部署,測(cè)試,最終完成一整套基于Webservice的系統(tǒng)信息上報(bào)平臺(tái)的設(shè)計(jì)與實(shí)現(xiàn)。介紹了客戶端利用Python編程語言進(jìn)行信息搜集與上報(bào)的軟件開發(fā)過程,服務(wù)端利用.NET Framework和C#開發(fā)Webservice應(yīng)用程序的過程,Webservice技術(shù)實(shí)現(xiàn)了不同系統(tǒng)間數(shù)據(jù)共享的目的,達(dá)到了系統(tǒng)平臺(tái)間的整合與統(tǒng)一,它的可集成性、松散耦合等特點(diǎn)使系統(tǒng)的性能得到了提升,部署更加靈活,為研發(fā)運(yùn)維一體化建設(shè)提供了技術(shù)支持,基于Webservice的系統(tǒng)信息上報(bào)平臺(tái)使負(fù)責(zé)線上服務(wù)器運(yùn)維的工作人員有更多的精力投入到如何優(yōu)化資源配置,而非如以往將重心放在數(shù)據(jù)監(jiān)控上,提高了運(yùn)維人員的工作效率,同時(shí)也提升了企業(yè)的競(jìng)爭(zhēng)力、生產(chǎn)力。