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