我們聊聊超越可觀測性三大支柱
可觀測性通常在三個支柱的背景下定義 - 日志,指標和跟蹤。現(xiàn)代云原生應(yīng)用程序復(fù)雜而動態(tài)。為了避免意外和性能問題,您需要一個強大的可觀測性堆棧。但是,可觀測性是否僅限于收集日志,指標和跟蹤呢?
譯自 SigNoz 博客的Three Pillars of Observability [And Beyond]。作者 Leigh Finch。
監(jiān)控工具在過去 25 年一直是任何企業(yè)的關(guān)鍵組成部分,提供對基礎(chǔ)設(shè)施和應(yīng)用程序問題的高級警報,以防止它們影響客戶。隨著時光的推移,我們在監(jiān)控系統(tǒng)中增加了指標的數(shù)量,以更好地了解正在監(jiān)控的系統(tǒng)。
然而,隨著軟件系統(tǒng)的復(fù)雜化,僅僅依賴指標進行監(jiān)控存在其局限性。它通常無法識別可能導(dǎo)致數(shù)字體驗問題、影響最終用戶的未知變量。
最近,'可觀測性'的概念在行業(yè)中嶄露頭角,標志著從傳統(tǒng)監(jiān)控的轉(zhuǎn)變。與后者專注于預(yù)定義的指標不同,可觀測性強調(diào)理解系統(tǒng)在任何給定時間的狀態(tài),包括前導(dǎo)和后續(xù)的服務(wù)水平指標。這種方法允許實時了解性能問題或錯誤,而不受特定指標的限制。例如,使用像 SigNoz 這樣的可觀測性工具來跟蹤 Web 請求會展示請求的整個過程和內(nèi)部操作,提供比僅測量服務(wù)器響應(yīng)時間更全面的視角。它包括在特定請求的上下文中正在完成的工作的詳細信息(方法、類、數(shù)據(jù)庫查詢)。
可觀測性的三大支柱通常是指標、跟蹤和日志。
指標
在檢查指標時,它們通常代表在給定時刻的特定指標的狀態(tài)。這對于理解隨時間變化的情況至關(guān)重要,如在時間序列圖中所見,例如 CPU 利用率。
SigNoz 儀表板顯示的 K8s Pod CPU 利用率
時間序列圖起源于最古老的監(jiān)控工具之一,名為 MRTG(Multi-Router Traffic Grapher)。MRTG 通常每 5 分鐘使用 SNMP(Simple Network Monitoring Protocol)收集數(shù)據(jù),以圖形方式顯示路由器接口的利用率。隨后,SNMP 在 Linux(甚至是 MS Windows)上變得流行,以在定期輪詢間隔內(nèi)收集各種指標。盡管 SNMP 仍然流行,但相較于新方法(包括 OTEL 收集器的基于代理的監(jiān)控、REST API 和流式遙測),它不再是首選。
兩種常見的指標類型與利用率和飽和度相關(guān)。利用率指標指示資源使用的百分比,例如 CPU 和內(nèi)存利用率,或應(yīng)用服務(wù)器工作線程的使用情況。與此同時,飽和度指標反映了對資源爭用的程度。例如,磁盤隊列長度指示在給定間隔內(nèi)超出磁盤處理能力的過多工作量。在這里,雖然利用率可能顯示為 100%,但飽和度揭示了超出系統(tǒng)處理能力的待處理工作負荷。
跟蹤
跟蹤提供了隨時間發(fā)生事件的洞察。在 APM 和 OpenTelemetry 的背景下,這通常涉及將庫嵌入代碼中,或使用分析器/代理對應(yīng)用程序和運行時進行分析。關(guān)于如何將 Spring Boot 與 OpenTelemetry 和 SigNoz 集成以實現(xiàn)可觀測性的三大支柱,請參考我的《Spring Boot 監(jiān)控》文章。
典型的跟蹤示例是對 Web 前端的 HTTP 請求,涉及多個任務(wù)以完成并返回響應(yīng)??紤]一個 HTTP POST 請求,用于向所有者的個人資料中添加新寵物。這個請求包含 25 個工作單元(Spans),每個單元包含有關(guān)工作單元的詳細屬性、SQL 語句、線程 ID 和服務(wù)詳細信息。
示例 HTTP 跟蹤
盡管可以從日志中推導(dǎo)出其中一些信息,但跟蹤以一種上下文和標準化的格式呈現(xiàn)這些工作單元。類似 Flamegraphs 和 Gantt 圖的跟蹤可輕松可視化整個請求,因為它在復(fù)雜的分布式設(shè)置中穿越不同組件。這種方法消除了需要搜索多個服務(wù)器、容器和日志文件以跟蹤單個請求的需求,從而節(jié)省大量工作時間。
日志
作為三大可觀測性支柱中最古老的一支,日志已從基本的 'print' 語句演變?yōu)閺?fù)雜的結(jié)構(gòu)化格式。盡管它們固有的靈活性和非結(jié)構(gòu)化的性質(zhì)最初使分析變得具有挑戰(zhàn)性,但現(xiàn)代日志庫、框架和標準顯著提高了它們的可用性。像 SigNoz 這樣的工具提供了日志流水線,以轉(zhuǎn)換日志以適應(yīng)您的查詢和聚合需求。
按跟蹤 ID 聚合的示例日志
通過上下文增強日志
類似 Logback 和 Log4J 這樣的框架已經(jīng)簡化了日志的修改,以便 OpenTelemetry 和 SigNoz 輕松消費,消除了需要單獨的日志流水線。例如,Logback 的結(jié)構(gòu)化字段、屬性和值可以由 SigNoz 查詢,以過濾不相關(guān)的數(shù)據(jù)或隔離與特定跟蹤或跨度 ID 相關(guān)的日志。
示例日志顯示跟蹤和跨度 ID
超越三大支柱之外 - 上下文
可觀測性已經(jīng)從僅僅收集和分析三大支柱(日志、指標和跟蹤)發(fā)展出來。"上下文(Context)" 被越來越認識為在調(diào)試復(fù)雜的分布式系統(tǒng)中的關(guān)鍵組成部分,它補充了傳統(tǒng)的三大支柱:指標、日志和跟蹤。
上下文可以被稱為可觀測性的第四支柱 - 關(guān)聯(lián)不同的信號,并為可觀測性的三大支柱提供更多信息。
上下文在可觀測性中的作用
在故障排除中,上下文至關(guān)重要。它連接了指標、日志和跟蹤中的不同信息片段。這種相互關(guān)聯(lián)有助于快速定位問題、理解它們的影響并制定更有效的解決方案。
將上下文與可觀測性的三大支柱集成:
- 關(guān)聯(lián)的日志和跟蹤:通過注入跟蹤和跨度標識符,可以將日志和跟蹤相關(guān)聯(lián)。使用跟蹤了解有問題請求的流程,并確定問題發(fā)生在旅程的哪個階段。然后,深入了解這些特定跨度或服務(wù)的日志,以獲取詳細的錯誤信息。
- 具有上下文的指標:與僅有數(shù)量數(shù)據(jù)相比,指標在與上下文相結(jié)合時變得更有意義。例如,當您知道哪個部署或更改觸發(fā)了資源使用率的激增時,資源使用率的激增就更具信息性。
可觀測性的未來趨勢是利用人工智能進行基于學(xué)習(xí)模式的快速數(shù)據(jù)解釋,以優(yōu)先處理關(guān)鍵信息,站點可靠性工程(SRE)和可觀測性團隊,同時過濾掉不太重要的數(shù)據(jù)。這種方法簡化了對最具影響力問題的關(guān)注。此外,人工智能的作用還包括自動化對標準事件的例行響應(yīng),例如收集相關(guān)的調(diào)試信息和重新啟動服務(wù)。這種自動化減少了在恢復(fù)服務(wù)方面人為干預(yù)的需求,使團隊能夠集中精力進行根本原因分析(RCA)和預(yù)防性策略。
數(shù)據(jù)可視化 - 可觀測性的關(guān)鍵組成部分
在可觀測性中,可視化是關(guān)鍵,它將數(shù)據(jù)轉(zhuǎn)化為對各種受眾都易于理解的故事。儀表板應(yīng)該向各個技術(shù)水平和主題專業(yè)知識的用戶傳達關(guān)鍵信息,而不僅僅是專家。
組織面臨的最大挑戰(zhàn)之一是創(chuàng)建能夠在單個視圖中顯示所有可能信息的儀表板。如果需要閱讀儀表板才能理解它,那么它不是儀表板,而是報告。
使儀表板易于消化
有效的儀表板需要對目標受眾有同理心。例如,高管可能只想知道服務(wù)是否可用和性能良好,因此可能只需要一個交通燈。相比之下,服務(wù)所有者可能從更詳細的指標中受益,例如用戶數(shù)量、平均性能以及 p95 和 p99 值,以識別異常值。
“有效儀表板的關(guān)鍵:簡單、可讀性強、以用戶為中心的設(shè)計。”
SigNoz 中的簡單 CPU 和線程儀表板
在組織中導(dǎo)航可觀測性成熟度
成熟度指數(shù)是一種有效的基準我們應(yīng)用和服務(wù)的方式,了解可以采取哪些措施來降低數(shù)字體驗的風(fēng)險。為了評估成熟度,我們必須評估與服務(wù)相關(guān)的人員、流程和技術(shù)。
首先從人員方面著手,評估團隊的可觀測性技能以及組織嵌入可觀測性實踐的承諾。
流程應(yīng)該減少對特定個體的依賴,增強業(yè)務(wù)或服務(wù)的彈性。例如,服務(wù)降級計劃可能會概述在瞬態(tài)事件期間從三大支柱收集信息的步驟。
技術(shù)不僅涉及工具;它涉及充分利用這些工具來充分儀表化服務(wù)。以Spring Boot 監(jiān)控為例,該文章討論了使用三大支柱進行儀表化的情況。
對于這些要素的每一個,我們將使用成熟度指數(shù)應(yīng)用當前狀態(tài)與期望狀態(tài)的對比,以幫助我們集中精力投資于哪些服務(wù)。
結(jié)論
我們呈現(xiàn)了現(xiàn)代云原生應(yīng)用中可觀測性不斷發(fā)展的全面視圖。它超越了傳統(tǒng)監(jiān)控的范圍,突顯了可觀測性如何變得更加動態(tài),并通過將上下文作為第四支柱的一部分而更加相互連接??捎^測性的未來被視為越來越依賴人工智能和有效的數(shù)據(jù)可視化,以使復(fù)雜的數(shù)據(jù)變得可理解且可操作。
對于希望增強數(shù)字體驗和系統(tǒng)可靠性的組織來說,擁抱可觀測性的這些不斷發(fā)展的方面至關(guān)重要。關(guān)鍵是將這些實踐融入其運營文化,確保一個強大、響應(yīng)迅速且具有彈性的技術(shù)生態(tài)系統(tǒng)。