高 鵬
(中國鐵道科學(xué)研究院集團(tuán)有限公司 電子計(jì)算技術(shù)研究所,北京 100081 )
隨著互聯(lián)網(wǎng)的快速發(fā)展,以及云計(jì)算、大數(shù)據(jù)、區(qū)塊鏈的大規(guī)模應(yīng)用,服務(wù)器集群節(jié)點(diǎn)數(shù)量成倍增加,業(yè)務(wù)系統(tǒng)變得越來越復(fù)雜,一個(gè)系統(tǒng)往往由多個(gè)應(yīng)用組成,導(dǎo)致運(yùn)維難度逐漸加大。傳統(tǒng)運(yùn)維方式中,運(yùn)維人員疲于處理各種故障,效率低下,即使加班加點(diǎn)的調(diào)試、部署、維護(hù),也經(jīng)常會(huì)因設(shè)備故障而導(dǎo)致業(yè)務(wù)中斷,嚴(yán)重影響系統(tǒng)正常運(yùn)轉(zhuǎn)。鐵路動(dòng)車組W iFi運(yùn)營服務(wù)系統(tǒng)通過運(yùn)營商撥號方式實(shí)現(xiàn)互聯(lián)網(wǎng)接入,其網(wǎng)絡(luò)環(huán)境復(fù)雜,穩(wěn)定性差且無固定公網(wǎng)IP,無法直接實(shí)現(xiàn)全系統(tǒng)的集中化監(jiān)控與管理[1]。盡管目前市場上有較多的開源監(jiān)控系統(tǒng)產(chǎn)品,如:Nagios、Cacti、Zenoss等,一定程度上提高了運(yùn)維效率,節(jié)約了運(yùn)維成本,但其服務(wù)對象相對單一,可定制性差,無法滿足日益增長的企業(yè)級服務(wù)發(fā)展需求,而開源監(jiān)控方案Zabbix依據(jù)其強(qiáng)大的展現(xiàn)功能和可擴(kuò)展性,加上獨(dú)特的開源性和簡單易用等特點(diǎn),更適用于鐵路動(dòng)車組W iFi運(yùn)營服務(wù)綜合監(jiān)控系統(tǒng)[2]。
本文圍繞鐵路動(dòng)車組W iFi運(yùn)營服務(wù)系統(tǒng)實(shí)際部署環(huán)境及應(yīng)用場景,提出了基于Zabbix的鐵路動(dòng)車組W iFi運(yùn)營服務(wù)監(jiān)控系統(tǒng)方案。該方案通過整合、分析系統(tǒng)資源,實(shí)現(xiàn)從物理資源到系統(tǒng)虛擬資源、端到端的全方位立體化監(jiān)控,解決了大批量車載W iFi服務(wù)器監(jiān)控難、實(shí)時(shí)性差以及故障告警不敏捷等問題,滿足了系統(tǒng)運(yùn)維人員的運(yùn)維需求,并構(gòu)建了獨(dú)立的集成化Web系統(tǒng),完成了對鐵路動(dòng)車組W iFi運(yùn)營服務(wù)系統(tǒng)資源的綜合監(jiān)控與管理,同時(shí)提供可視化的配置支持。
鐵路動(dòng)車組W iFi運(yùn)營服務(wù)系統(tǒng)主要由運(yùn)營管理中心、地面網(wǎng)絡(luò)和車載局域網(wǎng)3部分組成,其網(wǎng)絡(luò)結(jié)構(gòu)主要包括互聯(lián)網(wǎng)接入和車載局域網(wǎng)兩部分[3],系統(tǒng)結(jié)構(gòu)示意圖如圖1所示。
互聯(lián)網(wǎng)接入作為整個(gè)動(dòng)車組W iFi運(yùn)營服務(wù)系統(tǒng)的互聯(lián)網(wǎng)出口,通過車頂3G/4G天線與鐵路沿線運(yùn)營商公網(wǎng)基站建立無線連接通道;車載局域網(wǎng)為車廂內(nèi)用戶終端和單車設(shè)備之間提供車內(nèi)通信網(wǎng)絡(luò),車內(nèi)用戶終端可共享車載無線局域網(wǎng)系統(tǒng)的內(nèi)容服務(wù),車廂單車之間通過車載局域網(wǎng)實(shí)現(xiàn)互聯(lián)互通[4]。
2017年6 月,首列“復(fù)興號”標(biāo)動(dòng)列車正式上線運(yùn)營,鐵路動(dòng)車組W iFi運(yùn)營服務(wù)系統(tǒng)作為“復(fù)興號”標(biāo)動(dòng)列車的配套設(shè)施也隨之面世,旅客乘車期間可以享受鐵路動(dòng)車組W iFi這一增值服務(wù)。隨著大批量標(biāo)動(dòng)“復(fù)興號”列車投入運(yùn)營,鐵路動(dòng)車組W iFi運(yùn)營服務(wù)體系規(guī)模不斷擴(kuò)大,其運(yùn)營管理上亟需實(shí)現(xiàn)實(shí)時(shí)掌控系統(tǒng)運(yùn)行狀態(tài)、監(jiān)控系統(tǒng)突發(fā)事件,以動(dòng)態(tài)調(diào)整運(yùn)營策略,進(jìn)而實(shí)現(xiàn)鐵路動(dòng)車組W iFi運(yùn)營服務(wù)價(jià)值最大化。為滿足動(dòng)車組W iFi運(yùn)營服務(wù)需求,根據(jù)鐵路動(dòng)車組W iFi運(yùn)營服務(wù)系統(tǒng)業(yè)務(wù)架構(gòu),構(gòu)建基于Zabbix的車-車、車-地、地-地一體化綜合監(jiān)控系統(tǒng)平臺[5],分別從鐵路動(dòng)車組W iFi運(yùn)營服務(wù)系統(tǒng)硬件層面、系統(tǒng)層面、業(yè)務(wù)層面進(jìn)行需求分析,以實(shí)現(xiàn)對不同層次粒度數(shù)據(jù)的采集與融合。
圖1 鐵路動(dòng)車組WiFi運(yùn)營服務(wù)系統(tǒng)結(jié)構(gòu)圖
Zabbix作為一套完備的服務(wù)器主機(jī)監(jiān)控解決方案,通過對物理設(shè)備和系統(tǒng)應(yīng)用參數(shù)的采集分析,建立靈活的多級預(yù)警通知機(jī)制,使系統(tǒng)故障得到實(shí)時(shí)響應(yīng),并以前端W eb或媒介推送形式進(jìn)行報(bào)告和統(tǒng)計(jì)[6]。Zabbix系統(tǒng)框架主要由數(shù)據(jù)采集部分(客戶端Agentdd)和數(shù)據(jù)分析告警展示部分(服務(wù)端Server)兩部分構(gòu)成。Agentdd端數(shù)據(jù)的采集模式又分為主動(dòng)模式(客戶端主動(dòng)上報(bào)數(shù)據(jù)到服務(wù)端)和被動(dòng)模式(服務(wù)端到客戶端采集數(shù)據(jù))。Zabbix_ Agentdd啟動(dòng)時(shí),會(huì)根據(jù)服務(wù)端設(shè)定的采樣間隔向Zabbix_Server請求監(jiān)控項(xiàng),通過監(jiān)控系統(tǒng)預(yù)設(shè)端口將監(jiān)控?cái)?shù)據(jù)項(xiàng)傳送給服務(wù)器。Zabbix監(jiān)控原理如圖2所示。
圖2 監(jiān)控系統(tǒng)原理圖
基于鐵路動(dòng)車組W iFi運(yùn)營服務(wù)系統(tǒng)服務(wù)節(jié)點(diǎn)分散、規(guī)模大等特性,Zabbix監(jiān)控系統(tǒng)采用主動(dòng)式上報(bào)模式對終端數(shù)據(jù)項(xiàng)進(jìn)行采集,以減少監(jiān)控系統(tǒng)服務(wù)端的請求壓力?;趧?dòng)車組W iFi運(yùn)營服務(wù)系統(tǒng)應(yīng)用場景的特殊性,為保障系統(tǒng)數(shù)據(jù)安全,防止攻擊者利用諸如SQL注入等方式攻擊Zabbix數(shù)據(jù)庫獲取敏感數(shù)據(jù)或繞過授權(quán)登錄步驟獲取服務(wù)器操作系統(tǒng)權(quán)限等入侵隱患,Zabbix監(jiān)控系統(tǒng)將Zabbix _Server部署在客票系統(tǒng)內(nèi)部專網(wǎng)(簡稱:內(nèi)網(wǎng))環(huán)境中,所有服務(wù)必須經(jīng)過客票系統(tǒng)12306.cn域名以及應(yīng)用負(fù)載轉(zhuǎn)發(fā),確保鐵路動(dòng)車組W iFi運(yùn)營服務(wù)的穩(wěn)定性與安全性。Zabbix_Server將終端被監(jiān)控機(jī)器的相關(guān)監(jiān)控?cái)?shù)據(jù)在M YSQL中持久化儲存[7],便于后續(xù)的數(shù)據(jù)處理和重用?;赯abbix的鐵路動(dòng)車組W iFi運(yùn)營服務(wù)監(jiān)控系統(tǒng)部署架構(gòu)如圖3所示。
2.3.1 高性能網(wǎng)絡(luò)數(shù)據(jù)包緩存與轉(zhuǎn)發(fā)
基于鐵路動(dòng)車組具有配屬局分散、不集中等特性,為避免鐵路動(dòng)車組W iFi運(yùn)營服務(wù)監(jiān)控系統(tǒng)的Zabbix_Server端無法承受來自終端Zabbix_Agentdd頻繁請求壓力,Zabbix監(jiān)控系統(tǒng)以列為單位,將列車采集數(shù)據(jù)集中到同一數(shù)據(jù)緩存節(jié)點(diǎn),Zabbix_AAgentd在該緩存節(jié)點(diǎn)拿取數(shù)據(jù),以主動(dòng)上報(bào)方式傳到Zabbix_Serve端。該監(jiān)控系統(tǒng)設(shè)定車載中心服務(wù)器作為每列車的數(shù)據(jù)緩存節(jié)點(diǎn),在其部署Zabbix_Agentd,并配置對應(yīng)列車的Host_nam e。各車廂單車服務(wù)器及AP產(chǎn)生的數(shù)據(jù)集中到車載W iFi接入控制器(AC)上,車載AC將接收到的數(shù)據(jù)集中于車載中心服務(wù)器基于分布式文件儲存的數(shù)據(jù)庫(m ongoDB)中存儲,數(shù)據(jù)以設(shè)備ID分類羅列。如圖4所示,M ongoDB中展示了ID為“ZTC-01-000BABDF3355(設(shè)備生產(chǎn)商編號-設(shè)備類型編號-設(shè)備M AC)”中心路由器上報(bào)的參數(shù)。Zabbix_AAgen td可直接從M ongoDB中調(diào)集參數(shù)上報(bào)給Zabbix_Server端,這種上報(bào)方式減少了Zabbix _Agentd部署節(jié)點(diǎn)數(shù)量,緩解了Zabbix _Server端的處理壓力,對動(dòng)車組W iFi運(yùn)營服務(wù)監(jiān)控系統(tǒng)后續(xù)性能的擴(kuò)展有著重要意義,提升了監(jiān)控系統(tǒng)平臺的實(shí)時(shí)性和穩(wěn)定性。
2.3.2 通信協(xié)議轉(zhuǎn)換
圖3 監(jiān)控系統(tǒng)部署架構(gòu)圖
鐵路動(dòng)車組W iFi運(yùn)營服務(wù)系統(tǒng)涉及諸多旅客私密信息,為保障Zabbix 監(jiān)控系統(tǒng)服務(wù)端數(shù)據(jù)的安全性,將Zabbix_Server從原有的公網(wǎng)阿里云端遷移到客票系統(tǒng)內(nèi)網(wǎng)部署。內(nèi)網(wǎng)對于通信協(xié)議有嚴(yán)格的限制,客票系統(tǒng)內(nèi)網(wǎng)防火墻只允許來自CDN的HTTP請求通過,而Zabbix監(jiān)控系統(tǒng)默認(rèn)通信協(xié)議為TCP[8],這種基于安全防護(hù)設(shè)計(jì)下的監(jiān)控模式無法使監(jiān)控?cái)?shù)據(jù)項(xiàng)通過防火墻上報(bào)給Zabbix_Server。本監(jiān)控系統(tǒng)通過設(shè)計(jì)TCP/HTTP橋接器,將Zabbix_Server與Zabbix_Agentd之間的通信通過HTTP橋接起來。即將原有C/S結(jié)構(gòu)軟件的數(shù)據(jù)由“SERVER<-TCP->CLIENT”轉(zhuǎn)為“SERVER<-TCP->BRIDGE<-HTTP->BRIDGE<-TCP->CLIENT”,其工作流程如下:
(1)Zabbix_Agentd發(fā)起TCP請求,請求獲取“active items”,Agentd橋接器監(jiān)聽到此TCP請求;
(2)Agentd端橋接器將接受的TCP請求數(shù)據(jù)(byte[] 數(shù)組類型)通過Base64編碼,以HTTP方式(Post/Get請求)送到Server端橋接器;
(3)Server端橋接器收到請求數(shù)據(jù),將數(shù)據(jù)解碼還原成Byte類型數(shù)組,以TCP方式發(fā)送到Zabbix Server端,Zabbix_ Server端返回TCP響應(yīng),Server橋接器獲得響應(yīng)數(shù)據(jù),并將響應(yīng)數(shù)據(jù)經(jīng)過Base64編碼處理后以HTTP方式發(fā)送回Agentd端橋接器;
(4)Agentd端橋接器將返回?cái)?shù)據(jù)還原成Byte類型數(shù)組,以TCP方式響應(yīng)給Zabbix_Agentd, Zabbix_Agentd獲取響應(yīng),解析返回的字符串,完成一次橋接通信,斷開Socket。
2.3.3 日志集中檢索與全鏈路追蹤技術(shù)
鐵路動(dòng)車組W iFi運(yùn)營服務(wù)系統(tǒng)內(nèi)部服務(wù)應(yīng)用眾多,部署機(jī)器數(shù)量較大,平臺每天將產(chǎn)生大量日志數(shù)據(jù)(約2 000萬條),當(dāng)用戶業(yè)務(wù)訪問出現(xiàn)異常時(shí),快速定位并分析問題極為困難。日志分析平臺將所有機(jī)器、應(yīng)用實(shí)例所產(chǎn)生的日志由日志采集代理收集并傳輸至平臺進(jìn)行存儲、建立索引并提供日志檢索服務(wù)。對于每個(gè)用戶終端請求統(tǒng)一分配全平臺范圍內(nèi)的唯一追蹤ID,根據(jù)此唯一追蹤ID即可實(shí)現(xiàn)對用戶請求處理過程的全鏈路追蹤,同時(shí),結(jié)合日志時(shí)間戳可以分析用戶請求處理過程中每個(gè)處理步驟的耗時(shí)情況,并繪制服務(wù)處理時(shí)序圖與服務(wù)調(diào)用關(guān)系圖,幫助研發(fā)人員快速定位,分析問題。日志集中分析平臺從日志產(chǎn)生到提供檢索延時(shí)不超過5 s,平均檢索耗時(shí)在3 s以內(nèi),為研發(fā)與運(yùn)維人員提供了強(qiáng)有力的故障定位工具,同時(shí),也是平臺運(yùn)行狀況監(jiān)控的重要數(shù)據(jù)源。
圖4 MongoDB 數(shù)據(jù)儲存列表
Zabbix監(jiān)控系統(tǒng)通過自定義腳本對車載中心服務(wù)器路由板網(wǎng)卡的流量消耗實(shí)時(shí)性監(jiān)控,Zabbix_Server端通過對消耗流量統(tǒng)計(jì)分析,以層積圖的形式展示在監(jiān)控主界面。車載AC管理平臺將各單車用戶數(shù)據(jù)收集并通過Zabbix_Agentd上傳至Zabbix_Server端 。結(jié)合列車開行線路、車載W iFi在線用戶以及流量消耗,可作為綜合評價(jià)運(yùn)行區(qū)段用戶活躍度重要參考指標(biāo)。
Zabbix監(jiān)控服務(wù)平臺通過對監(jiān)控消息過濾后,一些可讀性不高的消息在被處理之后獲得良好的可讀性,因此,需要一個(gè)良好的通知機(jī)制將這些消息推送給運(yùn)維人員[9-10],Zabbix默認(rèn)支持郵件告警功能,但存在被攔截的概率或郵件接收不及時(shí)甚至容易被忽視[11];短信推送則需要調(diào)用信息網(wǎng)關(guān),會(huì)產(chǎn)生一定的費(fèi)用。綜合多方面因素,系統(tǒng)使用自定義腳本以釘釘APP作為媒介,推報(bào)平臺告警信息、運(yùn)營統(tǒng)計(jì)信息、列車交路報(bào)表等信息,通過對關(guān)鍵監(jiān)控?cái)?shù)據(jù)配置故障告警觸發(fā)器并合理配置告警觸發(fā)的頻度與延遲閾值,達(dá)到列車運(yùn)行異常即時(shí)上報(bào),同時(shí)又避免頻繁誤報(bào)的現(xiàn)象。
車載W iFi設(shè)備是鐵路動(dòng)車組W iFi運(yùn)營服務(wù)系統(tǒng)重要組成部分,其狀態(tài)好壞會(huì)直接影響鐵路動(dòng)車組W iFi運(yùn)營服務(wù)質(zhì)量,因此,實(shí)時(shí)掌握車載W iFi設(shè)備運(yùn)行狀態(tài),是提高系統(tǒng)穩(wěn)定,增強(qiáng)用戶體驗(yàn)感的必然前提。Zabbix監(jiān)控系統(tǒng)通過實(shí)時(shí)監(jiān)測終端設(shè)備的心跳包(客戶端與服務(wù)器間的響應(yīng)數(shù)據(jù)包),根據(jù)其呼應(yīng)頻率特性分析,判斷設(shè)備在線狀態(tài)。車載接入器(AP)作為W iFi運(yùn)營服務(wù)系統(tǒng)中數(shù)量多,易被攻擊的設(shè)備,其狀態(tài)的好壞對整個(gè)系統(tǒng)穩(wěn)定顯得至關(guān)重要,本監(jiān)控系統(tǒng)設(shè)置30 s為一上報(bào)周期,對其狀態(tài)進(jìn)行實(shí)時(shí)性監(jiān)控。預(yù)設(shè)AP在線狀態(tài)值為1,不在線狀態(tài)值為0,車載控制器(AC)設(shè)定15 m in為一周期,對AP上報(bào)狀態(tài)結(jié)果進(jìn)行分析判定,以單車廂分組(每單車廂固定配置2個(gè)AP),展示出周期內(nèi)上報(bào)數(shù)據(jù)的最新值、最小值、平均值、最大值,根據(jù)圖形化狀態(tài)圖趨勢[12],直觀獲取終端AP在線狀態(tài),進(jìn)而評估系統(tǒng)的穩(wěn)定性。其狀態(tài)分析展示如圖5所示。
圖5 AP狀態(tài)監(jiān)控圖
通過對終端設(shè)備系統(tǒng)應(yīng)用參數(shù)的采集,將實(shí)時(shí)數(shù)據(jù)進(jìn)行圖形化展示,圖6展示了應(yīng)用系統(tǒng)1 m in內(nèi)的平均負(fù)載、內(nèi)存占用的歷史記錄。隨著列車開行時(shí)間的推移,鐵路動(dòng)車組W iFi運(yùn)營服務(wù)系統(tǒng)接入用戶數(shù)累計(jì)增加,中間件(M YSQL)事務(wù)每秒查詢和回滾率隨之上升,通過對多系統(tǒng)參數(shù)指標(biāo)的參考,用以整體性分析、評估系統(tǒng)運(yùn)行的平穩(wěn)性和健壯性。
圖6 設(shè)備系統(tǒng)參數(shù)監(jiān)控圖
通過使用腳本程序添加自定義監(jiān)控參數(shù),形成監(jiān)控網(wǎng)卡數(shù)據(jù)的可視化界面。從圖7可以看出列車在不同行駛時(shí)間、行駛區(qū)段各運(yùn)營商網(wǎng)卡信號強(qiáng)度的變化趨勢,圖8展示了旅客用戶在W iFi使用過程中帶寬的實(shí)時(shí)變化趨勢,圖7、圖8中都有出現(xiàn)數(shù)據(jù)急劇變化的區(qū)段,這與列車穿過隧道或車站,隧道或車站對運(yùn)營商的信號有很大的屏蔽效應(yīng)有直接關(guān)系,同時(shí),信號強(qiáng)度以及帶寬上下的波動(dòng)會(huì)受鐵路沿線運(yùn)營商信號覆蓋率的影響。
基于Zabbix監(jiān)控技術(shù)與數(shù)據(jù)可視化研究的基礎(chǔ)上,針對Zabbix分布式、可擴(kuò)展性等特點(diǎn),結(jié)合鐵路動(dòng)車組W iFi運(yùn)營服務(wù)系統(tǒng)運(yùn)營數(shù)據(jù)建立監(jiān)控環(huán)境,進(jìn)行Zabbix監(jiān)控系統(tǒng)的搭建和優(yōu)化,利用其強(qiáng)大的應(yīng)用程序接口(API)擴(kuò)展能力,實(shí)現(xiàn)了動(dòng)車組W iFi運(yùn)營服務(wù)系統(tǒng)相關(guān)資源的整合。通過用戶定制,添加自定義監(jiān)控項(xiàng),完成了對動(dòng)車組W iFi運(yùn)營服務(wù)系統(tǒng)數(shù)據(jù)的可視化監(jiān)控與管理,這些改進(jìn)突破了傳統(tǒng)系統(tǒng)平臺的運(yùn)維管理方式,整合了監(jiān)控管理工具和通用集中監(jiān)控系統(tǒng)的優(yōu)勢,對保障鐵路動(dòng)車組W iFi運(yùn)營服務(wù)系統(tǒng)平穩(wěn)運(yùn)行具有重要意義。本監(jiān)控系統(tǒng)全面應(yīng)用以來,以監(jiān)控代替檢查,實(shí)現(xiàn)了系統(tǒng)運(yùn)維的數(shù)字化、信息化及自動(dòng)化,不但節(jié)約了運(yùn)維人力的投入,而且精準(zhǔn)度高,預(yù)警性強(qiáng),切實(shí)為鐵路動(dòng)車組W iFi運(yùn)營服務(wù)系統(tǒng)起到了保駕護(hù)航的作用,同時(shí),該系統(tǒng)監(jiān)控系統(tǒng)的建設(shè)及改進(jìn)對類似大型企業(yè)級應(yīng)用具有借鑒價(jià)值。
圖7 4G通信單元信號強(qiáng)度圖
圖8 網(wǎng)卡下行帶寬圖