What is observability?|一文讀懂什么是系統可觀測性


什么是可觀測性?

可觀測性是通過檢查其輸出來衡量系統內部狀態的能⼒。如果僅使⽤來⾃輸出的信息(即傳感器數據)可以估計當前狀態,則系統被認為是“可觀測的”。雖然它似乎是最近的流⾏詞,但該術語起源於⼏⼗年前的控制理論(它是關於描述和理解⾃我調節系統的)。然⽽,它越來越多地應⽤於提⾼分布式 IT 系統的性能。在這種情況下,可觀測性使⽤三種類型的遙測數據⸺指標、⽇志和跟蹤⸺來提供對分布式系統的深⼊可⻅性,並允許團隊找到⼤量問題的根本原因並提⾼系統性能。

在過去⼏年中,企業以微服務、⽆服務器和容器技術的形式迅速采⽤了雲原⽣基礎設施服務,例如AWS。在這些分布式系統中追蹤事件的起源需要在雲上、本地或兩者上運⾏的數千個進程。但是傳統的監控技術和⼯具很難跟蹤這些分布式架構中的許多通信路徑和相互依賴關系。

可觀測性使團隊能夠更有效地監控現代系統,並幫助他們找到並連接復雜鏈中的影響,並將其追溯到原因。此外,它還使系統管理員、IT 運營分析師和開發⼈員能夠了解他們的整個架構。

在本文中我們將仔細研究可觀測性:

  • l它是什么
  • l 實施需要什么
  • l 您可以期望您的組織從中獲得什么好處。

 

監控和可觀測性有什么區別?

監控和可觀測性是相互依賴的不同概念。

監控:是您為提高系統的可觀測性而執行的操作

可觀測性:是該系統的一個屬性,如功能性或可測試性

具體⽽⾔,監控是隨着時間的推移觀察系統性能的⾏為。監控⼯具收集和分析系統數據,並將其轉化為可操作的⻅解。從根本上說,應⽤程序性能監控 (APM) 等監控技術可以告訴您系統是啟動還是關閉,或者應⽤程序性能是否存在問題。監控數據聚合和關聯還可以幫助您對系統做出更⼤的推斷。例如, 加載時間可以告訴開發⼈員有關⽹站或應⽤程序⽤戶體驗的⼀些信息。

另⼀⽅⾯,可觀測性是衡量系統內部狀態可以從其外部輸出的知識推斷出來的程度的度量。它使⽤監控產⽣的數據和⻅解來全⾯了解您的系統,包括其運⾏狀況和性能。因此,系統的可觀測性部分取決於您的監控指標對系統性能指標的解釋程度。

另⼀個重要的區別是,監控要求您提前了解需要監控的重要事項。可觀測性讓您可以通過觀察系統隨時間推移的表現並詢問相關問題來確定什么是重要的。

 

為什么可觀測性很重要?

可觀測性很重要,因為它可以讓您更好地控制復雜系統。簡單系統的活動部件較少,因此更易於管理。監控 CPU、內存、數據庫和⽹絡狀況通常⾜以了解這些系統並對問題應⽤適當的修復。

分布式系統的互連部件數量要多得多,因此可能發⽣的故障數量和類型也更⾼。此外,分布式系統會不斷更新,每次更改都可能導致新類型的故障。在分布式環境中,理解當前問題是⼀個巨⼤的挑戰,主要是因為它⽐簡單的系統產⽣更多的“未知未知”。由於監控需要“已知的未知數”,因此通常⽆法充分解決這些復雜環境中的問題。

可觀測性更適合分布式系統的不可預測性,主要是因為它允許您在出現問題時詢問有關系統⾏為的問題。“為什么X壞了?” 或者“現在是什么導致了延遲?” 是可觀測性可以回答的⼀些問題。

 

什么是容器和微服務中的可觀測性?

容器和微服務中的可觀測性暴露了⽣產中應⽤程序的狀態,因此開發⼈員可以更好地識別和解決性能問題。

容器服務(例如 Docker、Kubernetes 等)和微服務解決了停機時間增加的⻛險以及與單體軟件相關的其他問題,其中對單個代碼庫的任何更改都會影響整個應⽤程序及其依賴項。容器和微服務將應⽤程序分解為獨⽴的服務,允許開發⼈員修改和重新部署特定服務⽽不是整個應⽤程序。

然⽽,基於容器的架構帶來了新的挑戰。相互依賴的微服務通常分散在多個主機上,隨着基礎設施的擴展,⽣產中微服務的數量也在增加。這使得開發⼈員很難知道當前在⽣產中運⾏的內容,從⽽導致更⻓的交付周期、停機時間和其他問題。

