徐為,李睿,2,管宇航,王胤澤 ,張翔
(1.長江武漢航道局,湖北 武漢 430040;2.中國地質(zhì)大學(xué)(武漢)國家地理信息系統(tǒng)工程技術(shù)研究中心 地理與信息工程學(xué)院,湖北 武漢 430074;3.嵩山實驗室,河南 鄭州 450046)
近些年,隨著數(shù)字航道的建設(shè)及深入應(yīng)用,我國內(nèi)河航道業(yè)務(wù)實現(xiàn)了主要助航設(shè)施的動態(tài)監(jiān)測和及時維護(hù)、航道維護(hù)資源的科學(xué)配置和聯(lián)網(wǎng)調(diào)度、航道主要現(xiàn)勢信息的可靠發(fā)布和共享服務(wù),極大地提升長江武漢航道局航道安全暢通效能及信息服務(wù)水平。保障數(shù)字航道系統(tǒng)平臺長期穩(wěn)定運行是數(shù)字航道持續(xù)發(fā)揮通航效益的基本及核心工作。但是,數(shù)字航道的各個關(guān)鍵應(yīng)用偶爾會出現(xiàn)系統(tǒng)進(jìn)程卡死的狀況,無法及時恢復(fù)系統(tǒng)正常運行,這樣會嚴(yán)重影響數(shù)字航道系統(tǒng)的穩(wěn)定運行,造成不可預(yù)知的重大影響。因此,為了保證數(shù)字航道系統(tǒng)高可用性,當(dāng)前迫切需要研制一套進(jìn)程守護(hù)程序,實現(xiàn)數(shù)字航道系統(tǒng)平臺各個關(guān)鍵應(yīng)用的實時監(jiān)聽、故障報警和自動重啟功能。
針對數(shù)字航道系統(tǒng),采用進(jìn)程級別監(jiān)控和守護(hù),可以及時發(fā)現(xiàn)并且干預(yù)數(shù)字航道系統(tǒng)進(jìn)程運行方面的隱患及問題,并將根據(jù)故障問題嚴(yán)重等級進(jìn)行針對性處理,對數(shù)字航道的高系統(tǒng)可用性需求做出探索性嘗試,同時也是為長江航道維護(hù)服務(wù)的智能化、自動化和標(biāo)準(zhǔn)化奠定基礎(chǔ)。因此,開展本項目的研究非常有必要。
在監(jiān)控系統(tǒng)方面,考慮到商業(yè)監(jiān)控高昂的使用成本和學(xué)習(xí)成本,本研究采用開源監(jiān)控解決方案。Zabbix是一個目前比較成熟的開源監(jiān)控解決方案,支持多種操作系統(tǒng),可實現(xiàn)跨平臺分布式部署。Zabbix 擁有靈活多變的報警策略,可以及時發(fā)現(xiàn)系統(tǒng)產(chǎn)生的異常,同時Zabbix 集成了多種數(shù)據(jù)采集方式,可應(yīng)對多種情況下的跨平臺監(jiān)控,十分契合本研究的需求。
綜上所述,本研究要解決的問題有兩個,第一個問題是針對分布式系統(tǒng)進(jìn)行進(jìn)程級別的細(xì)致且實時監(jiān)控;第二個問題是通過系統(tǒng)日志、系統(tǒng)運行狀態(tài)和服務(wù)器接口等多渠道定位系統(tǒng)異常所在。因此,本研究將采用Zabbix 企業(yè)級開源監(jiān)控解決方案對長江數(shù)字航道系統(tǒng)所在的服務(wù)器集群分別進(jìn)行系統(tǒng)核心進(jìn)程監(jiān)控。同時開發(fā)守護(hù)進(jìn)程系統(tǒng),該系統(tǒng)將會分析通過Zabbix 收集到的數(shù)字航道系統(tǒng)實時運行數(shù)據(jù),系統(tǒng)日志以及服務(wù)器狀態(tài),判斷當(dāng)前系統(tǒng)是否發(fā)生異常,以及是否進(jìn)行報警和故障處理。
針對進(jìn)程級別的故障監(jiān)控需要將監(jiān)控數(shù)據(jù)從整個服務(wù)器的監(jiān)控數(shù)據(jù)細(xì)分到每一個相關(guān)進(jìn)程的監(jiān)控數(shù)據(jù),包括進(jìn)程占用的CPU、內(nèi)存、硬盤等硬件參數(shù)以及系統(tǒng)頁面響應(yīng)時間參數(shù)等,是整個守護(hù)進(jìn)程系統(tǒng)得以運行的基礎(chǔ)。
數(shù)字航道系統(tǒng)守護(hù)進(jìn)程制定并采用健康指數(shù)的目的主要有以下三點:①判斷進(jìn)程運行狀態(tài),是否發(fā)生故障;②尋找硬件系統(tǒng)可能存在的性能瓶頸,定位性能瓶頸并提供對應(yīng)的硬件升級方案;③記錄系統(tǒng)負(fù)載歷史,幫助分析用戶行為對系統(tǒng)帶來的沖擊和影響。
系統(tǒng)監(jiān)控數(shù)據(jù)的展示采用大屏圖表的形式進(jìn)行可視化,通過Grafana 監(jiān)控展示技術(shù)使監(jiān)控主頁實時展示監(jiān)控進(jìn)程的各項具體信息,并且通過管理員編輯模塊自定義監(jiān)控展示內(nèi)容。系統(tǒng)能清晰展現(xiàn)被守護(hù)進(jìn)程當(dāng)前的運行狀態(tài),方便運維人員快速了解當(dāng)前系統(tǒng)運行的各項指標(biāo)。
當(dāng)進(jìn)程出現(xiàn)卡死或者系統(tǒng)宕機(jī)的情況下,本系統(tǒng)可以對系統(tǒng)管理員發(fā)出報警通知,與此同時針對系統(tǒng)宕機(jī)的情況進(jìn)行自動重啟操作,最大程度地減少系統(tǒng)不可用時間。
對于不斷產(chǎn)生的監(jiān)控數(shù)據(jù),系統(tǒng)實現(xiàn)了歷史數(shù)據(jù)分析功能,能將當(dāng)前系統(tǒng)監(jiān)控數(shù)據(jù)與歷史異常運行時段的數(shù)據(jù)進(jìn)行對比,判斷系統(tǒng)未來一段時間內(nèi)的風(fēng)險情況。此外在系統(tǒng)發(fā)生重大故障時還可根據(jù)日志、報錯信息以及監(jiān)控數(shù)據(jù)分析此次問題的具體原因,為未來各個系統(tǒng)的代碼邏輯優(yōu)化提供具體建議,預(yù)防系統(tǒng)再次卡死或宕機(jī)。
系統(tǒng)整體采用Vue、SpringBoot、MySQL、Zabbix 等技術(shù)進(jìn)行高效快捷的開發(fā)。如圖1 所示,該系統(tǒng)主要分為四個部分。系統(tǒng)的架構(gòu)設(shè)計圖如圖2 所示。
圖1 系統(tǒng)設(shè)計模型
圖2 系統(tǒng)架構(gòu)設(shè)計圖
圖3 進(jìn)程守護(hù)系統(tǒng)界面
系統(tǒng)管理員可以通過界面添加新的監(jiān)控進(jìn)程以及修改相關(guān)指標(biāo)報警閾值。同時在系統(tǒng)后臺有詳細(xì)的日志功能,將系統(tǒng)運行過程中的關(guān)鍵信息和動作進(jìn)行匯總統(tǒng)計,便于管理員進(jìn)行回溯分析。
Zabbix 客戶端有兩種工作方式,分別是主動式監(jiān)控與被動式監(jiān)控,其中,被動式監(jiān)控比較適合內(nèi)網(wǎng)環(huán)境下的監(jiān)控需求,同時減輕Zabbix Agentd 在被監(jiān)控服務(wù)器上的運行負(fù)擔(dān)。
作為守護(hù)進(jìn)程系統(tǒng),首先要保障系統(tǒng)自身持續(xù)且穩(wěn)定的運行,這樣才能去守護(hù)其他的系統(tǒng)。當(dāng)Zabbix 監(jiān)測到進(jìn)程守護(hù)系統(tǒng)沒有響應(yīng)后,會自動調(diào)用進(jìn)程守護(hù)系統(tǒng)的重啟腳本,保障系統(tǒng)持續(xù)可用。
對于被守護(hù)的數(shù)字航道系統(tǒng),則不能輕易的采取自動重啟的方式,否則會因網(wǎng)絡(luò)故障或某些輕微干擾導(dǎo)致系統(tǒng)頻繁重啟,嚴(yán)重影響用戶體驗。對于用戶使用較少的深夜時段,可以采用自動重啟功能,減少重啟的可感知程度。
該項目研制過程中,嚴(yán)格遵循網(wǎng)絡(luò)安全相關(guān)要求。服務(wù)器機(jī)房安裝在長江武漢航道局內(nèi),進(jìn)出需要進(jìn)行身份驗證。登錄服務(wù)器前需要進(jìn)行強(qiáng)密鑰安全驗證。進(jìn)程守護(hù)系統(tǒng)實現(xiàn)了用戶身份管理。與此同時,還將通過如下的手段保障安全。
(1)該技術(shù)將部署于長江武漢航道局超融合平臺上,在長江武漢航道局內(nèi)網(wǎng)環(huán)境下使用。
(2)該技術(shù)部署服務(wù)器安裝專業(yè)的EDR 病毒防護(hù)系統(tǒng),并接入長江武漢航道局安全感知平臺、入侵檢測(IDS)和入侵防御(IPS)系統(tǒng)。
(3)該技術(shù)部署后,將進(jìn)一步經(jīng)過漏洞掃描系統(tǒng)后,通過升級安全漏洞補(bǔ)丁等手段封堵住操作系統(tǒng)和應(yīng)用軟件本身所帶來的安全漏洞。
進(jìn)一步檢查是否配置虛擬防火墻、路由器過濾策略和系統(tǒng)本身的各項安全措施(如針對各類攻擊所進(jìn)行的通信協(xié)議安全配置)。
本研究對Zabbix 提供的開源監(jiān)控解決方案進(jìn)行了簡化,使其在保證輕量化的前提下適配數(shù)字航道系統(tǒng)監(jiān)控需求。本研究實現(xiàn)了面向服務(wù)器集群多進(jìn)程的輕量化自動監(jiān)控技術(shù),該技術(shù)包含數(shù)據(jù)可視化、分布式系統(tǒng)監(jiān)控以及網(wǎng)絡(luò)流量監(jiān)控功能,能完整反應(yīng)進(jìn)程當(dāng)前運行狀態(tài)。
為構(gòu)建多維度的健康判定模型,結(jié)合計算機(jī)操作系統(tǒng)相關(guān)技術(shù)以及在測試環(huán)境服務(wù)器中一個月的系統(tǒng)指標(biāo)監(jiān)測。本研究提出了一種由CPU 利用率、硬盤讀速率、磁盤寫速率、內(nèi)存占用率、數(shù)字航道網(wǎng)頁響應(yīng)時間以及進(jìn)程心跳指數(shù)六種參數(shù)組成的健康判定模型。并根據(jù)實際情況搭配了一個合理的權(quán)重分配公式,進(jìn)程守護(hù)系統(tǒng)能依據(jù)這些指數(shù)準(zhǔn)確判斷當(dāng)前系統(tǒng)所處狀態(tài)。
本研究在進(jìn)程守護(hù)系統(tǒng)中使用了基于事件驅(qū)動機(jī)制的報警信息推送技術(shù)。用戶可以在系統(tǒng)界面中自行設(shè)置相關(guān)的報警閾值、報警媒介、恢復(fù)閾值以及報警接收者。當(dāng)監(jiān)控項的監(jiān)控數(shù)據(jù)超過閾值一段時間后,進(jìn)程守護(hù)系統(tǒng)將會觸發(fā)消息推送機(jī)制,使用郵件或接口調(diào)用等形式完成報警信息的推送,達(dá)到及時預(yù)警的效果。
當(dāng)進(jìn)程卡死或者健康指數(shù)過低時系統(tǒng)會進(jìn)行自動重啟。重啟的策略包括手動重啟、自動重啟、低健康指數(shù)重啟和定時重啟。這一關(guān)鍵技術(shù)使其能夠智能化地輔助進(jìn)程管理。
進(jìn)程守護(hù)系統(tǒng)預(yù)警反應(yīng)快捷,告警信息發(fā)布及時,進(jìn)程自動重啟及時準(zhǔn)確,實現(xiàn)了數(shù)字航道系統(tǒng)的高可用性,達(dá)到了項目的預(yù)期效果。運維人員可在故障發(fā)生的第一時間得到故障信息,發(fā)現(xiàn)問題,解決問題。目前系統(tǒng)納入監(jiān)控范圍的進(jìn)程為數(shù)字航道核心進(jìn)程與數(shù)字航道核心數(shù)據(jù)庫,在系統(tǒng)試運行過程中,共發(fā)生進(jìn)程低健康指數(shù)報警1 次,進(jìn)程未響應(yīng)3 次。在測試人員和管理員核對后發(fā)現(xiàn)該系統(tǒng)自動報警和自動重啟功能的反應(yīng)均比較及時,進(jìn)程提供的故障信息和實際狀況相符,可以較好地完成數(shù)字航道核心進(jìn)程監(jiān)控的任務(wù)。
在生產(chǎn)環(huán)境的數(shù)字航道系統(tǒng)中,未采用本系統(tǒng)時的系統(tǒng)故障平均響應(yīng)時間一般在15 分鐘左右,在核心進(jìn)程卡死故障發(fā)生期間系統(tǒng)無法進(jìn)行任何數(shù)據(jù)交互,將造成大量的數(shù)據(jù)丟失,甚至是無法挽回的經(jīng)濟(jì)損失。如果能在生產(chǎn)環(huán)境中使用本系統(tǒng)進(jìn)行數(shù)字航道系統(tǒng)的進(jìn)程守護(hù)工作,則可以將系統(tǒng)故障平均響應(yīng)時間大大縮短至10 秒以內(nèi),預(yù)計將減少88%的經(jīng)濟(jì)損失。
為構(gòu)建多維度的健康判定模型,除了基本的硬件性能參數(shù)以外,該系統(tǒng)提出的進(jìn)程健康指數(shù)判斷模型還針對數(shù)據(jù)量大用戶多的問題,在模型中加入了數(shù)字航道網(wǎng)頁響應(yīng)時間參數(shù),該參數(shù)是系統(tǒng)體驗好壞的關(guān)鍵參數(shù)。同時該判定標(biāo)準(zhǔn)還采用了動態(tài)權(quán)重的進(jìn)程健康指數(shù)計算方法。當(dāng)某一指標(biāo)大大超過判定的區(qū)域時,會被標(biāo)記為異常狀態(tài),該項判定指標(biāo)的權(quán)重將會動態(tài)提升,以降低進(jìn)程健康指數(shù)的最終得分,讓管理員發(fā)現(xiàn)該項指標(biāo)發(fā)生了異常。
由于數(shù)字航道系統(tǒng)所處硬件環(huán)境的特殊性,所有服務(wù)器均運行在內(nèi)網(wǎng)環(huán)境。為解決這一問題開發(fā)者通過使用進(jìn)程重啟腳本的方式來實現(xiàn)數(shù)字航道系統(tǒng)核心進(jìn)程自動重啟功能。同時提供四種不同的重啟策略來應(yīng)對不同的情境和需求。例如設(shè)定在深夜時段的定時重啟可以保障系統(tǒng)及時清理運行時產(chǎn)生的冗余緩存數(shù)據(jù),解決部分報錯問題,同時保持最小程度的重啟可感知性,保證系統(tǒng)持續(xù)高可用性。
數(shù)字航道系統(tǒng)高效運行的核心前提是數(shù)字航道系統(tǒng)平臺的穩(wěn)定運行,實時提供數(shù)字航道各項關(guān)鍵業(yè)務(wù)數(shù)據(jù)。為更好地保障數(shù)字航道系統(tǒng)平臺的穩(wěn)定運行,提高系統(tǒng)運維效率,本研究提出了一套進(jìn)程守護(hù)系統(tǒng)來實時監(jiān)測數(shù)字航道系統(tǒng)核心進(jìn)程狀態(tài),并在核心進(jìn)程出現(xiàn)異常情況時,及時進(jìn)行報警或自動重啟,減少從出現(xiàn)問題到發(fā)現(xiàn)問題所需的時間,大大提高數(shù)字航道系統(tǒng)的穩(wěn)定性。本研究取得的成果如下:
(1)本研究通過對長江數(shù)字航道系統(tǒng)整體框架與技術(shù)構(gòu)成的深入研究,提出了一套基于Zabbix 的針對分布式系統(tǒng)的守護(hù)進(jìn)程原型系統(tǒng)。
(2)該系統(tǒng)通過一系列關(guān)鍵技術(shù)實現(xiàn)了對數(shù)字航道系統(tǒng)所在服務(wù)器集群的實時進(jìn)程級監(jiān)控,分析以及故障報警等功能。同時制定了多種進(jìn)程重啟策略以滿足不同情形下的重啟需求。
(3)開展了守護(hù)進(jìn)程原型系統(tǒng)在數(shù)字航道系統(tǒng)測試環(huán)境中的部署以及相關(guān)測試工作,該系統(tǒng)可展示實時監(jiān)控數(shù)據(jù),對于系統(tǒng)故障能在秒級時間內(nèi)發(fā)出警報,大大減少系統(tǒng)故障平均響應(yīng)時間與故障發(fā)生后帶來的經(jīng)濟(jì)效益損失。