What is observability?|一文讀懂什么是系統(tǒng)可觀測(cè)性
什么是可觀測(cè)性?
可觀測(cè)性是通過檢查其輸出來衡量系統(tǒng)內(nèi)部狀態(tài)的能?。如果僅使?來?輸出的信息(即傳感器數(shù)據(jù))可以估計(jì)當(dāng)前狀態(tài),則系統(tǒng)被認(rèn)為是“可觀測(cè)的”。雖然它似乎是最近的流?詞,但該術(shù)語起源于??年前的控制理論(它是關(guān)于描述和理解?我調(diào)節(jié)系統(tǒng)的)。然?,它越來越多地應(yīng)?于提?分布式 IT 系統(tǒng)的性能。在這種情況下,可觀測(cè)性使?三種類型的遙測(cè)數(shù)據(jù)?指標(biāo)、?志和跟蹤?來提供對(duì)分布式系統(tǒng)的深?可?性,并允許團(tuán)隊(duì)找到?量問題的根本原因并提?系統(tǒng)性能。
在過去?年中,企業(yè)以微服務(wù)、?服務(wù)器和容器技術(shù)的形式迅速采?了云原?基礎(chǔ)設(shè)施服務(wù),例如AWS。在這些分布式系統(tǒng)中追蹤事件的起源需要在云上、本地或兩者上運(yùn)?的數(shù)千個(gè)進(jìn)程。但是傳統(tǒng)的監(jiān)控技術(shù)和?具很難跟蹤這些分布式架構(gòu)中的許多通信路徑和相互依賴關(guān)系。
可觀測(cè)性使團(tuán)隊(duì)能夠更有效地監(jiān)控現(xiàn)代系統(tǒng),并幫助他們找到并連接復(fù)雜鏈中的影響,并將其追溯到原因。此外,它還使系統(tǒng)管理員、IT 運(yùn)營(yíng)分析師和開發(fā)?員能夠了解他們的整個(gè)架構(gòu)。
在本文中我們將仔細(xì)研究可觀測(cè)性:
- l它是什么
- l 實(shí)施需要什么
- l 您可以期望您的組織從中獲得什么好處。
監(jiān)控和可觀測(cè)性有什么區(qū)別?
監(jiān)控和可觀測(cè)性是相互依賴的不同概念。
監(jiān)控:是您為提高系統(tǒng)的可觀測(cè)性而執(zhí)行的操作
可觀測(cè)性:是該系統(tǒng)的一個(gè)屬性,如功能性或可測(cè)試性
具體??,監(jiān)控是隨著時(shí)間的推移觀察系統(tǒng)性能的?為。監(jiān)控?具收集和分析系統(tǒng)數(shù)據(jù),并將其轉(zhuǎn)化為可操作的?解。從根本上說,應(yīng)?程序性能監(jiān)控 (APM) 等監(jiān)控技術(shù)可以告訴您系統(tǒng)是啟動(dòng)還是關(guān)閉,或者應(yīng)?程序性能是否存在問題。監(jiān)控?cái)?shù)據(jù)聚合和關(guān)聯(lián)還可以幫助您對(duì)系統(tǒng)做出更?的推斷。例如, 加載時(shí)間可以告訴開發(fā)?員有關(guān)?站或應(yīng)?程序?戶體驗(yàn)的?些信息。
另???,可觀測(cè)性是衡量系統(tǒng)內(nèi)部狀態(tài)可以從其外部輸出的知識(shí)推斷出來的程度的度量。它使?監(jiān)控產(chǎn)?的數(shù)據(jù)和?解來全?了解您的系統(tǒng),包括其運(yùn)?狀況和性能。因此,系統(tǒng)的可觀測(cè)性部分取決于您的監(jiān)控指標(biāo)對(duì)系統(tǒng)性能指標(biāo)的解釋程度。
另?個(gè)重要的區(qū)別是,監(jiān)控要求您提前了解需要監(jiān)控的重要事項(xiàng)??捎^測(cè)性讓您可以通過觀察系統(tǒng)隨時(shí)間推移的表現(xiàn)并詢問相關(guān)問題來確定什么是重要的。
為什么可觀測(cè)性很重要?
可觀測(cè)性很重要,因?yàn)樗梢宰屇玫乜刂茝?fù)雜系統(tǒng)。簡(jiǎn)單系統(tǒng)的活動(dòng)部件較少,因此更易于管理。監(jiān)控 CPU、內(nèi)存、數(shù)據(jù)庫和?絡(luò)狀況通常?以了解這些系統(tǒng)并對(duì)問題應(yīng)?適當(dāng)?shù)男迯?fù)。
分布式系統(tǒng)的互連部件數(shù)量要多得多,因此可能發(fā)?的故障數(shù)量和類型也更?。此外,分布式系統(tǒng)會(huì)不斷更新,每次更改都可能導(dǎo)致新類型的故障。在分布式環(huán)境中,理解當(dāng)前問題是?個(gè)巨?的挑戰(zhàn),主要是因?yàn)樗?簡(jiǎn)單的系統(tǒng)產(chǎn)?更多的“未知未知”。由于監(jiān)控需要“已知的未知數(shù)”,因此通常?法充分解決這些復(fù)雜環(huán)境中的問題。
可觀測(cè)性更適合分布式系統(tǒng)的不可預(yù)測(cè)性,主要是因?yàn)樗试S您在出現(xiàn)問題時(shí)詢問有關(guān)系統(tǒng)?為的問題?!盀槭裁碭壞了?” 或者“現(xiàn)在是什么導(dǎo)致了延遲?” 是可觀測(cè)性可以回答的?些問題。
什么是容器和微服務(wù)中的可觀測(cè)性?
容器和微服務(wù)中的可觀測(cè)性暴露了?產(chǎn)中應(yīng)?程序的狀態(tài),因此開發(fā)?員可以更好地識(shí)別和解決性能問題。
容器服務(wù)(例如 Docker、Kubernetes 等)和微服務(wù)解決了停機(jī)時(shí)間增加的?險(xiǎn)以及與單體軟件相關(guān)的其他問題,其中對(duì)單個(gè)代碼庫的任何更改都會(huì)影響整個(gè)應(yīng)?程序及其依賴項(xiàng)。容器和微服務(wù)將應(yīng)?程序分解為獨(dú)?的服務(wù),允許開發(fā)?員修改和重新部署特定服務(wù)?不是整個(gè)應(yīng)?程序。
然?,基于容器的架構(gòu)帶來了新的挑戰(zhàn)。相互依賴的微服務(wù)通常分散在多個(gè)主機(jī)上,隨著基礎(chǔ)設(shè)施的擴(kuò)展,?產(chǎn)中微服務(wù)的數(shù)量也在增加。這使得開發(fā)?員很難知道當(dāng)前在?產(chǎn)中運(yùn)?的內(nèi)容,從?導(dǎo)致更?的交付周期、停機(jī)時(shí)間和其他問題。
可觀測(cè)性解決了這些挑戰(zhàn),提供了分布式系統(tǒng)的可?性,幫助開發(fā)?員更好地了解應(yīng)?程序的性能和可?性。在發(fā)?故障時(shí),它提供了快速查明和調(diào)試或修復(fù)問題所需的控制。
可觀測(cè)性中使用的主要數(shù)據(jù)類是什么?他們是如何使用的?
可觀測(cè)性中使用的主要數(shù)據(jù)類是:
- 日志
- 指標(biāo)
- 跟蹤
它們通常被稱為“可觀測(cè)性的三??柱”。
1.日志
?志是在特定時(shí)間發(fā)?的事件的?本記錄,包括說明事件發(fā)?時(shí)間的時(shí)間戳和提供上下?的有效負(fù)載。?志有三種格式:純?本、結(jié)構(gòu)化和?進(jìn)制。純?本是最常?的,但結(jié)構(gòu)化?志?包括額外的數(shù)據(jù)和元數(shù)據(jù)并且更容易查詢?正變得越來越流?。當(dāng)系統(tǒng)出現(xiàn)問題時(shí),?志通常也是您?先查看的地?。
2.指標(biāo)
指標(biāo)是在?段時(shí)間內(nèi)測(cè)量的數(shù)值,包括特定屬性,例如時(shí)間戳、名稱、KPI 和值。與?志不同,指標(biāo)在默認(rèn)情況下是結(jié)構(gòu)化的,這使得查詢和優(yōu)化存儲(chǔ)變得更加容易,讓您能夠?qū)⑺鼈儽A舾?時(shí)間。
3.跟蹤
跟蹤表示請(qǐng)求通過分布式系統(tǒng)的端到端旅程。當(dāng)請(qǐng)求通過主機(jī)系統(tǒng)時(shí), 對(duì)其執(zhí)?的每個(gè)操作(稱為“跨度”)都使?與執(zhí)?該操作的微服務(wù)相關(guān)的重要數(shù)據(jù)進(jìn)?編碼。通過查看跟蹤,每個(gè)跟蹤都包含?個(gè)或多個(gè)跨度,您可以通過分布式系統(tǒng)跟蹤其進(jìn)程并確定瓶頸或故障的原因。
使?這些數(shù)據(jù)類并不能保證可觀測(cè)性,尤其是當(dāng)您彼此獨(dú)?地使?它們或?yàn)槊總€(gè)函數(shù)使?不同的?具時(shí)。相反,您將通過在單個(gè)解決?案中集成您的?志、指標(biāo)和跟蹤來實(shí)現(xiàn)可觀測(cè)性的成功?法。當(dāng)您這樣做時(shí),您不僅可以了解問題何時(shí)發(fā)?,還可以?即將注意?轉(zhuǎn)移到了解這些問題發(fā)?的原因上。
如何實(shí)現(xiàn)可觀測(cè)性?
為了實(shí)現(xiàn)可觀測(cè)性,您需要對(duì)系統(tǒng)和應(yīng)?程序進(jìn)?適當(dāng)?shù)?具來收集適當(dāng)?shù)倪b測(cè)數(shù)據(jù)。您可以通過構(gòu)建??的?具、使?開源軟件或購(gòu)買商業(yè)可觀測(cè)性解決?案來制作可觀測(cè)系統(tǒng)。
通常,實(shí)現(xiàn)可觀測(cè)性涉及四個(gè)組件:
1.儀表:這些是測(cè)量?具,可從容器、服務(wù)、應(yīng)?程序、主機(jī)和系統(tǒng)的任何其他組件收集遙測(cè)數(shù)據(jù),從?實(shí)現(xiàn)整個(gè)基礎(chǔ)架構(gòu)的可?性。
2.數(shù)據(jù)關(guān)聯(lián):處理和關(guān)聯(lián)從整個(gè)系統(tǒng)收集的遙測(cè)數(shù)據(jù),從?創(chuàng)建上下?并為時(shí)間序列可視化啟??動(dòng)化或?定義數(shù)據(jù)管理。
3.事件響應(yīng):這些?動(dòng)化技術(shù)旨在根據(jù)隨叫隨到的時(shí)間表和技術(shù)技能將有關(guān)停電的數(shù)據(jù)提供給合適的?員和團(tuán)隊(duì)。
4.AIOps:機(jī)器學(xué)習(xí)模型?于?動(dòng)聚合、關(guān)聯(lián)事件數(shù)據(jù)并確定其優(yōu)先級(jí),使您能夠過濾掉警報(bào)噪?,檢測(cè)可能影響系統(tǒng)的問題并在發(fā)?事件時(shí)加速事件響應(yīng)。
良好的可觀測(cè)性工具的標(biāo)準(zhǔn)是什么?
?論您選擇構(gòu)建??的解決?案還是使?開源或商業(yè)解決?案,所有可觀測(cè)性?具都應(yīng)該:
- 與當(dāng)前?具集成
如果您的可觀測(cè)性?具不適?于您當(dāng)前的堆棧,您的可觀測(cè)性?作將失敗。確保它們?持您環(huán)境、容器平臺(tái)、消息傳遞平臺(tái)和任何其他關(guān)鍵軟件中的框架和語?。
- 對(duì)?戶友好
如果您的可觀測(cè)性?具難以學(xué)習(xí)或使?,它們將不會(huì)被添加到?作流程中 - 阻?您的可觀測(cè)性計(jì)劃開始實(shí)施。
- 提供實(shí)時(shí)數(shù)據(jù)
您的可觀測(cè)性?具應(yīng)通過儀表板、報(bào)告和查詢實(shí)時(shí)提供相關(guān)?解,以便團(tuán)隊(duì)能夠了解問題、其影響以及解決?法。
- 支持現(xiàn)代事件處理技術(shù)
有效的可觀測(cè)性?具應(yīng)該能夠從您的堆棧、技術(shù)和操作環(huán)境中收集所有相關(guān)信息;將有價(jià)值的信號(hào)從噪?中分離出來,并添加?夠的上下?,以便團(tuán)隊(duì)可以解決它。
- 可視化聚合數(shù)據(jù)
可觀測(cè)性?具應(yīng)該以易于理解的格式呈現(xiàn)洞察?,例如儀表板、交互式摘要和?戶可以快速理解的其他可視化。
- 提供上下?
當(dāng)事件發(fā)?時(shí),您的?具應(yīng)提供?夠的上下?,讓您了解系統(tǒng)性能如何隨時(shí)間變化、變化與系統(tǒng)中的其他變化有何關(guān)聯(lián)、問題的范圍以及受影響服務(wù)的任何相互依賴關(guān)系或組件。如果沒有可觀測(cè)性可以提供的上下?,事件響應(yīng)就會(huì)癱瘓。
- 使用機(jī)器學(xué)習(xí)
您的?具應(yīng)該包括?動(dòng)化數(shù)據(jù)處理和管理的機(jī)器學(xué)習(xí)模型,以便您可以更快地檢測(cè)和響應(yīng)異常和其他安全事件。
- 提供業(yè)務(wù)價(jià)值
確保您根據(jù)對(duì)您的業(yè)務(wù)很重要的指標(biāo)來評(píng)估您的可觀測(cè)性?具,例如部署速度、系統(tǒng)穩(wěn)定性和客戶體驗(yàn)。
DeOps中的觀測(cè)性有哪些好處?
可觀測(cè)性允許 DevOps 開發(fā)?員在任何給定時(shí)間了解應(yīng)?程序的內(nèi)部狀態(tài), 并可以訪問有關(guān)分布式?產(chǎn)環(huán)境中系統(tǒng)故障的更準(zhǔn)確信息。?些主要好處包括:
- 更好的可?性
龐?的分布式系統(tǒng)通常使開發(fā)?員難以了解?產(chǎn)中的服務(wù)、應(yīng)?程序性能是否強(qiáng)?、誰擁有某個(gè)服務(wù)或系統(tǒng)在最近?次部署之前的樣???捎^測(cè)性使他們能夠?qū)崟r(shí)了解?產(chǎn)系統(tǒng),從?有助于消除這些障礙。
- 更好的警報(bào)
可觀測(cè)性幫助開發(fā)?員更快地發(fā)現(xiàn)和修復(fù)問題,提供更深?的可?性,使他們能夠快速確定系統(tǒng)中發(fā)?了什么變化,調(diào)試或修復(fù)問題,并確定這些變化導(dǎo)致了什么問題(如果有的話)。
- 更好的工作流程
可觀測(cè)性允許開發(fā)?員查看請(qǐng)求的端到端旅程,以及有關(guān)特定問題的相關(guān)上下?數(shù)據(jù),從?簡(jiǎn)化應(yīng)?程序的調(diào)查和調(diào)試過程,優(yōu)化其性能。
- 減少會(huì)議時(shí)間
從歷史上看,開發(fā)?員必須通過第三?公司和應(yīng)?程序跟蹤信息,以找出誰負(fù)責(zé)特定服務(wù)或在最近部署前?天或?周內(nèi)系統(tǒng)的樣?。通過有效的可觀測(cè)性,這些信息很容易獲得。
- 加快開發(fā)?員速度
可觀測(cè)性使監(jiān)控和故障排除更加?效,消除了開發(fā)?員的主要摩擦點(diǎn)。結(jié)果是提?了交付速度,讓 DevOps 員?有更多時(shí)間提出創(chuàng)新想法來滿?業(yè)務(wù)及其客戶的需求。
可觀測(cè)性在軟件工程中有什么好處?
與 DevOps ?樣,可觀測(cè)性通過提供對(duì)整個(gè)基礎(chǔ)架構(gòu)的洞察使軟件?程師受益,使他們能夠看到它如何因問題、部署新軟件或擴(kuò)展或縮減?發(fā)?變化。
誰從可觀測(cè)性中受益?
個(gè)?開發(fā)?員和軟件?程師從可觀測(cè)性中受益,因?yàn)樗峁┝藢?duì)整個(gè)架構(gòu)的可?性,從第三?應(yīng)?程序和服務(wù)到他們??的。這不僅使他們能夠更輕松地修復(fù)并最終預(yù)防問題,還促進(jìn)對(duì)系統(tǒng)性能及其如何塑造更好的客戶體驗(yàn)的更深?了解。開發(fā)?員和?程師都有更多的時(shí)間來制定有利于業(yè)務(wù)的戰(zhàn)略計(jì)劃。
團(tuán)隊(duì)也受益,因?yàn)榭捎^測(cè)性提供了環(huán)境的共享視圖,隨著時(shí)間的推移提供了對(duì)其架構(gòu)、健康和性能的更全?的了解??捎^測(cè)性允許開發(fā)?員、操作員、?程師、分析師、項(xiàng)?經(jīng)理和其他團(tuán)隊(duì)成員訪問有關(guān)服務(wù)、客戶和其他系統(tǒng)元素的相同?解。此外,可觀測(cè)性可以創(chuàng)建更準(zhǔn)確的事件后審查,因?yàn)樗懈?都可以檢查實(shí)時(shí)系統(tǒng)?為的書?記錄,?不是將事件從孤?的單個(gè)來源拼湊起來。數(shù)據(jù)??不是意??將幫助您的團(tuán)隊(duì)了解事件發(fā)?的原因,以便他們能夠 更好地預(yù)防和處理未來的事件。
然?,企業(yè)可能受益最???捎^測(cè)性讓您可以在不影響系統(tǒng)穩(wěn)定性的情況下更改應(yīng)?程序和服務(wù),為您提供?具來了解哪些?作有效,哪些?效,查明出現(xiàn)的任何問題并快速改進(jìn)或解決這些問題。新功能與更少的停機(jī)時(shí)間相結(jié)合,轉(zhuǎn)化為更快樂的客戶和更強(qiáng)?的底線。
結(jié)語:深?了解您的基礎(chǔ)架構(gòu)
可觀測(cè)性不僅僅是?個(gè)流?語?它是了解整個(gè)基礎(chǔ)設(shè)施狀態(tài)的?種重要且有?的?法。云、容器化、微服務(wù)和其他技術(shù)使系統(tǒng)?以往任何時(shí)候都更加復(fù) 雜。雖然這些?具的最終結(jié)果是積極的,但在這些系統(tǒng)內(nèi)?作、故障排除和管理卻充滿了困難。更多的交互部分會(huì)導(dǎo)致更多種類的問題,當(dāng)它們發(fā)?時(shí),更難檢測(cè)和修復(fù)。
幸運(yùn)的是,這些分布式系統(tǒng)會(huì)產(chǎn)??量遙測(cè)數(shù)據(jù),如果您可以利?這些數(shù)據(jù), 可以更清楚地了解它們的性能。有效的可觀測(cè)性?具提供您捕獲系統(tǒng)輸出并將其上下?化并提供在現(xiàn)代分布式系統(tǒng)世界中蓬勃發(fā)展所需的洞察?所需的所有?具和分析能?。