朱 煜
(山西省氣象信息中心,山西 太原 030006)
?
簡單服務(wù)器監(jiān)控系統(tǒng)的設(shè)計與實現(xiàn)
朱 煜
(山西省氣象信息中心,山西 太原 030006)
隨著網(wǎng)絡(luò)規(guī)模的日益增大,服務(wù)器的日常維護(hù)變得越來越繁雜。系統(tǒng)管理員迫切需要一個實用的監(jiān)控系統(tǒng)將他們從繁重的人工檢查工作中解脫出來。本文針對這一現(xiàn)狀,設(shè)計出一套簡單的服務(wù)器監(jiān)控系統(tǒng),幫助系統(tǒng)管理員更好的了解服務(wù)器的運行狀態(tài),及時發(fā)現(xiàn)故障,保障服務(wù)器的穩(wěn)定運行。
監(jiān)控系統(tǒng);socket;Web服務(wù)
服務(wù)端定時(2分鐘)收集本機(jī)的狀態(tài)信息并通過socket接口上傳至中心站服務(wù)器。中心站收集這些數(shù)據(jù)并錄入數(shù)據(jù)庫中,同時中心站提供web接口供用戶訪問。
用戶通過瀏覽器訪問中心站web服務(wù),可以查看服務(wù)器狀態(tài)信息。用戶可以選擇需要監(jiān)控的服務(wù)器,也可以設(shè)置報警閾值參數(shù)。Highchart控件將服務(wù)器的狀態(tài)數(shù)據(jù)繪制成曲線圖、直方圖以及表格等形式,直觀的向用戶展示服務(wù)器狀態(tài)。
2.1 數(shù)據(jù)采集模塊
采集的服務(wù)器數(shù)據(jù)包括:CPU使用率、內(nèi)存使用率、磁盤空間等。并定時的將采集到的服務(wù)器狀態(tài)數(shù)據(jù)傳入中心站,中心站將這些數(shù)據(jù)入庫,便于以后查詢,分析。
2.1.1 cpu利用率
Linux/Unix下,CPU利用率分為用戶態(tài),系統(tǒng)態(tài)和空閑態(tài),分別表示CPU處于用戶態(tài)執(zhí)行的時間,系統(tǒng)內(nèi)核執(zhí)行的時間和空閑系統(tǒng)進(jìn)程執(zhí)行的時間。CPU利用率是指:CPU執(zhí)行非系統(tǒng)空閑進(jìn)程的時間/CPU總的執(zhí)行時間。各個CPU時間可以通過命令cat/proc/stat獲得。也可以通過讀取/proc/loadavg得到機(jī)器的1/5/15分鐘平均負(fù)載。
Windows下,可以通過wmi查詢,命令:wmic path win32_processor get loadpercentage /value。
2.1.2 內(nèi)存信息
Linux/Unix下,可以通過從/proc/meminfo文件中提取兩個數(shù)據(jù),當(dāng)前內(nèi)存的使用量(cmem)以及內(nèi)存總量(amem)。內(nèi)存使用百分比=100*(cmem/umem)。也可以同free,top等命令進(jìn)行查看。
Windows下,可以通過systeminfo命令查看物理內(nèi)存總量以及可用的物理內(nèi)存等信息,可以計算出內(nèi)存使用率。
2.1.3 磁盤空間
Linux/Unix下,可以通過df命令查看硬盤分區(qū)情況,以及每個分區(qū)總?cè)萘?、使用容量、剩余容量等?/p>
Windows下,可以通過wmic LogicalDisk where "Caption='C:'" get FreeSpace,Size /value 命令查看剩余空間及總空間。
2.1.4 其他參數(shù)
系統(tǒng)運行時間:systeminfo(windows),uptime(linux/unix)
主機(jī)名稱:hostname (所有系統(tǒng))
Ip地址:ipconfig(windows),ifconfig(linux/unix)
2.2 通信模塊
通信模塊是用C語言通過socket接口編程開發(fā)的,首先中心站在TCP4000端口處進(jìn)行監(jiān)聽,服務(wù)端通過TCP協(xié)議連接中心站的4000端口。建立連接之后,服務(wù)端發(fā)送采集到的監(jiān)控數(shù)據(jù),而中心站在收到數(shù)據(jù)后將這些數(shù)據(jù)錄入數(shù)據(jù)庫中。Socket通訊建立的具體過程如下:(見圖1)
1) 中心站bind網(wǎng)卡后再使用TCP4000端口listen。
2) 服務(wù)端bind網(wǎng)卡后使用connect函數(shù)向中心站請求建立連接,中心站accept后服務(wù)端把監(jiān)控信息通過send函數(shù)發(fā)送給中心站。
3) 中心站通過recv函數(shù)接受服務(wù)端發(fā)來的數(shù)據(jù),并寫入mysql數(shù)據(jù)庫中。
4) 通訊完后服務(wù)端使用close函數(shù)關(guān)閉套接字。
圖1 socket通信流程圖
3.1 數(shù)據(jù)庫設(shè)計
中心站負(fù)責(zé)收集各個服務(wù)端上報的數(shù)據(jù),由于服務(wù)端數(shù)目較多,數(shù)據(jù)更新也非常頻繁,因此采用MySQL數(shù)據(jù)庫來管理服務(wù)器狀態(tài)數(shù)據(jù)。這樣數(shù)據(jù)的新增,更新、查詢就變得非常容易了。中心站將服務(wù)器狀態(tài)信息寫入監(jiān)控庫表中。庫表結(jié)構(gòu)如表1所示。
表1 監(jiān)控庫表
3.2 web網(wǎng)頁設(shè)計
網(wǎng)站頁面采用PHP語音編寫,使用mysql_fetch_array函數(shù)可以從數(shù)據(jù)庫中循環(huán)讀取出各個設(shè)備的狀態(tài)信息,前端頁面使用html語言和css進(jìn)行設(shè)計。圖2是網(wǎng)站頁面效果圖。
監(jiān)控頁面能夠?qū)Ψ?wù)器狀態(tài)進(jìn)行檢測與報警,根據(jù)預(yù)設(shè)的條件觸發(fā)報警,報警采用閃爍、聲音等方式提醒用戶注意。表2是報警的預(yù)設(shè)規(guī)則。
表2 報警規(guī)則
當(dāng)用戶點擊CPU、內(nèi)存、磁盤空間等項目時,會彈出該項目的詳細(xì)信息,一般采用圖形或表格的形式呈現(xiàn)給用戶。例如點擊磁盤空間,如圖3所示。
該功能采用Highcharts圖表控件,Highcharts是一個純JavaScript編寫的圖表庫,能方便快速的在web網(wǎng)站或者web應(yīng)用程序中添加有交互性的圖像,并且免費提供給個人學(xué)習(xí)、個人網(wǎng)站和非商業(yè)用途使用。目前Highcharts支持的圖表類型有曲線圖、柱狀圖、餅圖、區(qū)域圖、散點圖和綜合圖表。Highcharts界面美觀,由于采用JavaScript編寫,因此不需要加載額外的插件,并且運行速度快、兼容性高、能夠完美支持當(dāng)前主流瀏覽器。
圖3 磁盤空間監(jiān)控圖表
隨著信息網(wǎng)絡(luò)的深入發(fā)展、業(yè)務(wù)規(guī)模的不斷擴(kuò)大,服務(wù)器管理需要耗費的人力、物力也不斷上升。雖然市面上有不少信息網(wǎng)絡(luò)監(jiān)控系統(tǒng),雖然它們功能比較豐富,系統(tǒng)也比較復(fù)雜,但是很多功能往往都用不到。本文設(shè)計的服務(wù)器監(jiān)控系統(tǒng)具有功能實用,操作方便的特點,非常適合中小企業(yè)服務(wù)器監(jiān)控的需求。本系統(tǒng)監(jiān)控服務(wù)器的一些重要的參數(shù),提供查詢服務(wù)器過去一段時間運行狀態(tài),配合報警的功能實現(xiàn)了業(yè)務(wù)系統(tǒng)監(jiān)控的便捷化。
[1] 斯蒂文.TCP/IP詳解卷1:協(xié)議[M].北京:機(jī)械工業(yè)出版社,2013.
[2] 斯蒂文.UNIX環(huán)境高級編程[M].北京:人民郵電出版社,2014.
Design and Implementation of a Simple Server Monitoring System
Zhu Yu
(ShanxiMeteorologicalInformationCenter,TaiyuanShanxi030006,China)
With the increasing scale of the network,the daily maintenance of the servers becomes more and more complicated.System administrator urgently need a practical monitoring system to release them from the heavy manual inspection work.According to this situation,this paper designs a simple server monitoring system to help system administrator better understanding the operational status of the server,detecting faults and ensuring the stable operation of the server.
monitoring system; socket; Web service
2016-07-08
朱 煜(1984-),男,山西太原人,工程師,工程碩士,主要從事信息技術(shù)工作。
1674-4578(2016)05-0026-03
TP393
A