◆林 誥 樂振滸
(中國銀聯(lián)股份有限公司 上海 200135)
基于網(wǎng)絡流量的應用運維監(jiān)控技術研究
◆林 誥 樂振滸
(中國銀聯(lián)股份有限公司 上海 200135)
隨著互聯(lián)網(wǎng)應用的快速發(fā)展,基于云架構(gòu)的應用系統(tǒng)逐漸增多;經(jīng)調(diào)查了解,業(yè)內(nèi)常用的應用監(jiān)控手段有四類,第一類是通過商用或開源軟件對相關系統(tǒng)指標進行監(jiān)控,第二類是對應用記錄在數(shù)據(jù)庫中的調(diào)用信息進行一次或二次的統(tǒng)計監(jiān)控,第三類是在現(xiàn)有應用中嵌入監(jiān)控代碼進行應用的性能監(jiān)控,第四類是通過日志歸集及日志分析的方式來對應用進行監(jiān)控和分析。以上的監(jiān)控手段都需要應用進行配合實施,屬于主動監(jiān)控范疇,具有一定的應用侵入性。本文提出了一種基于網(wǎng)絡流量的監(jiān)控手段,將用戶與應用之間調(diào)用所產(chǎn)生的流量進行旁路鏡像,并對流量進行調(diào)用還原,通過一些設定的監(jiān)控指標,更加客觀的來監(jiān)控應用的健康情況,提供了應用運維監(jiān)控的新思路。
應用運維;系統(tǒng)監(jiān)控;日志歸集;網(wǎng)絡流量;旁路鏡像
隨著互聯(lián)網(wǎng)應用的快速發(fā)展,基于云架構(gòu)的應用系統(tǒng)逐漸增多;經(jīng)調(diào)查了解,業(yè)內(nèi)常用的應用監(jiān)控手段有四類,第一類是通過商用或開源軟件對相關系統(tǒng)指標進行監(jiān)控,第二類是對應用記錄在數(shù)據(jù)庫中的調(diào)用信息進行一次或二次的統(tǒng)計監(jiān)控,第三類是在現(xiàn)有應用中嵌入監(jiān)控代碼進行應用的性能監(jiān)控,第四類是通過日志歸集及日志分析的方式來對應用進行監(jiān)控和分析。
以上的監(jiān)控手段都需要應用進行配合實施,屬于主動監(jiān)控范疇,具有一定的應用侵入性。本文提出了一種基于網(wǎng)絡流量的監(jiān)控手段,將用戶與應用之間調(diào)用所產(chǎn)生的流量進行旁路鏡像(如SPAN),并對流量進行調(diào)用還原,通過一些設定的監(jiān)控指標,更加客觀的來監(jiān)控應用的健康情況,提供了應用運維監(jiān)控的新思路。
最常見的四類監(jiān)控方案的實現(xiàn)方式主要有:
1.1 系統(tǒng)監(jiān)控
通過商用軟件(如Patrol)或開源軟件(如 Zabbix)進行監(jiān)控,需要在應用端部署代理(agent),將應用的進程、線程或者中間件中的指標信息進行采集和展示。
1.2 應用監(jiān)控
應用將調(diào)用的詳細信息或者統(tǒng)計量信息記錄在數(shù)據(jù)庫中,監(jiān)控程序采集數(shù)據(jù)庫信息進行一次或二次統(tǒng)計后,再以圖表的方式進行展示。
1.3 嵌入式監(jiān)控
提供專門的用于監(jiān)控的公共包,應用在編碼時,調(diào)用公共包中的方式,進而完成對于應用自身性能的監(jiān)控,可以了解到內(nèi)部方法執(zhí)行的具體信息。
1.4 日志監(jiān)控
通過日志歸集工具(如ELK),對云環(huán)境下的多應用主機的應用日志進行匯總歸集,并監(jiān)控關鍵字或相關的指標的統(tǒng)計監(jiān)控。
以上的監(jiān)控手段中,都需要應用配合進行實施,有可能會影響到應用自身的性能,并且監(jiān)控的結(jié)果直接受應用本身吞吐數(shù)據(jù)正確性的影響。本文引入了基于網(wǎng)絡流量的旁路監(jiān)控技術,更客觀真實的去體現(xiàn)應用的健康狀態(tài),下面分別介紹旁路監(jiān)控、真實還原和指標統(tǒng)計的設計思想。
2.1 旁路監(jiān)控的設計思想
可以使用多種流量復制的技術(例如包括SPAN、TCPCopy、SDN網(wǎng)絡分發(fā)、分光等),將實際交易過程所產(chǎn)生的網(wǎng)絡流量數(shù)據(jù)進行旁路復制,該監(jiān)控技術不會對被管理應用產(chǎn)生任何影響,避免了傳統(tǒng)監(jiān)控方式所帶來的性能風險。
2.2 真實還原的設計思想
可以通過對復制出來的網(wǎng)絡流量進行實時分析,根據(jù)網(wǎng)絡協(xié)議規(guī)范(例如包括 TCP、UDP等)及應用協(xié)議規(guī)范(例如包括HTTP,銀聯(lián)POS 8583規(guī)范等),將二進制網(wǎng)絡流數(shù)據(jù)轉(zhuǎn)化為運維人員可以直接看懂的交易報文。
2.3 指標統(tǒng)計的設計思想
對還原出來的報文數(shù)據(jù),進行一次或二次分析,通過簡單配置即可納入監(jiān)控,并以業(yè)務為導向,提供請求數(shù)量、成功率、響應時間、響應率、應答碼、以及業(yè)務處理內(nèi)部狀態(tài)碼等關鍵性指標,結(jié)合展示界面,實現(xiàn)應用可用性、性能的全面可視化。
旁路監(jiān)控系統(tǒng)處理交易系統(tǒng)調(diào)用過程中所產(chǎn)生的流量數(shù)據(jù)(也就是請求和應答)。通過對流量數(shù)據(jù)的解析,可以獲得調(diào)用的真實交互報文,并結(jié)合監(jiān)控規(guī)則和統(tǒng)計規(guī)則,完成對應用系統(tǒng)的監(jiān)控和告警。
3.1 網(wǎng)絡流量監(jiān)控系統(tǒng)架構(gòu)設計
本架構(gòu)主要分成三部分,分別是抓包單元,解析單元,以及監(jiān)控展示單元。
抓包單元:主要負責將應用系統(tǒng)主機的所有進出流量進行復制,并引至流量接收服務器的網(wǎng)卡上。在流量接收服務器上使用網(wǎng)絡抓包軟件(如netsniff-ng,tcpdump),將鏡像流量以pcap的格式保存至本地硬盤。
解析單元:主要負責對 pcap文件按序進行處理,根據(jù) OSI七層模型,對下四層進行基礎網(wǎng)絡解析,對上三層參考國際或行業(yè)規(guī)范(HTTP rfc2616或者銀聯(lián)POS 8583規(guī)范)對數(shù)據(jù)進行深度解析,將明細數(shù)據(jù)記錄,并同時發(fā)送至監(jiān)控展示單元。
監(jiān)控展示單元:該對解析單元發(fā)送過來的數(shù)據(jù),按照設定的規(guī)則,進行流式計算、指標統(tǒng)計,并通過UI進行界面展示。
系統(tǒng)的架構(gòu)設計如圖1所示。
3.2 網(wǎng)絡流量監(jiān)控系統(tǒng)主要模塊介紹
網(wǎng)絡流量監(jiān)控系統(tǒng)的主要模塊的功能及實現(xiàn)介紹如下:(1)流量鏡像模塊
流量鏡像模塊主要將實際交易過程所產(chǎn)生的網(wǎng)絡流量數(shù)據(jù)進行旁路復制(包括SPAN、TCPCopy、SDN網(wǎng)絡分發(fā)、分光等),并引至流量接收服務器的網(wǎng)卡,作為整套系統(tǒng)的數(shù)據(jù)源。
(2)流量采集模塊
流量采集模塊主要負責將流量接收服務器網(wǎng)卡上接收到的鏡像流量以 pcap的格式保存至本地磁盤(包括 Netsniff-ng、tcpdump等)。
圖1 系統(tǒng)架構(gòu)
(3)基礎網(wǎng)絡協(xié)議解析模塊
基礎網(wǎng)絡協(xié)議解析模塊主要負責對PCAP文件網(wǎng)絡數(shù)據(jù)的鏈路層、IP層等底層協(xié)議進行數(shù)據(jù)解析,得到底層通用的主要字段信息。
(4)應用協(xié)議解析模塊
應用協(xié)議解析模塊根據(jù)行業(yè)規(guī)范(HTTP rfc2616或者銀聯(lián)POS 8583規(guī)范)對數(shù)據(jù)進行深度解析并得到協(xié)議所定義的字段。
(5)請求應答關聯(lián)模塊
請求應答關聯(lián)模塊根據(jù)應用協(xié)議標準規(guī)范對網(wǎng)絡流量中的每一筆請求及應答進行關聯(lián)撮合,并計算應用的請求處理時間。
(6)流式計算模塊
流式計算模塊主要通過SparkStreaming流式計算引擎來對大數(shù)據(jù)量的明細數(shù)據(jù)進行實時計算處理,并且具備良好的擴展性。
(7)指標統(tǒng)計模塊
指標統(tǒng)計模塊主要負責統(tǒng)計應用的TPS、成功率、響應率、平均處理時間、響應時間達標率、連續(xù)失敗次數(shù)、無調(diào)用時間等等。
(8)UI展示模塊
UI展示模塊主要負責對各項指標進行以曲線形式、分布圖、餅圖等各種形式的前端直觀展現(xiàn),方便運維人員監(jiān)控迅速發(fā)現(xiàn)以及分析定位問題。
3.3 網(wǎng)絡流量監(jiān)控系統(tǒng)依賴組件介紹
網(wǎng)絡流量監(jiān)控系統(tǒng)主要所依賴的組件介紹如下:
(1)消息中間件
消息中間件作為應用模塊之間解耦的關鍵性組件,可以緩沖基礎網(wǎng)絡協(xié)議解析模塊和應用協(xié)議解析模塊之間可能會出現(xiàn)的處理速度及吞吐量不對等的問題,并且通過中間件的使用,則可以方便的使用分布式消息處理提高整體系統(tǒng)的處理速度。
(2)參數(shù)數(shù)據(jù)庫
參數(shù)數(shù)據(jù)庫主要負責配置和管理應用系統(tǒng)所對應的 IP地址的集合。這樣可以在應用系統(tǒng)擴容或者縮容的時候,配合快速進行應用對應的IP的增減。
(3)明細數(shù)據(jù)庫
明細數(shù)據(jù)庫主要負責落地存儲監(jiān)控系統(tǒng)所解析出來的應用請求和應答數(shù)據(jù),并按照切分好的字段來進行存放,可以用來進行分析及統(tǒng)計使用。
(4)指標結(jié)果庫
指標結(jié)果庫主要負責根據(jù)系統(tǒng)的監(jiān)控規(guī)則,對明細數(shù)據(jù)進行一次或者二次的統(tǒng)計,方式可以是內(nèi)存統(tǒng)計或明細結(jié)果的再統(tǒng)計等,得出的結(jié)果存儲在數(shù)據(jù)庫中,可以是TPS、應答碼分布、響應時間分布等,供UI展示模塊進行讀取展示。
(5)流式計算引擎
流式計算引擎主要負責利用分布式計算的新技術應對大數(shù)據(jù)量的明細數(shù)據(jù),進行實時計算處理,以滿足大規(guī)模應用場景下的實時監(jiān)控分析的需求。
本文在研究現(xiàn)有應用監(jiān)控技術的基礎上,指出傳統(tǒng)監(jiān)控技術所存在的應用侵入性、不夠真實客觀、影響性能等問題;并從應用間交互的網(wǎng)絡流量數(shù)據(jù)作為切入點,提出了旁路監(jiān)控、真實還原、指標統(tǒng)計的設計思想,設計了一套基于網(wǎng)絡流量數(shù)據(jù)的應用運維監(jiān)控模型系統(tǒng),完善和優(yōu)化了應用的用戶端監(jiān)控體系。
[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.