◆林 誥 樂振滸
(中國銀聯股份有限公司 上海 200135)
基于網絡流量的應用運維監控技術研究
◆林 誥 樂振滸
(中國銀聯股份有限公司 上海 200135)
隨著互聯網應用的快速發展,基于云架構的應用系統逐漸增多;經調查了解,業內常用的應用監控手段有四類,第一類是通過商用或開源軟件對相關系統指標進行監控,第二類是對應用記錄在數據庫中的調用信息進行一次或二次的統計監控,第三類是在現有應用中嵌入監控代碼進行應用的性能監控,第四類是通過日志歸集及日志分析的方式來對應用進行監控和分析。以上的監控手段都需要應用進行配合實施,屬于主動監控范疇,具有一定的應用侵入性。本文提出了一種基于網絡流量的監控手段,將用戶與應用之間調用所產生的流量進行旁路鏡像,并對流量進行調用還原,通過一些設定的監控指標,更加客觀的來監控應用的健康情況,提供了應用運維監控的新思路。
應用運維;系統監控;日志歸集;網絡流量;旁路鏡像
隨著互聯網應用的快速發展,基于云架構的應用系統逐漸增多;經調查了解,業內常用的應用監控手段有四類,第一類是通過商用或開源軟件對相關系統指標進行監控,第二類是對應用記錄在數據庫中的調用信息進行一次或二次的統計監控,第三類是在現有應用中嵌入監控代碼進行應用的性能監控,第四類是通過日志歸集及日志分析的方式來對應用進行監控和分析。
以上的監控手段都需要應用進行配合實施,屬于主動監控范疇,具有一定的應用侵入性。本文提出了一種基于網絡流量的監控手段,將用戶與應用之間調用所產生的流量進行旁路鏡像(如SPAN),并對流量進行調用還原,通過一些設定的監控指標,更加客觀的來監控應用的健康情況,提供了應用運維監控的新思路。
最常見的四類監控方案的實現方式主要有:
1.1 系統監控
通過商用軟件(如Patrol)或開源軟件(如 Zabbix)進行監控,需要在應用端部署代理(agent),將應用的進程、線程或者中間件中的指標信息進行采集和展示。
1.2 應用監控
應用將調用的詳細信息或者統計量信息記錄在數據庫中,監控程序采集數據庫信息進行一次或二次統計后,再以圖表的方式進行展示。
1.3 嵌入式監控
提供專門的用于監控的公共包,應用在編碼時,調用公共包中的方式,進而完成對于應用自身性能的監控,可以了解到內部方法執行的具體信息。
1.4 日志監控
通過日志歸集工具(如ELK),對云環境下的多應用主機的應用日志進行匯總歸集,并監控關鍵字或相關的指標的統計監控。
以上的監控手段中,都需要應用配合進行實施,有可能會影響到應用自身的性能,并且監控的結果直接受應用本身吞吐數據正確性的影響。本文引入了基于網絡流量的旁路監控技術,更客觀真實的去體現應用的健康狀態,下面分別介紹旁路監控、真實還原和指標統計的設計思想。
2.1 旁路監控的設計思想
可以使用多種流量復制的技術(例如包括SPAN、TCPCopy、SDN網絡分發、分光等),將實際交易過程所產生的網絡流量數據進行旁路復制,該監控技術不會對被管理應用產生任何影響,避免了傳統監控方式所帶來的性能風險。
2.2 真實還原的設計思想
可以通過對復制出來的網絡流量進行實時分析,根據網絡協議規范(例如包括 TCP、UDP等)及應用協議規范(例如包括HTTP,銀聯POS 8583規范等),將二進制網絡流數據轉化為運維人員可以直接看懂的交易報文。
2.3 指標統計的設計思想
對還原出來的報文數據,進行一次或二次分析,通過簡單配置即可納入監控,并以業務為導向,提供請求數量、成功率、響應時間、響應率、應答碼、以及業務處理內部狀態碼等關鍵性指標,結合展示界面,實現應用可用性、性能的全面可視化。
旁路監控系統處理交易系統調用過程中所產生的流量數據(也就是請求和應答)。通過對流量數據的解析,可以獲得調用的真實交互報文,并結合監控規則和統計規則,完成對應用系統的監控和告警。
3.1 網絡流量監控系統架構設計
本架構主要分成三部分,分別是抓包單元,解析單元,以及監控展示單元。
抓包單元:主要負責將應用系統主機的所有進出流量進行復制,并引至流量接收服務器的網卡上。在流量接收服務器上使用網絡抓包軟件(如netsniff-ng,tcpdump),將鏡像流量以pcap的格式保存至本地硬盤。
解析單元:主要負責對 pcap文件按序進行處理,根據 OSI七層模型,對下四層進行基礎網絡解析,對上三層參考國際或行業規范(HTTP rfc2616或者銀聯POS 8583規范)對數據進行深度解析,將明細數據記錄,并同時發送至監控展示單元。
監控展示單元:該對解析單元發送過來的數據,按照設定的規則,進行流式計算、指標統計,并通過UI進行界面展示。
系統的架構設計如圖1所示。
3.2 網絡流量監控系統主要模塊介紹
網絡流量監控系統的主要模塊的功能及實現介紹如下:(1)流量鏡像模塊
流量鏡像模塊主要將實際交易過程所產生的網絡流量數據進行旁路復制(包括SPAN、TCPCopy、SDN網絡分發、分光等),并引至流量接收服務器的網卡,作為整套系統的數據源。
(2)流量采集模塊
流量采集模塊主要負責將流量接收服務器網卡上接收到的鏡像流量以 pcap的格式保存至本地磁盤(包括 Netsniff-ng、tcpdump等)。

