畢 瑤
(北京全路通信信號研究設(shè)計(jì)院集團(tuán)有限公司,北京 100070)
鐵路客票系統(tǒng)以票務(wù)服務(wù)為核心,以提升客運(yùn)服務(wù)的自動(dòng)化和智能化水平為目標(biāo),實(shí)現(xiàn)窗口售票、自助售票、互聯(lián)網(wǎng)售票等多渠道購票,支持現(xiàn)金、銀行卡、移動(dòng)支付等多種支付方式,實(shí)現(xiàn)自動(dòng)檢票、快速通過。作為鐵路行業(yè)必設(shè)的基礎(chǔ)信息系統(tǒng),客票系統(tǒng)需提供7×24 h不間斷票務(wù)服務(wù),可靠性要求高。隨著移動(dòng)支付和互聯(lián)網(wǎng)售票技術(shù)的應(yīng)用,客票系統(tǒng)規(guī)模越來越龐大,體系架構(gòu)越來越復(fù)雜,硬件設(shè)備和服務(wù)應(yīng)用發(fā)生故障的可能性增大,而且還面臨假期、節(jié)日等瞬時(shí)大流量、高并發(fā)壓力等問題易發(fā)場景,因而客票系統(tǒng)的監(jiān)控運(yùn)維工作十分重要。特別是節(jié)假日客流集中、運(yùn)力不足、供需矛盾突出的時(shí)段,客票系統(tǒng)的社會(huì)關(guān)注度高、影響力大,監(jiān)控尤為關(guān)鍵。
鐵路客票系統(tǒng)的監(jiān)控一般采用人工巡檢加問題反饋的方式,運(yùn)維效果取決于維護(hù)人員的業(yè)務(wù)水平,因而該方式普遍存在發(fā)現(xiàn)不及時(shí)、排查難、解決慢等問題。很多情況下,只能等到事件已對業(yè)務(wù)造成影響時(shí)才發(fā)現(xiàn)并著手處理,延誤了故障處理時(shí)間,擴(kuò)大了事件影響范圍,使運(yùn)維工作處于被動(dòng)狀態(tài)。特別針對軟件服務(wù)應(yīng)用以及服務(wù)器集群、負(fù)載均衡器、網(wǎng)絡(luò)安全防護(hù)等專業(yè)硬件設(shè)備監(jiān)控運(yùn)維能力較弱,發(fā)生故障時(shí)只能依靠廠家的技術(shù)支持和售后服務(wù)來解決。
因此,研發(fā)一套高效可靠的客票監(jiān)控系統(tǒng)來指導(dǎo)運(yùn)維人員快速定位并解決故障就顯得尤為迫切。對涉及業(yè)務(wù)應(yīng)用的服務(wù)器、網(wǎng)絡(luò)設(shè)備、數(shù)據(jù)庫、服務(wù)程序等IT資源的運(yùn)行進(jìn)行自動(dòng)監(jiān)督和預(yù)警,提供便捷、及時(shí)的事件通知和故障自愈處理,構(gòu)建自動(dòng)化、標(biāo)準(zhǔn)化和規(guī)范化的運(yùn)維模式。
Zabbix是一款成熟、高度集成的商用監(jiān)控產(chǎn)品,具有開源、分布式、開箱即用等特點(diǎn),并提供良好的Web前端界面,適用于系統(tǒng)級可用性和性能監(jiān)控。Zabbix的Web界面如圖1、2所示。
圖1 Zabbix前端界面示例1Fig.1 Example 1 of Zabbix front-end interface
Zabbix具有常見的商用監(jiān)控軟件所具備的功能,如服務(wù)器監(jiān)控、網(wǎng)絡(luò)監(jiān)控、數(shù)據(jù)庫監(jiān)控、Web監(jiān)控、可視化展示、報(bào)警通知、API功能等。
Zabbix的功能特性如下。
1) 數(shù)據(jù)采集
a.可用性、性能檢測;
b.支持多種數(shù)據(jù)采集方式,有專用的采集客戶端Agent,也支持多種通用協(xié)議,如SNMP、IPMI、JMX、Telnet、SSH等;
c.支持Web監(jiān)控,可模擬瀏覽器訪問網(wǎng)站,檢查返回值和響應(yīng)時(shí)間;
d.支持日志審計(jì);
e.用戶自定義檢測和自定義采集頻率。
2) 數(shù)據(jù)存儲
a.將采集的數(shù)據(jù)存儲在數(shù)據(jù)庫中,支持MySQL、Oracle、SQLite等常用數(shù)據(jù)庫;
b.歷史數(shù)據(jù)的存放周期可配置,自動(dòng)定期刪除過期數(shù)據(jù)。
3) 多種可視化展示
a.支持各類圖形、圖表、網(wǎng)絡(luò)拓?fù)鋱D、地圖等可視化展示方式;
b.可自定義監(jiān)控展示圖,支持集中聚合展示。
4) 自定義可配置的告警
a.支持自定義告警,可靈活配置告警閾值及與多種告警關(guān)聯(lián)條件;
b.支持郵箱、短信等告警通知;
c.支持告警發(fā)生后自動(dòng)處理功能包括遠(yuǎn)程命令的自動(dòng)調(diào)用和執(zhí)行。
5) API功能
a.Zabbix提 供 基 于JSON-RPC 2.0協(xié) 議 的API,支持檢索和修改Zabbix的配置,并提供對歷史數(shù)據(jù)的訪問;
b.應(yīng)用API功能可方便與其他系統(tǒng)或第三方軟件集成。
Zabbix的通用架構(gòu)為客戶端/服務(wù)器端模式(C/S模式),客戶端負(fù)責(zé)采集監(jiān)測數(shù)據(jù),服務(wù)器將收集到的數(shù)據(jù)持久地存儲到數(shù)據(jù)庫中,通過前端UI友好地展示給用戶。為分擔(dān)服務(wù)器端壓力,可采用分布式的客戶端/代理端/服務(wù)器端模式,由代理端替代服務(wù)器端收集監(jiān)測數(shù)據(jù),然后把數(shù)據(jù)匯總給服務(wù)器端。Zabbix的架構(gòu)如圖3所示。
和其他監(jiān)控產(chǎn)品相比,Zabbix具備以下優(yōu)勢:
1)Zabbix軟件自由開源,用戶可根據(jù)實(shí)際需要對源碼進(jìn)行二次開發(fā);
2)安裝和配置簡單,可使用自帶模板方便完成監(jiān)控系統(tǒng)的搭建;
3)Zabbix-Server和Zabbix-Agent采用C語言編寫,對系統(tǒng)資源占用非常少,數(shù)據(jù)采集的性能非常好,速度非???,支持跨平臺、跨系統(tǒng)監(jiān)控;
4)監(jiān)控?cái)?shù)據(jù)存儲在數(shù)據(jù)庫中,可進(jìn)行統(tǒng)計(jì)和二次分析;
5)具有很強(qiáng)的擴(kuò)展能力,可以輕松地自定義監(jiān)控項(xiàng)和實(shí)現(xiàn)數(shù)據(jù)采集。
據(jù)Zabbix官方提供的資料顯示,單個(gè)服務(wù)器節(jié)點(diǎn)可以支持10萬臺設(shè)備的監(jiān)控,每秒可以處理5萬次請求,對于大中型業(yè)務(wù)監(jiān)控的應(yīng)用場景適用。
鑒于Zabbix的整套開箱即用的成熟解決方案,本文選擇基于Zabbix設(shè)計(jì)開發(fā)客票監(jiān)控系統(tǒng)。
1)基于業(yè)務(wù)拓?fù)涞囊惑w化全方位監(jiān)控
從客票業(yè)務(wù)角度出發(fā),建立以業(yè)務(wù)為核心的監(jiān)控視圖,將各業(yè)務(wù)組成的IT 資源如服務(wù)器、網(wǎng)絡(luò)設(shè)備、人工終端設(shè)備、自助售檢票設(shè)備、Oracle數(shù)據(jù)庫、Apache、應(yīng)用服務(wù)等全面納入監(jiān)控體系,按照整體業(yè)務(wù)邏輯關(guān)系模型整合、關(guān)聯(lián)監(jiān)控項(xiàng)數(shù)據(jù),從而第一時(shí)間發(fā)現(xiàn)、識別以及預(yù)警業(yè)務(wù)事件,快速定位問題關(guān)鍵環(huán)節(jié)和故障隱患設(shè)施,指導(dǎo)運(yùn)維人員精準(zhǔn)實(shí)施,保障客票業(yè)務(wù)的正常運(yùn)行。
2)分布式集中管理
采用分布式的客戶端/代理端/服務(wù)器端模式,即Agent/ Proxy /Server模式,以提供大規(guī)模監(jiān)控性能。服務(wù)器端Server安裝在調(diào)度中心,負(fù)責(zé)整條線路監(jiān)控?cái)?shù)據(jù)的集中存儲和管理,代理端Proxy安裝在車站服務(wù)器,定期將所轄車站的監(jiān)控?cái)?shù)據(jù)匯總給 Server 端,實(shí)現(xiàn)分布式監(jiān)控以減輕Server端的負(fù)載壓力,客戶端Agent安裝在各監(jiān)測終端,負(fù)責(zé)監(jiān)控?cái)?shù)據(jù)的采集。
提供統(tǒng)一的Web界面進(jìn)行集中管理,輔助運(yùn)維人員及時(shí)掌握客票系統(tǒng)整體業(yè)務(wù)鏈的運(yùn)行狀況。
3)完善的報(bào)警通知機(jī)制
支持郵件通知功能,也可通過二次開發(fā)擴(kuò)展短信、微信公眾號等及時(shí)通知渠道。同時(shí)為提高報(bào)警信息的準(zhǔn)確性,避免出現(xiàn)系統(tǒng)誤報(bào)和報(bào)警風(fēng)暴,加入了延時(shí)報(bào)警、合并報(bào)警和報(bào)警恢復(fù)等收斂機(jī)制,即5 min內(nèi)同一監(jiān)控點(diǎn)相同類型未恢復(fù)的報(bào)警信息合并成一條進(jìn)行通知。
4)故障自愈處理
利用Zabbix報(bào)警后執(zhí)行遠(yuǎn)程命令的功能實(shí)現(xiàn)故障自愈處理,針對每一種故障制定出詳細(xì)的處理步驟,如重啟服務(wù)、數(shù)據(jù)備份調(diào)整、日志拷貝等操作,并整理為可自動(dòng)處理的命令腳本。當(dāng)指定類型的故障報(bào)警后系統(tǒng)自動(dòng)執(zhí)行自愈腳本,從而實(shí)現(xiàn)故障無人值守以及故障處理的標(biāo)準(zhǔn)化、規(guī)范化,最大限度地保障客票業(yè)務(wù)的可用性和穩(wěn)定性,減少人力投入及人為操作失誤風(fēng)險(xiǎn)。
基于Zabbix的客票監(jiān)控系統(tǒng)架構(gòu)如圖4所示。
從客票業(yè)務(wù)角度出發(fā),構(gòu)建了窗口售票、自助售票、制票、檢票、計(jì)劃管理、支付接口、互聯(lián)網(wǎng)售票等七大監(jiān)控視圖:整合監(jiān)控業(yè)務(wù)關(guān)聯(lián)的服務(wù)器、網(wǎng)絡(luò)設(shè)備、人工終端設(shè)備、自助售檢票設(shè)備、Oracle、Apache、應(yīng)用服務(wù)程序等,通過靈活配置觸發(fā)器,設(shè)置優(yōu)先級,從而第一時(shí)間報(bào)警業(yè)務(wù)事件以及定位問題關(guān)鍵環(huán)節(jié)和故障設(shè)施,同時(shí)預(yù)警隱患,實(shí)現(xiàn)事前預(yù)防。
1)服務(wù)器/終端/自助機(jī)監(jiān)控
部署Agent客戶端,監(jiān)測 CPU負(fù)載、內(nèi)存、磁盤空間、網(wǎng)卡、網(wǎng)絡(luò)流量、防火墻策略等系統(tǒng)運(yùn)行的指標(biāo)。
2)網(wǎng)絡(luò)監(jiān)控
建立整體網(wǎng)絡(luò)拓?fù)鋱D,通過ping命令的方式測試物理連通性。
針對交換機(jī)、防火墻、路由器等支持 SNMP協(xié)議的網(wǎng)絡(luò)設(shè)備,采用SNMP方式收集設(shè)備狀態(tài)、端口流量、告警等監(jiān)控?cái)?shù)據(jù)。
3)Oracle數(shù)據(jù)庫監(jiān)控
通過自帶的Oracle監(jiān)控模板監(jiān)測表空間利用率、會(huì)話數(shù)等通用指標(biāo),通過外部自定義Shell腳本的方式監(jiān)測客票業(yè)務(wù)邏輯。
4)應(yīng)用服務(wù)監(jiān)控
涵蓋客票系統(tǒng)所有應(yīng)用服務(wù)程序,監(jiān)測的內(nèi)容包括進(jìn)程是否存活、服務(wù)端口狀態(tài)、TCP連接狀態(tài)、Web訪問速度、日志刷新是否正常、日志關(guān)鍵字審計(jì)等。
該部分自愈設(shè)計(jì),能夠自動(dòng)進(jìn)行重啟等操作嘗試對異常自行恢復(fù)。
基于 Zabbix 開源架構(gòu)搭建了以業(yè)務(wù)為核心的客票系統(tǒng)監(jiān)控平臺,實(shí)現(xiàn)了對服務(wù)器、網(wǎng)絡(luò)設(shè)備、人工終端設(shè)備、自助售檢票設(shè)備、Oracle數(shù)據(jù)庫、Apache、應(yīng)用服務(wù)等統(tǒng)一監(jiān)控和管理,并按照業(yè)務(wù)邏輯關(guān)系模型全面整合、關(guān)聯(lián)監(jiān)控?cái)?shù)據(jù),從業(yè)務(wù)視角發(fā)現(xiàn)、識別和預(yù)警問題事件。該監(jiān)控系統(tǒng)具有一體化全方位監(jiān)控、分布式、自動(dòng)化、故障自愈等特點(diǎn),可提升客票系統(tǒng)監(jiān)控運(yùn)維的質(zhì)量和效率,實(shí)現(xiàn)運(yùn)維的精準(zhǔn)化、標(biāo)準(zhǔn)化和規(guī)范化,具有很好的應(yīng)用前景。