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

































