畢 瑤
(北京全路通信信號研究設計院集團有限公司,北京 100070)
鐵路客票系統以票務服務為核心,以提升客運服務的自動化和智能化水平為目標,實現窗口售票、自助售票、互聯網售票等多渠道購票,支持現金、銀行卡、移動支付等多種支付方式,實現自動檢票、快速通過。作為鐵路行業必設的基礎信息系統,客票系統需提供7×24 h不間斷票務服務,可靠性要求高。隨著移動支付和互聯網售票技術的應用,客票系統規模越來越龐大,體系架構越來越復雜,硬件設備和服務應用發生故障的可能性增大,而且還面臨假期、節日等瞬時大流量、高并發壓力等問題易發場景,因而客票系統的監控運維工作十分重要。特別是節假日客流集中、運力不足、供需矛盾突出的時段,客票系統的社會關注度高、影響力大,監控尤為關鍵。
鐵路客票系統的監控一般采用人工巡檢加問題反饋的方式,運維效果取決于維護人員的業務水平,因而該方式普遍存在發現不及時、排查難、解決慢等問題。很多情況下,只能等到事件已對業務造成影響時才發現并著手處理,延誤了故障處理時間,擴大了事件影響范圍,使運維工作處于被動狀態。特別針對軟件服務應用以及服務器集群、負載均衡器、網絡安全防護等專業硬件設備監控運維能力較弱,發生故障時只能依靠廠家的技術支持和售后服務來解決。
因此,研發一套高效可靠的客票監控系統來指導運維人員快速定位并解決故障就顯得尤為迫切。對涉及業務應用的服務器、網絡設備、數據庫、服務程序等IT資源的運行進行自動監督和預警,提供便捷、及時的事件通知和故障自愈處理,構建自動化、標準化和規范化的運維模式。
Zabbix是一款成熟、高度集成的商用監控產品,具有開源、分布式、開箱即用等特點,并提供良好的Web前端界面,適用于系統級可用性和性能監控。Zabbix的Web界面如圖1、2所示。

