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