可觀測性解決了這些挑戰,提供了分布式系統的可⻅性,幫助開發⼈員更好地了解應⽤程序的性能和可⽤性。在發⽣故障時,它提供了快速查明和調試或修復問題所需的控制。

 

可觀測性中使用的主要數據類是什么?他們是如何使用的?

可觀測性中使用的主要數據類是:

  • 日志
  • 指標
  • 跟蹤

它們通常被稱為“可觀測性的三⼤⽀柱”

1.日志

⽇志是在特定時間發⽣的事件的⽂本記錄,包括說明事件發⽣時間的時間戳和提供上下⽂的有效負載。⽇志有三種格式:純⽂本、結構化和⼆進制。純⽂本是最常⻅的,但結構化⽇志⸺包括額外的數據和元數據並且更容易查詢⸺正變得越來越流⾏。當系統出現問題時,⽇志通常也是您⾸先查看的地⽅。

2.指標

指標是在⼀段時間內測量的數值,包括特定屬性,例如時間戳、名稱、KPI 和值。與⽇志不同,指標在默認情況下是結構化的,這使得查詢和優化存儲變得更加容易,讓您能夠將它們保留更⻓時間。

3.跟蹤

跟蹤表示請求通過分布式系統的端到端旅程。當請求通過主機系統時, 對其執⾏的每個操作(稱為“跨度”)都使⽤與執⾏該操作的微服務相關的重要數據進⾏編碼。通過查看跟蹤,每個跟蹤都包含⼀個或多個跨度,您可以通過分布式系統跟蹤其進程並確定瓶頸或故障的原因。

使⽤這些數據類並不能保證可觀測性,尤其是當您彼此獨⽴地使⽤它們或為每個函數使⽤不同的⼯具時。相反,您將通過在單個解決⽅案中集成您的⽇志、指標和跟蹤來實現可觀測性的成功⽅法。當您這樣做時,您不僅可以了解問題何時發⽣,還可以⽴即將注意⼒轉移到了解這些問題發⽣的原因上。

如何實現可觀測性?

為了實現可觀測性,您需要對系統和應⽤程序進⾏適當的⼯具來收集適當的遙測數據。您可以通過構建⾃⼰的⼯具、使⽤開源軟件或購買商業可觀測性解決⽅案來制作可觀測系統。

通常,實現可觀測性涉及四個組件:

1.儀表:這些是測量⼯具,可從容器、服務、應⽤程序、主機和系統的任何其他組件收集遙測數據,從⽽實現整個基礎架構的可⻅性。

2.數據關聯:處理和關聯從整個系統收集的遙測數據,從⽽創建上下⽂並為時間序列可視化啟⽤⾃動化或⾃定義數據管理。

3.事件響應:這些⾃動化技術旨在根據隨叫隨到的時間表和技術技能將有關停電的數據提供給合適的⼈員和團隊。

4.AIOps:機器學習模型⽤於⾃動聚合、關聯事件數據並確定其優先級,使您能夠過濾掉警報噪⾳,檢測可能影響系統的問題並在發⽣事件時加速事件響應。

 

 

良好的可觀測性工具的標准是什么?

⽆論您選擇構建⾃⼰的解決⽅案還是使⽤開源或商業解決⽅案,所有可觀測性⼯具都應該:

  • 與當前⼯具集成

如果您的可觀測性⼯具不適⽤於您當前的堆棧,您的可觀測性⼯作將失敗。確保它們⽀持您環境、容器平台、消息傳遞平台和任何其他關鍵軟件中的框架和語⾔。

  • 對⽤戶友好

如果您的可觀測性⼯具難以學習或使⽤,它們將不會被添加到⼯作流程中 - 阻⽌您的可觀測性計划開始實施。

  • 提供實時數據

您的可觀測性⼯具應通過儀表板、報告和查詢實時提供相關⻅解,以便團隊能夠了解問題、其影響以及解決⽅法。

  • 支持現代事件處理技術

有效的可觀測性⼯具應該能夠從您的堆棧、技術和操作環境中收集所有相關信息;將有價值的信號從噪⾳中分離出來,並添加⾜夠的上下⽂,以便團隊可以解決它。

  • 可視化聚合數據

可觀測性⼯具應該以易於理解的格式呈現洞察⼒,例如儀表板、交互式摘要和⽤戶可以快速理解的其他可視化。

  • 提供上下⽂

當事件發⽣時,您的⼯具應提供⾜夠的上下⽂,讓您了解系統性能如何隨時間變化、變化與系統中的其他變化有何關聯、問題的范圍以及受影響服務的任何相互依賴關系或組件。如果沒有可觀測性可以提供的上下⽂,事件響應就會癱瘓。

  • 使用機器學習