圖1 Zabbix前端界面示例1Fig.1 Example 1 of Zabbix front-end interface
Zabbix具有常見的商用監控軟件所具備的功能,如服務器監控、網絡監控、數據庫監控、Web監控、可視化展示、報警通知、API功能等。
Zabbix的功能特性如下。
1) 數據采集
a.可用性、性能檢測;
b.支持多種數據采集方式,有專用的采集客戶端Agent,也支持多種通用協議,如SNMP、IPMI、JMX、Telnet、SSH等;
c.支持Web監控,可模擬瀏覽器訪問網站,檢查返回值和響應時間;
d.支持日志審計;
e.用戶自定義檢測和自定義采集頻率。
2) 數據存儲
a.將采集的數據存儲在數據庫中,支持MySQL、Oracle、SQLite等常用數據庫;
b.歷史數據的存放周期可配置,自動定期刪除過期數據。
3) 多種可視化展示
a.支持各類圖形、圖表、網絡拓撲圖、地圖等可視化展示方式;
b.可自定義監控展示圖,支持集中聚合展示。
4) 自定義可配置的告警
a.支持自定義告警,可靈活配置告警閾值及與多種告警關聯條件;
b.支持郵箱、短信等告警通知;
c.支持告警發生后自動處理功能包括遠程命令的自動調用和執行。
5) API功能
a.Zabbix提 供 基 于JSON-RPC 2.0協 議 的API,支持檢索和修改Zabbix的配置,并提供對歷史數據的訪問;
b.應用API功能可方便與其他系統或第三方軟件集成。
Zabbix的通用架構為客戶端/服務器端模式(C/S模式),客戶端負責采集監測數據,服務器將收集到的數據持久地存儲到數據庫中,通過前端UI友好地展示給用戶。為分擔服務器端壓力,可采用分布式的客戶端/代理端/服務器端模式,由代理端替代服務器端收集監測數據,然后把數據匯總給服務器端。Zabbix的架構如圖3所示。
和其他監控產品相比,Zabbix具備以下優勢:
1)Zabbix軟件自由開源,用戶可根據實際需要對源碼進行二次開發;
2)安裝和配置簡單,可使用自帶模板方便完成監控系統的搭建;
3)Zabbix-Server和Zabbix-Agent采用C語言編寫,對系統資源占用非常少,數據采集的性能非常好,速度非常快,支持跨平臺、跨系統監控;
4)監控數據存儲在數據庫中,可進行統計和二次分析;
5)具有很強的擴展能力,可以輕松地自定義監控項和實現數據采集。
據Zabbix官方提供的資料顯示,單個服務器節點可以支持10萬臺設備的監控,每秒可以處理5萬次請求,對于大中型業務監控的應用場景適用。
鑒于Zabbix的整套開箱即用的成熟解決方案,本文選擇基于Zabbix設計開發客票監控系統。
1)基于業務拓撲的一體化全方位監控
從客票業務角度出發,建立以業務為核心的監控視圖,將各業務組成的IT 資源如服務器、網絡設備、人工終端設備、自助售檢票設備、Oracle數據庫、Apache、應用服務等全面納入監控體系,按照整體業務邏輯關系模型整合、關聯監控項數據,從而第一時間發現、識別以及預警業務事件,快速定位問題關鍵環節和故障隱患設施,指導運維人員精準實施,保障客票業務的正常運行。
2)分布式集中管理
采用分布式的客戶端/代理端/服務器端模式,即Agent/ Proxy /Server模式,以提供大規模監控性能。服務器端Server安裝在調度中心,負責整條線路監控數據的集中存儲和管理,代理端Proxy安裝在車站服務器,定期將所轄車站的監控數據匯總給 Server 端,實現分布式監控以減輕Server端的負載壓力,客戶端Agent安裝在各監測終端,負責監控數據的采集。
提供統一的Web界面進行集中管理,輔助運維人員及時掌握客票系統整體業務鏈的運行狀況。
3)完善的報警通知機制
支持郵件通知功能,也可通過二次開發擴展短信、微信公眾號等及時通知渠道。同時為提高報警信息的準確性,避免出現系統誤報和報警風暴,加入了延時報警、合并報警和報警恢復等收斂機制,即5 min內同一監控點相同類型未恢復的報警信息合并成一條進行通知。
4)故障自愈處理
利用Zabbix報警后執行遠程命令的功能實現故障自愈處理,針對每一種故障制定出詳細的處理步驟,如重啟服務、數據備份調整、日志拷貝等操作,并整理為可自動處理的命令腳本。當指定類型的故障報警后系統自動執行自愈腳本,從而實現故障無人值守以及故障處理的標準化、規范化,最大限度地保障客票業務的可用性和穩定性,減少人力投入及人為操作失誤風險。
基于Zabbix的客票監控系統架構如圖4所示。
從客票業務角度出發,構建了窗口售票、自助售票、制票、檢票、計劃管理、支付接口、互聯網售票等七大監控視圖:整合監控業務關聯的服務器、網絡設備、人工終端設備、自助售檢票設備、Oracle、Apache、應用服務程序等,通過靈活配置觸發器,設置優先級,從而第一時間報警業務事件以及定位問題關鍵環節和故障設施,同時預警隱患,實現事前預防。
1)服務器/終端/自助機監控
部署Agent客戶端,監測 CPU負載、內存、磁盤空間、網卡、網絡流量、防火墻策略等系統運行的指標。
2)網絡監控
建立整體網絡拓撲圖,通過ping命令的方式測試物理連通性。
針對交換機、防火墻、路由器等支持 SNMP協議的網絡設備,采用SNMP方式收集設備狀態、端口流量、告警等監控數據。
3)Oracle數據庫監控
通過自帶的Oracle監控模板監測表空間利用率、會話數等通用指標,通過外部自定義Shell腳本的方式監測客票業務邏輯。
4)應用服務監控
涵蓋客票系統所有應用服務程序,監測的內容包括進程是否存活、服務端口狀態、TCP連接狀態、Web訪問速度、日志刷新是否正常、日志關鍵字審計等。
該部分自愈設計,能夠自動進行重啟等操作嘗試對異常自行恢復。
基于 Zabbix 開源架構搭建了以業務為核心的客票系統監控平臺,實現了對服務器、網絡設備、人工終端設備、自助售檢票設備、Oracle數據庫、Apache、應用服務等統一監控和管理,并按照業務邏輯關系模型全面整合、關聯監控數據,從業務視角發現、識別和預警問題事件。該監控系統具有一體化全方位監控、分布式、自動化、故障自愈等特點,可提升客票系統監控運維的質量和效率,實現運維的精準化、標準化和規范化,具有很好的應用前景。