索宸耀, 陳 博, 張 斌, 王旭東
(鄭州大學(xué) 軟件與應(yīng)用科技學(xué)院, 鄭州 450000)
隨著氣象信息業(yè)務(wù)的發(fā)展及氣象觀測體系的建立,多地氣象部門已經(jīng)逐步搭建了氣象網(wǎng)絡(luò)監(jiān)控系統(tǒng),即能夠提高氣象信息網(wǎng)絡(luò)工效和自動(dòng)化的信息平臺(tái)[1]。目前,相對成熟應(yīng)用的在線檢測和帶電檢測技術(shù)有天氣檢測傳感器、服務(wù)器機(jī)房、網(wǎng)絡(luò)交換機(jī)等設(shè)備。這些設(shè)備都需要人工干預(yù),不能實(shí)現(xiàn)自動(dòng)處理,且各設(shè)備間的數(shù)據(jù)不能有效整合。同時(shí)綜合監(jiān)控平臺(tái)還存在著綜合監(jiān)控能力弱、智能化水平低、自動(dòng)化效率差、故障分析不足等缺陷。因此,需要建立功能齊全的網(wǎng)絡(luò)監(jiān)控平臺(tái),從而減輕人員工作量, 避免因故障處理不及時(shí)而產(chǎn)生的安全隱患。針對上述狀況,研究中采用客戶端網(wǎng)絡(luò)通信框架OkHttp、Java序列化/反序列化、Gson、Activity、開源數(shù)據(jù)庫LitePal、網(wǎng)絡(luò)服務(wù)器(Tomcat8.0)以及Android和Web服務(wù)器數(shù)據(jù)同步(HTTP)等技術(shù),搭建一套完善的網(wǎng)絡(luò)綜合監(jiān)控及智能運(yùn)維平臺(tái),從而實(shí)現(xiàn)監(jiān)視信息系統(tǒng)運(yùn)行健康高效、數(shù)據(jù)傳輸及時(shí)準(zhǔn)確、設(shè)備日常維護(hù)規(guī)范標(biāo)準(zhǔn)、機(jī)房環(huán)境參數(shù)達(dá)標(biāo)穩(wěn)定、出現(xiàn)問題準(zhǔn)確報(bào)警并提供快捷實(shí)用的排除方法等,有效填補(bǔ)了現(xiàn)有系統(tǒng)的不足之處。
由于設(shè)備數(shù)量龐大,人工檢測會(huì)有大量的時(shí)間浪費(fèi),且不能及時(shí)檢測出設(shè)備故障。為避免設(shè)備故障導(dǎo)致工作滯留問題,研究采用了基于HTTP協(xié)議、FTP協(xié)議的實(shí)時(shí)數(shù)據(jù)獲取技術(shù)來獲取設(shè)備的HTTP、FTP數(shù)據(jù)[2],實(shí)時(shí)查看所有監(jiān)控設(shè)備和接口的工作狀態(tài)、響應(yīng)時(shí)間、鏈路負(fù)載等信息,判斷設(shè)備狀態(tài)是否良好,是否給予處理。分析各類信息系統(tǒng)和設(shè)備狀態(tài)維護(hù)數(shù)據(jù),進(jìn)行信息數(shù)據(jù)的統(tǒng)計(jì)和挖掘,增加各類數(shù)據(jù)關(guān)聯(lián)性,定期生成歷史報(bào)表,得出共性問題,從而減輕人工監(jiān)控工作量。
在獲取數(shù)據(jù)過程中,Server端的守護(hù)程序始終在HTTP端口等候Client端的連接請求,當(dāng)Client端向Server端發(fā)起一個(gè)連接請求時(shí),Client和Server之間經(jīng)過3次握手建立連接。守護(hù)程序接收到Client請求后,對其進(jìn)行解析,讀取URL,映射到對應(yīng)的hosts.ini配置文件中。守護(hù)程序讀取配置文件作為HTTP響應(yīng)消息中的實(shí)體返回給Client。守護(hù)程序讀取配置文件時(shí),利用HTTPClient.GetMethod函數(shù)請求獲取設(shè)備HTTP連接狀態(tài),利用sun.net.ftp.FtpClient函數(shù)建立指定設(shè)備、指定端口上的FTP服務(wù)器的連接,同時(shí)利用Ping命令使用ICMP回顯請求報(bào)文和ICMP回顯應(yīng)答報(bào)文來測試主機(jī)之間連通性,用來診斷網(wǎng)絡(luò)連接狀態(tài),最后利用Java序列化技術(shù)避免大量設(shè)備請求并發(fā),實(shí)現(xiàn)持久化保存數(shù)據(jù),便于統(tǒng)計(jì)分析[3]。
Linux是一套免費(fèi)使用和自由傳播的類Unix操作系統(tǒng),是一個(gè)基于POSIX和UNIX的多用戶、多任務(wù)、支持多線程和多CPU的操作系統(tǒng)[4]。能運(yùn)行主要的UNIX工具軟件、應(yīng)用程序和網(wǎng)絡(luò)協(xié)議。支持32位和64位硬件。Linux繼承了Unix以網(wǎng)絡(luò)為核心的設(shè)計(jì)思想,是一個(gè)性能穩(wěn)定的多用戶網(wǎng)絡(luò)操作系統(tǒng)。Linux是構(gòu)成自由軟件協(xié)議基礎(chǔ)的一種操作系統(tǒng),完全滿足網(wǎng)絡(luò)對操作系統(tǒng)多用戶、多任務(wù)、多線程的要求。Linux本身擁有非常豐富的命令,可以幫助用戶完成很多系統(tǒng)工作。
在獲取到設(shè)備連接狀態(tài)和網(wǎng)絡(luò)狀態(tài)后,若發(fā)現(xiàn)故障,客戶端將會(huì)發(fā)起處理故障請求,服務(wù)器接收到請求之后,會(huì)運(yùn)行Linux重啟命令。Linux操作系統(tǒng)在登錄系統(tǒng)或者關(guān)閉系統(tǒng)時(shí)都要調(diào)用系統(tǒng)設(shè)置的運(yùn)行級別, 才能進(jìn)行相關(guān)的操作。本系統(tǒng)運(yùn)用的是shutdown -r now 命令,關(guān)閉計(jì)算機(jī)并關(guān)閉電源立刻重啟[5]。
獲取設(shè)備數(shù)據(jù)和處理的流程如下:
(1)管理員登陸后臺(tái)向服務(wù)器發(fā)送設(shè)備狀態(tài)查詢請求。
(2)服務(wù)器接受請求后讀取相應(yīng)的配置文件。
(3)服務(wù)器調(diào)用函數(shù)獲取設(shè)備的HTTP、FTP連接和網(wǎng)絡(luò)連接狀態(tài)。
(4)若連接正常,則將數(shù)據(jù)傳送之后臺(tái)界面;若連接異常則利用Linux編程技術(shù)進(jìn)行重啟命令,使得異常設(shè)備進(jìn)行重新啟動(dòng)。
(5)若設(shè)備重啟后故障沒有排除,則在網(wǎng)絡(luò)監(jiān)控頁面中進(jìn)行準(zhǔn)確報(bào)警。
(6)進(jìn)行信息統(tǒng)計(jì)分析,生成歷史故障報(bào)表,得出設(shè)備常出故障原因。
獲取設(shè)備數(shù)據(jù)和處理過程如圖1所示。
圖1 數(shù)據(jù)獲取和處理過程
鑒于檢測目標(biāo)設(shè)備的特殊性,本系統(tǒng)在故障檢測模塊采用了C/S架構(gòu)[6],同時(shí)在信息管理模塊采用了B/S架構(gòu)[7]。這樣做的好處在于:故障檢測面向的是一類設(shè)備,更加具有針對性,同時(shí)利用C/S架構(gòu)可以除去中間環(huán)節(jié),更加快速,符合監(jiān)測的特性;在信息管理模塊采用B/S架構(gòu)是為了便于維護(hù),同時(shí)可以使用linux系統(tǒng)減少系統(tǒng)上的開銷,由于B/S還具有0安裝的特點(diǎn),在客戶端只需要一個(gè)瀏覽器即可使用系統(tǒng),減少了系統(tǒng)部署的開銷。
由巡檢人員將不同設(shè)備的狀態(tài)信息和監(jiān)測到的數(shù)據(jù)發(fā)送至服務(wù)器,由服務(wù)器進(jìn)行加工整理之后同步到數(shù)據(jù)庫上,并將這些加工過后的信息顯示在終端上。與此同時(shí),系統(tǒng)定時(shí)對這些氣象設(shè)備進(jìn)行監(jiān)控,如果期間設(shè)備發(fā)生異常,則系統(tǒng)將會(huì)按照預(yù)定的方式對設(shè)備進(jìn)行自動(dòng)處理,若處理無效或判定超出系統(tǒng)自動(dòng)處理的能力范圍,系統(tǒng)將會(huì)通知管理人員進(jìn)行報(bào)修[8]。系統(tǒng)架構(gòu)如圖2所示。
圖2 網(wǎng)絡(luò)綜合監(jiān)控和智能運(yùn)維平臺(tái)架構(gòu)
Fig.2Networkintegratedmonitoringandintelligentoperationandmaintenanceplatformarchitecture
信息管理模塊是對工作人員或者故障處理模塊采集的數(shù)據(jù)進(jìn)行存儲(chǔ)和處理,并反饋在終端上。故障處理模塊會(huì)定時(shí)監(jiān)控設(shè)備的運(yùn)行情況,對出現(xiàn)問題的設(shè)備進(jìn)行自動(dòng)處理,如果判定故障不能由系統(tǒng)自動(dòng)解決,則將這個(gè)故障通過短信或者反饋界面提醒管理人員報(bào)修。本系統(tǒng)分為2個(gè)模塊,如圖3所示。
信息管理模塊主要負(fù)責(zé)對于采集來的氣象信息和自動(dòng)檢測到的設(shè)備故障進(jìn)行處理分析,存入數(shù)據(jù)庫,并根據(jù)不同的用戶權(quán)限反饋不同的信息到PC和移動(dòng)端上。信息管理模塊處理的數(shù)據(jù)包括:設(shè)備的狀況、工作人員的信息、設(shè)備的故障記錄和設(shè)備故障的詳細(xì)信息。該模塊的主要功能有:權(quán)限管理、數(shù)據(jù)處理、圖標(biāo)生成、數(shù)據(jù)反饋。
圖3 網(wǎng)絡(luò)綜合監(jiān)控和智能運(yùn)維平臺(tái)整體框架
信息管理模塊解決了紙質(zhì)記錄設(shè)備狀態(tài)、檢測和故障信息的問題,將紙質(zhì)記錄的數(shù)據(jù)經(jīng)由信息模塊進(jìn)行存儲(chǔ)和處理,避免了使用紙質(zhì)表格記錄數(shù)據(jù)。同時(shí)還可以由系統(tǒng)生成報(bào)表展示給管理員,而不需要工作人員進(jìn)行人工的匯總整合。
根據(jù)各類用戶對于系統(tǒng)的需求和信息安全性考慮,本系統(tǒng)將系統(tǒng)用戶劃分為4種角色,分別為:游客、值班員、管理員和超級管理員。其中游客只具有訪問、查看主界面信息的權(quán)限;值班員具有將氣象設(shè)備數(shù)據(jù)和檢測數(shù)據(jù)錄入和查看的權(quán)限;管理員除了具有值班員的權(quán)限之外,還具有查看人員信息的權(quán)限;超級管理員除了具有管理員的權(quán)限之外,還可對管理員的信息進(jìn)行修改、添加和刪除。這4種角色的劃分優(yōu)點(diǎn)是:使各類人員各司其職,同時(shí)使信息盡可能得到安全上的保障。
系統(tǒng)接收工作人員采集的氣象設(shè)備狀態(tài)和監(jiān)測數(shù)據(jù),將這些數(shù)據(jù)通過反序列化以及其它處理存入數(shù)據(jù)庫,并將經(jīng)過處理的數(shù)據(jù)反饋在終端上,由Web前端程序通過amcharts可視化插件或者移動(dòng)端通過smartchart生成表格,大大增強(qiáng)數(shù)據(jù)的直觀性,同時(shí)比傳統(tǒng)方式更加便捷。
故障檢測模塊的功能主要包括故障檢測、故障處理、故障記錄、故障分析和故障預(yù)警。系統(tǒng)對檢測到的不同設(shè)備的不同故障進(jìn)行不同的處理。其中詳細(xì)參數(shù)和處理策略可以一定程度上經(jīng)由配置文件的修改進(jìn)行約定。自動(dòng)故障處理指的是網(wǎng)絡(luò)故障,硬件故障將由系統(tǒng)通知維修人員進(jìn)行實(shí)地的維修。
3.4.1 故障檢測
鑒于本系統(tǒng)主要用于檢測和處理網(wǎng)絡(luò)故障,本系統(tǒng)采用以下檢測策略:
(1)命令法。即在本機(jī)或者發(fā)送命令到指定計(jì)算機(jī)并執(zhí)行。根據(jù)命令執(zhí)行的輸出來判斷計(jì)算機(jī)是否故障和故障類型,進(jìn)而對不同的故障進(jìn)行不同的響應(yīng)。比如要檢測目標(biāo)設(shè)備的連通性,就在本機(jī)執(zhí)行ping命令,根據(jù)得到的ping命令的輸出判斷和目標(biāo)機(jī)器是否聯(lián)通[9]。
(2)請求法。即在本機(jī)和目標(biāo)設(shè)備之間建立網(wǎng)絡(luò)連接。通過發(fā)送指定的http、ftp等協(xié)議的請求,目標(biāo)設(shè)備收到請求后的返回信息來判斷目標(biāo)設(shè)備是否發(fā)生故障和目標(biāo)設(shè)備的故障類型。如向目標(biāo)設(shè)備發(fā)送http請求或者ftp請求等,通過目標(biāo)設(shè)備的response來判斷目標(biāo)設(shè)備的故障類型[10]。
3.4.2 故障處理
檢測到故障之后,系統(tǒng)根據(jù)上述方法中傳來的命令輸出或者請求回復(fù)進(jìn)行網(wǎng)絡(luò)故障類型判斷。若判斷為可以處理的類型,就向目標(biāo)設(shè)備發(fā)送命令,經(jīng)目標(biāo)設(shè)備執(zhí)行命令后,隨即進(jìn)行下一次的檢測,設(shè)備確認(rèn)狀態(tài)無誤后,結(jié)束故障處理的流程。如果故障被判斷為超出系統(tǒng)能力的故障,或是系統(tǒng)采取自動(dòng)處理措施后故障仍然存在,此時(shí)系統(tǒng)將向PC終端發(fā)出警報(bào)或者向管理人員發(fā)短信提醒。
需要檢測的故障設(shè)備和故障的處理方式均可通過配置文件進(jìn)行規(guī)定。這大大提高了系統(tǒng)對于故障處理的靈活性。
3.4.3 故障記錄
檢測到設(shè)備故障之后,系統(tǒng)將此次故障的時(shí)間、地點(diǎn)、設(shè)備標(biāo)識(shí)和故障種類等信息記錄下來,以便于系統(tǒng)對其進(jìn)行分析處理。
對于系統(tǒng)無法處理或問題不明故障,工作人員在檢修之后還可以對故障信息進(jìn)行詳細(xì)的修改,完善故障記錄的信息。
3.4.4 故障分析
系統(tǒng)檢測到設(shè)備故障之后,將相關(guān)故障信息經(jīng)過反序列化存儲(chǔ)在數(shù)據(jù)庫中。再通過分析綜合生成歷史報(bào)表。故障歷史報(bào)表中往往可以發(fā)現(xiàn)一些設(shè)備故障規(guī)律,如在哪一地區(qū)的設(shè)備易出故障,或者哪一個(gè)設(shè)備近期故障的次數(shù)過多,這些規(guī)律可以提醒使用者及時(shí)檢修或者更換設(shè)備。
系統(tǒng)對故障信息記錄生成歷史報(bào)表并反饋給工作人員的處理過程,將會(huì)大大減少工作人員的工作量,提高工作效率,提高氣象工作的自動(dòng)化程度。
3.4.5 故障報(bào)警
當(dāng)系統(tǒng)檢測到無法處理的故障,或?qū)收喜扇〉淖詣?dòng)檢測措施無效時(shí),系統(tǒng)會(huì)將故障信息通過PC端網(wǎng)頁顯示或者短信的形式提醒工作人員,進(jìn)行檢修。在一定程度上減少了工作人員的檢修頻率和通信成本,減少了工作量。
工作人員通過客戶端查看信息時(shí),服務(wù)器端從數(shù)據(jù)庫中提取數(shù)據(jù),在服務(wù)器端包裝成Java對象處理,再將對象序列化為json字符串,通過http協(xié)議傳輸給客戶端。在對前端的反饋信息編碼中,使用Jquery、Ajax、Bootstrap編寫前端界面,利用Jquery的輕量級特點(diǎn)和其中的DOM操作的封裝。此外,Jquery將所有的Ajax操作封裝到一個(gè)函數(shù)$.ajax()里,使其在處理Ajax的時(shí)候,能夠?qū)P奶幚順I(yè)務(wù)邏輯而無需關(guān)心復(fù)雜的瀏覽器兼容性和XMLHttpRequest對象的創(chuàng)建和使用問題。在Web網(wǎng)頁中使用amcharts可視化插件,在移動(dòng)端使用smartchart技術(shù)生成圖表。信息統(tǒng)計(jì)界面如圖4所示。
圖4 信息統(tǒng)計(jì)界面
在信息管理模塊中,著重解決了氣象工作人員采集信息的接收、整合、處理和持久化至數(shù)據(jù)庫服務(wù)器中的問題。由于工作人員采集數(shù)據(jù)決定了在短時(shí)間內(nèi)沒有大量的數(shù)據(jù)發(fā)送到服務(wù)器端,服務(wù)器端面對的并發(fā)量是非常小的。
綜上,在服務(wù)器操作系統(tǒng)上選取Linux(centos)作為操作系統(tǒng),使用tomcat8作為服務(wù)器。信息由工作人員采集,并在客戶端填寫。服務(wù)器端輕量級框架spring mvc編寫后端代碼對反序列化的采集數(shù)據(jù)進(jìn)行處理,最后通過輕量級持久層框架mybatis寫入數(shù)據(jù)庫中。完成整個(gè)信息采集的步驟。Mybatis避免了幾乎所有的 JDBC 代碼和手動(dòng)設(shè)置參數(shù)以及獲取結(jié)果集。MyBatis 可以對配置和原生Map使用簡單的 XML 或注解,將接口和 Java 的 POJOs(Plain Old Java Objects,普通的 Java對象)映射成數(shù)據(jù)庫中的記錄。
在系統(tǒng)維護(hù)上,采用了ini4j框架和Java內(nèi)置的.properties解析技術(shù)分別解析.ini和.properties配置文件,使工作人員可以根據(jù)自身需要配置系統(tǒng)特性。同時(shí)使用日志框架log4j生成日志,方便調(diào)試系統(tǒng)異常。
本文對于傳統(tǒng)網(wǎng)絡(luò)監(jiān)控系統(tǒng)綜合監(jiān)控能力弱、智能化水平低、自動(dòng)化效率差、故障分析不足等問題深入研究,利用客戶端網(wǎng)絡(luò)通信框架、權(quán)限管理技術(shù)、數(shù)據(jù)庫技術(shù)、網(wǎng)絡(luò)服務(wù)器以及Android和Web服務(wù)器數(shù)據(jù)同步等技術(shù),搭建出一套完善的網(wǎng)絡(luò)綜合監(jiān)控及智能運(yùn)維平臺(tái)。通過統(tǒng)一的監(jiān)控平臺(tái)使得監(jiān)控維護(hù)工作從被動(dòng)轉(zhuǎn)向主動(dòng),實(shí)現(xiàn)全方位、智能化監(jiān)控并提升了故障處理時(shí)效,大大提高了監(jiān)控效率減輕了人工量。該系統(tǒng)是提升氣象信息網(wǎng)絡(luò)綜合監(jiān)控的智能化、自動(dòng)化水平的有效工具。