劉 彬
(廣西交科集團(tuán)有限公司,廣西 南寧 530007)
機(jī)電運(yùn)維是高速公路管養(yǎng)階段最重要的工作之一。高速公路路段中心集中監(jiān)控了全部的機(jī)電系統(tǒng)軟硬件資源。監(jiān)控中心通常采用人工定期查看各個(gè)系統(tǒng)的方式來判斷軟硬件系統(tǒng)的運(yùn)行情況,進(jìn)行日常的運(yùn)維工作。維護(hù)人員需要登錄或者操作的機(jī)電系統(tǒng)多,特別是全國(guó)實(shí)行了ETC門架聯(lián)網(wǎng)收費(fèi)模式后,多采用Linux系統(tǒng),要求運(yùn)維人員具有較高的Linux系統(tǒng)基礎(chǔ)知識(shí),并且多數(shù)巡檢需要人工檢查并記錄巡查情況,耗時(shí)長(zhǎng)、過程繁雜、效率低。為解決這一問題,通過研究實(shí)時(shí)獲取服務(wù)器參數(shù)信息的技術(shù),以跨平臺(tái)監(jiān)管硬件服務(wù)器為基礎(chǔ),關(guān)聯(lián)監(jiān)控各軟件系統(tǒng)的運(yùn)行情況,通過數(shù)據(jù)可視化來展示運(yùn)維全周期信息,構(gòu)建分布式部署的集群監(jiān)控管理運(yùn)維服務(wù),探索高速公路機(jī)電系統(tǒng)運(yùn)維管理新模式。
基于核心組件OSHI搭建一套分布式采集數(shù)據(jù)集群化監(jiān)測(cè)運(yùn)維平臺(tái)。優(yōu)點(diǎn)是Spring Boot框架基于Spring4.0設(shè)計(jì)的Java平臺(tái)上的一種開源應(yīng)用框架[1],可快速跨平臺(tái)部署;OSHI組件是一個(gè)基于JNA的本地操作系統(tǒng)和Java的硬件信息庫(kù),可跨平臺(tái)查看服務(wù)器信息,相較于其他硬件數(shù)據(jù)收集組件,其不依賴任何額外的本機(jī)庫(kù),真正提供了跨平臺(tái)監(jiān)測(cè)系統(tǒng)信息的能力;在接口校驗(yàn)上采用了開放的授權(quán)網(wǎng)絡(luò)協(xié)議OAuth2.0認(rèn)證,允許用戶讓第三方訪問,且無須將用戶名和密碼提供給第三方[2];在通信過程中采用了HTTPS,是在傳統(tǒng)的HTTP基礎(chǔ)上加入SSL證書,降低交互復(fù)雜性、減少通信過程交互環(huán)節(jié),支持OAuth2.0認(rèn)證,保證接口的安全調(diào)用,確保數(shù)據(jù)正確發(fā)送,防止數(shù)據(jù)在傳輸過程中被竊取和修改,確保數(shù)據(jù)的完整性[3];通過分布式網(wǎng)關(guān)將各項(xiàng)資源監(jiān)測(cè)指標(biāo)上報(bào)總控平臺(tái),監(jiān)控指標(biāo)包括操作系統(tǒng)、進(jìn)程、內(nèi)存和CPU使用情況、磁盤和分區(qū)、外設(shè)、傳感器、網(wǎng)絡(luò)吞吐量等關(guān)鍵數(shù)據(jù),以數(shù)據(jù)可視化監(jiān)測(cè)各項(xiàng)指標(biāo)。
高速公路多采用分級(jí)控制,機(jī)電系統(tǒng)中軟硬件多采用分布式部署。在路段或區(qū)域中心的總控平臺(tái)通過接收各個(gè)服務(wù)器網(wǎng)關(guān)的狀態(tài)、檢測(cè)結(jié)果、硬件狀態(tài)等,包括進(jìn)程監(jiān)控、內(nèi)存使用、硬盤使用、網(wǎng)絡(luò)吞吐量等,實(shí)現(xiàn)對(duì)機(jī)電系統(tǒng)中軟硬件的全程監(jiān)控,以數(shù)據(jù)可視化來監(jiān)測(cè),保證機(jī)電系統(tǒng)穩(wěn)定運(yùn)行。見圖1。
圖1 分布式運(yùn)維網(wǎng)關(guān)集群監(jiān)控結(jié)構(gòu)圖
先將網(wǎng)關(guān)分布式部署在各個(gè)監(jiān)控服務(wù)器,實(shí)時(shí)檢測(cè)系統(tǒng)信息,主動(dòng)推送各項(xiàng)實(shí)時(shí)監(jiān)測(cè)數(shù)據(jù)給區(qū)域中心總控平臺(tái),總控平臺(tái)可實(shí)時(shí)監(jiān)控到各個(gè)硬件服務(wù)器的指標(biāo)參數(shù),實(shí)現(xiàn)對(duì)全部管理服務(wù)器資源“集群化”管理。見圖2。
圖2 運(yùn)維網(wǎng)關(guān)技術(shù)架構(gòu)圖
為防止監(jiān)測(cè)數(shù)據(jù)在傳輸過程中不被竊取、改變及惡意的數(shù)據(jù)注入、偽造等。在信令及數(shù)據(jù)流中采用加密認(rèn)證、授權(quán)注入的安全機(jī)制:(1)API接口協(xié)議采用HTTPS,降低交互復(fù)雜性、減少通信過程交互環(huán)節(jié);(2)支持OAuth2.0授權(quán)認(rèn)證,保證接口安全調(diào)用。在運(yùn)維平臺(tái)數(shù)據(jù)信令流中,加密認(rèn)證具備有效期驗(yàn)證,每次網(wǎng)關(guān)上報(bào)數(shù)據(jù)都會(huì)對(duì)請(qǐng)求參數(shù)進(jìn)行解密驗(yàn)簽。見圖3。
圖3 運(yùn)維平臺(tái)數(shù)據(jù)信令流流程圖
網(wǎng)關(guān)注冊(cè)到總控平臺(tái)后,可按周期定時(shí)向總控平臺(tái)發(fā)送心跳數(shù)據(jù),以此數(shù)據(jù)來表明服務(wù)器在線,總控平臺(tái)可通過心跳模式實(shí)現(xiàn)服務(wù)器的狀態(tài)檢測(cè)。網(wǎng)關(guān)向總控平臺(tái)發(fā)送心跳數(shù)據(jù)信令采用HTTPS協(xié)議,總控平臺(tái)將發(fā)行一個(gè)有效期短的令牌環(huán)。網(wǎng)關(guān)需攜帶有效的令牌環(huán)進(jìn)行Oauth2.0認(rèn)證,當(dāng)令牌環(huán)失效后網(wǎng)關(guān)設(shè)備需向總控平臺(tái)重新發(fā)起令牌環(huán)刷新指令,獲取新的有效令牌環(huán),在獲取令牌環(huán)過程中數(shù)字簽名需要進(jìn)行國(guó)密SM2算法加密[4]。
網(wǎng)關(guān)通過實(shí)時(shí)獲取系統(tǒng)的各項(xiàng)性能數(shù)據(jù),主動(dòng)上報(bào)給總控平臺(tái),上報(bào)的監(jiān)測(cè)數(shù)據(jù)主要包括:CPU使用情況、內(nèi)存使用情況、系統(tǒng)運(yùn)行時(shí)間、網(wǎng)絡(luò)吞吐量、磁盤分區(qū)及使用情況、待監(jiān)測(cè)服務(wù)運(yùn)行情況等。
數(shù)據(jù)上報(bào)過程中采用HTTPS協(xié)議,每次網(wǎng)關(guān)都需要攜帶有效令牌環(huán),數(shù)據(jù)采用JSON標(biāo)準(zhǔn)化,POST請(qǐng)求實(shí)時(shí)上報(bào)。
為防止監(jiān)測(cè)數(shù)據(jù)在傳輸過程中不被竊取、改變及惡意的數(shù)據(jù)注入、偽造等,確保數(shù)據(jù)完整性,在認(rèn)證和授權(quán)過程中采用OAuth2.0授權(quán)機(jī)制來頒發(fā)令牌環(huán),用OAuth2.0來實(shí)現(xiàn)接口的訪問控制,這樣能夠很好地保證訪問數(shù)據(jù)的安全性。網(wǎng)關(guān)通過令牌環(huán),去請(qǐng)求上報(bào)數(shù)據(jù)。網(wǎng)關(guān)申請(qǐng)令牌環(huán)之前,都必須先到總控平臺(tái)備案,說明自己的身份,然后會(huì)拿到兩個(gè)身份識(shí)別碼:網(wǎng)關(guān)編碼和網(wǎng)關(guān)密鑰。這是為了防止令牌環(huán)被濫用,沒有備案過的第三方應(yīng)用拿不到令牌環(huán)。網(wǎng)關(guān)獲取令牌環(huán)以后可向總控平臺(tái)注冊(cè)、上報(bào)數(shù)據(jù)。每個(gè)接口請(qǐng)求,都必須攜帶有效的令牌環(huán)。具體做法是在請(qǐng)求的頭信息中加上一個(gè)Authorization字段,令牌環(huán)就放在這個(gè)字段里面?zhèn)鬏敗A钆骗h(huán)失效后,網(wǎng)關(guān)需重新申請(qǐng)新的令牌環(huán),申請(qǐng)時(shí)帶上網(wǎng)關(guān)設(shè)備編號(hào)的BASE64值、編碼、初始令牌環(huán),平臺(tái)返回新令牌環(huán)[4]。
數(shù)字簽名算法遵從“私鑰簽名,公鑰驗(yàn)簽”的簽名、驗(yàn)證方式。我們可以把數(shù)字簽名算法近似看成是一種附加了公鑰和私鑰的消息摘要算法。sign 生成方法為:使用總控平臺(tái)分配的私鑰對(duì)deviceCode=deviceCode&user=user&token= token進(jìn)行國(guó)密SM2 算法加密得到,私鑰為線下發(fā)放[4]。SM2橢圓曲線算法,主要用于數(shù)字簽名、數(shù)據(jù)加密、密鑰交換以及身份認(rèn)證等[5]。在令牌環(huán)失效或者網(wǎng)關(guān)重新獲取令牌環(huán)階段,需要根據(jù)注冊(cè)信息生成有效SM2加密數(shù)字簽名。
總控平臺(tái)采用數(shù)據(jù)可視化方式實(shí)時(shí)展示監(jiān)測(cè)網(wǎng)關(guān)數(shù)據(jù),在數(shù)據(jù)可視化上采用ECharts工具,后臺(tái)通過接口實(shí)時(shí)接收到的網(wǎng)關(guān)各項(xiàng)性能數(shù)據(jù),對(duì)全部監(jiān)測(cè)數(shù)據(jù)進(jìn)行批量入庫(kù)存儲(chǔ),同時(shí)通過WebSocket服務(wù)實(shí)現(xiàn)服務(wù)端主動(dòng)向?yàn)g覽器推送實(shí)時(shí)數(shù)據(jù),瀏覽器和服務(wù)器只需要完成一次握手,兩者之間就可以直接創(chuàng)建持久性的連接,可持久進(jìn)行數(shù)據(jù)傳輸。如此設(shè)計(jì)能夠?qū)崿F(xiàn)后端實(shí)時(shí)接收、數(shù)據(jù)實(shí)時(shí)推送、瀏覽器實(shí)時(shí)展示,能更好地節(jié)省服務(wù)器資源和帶寬,并且能夠更實(shí)時(shí)地進(jìn)行數(shù)據(jù)接收展示,避免監(jiān)控?cái)?shù)據(jù)可視化非實(shí)時(shí)情況。
廣西壯族自治區(qū)高速公路發(fā)展中心的全區(qū)視頻監(jiān)控聯(lián)網(wǎng)系統(tǒng)中,在聯(lián)網(wǎng)中心和各個(gè)高速公路路段運(yùn)營(yíng)公司部署有55臺(tái)Linux和windows操作系統(tǒng)的服務(wù)器。通過分布式部署網(wǎng)關(guān)就可實(shí)時(shí)高效地監(jiān)測(cè)到全部服務(wù)器和服務(wù)的正常運(yùn)程狀態(tài),所有硬件設(shè)備的監(jiān)測(cè)數(shù)據(jù)實(shí)時(shí)上報(bào)至聯(lián)網(wǎng)中心總控平臺(tái),總控平臺(tái)通過數(shù)據(jù)可視化的效果展示每一臺(tái)設(shè)備的運(yùn)行狀況,可直觀高效管理視頻聯(lián)網(wǎng)監(jiān)控系統(tǒng)后臺(tái)情況,實(shí)時(shí)掌握運(yùn)行健康度。
本文結(jié)合廣西高速公路機(jī)電系統(tǒng)智慧運(yùn)維的需求,分析了傳統(tǒng)高速公路機(jī)電系統(tǒng)運(yùn)維工作中存在的一些問題,特別是Linux系統(tǒng)的運(yùn)維困難,提出了采用基于OSHI的分布式運(yùn)維網(wǎng)關(guān),可實(shí)現(xiàn)海量軟硬件資源的集群化監(jiān)測(cè),大大縮減日常機(jī)電系統(tǒng)運(yùn)維時(shí)間,提升工作效率,解決機(jī)器數(shù)據(jù)的采集、清洗、存儲(chǔ)、搜索、分析、告警、數(shù)據(jù)可視化等需求。