4000+系統(tǒng),10w+服務(wù)的立體式監(jiān)控是如何煉成的?
原創(chuàng)【51CTO.com原創(chuàng)稿件】在高效地支撐蘇寧互聯(lián)網(wǎng)相關(guān)業(yè)務(wù)的過程中,各系統(tǒng)間的交互也變得如圖 1 一樣錯綜復(fù)雜,下圖中的點代表各個應(yīng)用系統(tǒng),連線代表系統(tǒng)間的交互。
圖 1:系統(tǒng)交互圖
以上錯綜復(fù)雜的特性主要由以下兩個原因?qū)е拢?/p>
- 系統(tǒng)和服務(wù)的復(fù)雜性:體系數(shù)量龐大:4000+ 系統(tǒng),10w+ 服務(wù);系統(tǒng)間調(diào)用方式復(fù)雜:大部分使用 RSF,也有其他的方式,如 HESSIAN,ESB等。
- 業(yè)務(wù)的復(fù)雜:既有線上新業(yè)務(wù)又有線下老業(yè)務(wù),這些業(yè)務(wù)系統(tǒng)之間會有大量的關(guān)聯(lián)。
基礎(chǔ)環(huán)境的復(fù)雜性:多數(shù)據(jù)中心,每個數(shù)據(jù)中心會劃分多個邏輯機房和部署環(huán)境;一個系統(tǒng)服務(wù)器規(guī)模往往會很大,例如,緩存服務(wù)器就可能有上千臺。
為解決上述復(fù)雜性問題和更加有效的支撐整個業(yè)務(wù)的發(fā)展,我們提出了立體式監(jiān)控解決方案。
所謂立體式監(jiān)控,是由傳統(tǒng)的單點系統(tǒng)監(jiān)控演化而來,在復(fù)用當(dāng)前監(jiān)控探針的前提下,由單點發(fā)展為對業(yè)務(wù)全鏈路的監(jiān)控。
并根據(jù)采集而來的監(jiān)控數(shù)據(jù)進行多維度、甚至任意維度的分析,實現(xiàn)多維空間的監(jiān)控,便于快速預(yù)判和定位系統(tǒng)或者業(yè)務(wù)故障,提升業(yè)務(wù)支撐效率。
監(jiān)控體系建設(shè)
蘇寧監(jiān)控一體化解決方案旨在為用戶提供從系統(tǒng)監(jiān)控、問題定位、實時告警到?jīng)Q策分析、故障自愈的一站式解決方案。即全力為用戶打造從“監(jiān)”到“控”的全方位一體化 APM/CPM 解決方案。
從移動 App、PC/WAP端、網(wǎng)絡(luò)端、服務(wù)端、調(diào)用鏈各個級別進行應(yīng)用性能分析。
能夠深入到應(yīng)用、數(shù)據(jù)庫自動捕獲應(yīng)用性能異常,自動識別有問題的應(yīng)用組件和代碼,利用關(guān)鍵業(yè)務(wù)性能剖析進行故障原因深度分析,非 IT 專家也能夠快速定位問題原因所在。
采用新一代的應(yīng)用監(jiān)控技術(shù),將企業(yè)數(shù)據(jù)中心基礎(chǔ)資源監(jiān)測數(shù)據(jù)、用戶體驗監(jiān)測數(shù)據(jù)、應(yīng)用代碼性能分析數(shù)據(jù)、網(wǎng)絡(luò)性能數(shù)據(jù)、系統(tǒng)運行日志等各類異構(gòu)、海量的 IT 監(jiān)測數(shù)據(jù)進行集中收集和處理,融合蘇寧大數(shù)據(jù)能力,構(gòu)建更加高效、更加智能的 IT 故障分析能力。
立體式監(jiān)控體系整體架構(gòu)圖如圖 2 所示:
圖 2:蘇寧立體式監(jiān)控概覽
第一個維度
從左到右,是從監(jiān)控的思路進行構(gòu)建的:
- 左邊一塊為監(jiān)測產(chǎn)品,主要用來發(fā)現(xiàn)問題。
- 問題發(fā)送給智能告警平臺和決策分析平臺,定位問題根源,反饋給研發(fā)團隊及時進行處理,以及服務(wù)治理系統(tǒng)進行治理。
- 右邊是自動化的干預(yù)處理,最后再回到最左的流程中進行監(jiān)測。
第二個維度
從上到下,從前端到后端。我們現(xiàn)在的監(jiān)控主要面對的是蘇寧一些核心應(yīng)用,比如蘇寧易購手機端、蘇寧金融易付寶等等。
這些應(yīng)用用戶數(shù)量多、范圍廣、使用頻次高,會不斷地反饋應(yīng)用或服務(wù)的問題。
先從用戶角度,對用戶體驗進行監(jiān)控,一旦發(fā)現(xiàn)問題,會立刻針對數(shù)據(jù)進行溯源,到客戶端通過 SDK 或 JS 抓取一些傳統(tǒng)標(biāo)準(zhǔn)做法采集數(shù)據(jù),再通過多維度分析,將數(shù)據(jù)問題反饋給研發(fā)。
同時我們會對服務(wù)端進行性能監(jiān)控,前面也說服務(wù)端的系統(tǒng)相對而言要復(fù)雜得多,因此我們往往會想辦法串起前后端,做到分鐘級甚至秒級調(diào)用,所以我們對調(diào)用鏈也進行了監(jiān)控。
而調(diào)用鏈監(jiān)控依然是在中間件層面,也可能是基礎(chǔ)設(shè)置的波動導(dǎo)致了問題的產(chǎn)生,所以在底層對基礎(chǔ)設(shè)施構(gòu)建了監(jiān)控。
第三個維度
從數(shù)據(jù)層面:
- 首先是 Metric 指標(biāo),這個指標(biāo)可以是從基礎(chǔ)設(shè)施而來的,可以是業(yè)務(wù)層面定義的,也可以來自性能監(jiān)控,這是評估性能的一個重要指標(biāo)。
- 還有一個是 Event 事件,日志監(jiān)控承載了非常重要的能力,事件幫助系統(tǒng)定位問題。
- 第三個指標(biāo) Trace,來源于調(diào)用鏈。三個指標(biāo)會產(chǎn)生交集,輔助定位、排查問題。
根據(jù)目前監(jiān)控體系的現(xiàn)狀,為了滿足日益復(fù)雜的監(jiān)控需求,打造基于 AI 的監(jiān)控體系,實現(xiàn)面向用戶體驗的無人化智能服務(wù)解決方案目標(biāo),我們提出了面向現(xiàn)代監(jiān)控的體系規(guī)劃。
詳細(xì)的規(guī)劃如圖 3 所示:
圖 3:面向現(xiàn)代監(jiān)控的體系規(guī)劃
在該體系中,通過引入自然語言處理、建立知識圖譜和圖像識別等 AI 技術(shù),讓監(jiān)控實現(xiàn)無人值守,用戶可以更簡單便利地與監(jiān)控系統(tǒng)機器人進行交互,獲取所需的監(jiān)控信息。
在問題分析和決策領(lǐng)域,將通過建立計算模型生成不同維度的指標(biāo),實現(xiàn)多維度的關(guān)聯(lián)分析和異常檢測,并且動態(tài)計算出告警閾值,生成告警事件推送給用戶。
監(jiān)控技術(shù)實現(xiàn)
監(jiān)控產(chǎn)品介紹
立體式監(jiān)控體系由一系列的監(jiān)控產(chǎn)品構(gòu)成,每種監(jiān)控產(chǎn)品都存在獨特的特性,但同時也和其他產(chǎn)品有著相互協(xié)調(diào)的關(guān)聯(lián)關(guān)系,從而形成一個監(jiān)控生態(tài)體系。
監(jiān)控主要產(chǎn)品如圖 4 所示:
圖 4:監(jiān)控體系主要產(chǎn)品及其關(guān)系
用戶體驗監(jiān)控(UOM)
UOM 是一個可以對用戶產(chǎn)品端進行全方位、多種維度進行監(jiān)控和分析的平臺。
通過將監(jiān)控采集 SDK 無侵入或者較少侵入的植入用戶端中,獲取用戶在使用產(chǎn)品時對用戶造成體驗影響的調(diào)用鏈異常數(shù)據(jù),并基于此進行分析、預(yù)測和告知該產(chǎn)品的相關(guān)運維人員。
通過采用無侵入和較少侵入的方式,將采集 SDK 植入用戶應(yīng)用,實現(xiàn)對用戶應(yīng)用的系統(tǒng)異常、業(yè)務(wù)異常、用戶信息進行采集。
對異常數(shù)據(jù)進行建模,形成相應(yīng)的異常數(shù)據(jù)趨勢圖和用戶軌跡,實現(xiàn)迅速地對用戶應(yīng)用問題進行定位。
通過態(tài)勢感知計算模型動態(tài)計算異常增長率,根據(jù)不同維度的規(guī)則配置,實現(xiàn)對應(yīng)用異常問題進行告警。
UOM 機器人可滿足用戶在豆芽中,通過自然語言方式直接和機器人交流,實現(xiàn)快速獲取問題根本原因。
圖 5:UOM 系統(tǒng)技術(shù)架構(gòu)
日志統(tǒng)計分析
離線日志統(tǒng)計分析是運用大數(shù)據(jù)技術(shù),海量歷史日志分析的一種解決方案。專注于幫助使用者發(fā)現(xiàn)并解決系統(tǒng)性能問題。
通過分析各類訪問日志,得到各系統(tǒng)使用過程中請求量、響應(yīng)時間、錯誤率、命中率等性能指標(biāo),可以通過分析來源 IP 判斷是否遭受攻擊等。
圖 6:離線分析
實時日志統(tǒng)計分析是一個在 E(Elasticsearch)F(Flume)K(Kibana4)的基礎(chǔ)上進行二次開發(fā)的平臺。
它集成了蘇寧內(nèi)部的賬號體系和系統(tǒng)基礎(chǔ)數(shù)據(jù),實現(xiàn)準(zhǔn)實時日志的檢索、統(tǒng)計分析。
圖 7:實時分析
調(diào)用鏈監(jiān)控
完全采用 OpenTracing 標(biāo)準(zhǔn),對系統(tǒng)異常和業(yè)務(wù)異常進行全鏈路監(jiān)控。采用字節(jié)碼技術(shù)實現(xiàn)監(jiān)控 SDK 植入,對業(yè)務(wù)系統(tǒng)功能不會造成影響。同時提供及時關(guān)閉、自動升級功能,節(jié)省人工、降低風(fēng)險。
并可以應(yīng)用于各領(lǐng)域應(yīng)用系統(tǒng)服務(wù)和調(diào)用鏈監(jiān)控,為 IT 研發(fā)人員檢測系統(tǒng)健康、定位解決問題提供可靠依據(jù)。
根據(jù)異常棧詳情,用戶可以直觀了解到操作的頁面軌跡以及服務(wù)端系統(tǒng)的調(diào)用鏈路。
系統(tǒng)利用機器學(xué)習(xí)分析異常數(shù)據(jù)并做出預(yù)判,提供一站式的預(yù)警、排查、告警和問題解決策略。
圖 8:調(diào)用鏈監(jiān)控模塊
監(jiān)控組件介紹
通過之前的介紹,我們了解了很多目前蘇寧監(jiān)控體系中的產(chǎn)品,這些監(jiān)控產(chǎn)品如何無侵入式的植入各個應(yīng)用中,如何實現(xiàn)對監(jiān)控數(shù)據(jù)的采集,請參考圖 9。
圖 9:無侵入式數(shù)據(jù)采集
具體過程如下:
- 通過字節(jié)碼攔截請求,創(chuàng)建調(diào)用上下文、生成埋點。
- 調(diào)用上下文保存在 ThreadLocal,對應(yīng)用透明。
- 調(diào)用上下文包含了 TraceId、RpcId、調(diào)用類型等數(shù)據(jù)。
- 調(diào)用上下文隨著 Http 調(diào)用在網(wǎng)絡(luò)間傳輸。
“源頭型”:生成 TraceId,創(chuàng)建調(diào)用鏈,結(jié)束調(diào)用鏈。
“單項型”:僅客戶端,生成日志(服務(wù)端未埋點)。
“雙向型”:客戶端+服務(wù)端,傳輸上下文,生成日志。
根據(jù)以上的實現(xiàn)方式,無侵入式監(jiān)控數(shù)據(jù)采集的整體調(diào)用順序如圖 10 所示:
圖 10:監(jiān)控數(shù)據(jù)采集時序圖
在時序圖中,我們可以看到請求發(fā)送到前端應(yīng)用時,將會調(diào)用 StartTrace 生成一個全局唯一的 TraceId,TraceId 使用了 IP + Timestamp + 順序數(shù) + 進程號的方式保證唯一性。
其次通過對 StartRpc 的調(diào)用生成相應(yīng)的 RpcId,它標(biāo)識著一次請求的順序和嵌套關(guān)系,各個系統(tǒng)間傳遞,調(diào)用關(guān)系是同步、異步還是一對多調(diào)用。
通過使用 TraceId + RpcId 組合的方式完成整個調(diào)用鏈的異常數(shù)據(jù)標(biāo)識和采集。
在監(jiān)控數(shù)據(jù)采集過程中,也遇到過相關(guān)的難點,但是經(jīng)過努力,也都一一解決,以下是我歸納的一些早前所遇到的問題和解決方法,可供大家參考。
愿景
未來,蘇寧將全面打造 AI 監(jiān)控生態(tài)云平臺,對全生態(tài)監(jiān)控體系實現(xiàn)無人值守的監(jiān)控。
用戶可通過多種方式(語音、文本、動作)與機器人進行交互,機器人將給出用戶需要的分析數(shù)據(jù),并能根據(jù)結(jié)果數(shù)據(jù)給出相應(yīng)的解決方案。
以用戶為導(dǎo)向,形成用戶行為分析閉環(huán),實現(xiàn)資源智能地分配與回收,讓監(jiān)控改變世界。
作者:湯泳
簡介:蘇寧易購 IT 總部數(shù)據(jù)云公司監(jiān)控研發(fā)中心總監(jiān),蘇寧一體化智能監(jiān)控體系首席架構(gòu)師。15 年從業(yè)背景,數(shù)學(xué)與計算機科學(xué)系畢業(yè),師從中科院自然語言處理黃和燕導(dǎo)師,主導(dǎo)“云穆“立體式智能監(jiān)控產(chǎn)品研發(fā)。這些產(chǎn)品服務(wù)于蘇寧控股集團八大產(chǎn)業(yè) 4000+ 系統(tǒng)、10W+ 服務(wù),保障電商平臺日常和大促時段線上系統(tǒng)平穩(wěn)運行。目前,致力于蘇寧 AIOps 能力建設(shè)。
【51CTO原創(chuàng)稿件,合作站點轉(zhuǎn)載請注明原文作者和出處為51CTO.com】

































