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