論可觀測性和監(jiān)控在軟件中扮演的角色
譯文?譯者 | 布加迪
審校 | 孫淑娟
我們在本文中將深入探討可觀測性及其在軟件中的重要性。我們將了解可觀測性的歷史、目標和重要性,以及軟件生命周期缺少可觀測性可能會帶來的問題。我們還將分析可觀測性與監(jiān)控的主要區(qū)別。最后,我們將介紹采用可觀測性的最佳實踐、選擇可觀測性工具時要考慮的因素,以及如何為貴公司采用最佳策略。
1.可觀測性的歷史
“可觀測性”(observability)這個術(shù)語源自“觀測”一詞,意指專心觀測某事物,旨在得出結(jié)論?;氐郊夹g(shù)領(lǐng)域,可觀測性由Rudolf E. Kálmán在1960年首創(chuàng),根源于控制理論(應(yīng)用數(shù)學(xué)的一個分支,指使用反饋來影響系統(tǒng)的行為以實現(xiàn)預(yù)期的目標)。在機械系統(tǒng)中,傳感器和檢測器測量輸出結(jié)果,為落實的控制措施提供數(shù)據(jù)依據(jù)。
可觀測性只是知道您的用戶、系統(tǒng)和應(yīng)用程序在任何某個時間在做什么(數(shù)據(jù)收集),以告知您出了什么問題以及出問題的原因(跟蹤)。無法觀測,修復(fù)也就無從談起。
可觀測性首次出現(xiàn)在2013年,當時Twitter的工程師們發(fā)表了一篇名為《Twitter的可觀測性》的博文,旨在觀測“多樣化服務(wù)拓撲”的運行狀況和性能,當時Twitter正從整體式IT架構(gòu)向分布式IT架構(gòu)轉(zhuǎn)變。
我們已介紹了相應(yīng)背景,不妨看看“可觀測性”與“監(jiān)控”的基本區(qū)別,因為英語將兩者解釋為幾乎相同的意思。監(jiān)控只是通過收集系統(tǒng)中預(yù)定義的指標集或日志集,告知并表明出了什么問題,而可觀測性使用數(shù)據(jù)收集來告知出了什么問題、為什么會出問題,以便SRE(系統(tǒng)可靠性工程師)或DevOps團隊可以輕松調(diào)試系統(tǒng),因此它可以探究可能事先未定義的指標和模式。
2.我們?yōu)槭裁葱枰捎^測性它的重要性又是什么?
先說說2021年《可觀測性狀況》研究報告所反映的問題:
- 53%的受訪者表示應(yīng)用程序問題導(dǎo)致了客戶流失或收入損失。
- 45%的受訪者表示服務(wù)失敗導(dǎo)致客戶滿意度下降。
- 30%的受訪者表示因此失去了客戶。
這導(dǎo)致相當大比例的受訪者為服務(wù)失敗的后果付出沉重的代價:
- 客戶滿意度下降(45%)
- 收入損失(37%)
- 聲譽受損(36%)
- 客戶流失(30%)
觀測在法務(wù)和合規(guī)部門肯定不會被忽視,因為它在確保組織遵守法律義務(wù),以保護敏感數(shù)據(jù)免遭未授權(quán)訪問方面發(fā)揮著重要作用??捎^測性技術(shù)還可用于安全領(lǐng)域,以識別違規(guī)和闖入,并防止數(shù)據(jù)泄露,從而使政府和監(jiān)管機構(gòu)得以避免或減少違規(guī)罰款。
統(tǒng)計數(shù)據(jù)也繼續(xù)表明,奉行可觀測性實踐的組織提升了收入和盈利能力,這是由于可以監(jiān)控客戶行為以獲取分析洞察力,這有助于營銷人員做出戰(zhàn)略決策,并改善用戶體驗,從而提高組織的聲譽。
那么,接下來是什么?
3.可觀測性的三大支柱
指標
指標是用數(shù)字表示如何在時間間隔內(nèi)測量數(shù)據(jù)。從操作系統(tǒng)到應(yīng)用程序,所有資源都會生成指標,包括一組屬性,比如名稱、時間戳和字段,以表明通常傳達服務(wù)級別協(xié)議(SLA)、服務(wù)級別目標(SLO)和服務(wù)級別指標(SLI)等方面信息的某個值。說到監(jiān)控,指標是合乎邏輯的起點,因為如此多的資源準備好向我們提醒有關(guān)它們自身的信息。通常,只要系統(tǒng)值超過指定閾值,SRE和運維工程師就使用指標來觸發(fā)警報,這些指標是所選擇的關(guān)鍵性能指標(KPI),比如響應(yīng)時間、峰值負載、服務(wù)的請求、CPU容量、內(nèi)存使用情況、錯誤率和延遲。代表性的KPI:
- 當系統(tǒng)停機或負載均衡系統(tǒng)到最大容量時,觸發(fā)警報
- 量化性能
- 監(jiān)控異常活動
日志
日志是監(jiān)控工具箱中一個很重要的工具,因為幾乎所有內(nèi)容都記錄有關(guān)它們在任何給定時間所執(zhí)行操作的信息。此外,日志提供了比指標更詳細的資源信息,大多數(shù)應(yīng)用程序框架、庫和語言都支持日志。因此,如果指標顯示資源已報廢,日志將幫助您找出報廢的原因。
日志的問題是正常情況信息太多了。由于環(huán)境中的一切在跟蹤它們執(zhí)行的操作,并急于共享該信息,不難發(fā)現(xiàn)這會導(dǎo)致大量數(shù)據(jù);而不是簡化監(jiān)控過程。
跟蹤
日志和指標適用于評估單個系統(tǒng)的行為和性能,但它們很少適用于確定分布式系統(tǒng)中請求的生命周期。跟蹤是另一種可觀測性方法,讓您可以跨多個系統(tǒng)查看和了解某操作的整個生命周期。
如上所述,跟蹤可以表示一系列因果關(guān)聯(lián)的分布式事件,而這些事件封裝了通過分布式系統(tǒng)的端到端請求流。
跟蹤反映了請求或操作的整條路徑,在遍歷分布式系統(tǒng)中的所有節(jié)點時提供了關(guān)鍵的可見性,以便了解系統(tǒng)運行狀況。跟蹤提供了系統(tǒng)分析和檢查,尤其是針對容器化應(yīng)用程序、無服務(wù)器架構(gòu)和微服務(wù)架構(gòu)。
通過分析跟蹤數(shù)據(jù),您可以監(jiān)控整體系統(tǒng)運行狀況、識別潛在問題、更快地發(fā)現(xiàn)和處理問題,并確定需要優(yōu)化和改進的重要方面。
4.實施可觀測性工具
在考慮通過優(yōu)化以確保貴組織的成功時,客戶體驗通常是首先要考慮的方面,也是如今大多數(shù)科技公司成功的關(guān)鍵。另一個關(guān)鍵標準是主動解決應(yīng)用程序可用性和生產(chǎn)環(huán)境性能等問題的必要性。這時候可觀測性派得上用場?,F(xiàn)在需要一套可靠的可觀測性架構(gòu)來保持系統(tǒng)順暢運行。
我整理出了一系列可觀測性工具,它們可用于日志聚合、分布式跟蹤、APM、時間序列分析和指標收集。雖然不是基于對主要優(yōu)點或工具比較所作的深入研究,但這是個很好的起點,可以幫助您開始提高可觀測性。
通過選擇合適的可觀測性平臺,在單一視圖中集中查看系統(tǒng)的性能數(shù)據(jù),并打造可觀測性文化,您將能夠更快地發(fā)現(xiàn)問題,了解導(dǎo)致問題的原因,并最終更快速地構(gòu)建注重客戶的產(chǎn)品。要考慮的一些主要的可觀測性和日志管理工具,包括如下:
- Splunk
- Datadog
- Humio
- Dynatrace
- Grafana Labs
- Honeycomb
- New Relic
然后,您需要識別和監(jiān)控與已經(jīng)遇到的問題以及將來可能遇到的問題相關(guān)的指標。
將可觀測性納入事件管理流程后,您必須識別和監(jiān)控與已經(jīng)發(fā)生的問題和預(yù)計將來會發(fā)生的問題相關(guān)的指標。之后,您應(yīng)該可以在整個組織中打造注重可觀測性的文化。如果不實施這種模式,您可能無法充分利用可觀測性架構(gòu),因為再多的可觀測性工具都無法取代扎實的技術(shù)本能和直覺。
原文鏈接:https://medium.com/codex/the-role-of-observability-monitoring-in-software-46bd88f792fe?