什麼是可觀測性?
可觀測性是通過檢查其輸出來衡量系統内部狀态的能⼒。如果僅使⽤來⾃輸出的資訊(即傳感器資料)可以估計目前狀态,則系統被認為是“可觀測的”。雖然它似乎是最近的流⾏詞,但該術語起源于⼏⼗年前的控制理論(它是關于描述和了解⾃我調節系統的)。然⽽,它越來越多地應⽤于提⾼分布式 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