圖1 系統架構
(3)基礎網絡協議解析模塊
基礎網絡協議解析模塊主要負責對PCAP文件網絡數據的鏈路層、IP層等底層協議進行數據解析,得到底層通用的主要字段信息。
(4)應用協議解析模塊
應用協議解析模塊根據行業規范(HTTP rfc2616或者銀聯POS 8583規范)對數據進行深度解析并得到協議所定義的字段。
(5)請求應答關聯模塊
請求應答關聯模塊根據應用協議標準規范對網絡流量中的每一筆請求及應答進行關聯撮合,并計算應用的請求處理時間。
(6)流式計算模塊
流式計算模塊主要通過SparkStreaming流式計算引擎來對大數據量的明細數據進行實時計算處理,并且具備良好的擴展性。
(7)指標統計模塊
指標統計模塊主要負責統計應用的TPS、成功率、響應率、平均處理時間、響應時間達標率、連續失敗次數、無調用時間等等。
(8)UI展示模塊
UI展示模塊主要負責對各項指標進行以曲線形式、分布圖、餅圖等各種形式的前端直觀展現,方便運維人員監控迅速發現以及分析定位問題。
3.3 網絡流量監控系統依賴組件介紹
網絡流量監控系統主要所依賴的組件介紹如下:
(1)消息中間件
消息中間件作為應用模塊之間解耦的關鍵性組件,可以緩沖基礎網絡協議解析模塊和應用協議解析模塊之間可能會出現的處理速度及吞吐量不對等的問題,并且通過中間件的使用,則可以方便的使用分布式消息處理提高整體系統的處理速度。
(2)參數數據庫
參數數據庫主要負責配置和管理應用系統所對應的 IP地址的集合。這樣可以在應用系統擴容或者縮容的時候,配合快速進行應用對應的IP的增減。
(3)明細數據庫
明細數據庫主要負責落地存儲監控系統所解析出來的應用請求和應答數據,并按照切分好的字段來進行存放,可以用來進行分析及統計使用。
(4)指標結果庫
指標結果庫主要負責根據系統的監控規則,對明細數據進行一次或者二次的統計,方式可以是內存統計或明細結果的再統計等,得出的結果存儲在數據庫中,可以是TPS、應答碼分布、響應時間分布等,供UI展示模塊進行讀取展示。
(5)流式計算引擎
流式計算引擎主要負責利用分布式計算的新技術應對大數據量的明細數據,進行實時計算處理,以滿足大規模應用場景下的實時監控分析的需求。
本文在研究現有應用監控技術的基礎上,指出傳統監控技術所存在的應用侵入性、不夠真實客觀、影響性能等問題;并從應用間交互的網絡流量數據作為切入點,提出了旁路監控、真實還原、指標統計的設計思想,設計了一套基于網絡流量數據的應用運維監控模型系統,完善和優化了應用的用戶端監控體系。
[1]Marina del Rey,RFC 793:Transmission Control Protocol,IETF,1981.
[2]R.Fielding,RFC 2616: Hypertext Transfer Protocol --HTTP/1.1,IETF,1999.
[3]T.Berners-Lee,RFC 1945:Hypertext Transfer Protocol -- HTTP/1.0,IETF,1996.