1.為什么我們需要“可觀測性”?
基于監(jiān)控的運維方式是運用指標和儀表盤來對故障問題進行分類,這是軟件行業(yè)的普遍做法。在單體應用架構(gòu)時代,由于系統(tǒng)交互比較簡單,數(shù)據(jù)收集有限,依靠運維人員的經(jīng)驗和直覺來檢測系統(tǒng)問題是有意義的。通過監(jiān)控CPU、內(nèi)存等資源消耗情況、數(shù)據(jù)庫連接情況和網(wǎng)絡(luò)傳輸質(zhì)量,基本可以定位問題并進行修復。然而,現(xiàn)代應用程序底層系統(tǒng)的復雜性和規(guī)模使這種傳統(tǒng)方法面臨著挑戰(zhàn):分布式系統(tǒng)的交互組件數(shù)量眾多,可能發(fā)生的故障數(shù)量和類型也更多; 此外,由于敏捷化開發(fā)的需求,分布式系統(tǒng)不斷更新迭代,每次更改都可能產(chǎn)生新的故障類型;在分布式環(huán)境中,理解當前問題是一項巨大的挑戰(zhàn),主要是因為它比簡單的系統(tǒng)產(chǎn)生更多的“未知的未知數(shù)”, 由于監(jiān)控需要“已知的未知數(shù)”,因此通常無法充分解決這些復雜環(huán)境中的問題。
軟件系統(tǒng)“可觀測性”的定義是:在無需提前定義或預測調(diào)試需求的情況下,可解釋系統(tǒng)處于何種狀態(tài)的能力。可觀測性很重要,因為它可以讓運維人員更好地控制復雜系統(tǒng),無需依靠經(jīng)驗或深厚的系統(tǒng)知識來預判問題所在。借助可觀測性工具,運維人員可以客觀地調(diào)查任何問題,找到深層隱藏的問題根因。由此可見,可觀測性工具更適合現(xiàn)代的分布式IT系統(tǒng),由分布式系統(tǒng)復雜性帶來的不確定性,可通過可觀測性工具得到更好的感知和預測,合理管控IT設(shè)備與業(yè)務風險。
2.“可觀測性”的發(fā)展和演進
“可觀測性”一詞是由工程師Rudolf E. Kálmán于1960年創(chuàng)造的。在過去,可觀測性的“三大支柱”分別指:日志、指標和跟蹤。
【圖1 傳統(tǒng)的可觀測性三大支柱,數(shù)據(jù)是平面的,割裂的】
事實上,由于受制于當時對數(shù)據(jù)科學的認知局限,“三大支柱”并不是一種適用于現(xiàn)代IT架構(gòu)下的可觀測性方法。例如:
假設(shè)A想了解程序正在執(zhí)行的事務。因此,構(gòu)建了一個日志記錄工具:一個用于記錄包含時間戳的消息的接口,一個用于將這些消息發(fā)送到某個地方的協(xié)議,以及一個用于存儲和檢索它們的數(shù)據(jù)系統(tǒng)。B想要監(jiān)控在特定時刻的資源消耗情況,想要捕獲指標。希望跟蹤指標數(shù)值如何隨時間變化,并在一組有限的維度上變化。顯然,一大堆非結(jié)構(gòu)化日志消息與這個問題無關(guān)。因此,B創(chuàng)建了一個完全獨立的指標體系,解決了生成、傳輸和存儲指標的具體問題。C想要確定性能瓶頸。同樣,日志記錄系統(tǒng)的非結(jié)構(gòu)化性質(zhì)與其毫無關(guān)系。識別性能瓶頸(例如可以并行運行的一系列操作)需要我們知道事務中每個操作的持續(xù)時間以及這些操作如何鏈接在一起。因此,C建立了一個完全獨立的跟蹤系統(tǒng)。
現(xiàn)有的可觀測性方法在特定的場景和使用范圍內(nèi)可以幫助運維人員解決一些問題,然而,它們也有其局限性,我們在分析問題時,不會孤立地使用每個工具,而是需要一起使用。在整個過程中,這些工具的孤立性質(zhì)給運維人員帶來了巨大的認知負擔。
【 圖2 以傳統(tǒng)方式,在不同數(shù)據(jù)集之間找到相關(guān)性是一種可怕的經(jīng)歷】
在“新式”儀表板中,標尺變成了一條基線,使不同的指標之間產(chǎn)生基于時間維度的關(guān)聯(lián)性,但這同樣是一個粗略的解決方案,識別相關(guān)性仍然需要靠運維人員的經(jīng)驗判斷。在對故障問題有了粗略猜測后,運維人員需要查看可能與問題相關(guān)的事務(日志)和資源(機器,進程,配置文件)。
日志存儲在完全獨立的系統(tǒng)中,無法自動與任何指標儀表盤關(guān)聯(lián)。配置文件和其他特定于服務的信息通常不在任何系統(tǒng)中,運維人員必須通過 SSH 或以其他方式訪問正在運行的計算機才能查看它們。因此,運維人員需要再次查找相關(guān)信息,這次是在指標和日志之間建立關(guān)聯(lián)。識別這些日志可能很困難,運維人員通常需要具備豐富的運維經(jīng)驗或者查閱源代碼才能了解可能存在哪些日志。
當找到可能相關(guān)的日志時,下一步通常是確定導致生成此日志的事件鏈,這意味著又需要在同一事務中查找其余日志。整個過程相當繁瑣,缺乏相關(guān)性再一次給運維帶來了巨大的負擔。
【圖3 使用傳統(tǒng)日志記錄,查找構(gòu)成特定事務的確切日志可能需要付出很多努力。一旦系統(tǒng)變得足夠大,就幾乎不可能了】
3.可觀測性平臺的數(shù)據(jù)基礎(chǔ) 多元數(shù)據(jù)整合
數(shù)據(jù)割裂造成了運維的沉重負擔,而要解決這些問題,需要一個更好的答案。如今,要了解系統(tǒng)如何變化,運維團隊必須首先收集大量數(shù)據(jù),如果運維人員可以專注于調(diào)查他們的系統(tǒng)是如何變化的,而不必首先確定正在發(fā)生的變化,那么他們就可以節(jié)省時間。“為什么這里壞了?”或“現(xiàn)在是什么導致延遲?” 是可觀測性工具可以回答的幾個問題。而在開始所有運維問題的調(diào)查之前,運維人員需要連接所有的數(shù)據(jù)節(jié)點:日志需要鏈接在一起,以便識別事務;指標需要鏈接到日志,以便生成的統(tǒng)計信息可以連接到它們正在監(jiān)測的事務;每個數(shù)據(jù)點都需要鏈接到底層系統(tǒng)資源(軟件、基礎(chǔ)設(shè)施和配置細節(jié)),以便所有事件都可以連接到整個系統(tǒng)的拓撲結(jié)構(gòu)中;主動撥測體系需要具備實時探測的能力,達到發(fā)現(xiàn)故障、模擬故障和路徑追蹤的目的;關(guān)鍵配置信息與指標和日志關(guān)聯(lián)分析幫助運維人員理解業(yè)務架構(gòu),最終結(jié)果是結(jié)構(gòu)化的數(shù)據(jù),它將為分析工具提供系統(tǒng)的完整視圖。
【圖4 匯聚多種數(shù)據(jù)類型,整合多元數(shù)據(jù)的“辮子”,是可觀測性分析平臺的數(shù)據(jù)基礎(chǔ)】
因此,與其說可觀測性是斷開連接數(shù)據(jù)的“三大支柱”,不如說可觀測性的需要擁有一個整合多元數(shù)據(jù)的辮子。現(xiàn)代可觀測性將建立在整合后的多元數(shù)據(jù)基礎(chǔ)之上,允許分析工具對所有類型的事件和聚合進行關(guān)聯(lián),這些相關(guān)性又將對我們?nèi)绾螌嵺`可觀測性產(chǎn)生深遠的影響。
【圖5 多種數(shù)據(jù)源在故障發(fā)現(xiàn)和問題排查中的特點】
基于不同的數(shù)據(jù)組合適用于不同的分析需求(圖5)的考慮,智維數(shù)據(jù)可觀測性分析平臺以跟蹤、日志、指標、配置和撥測數(shù)據(jù)等數(shù)據(jù)整合形成數(shù)據(jù)分析的基礎(chǔ),形成了平臺的數(shù)據(jù)底層。
從上圖可以看到平臺所支持的豐富的數(shù)據(jù)類型,以及適用于各運營場景下的平臺聯(lián)動與自動化分析能力。
4.新一代的可觀測性平臺的優(yōu)勢 自動化相關(guān)性分析
【圖6 以VS連接失敗為例,需要同時分析多種數(shù)據(jù)類型】
隨著系統(tǒng)規(guī)模的擴大,通訊的交互路徑最終變得過于復雜,終端用戶的請求往往經(jīng)過多臺設(shè)備、多個業(yè)務模塊的處理才能最終返回結(jié)果。用戶在業(yè)務發(fā)布中通常會使用應用交付設(shè)備來進行發(fā)布,以保證其擴展性,這里我們通過運維人員遇到VS連接失敗率高的問題舉例(圖6)來進行分析。碰到此類問題時,運維人員需要同時分析日志,關(guān)聯(lián)指標、配置信息、資源占用、客戶訪問失敗的細節(jié)等,通過逐個排除可能影響VS連接失敗率高的因素最終定位問題原因。這個過程不僅需要運維人員頭腦中具備清晰的思路,而且需要大量數(shù)據(jù)的排查來對每一個步驟進行佐證。這些原始數(shù)據(jù)的解讀及其耗費精力,往往不能滿足現(xiàn)代化應用對于業(yè)務可用性時間的要求。
【圖7 以VS連接失敗為例,智維數(shù)據(jù)可觀測性分析平臺可自動分析并輸出結(jié)論】
現(xiàn)在,智維數(shù)據(jù)可觀測性分析平臺將多元數(shù)據(jù)進行整合后通過智能化分析能力識別整個數(shù)據(jù)集中的相關(guān)性,可自動完成數(shù)百類運維、安全問題的狀態(tài)解讀和故障的根因分析(圖7),從直覺過渡到客觀的全面觀察。自動相關(guān)性檢測的能力將賦能運維團隊能夠根據(jù)智能化、定制化的告警快速察覺異常,以往的告警模式會產(chǎn)生大量的信息,使運維人員淹沒在海量告警中,該平臺通過對黃金指標(延遲、流量、錯誤、飽和度)的長周期學習形成符合用戶場景特征的基線,并根據(jù)指標的異常變化告警,使運維人員可更加準確的感知業(yè)務異常;通過應用拓撲實現(xiàn)業(yè)務畫像,業(yè)務畫像真實反應用戶訪問的路徑,并將關(guān)鍵指標關(guān)聯(lián)到訪問路徑上,根據(jù)指標變化標記異常節(jié)點;最后通過平臺的事件分析能力實現(xiàn)故障自動化分析并輸出結(jié)果和處置建議,從前繁瑣的人工排障過程,比如數(shù)據(jù)回溯與疑點排查,現(xiàn)在通過大數(shù)據(jù)和智能算法,獲得了分鐘級的自動化解決方案。
智維數(shù)據(jù)可觀測性分析平臺立足于通、斷、調(diào)中的每一個節(jié)點交互數(shù)據(jù)與配置數(shù)據(jù)分析,通過機器學習和縫合算法自動繪制企業(yè)實時業(yè)務交互數(shù)據(jù)動態(tài)地圖。獨有的智能算法可快速發(fā)現(xiàn)數(shù)據(jù)異常,提升用戶在IT網(wǎng)絡(luò)運維及安全上的響應能力,改變企業(yè)IT監(jiān)控與業(yè)務相脫離的現(xiàn)狀,是業(yè)內(nèi)唯一的,全訪問流程監(jiān)控與分析平臺。
平臺內(nèi)置的運營分析場景算法,為企業(yè)提供了更強的數(shù)據(jù)挖掘可擴展空間,支撐數(shù)據(jù)應用隨需而變,支撐運維向運營能力進化。