您的⼯具應該包括⾃動化數據處理和管理的機器學習模型,以便您可以更快地檢測和響應異常和其他安全事件。

  • 提供業務價值

確保您根據對您的業務很重要的指標來評估您的可觀測性⼯具,例如部署速度、系統穩定性和客戶體驗。

 

DeOps中的觀測性有哪些好處?

可觀測性允許 DevOps 開發⼈員在任何給定時間了解應⽤程序的內部狀態, 並可以訪問有關分布式⽣產環境中系統故障的更准確信息。⼀些主要好處包括:

  • 更好的可⻅性

龐⼤的分布式系統通常使開發⼈員難以了解⽣產中的服務、應⽤程序性能是否強⼤、誰擁有某個服務或系統在最近⼀次部署之前的樣⼦。可觀測性使他們能夠實時了解⽣產系統,從⽽有助於消除這些障礙。

  • 更好的警報

可觀測性幫助開發⼈員更快地發現和修復問題,提供更深⼊的可⻅性,使他們能夠快速確定系統中發⽣了什么變化,調試或修復問題,並確定這些變化導致了什么問題(如果有的話)。

  • 更好的工作流程

可觀測性允許開發⼈員查看請求的端到端旅程,以及有關特定問題的相關上下⽂數據,從⽽簡化應⽤程序的調查和調試過程,優化其性能。

  • 減少會議時間

從歷史上看,開發⼈員必須通過第三⽅公司和應⽤程序跟蹤信息,以找出誰負責特定服務或在最近部署前⼏天或⼏周內系統的樣⼦。通過有效的可觀測性,這些信息很容易獲得。

  • 加快開發⼈員速度

可觀測性使監控和故障排除更加⾼效,消除了開發⼈員的主要摩擦點。結果是提⾼了交付速度,讓 DevOps 員⼯有更多時間提出創新想法來滿⾜業務及其客戶的需求。

 

 

可觀測性在軟件工程中有什么好處?

與 DevOps ⼀樣,可觀測性通過提供對整個基礎架構的洞察使軟件⼯程師受益,使他們能夠看到它如何因問題、部署新軟件或擴展或縮減⽽發⽣變化。

 

誰從可觀測性中受益?

個⼈開發⼈員和軟件⼯程師從可觀測性中受益,因為它提供了對整個架構的可⻅性,從第三⽅應⽤程序和服務到他們⾃⼰的。這不僅使他們能夠更輕松地修復並最終預防問題,還促進對系統性能及其如何塑造更好的客戶體驗的更深⼊了解。開發⼈員和⼯程師都有更多的時間來制定有利於業務的戰略計划。

團隊也受益,因為可觀測性提供了環境的共享視圖,隨着時間的推移提供了對其架構、健康和性能的更全⾯的了解。可觀測性允許開發⼈員、操作員、⼯程師、分析師、項⽬經理和其他團隊成員訪問有關服務、客戶和其他系統元素的相同⻅解。此外,可觀測性可以創建更准確的事件后審查,因為所有各⽅都可以檢查實時系統⾏為的書⾯記錄,⽽不是將事件從孤⽴的單個來源拼湊起來。數據⸺⽽不是意⻅⸺將幫助您的團隊了解事件發⽣的原因,以便他們能夠 更好地預防和處理未來的事件。

然⽽,企業可能受益最⼤。可觀測性讓您可以在不影響系統穩定性的情況下更改應⽤程序和服務,為您提供⼯具來了解哪些⼯作有效,哪些⽆效,查明出現的任何問題並快速改進或解決這些問題。新功能與更少的停機時間相結合,轉化為更快樂的客戶和更強⼤的底線。

 

結語:深⼊了解您的基礎架構

可觀測性不僅僅是⼀個流⾏語⸺它是了解整個基礎設施狀態的⼀種重要且有⽤的⽅法。雲、容器化、微服務和其他技術使系統⽐以往任何時候都更加復 雜。雖然這些⼯具的最終結果是積極的,但在這些系統內⼯作、故障排除和管理卻充滿了困難。更多的交互部分會導致更多種類的問題,當它們發⽣時,更難檢測和修復。

幸運的是,這些分布式系統會產⽣⼤量遙測數據,如果您可以利⽤這些數據, 可以更清楚地了解它們的性能。有效的可觀測性⼯具提供您捕獲系統輸出並將其上下⽂化並提供在現代分布式系統世界中蓬勃發展所需的洞察⼒所需的所有⼯具和分析能⼒。

原文鏈接:https://www.splunk.com/en_us/data-insider/what-is-observability.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM