iT邦幫忙

2024 iThome 鐵人賽

DAY 4
2
DevOps

後 Grafana 時代的自我修養系列 第 4

後 Grafana 時代的第四天 - 探討 Grafana 所實踐的可觀測性策略

  • 分享至 

  • xImage
  •  

https://ithelp.ithome.com.tw/upload/images/20240918/20149562W8cKVl9sCr.png

前言

在本章節中,我們將會探討各種可觀測策略,並且透過對其的理解,來學習 Grafana Cloud 的 Application Observability 的實踐方式,反向理解出 Grafana Labs 對於可觀測策略的哲學以及實踐細節,為此我們也能從中了解出為何這些經典的可觀測策略將會廣被世人流傳。

在現代分佈式系統和微服務架構中,可觀測性已成為確保系統穩定性和性能的關鍵因素。為了有效地監控、分析和診斷系統的運行狀況,業界發展出了一系列經典的可觀測策略,其中最具代表性的包括 RED 方法、USE 方法和 Golden Signals。

在本章節中,我們將深入探討這些可觀測策略,並學習 Grafana Labs 如何實踐這些方法。理解這些策略的核心理念和應用場景,我們不僅能掌握 Grafana Labs 在可觀測性領域的哲學與實踐細節,還能體會為何這些經典策略能夠在業界廣為流傳,成為維持系統穩定性和優化性能的寶貴工具。

實現監控的目地

“You can’t improve what you don’t measure.”
- Peter Drucker.

正如 Peter Drucker 所說:「你無法改善你無法衡量的事物」,因此監控是提升服務(包括性能、可靠性等)最重要的起點。我們希望進化現有的監控架構,以更好地實現以下目標:

  1. 分析長期趨勢:了解資料庫的大小及其增長速度,或者每日活躍用戶的增長情況。
  2. 警報觸發:當系統出現故障時,能夠立即通知相關人員進行修復;或者當系統即將發生問題時,提前發出警報,讓相關人員及時檢查。
  3. 構建 Dashboard:Dashboard 應該要能夠回答有關服務的基本問題,通常包括 HTTP 指標等關鍵數據。
  4. 進行事件當下分析:當延遲突然增加時,我們需要知道同一時間還發生了哪些事情,以便進行故障排查。

可觀測策略的價值

可觀測策略的出現,正式為了解決傳統監控系統中的一些核心問題,這些常見的問題很容易造成維護人員的負擔以及疲勞,尤其在現代分佈式系統和微服務架構中更為明顯,因為這些系統通常都非常複雜且動態,導致沒有妥善規劃的監控方法無法有效應位。

避免漫無目的的監控

傳統監控往往依賴大量的指標,但這些資料並不一定是有意義或精煉過的。沒有明確的目標和策略,監控將淪為一個純粹收集資料的過程,而不是作為有效的分析和判斷依據。這種漫無目的的監控,最終將會讓團隊難以找到真正的重要的訊號。

收斂超越認知負擔的 Dashboard

隨著監控需求的增加,許多團隊傾向於在儀表板上堆積大量的圖表和數據,以期全面掌握系統狀況。然而,這樣的做法往往適得其反,儀表板變得過於複雜和雜亂,超出了人類能夠有效理解和反應的範圍。

以監控一個服務舉例,多數人會秉持著監控最好多多益善、八面玲瓏的心態,將各種顆粒粗細、維度不一致的所能找到的 Dashboard 通通導入。導致當真正需要快速解決問題時,這些雜亂的 Dashboard 反成了另一種阻礙。

現代系統中,資料的複雜性和數量級持續增加,這讓傳統的監控系統無法滿足需求,結果是資料雜亂、重疊和冗餘的情況越來越普遍。這些問題不僅增加了系統維護的難度,也導致了監控結果的不可靠。最終我們將通過實施如 RED、USE 和 Golden Signals 這樣的策略,使團隊可以從海量的資料中提取出最重要的信號,並將其轉化為具體的、可操作的洞察。

常見的可觀測策略

https://ithelp.ithome.com.tw/upload/images/20240918/20149562RJTtZa7qTv.png

幫我們面臨以上難題時,正是我們可觀測策略的用武之地。一個良好的策略可以用來決定哪些內容最為重要並且需要重點監控。而 Grafana Labs 也給我們以下幾項簡明扼要的指導原則:

  • USE 告訴你你的機器有多高興,RED 告訴你你的使用者有多高興。
  • 使用有關問題原因的報告。
  • RED 報告使用者體驗,更可能報告問題症狀。
  • 監視兩者對於了解您的系統非常重要。最佳做法是警覺症狀而不是原因。通常,警報是在RED 儀表板上配置的。

RED Method

RED 指標的概念是由目前 Grafana 的 CTO Tom Wilkie ,在 Kausal 擔任創辦人時於 2015 年提出的。Wilkie 在意識到 USE Method 不適用於服務後創建了它。

RED 專注於監控微服務架構中的關鍵指標,特別是 API 或服務端點的運行情況。它包括三個指標:

  • Rate(速率):每秒處理的請求數量,衡量服務的負載和處理能力。
  • Errors(錯誤率):請求中發生錯誤的比例,反映服務的穩定性和可靠性。
  • Duration(持續時間 / 延遲):處理每個請求所花費的時間,用來評估服務的性能和響應速度。

RED 的目的是快速識別和診斷微服務中的問題,幫助工程師確保服務在高負載下仍能穩定運行。

USE Method

USE 主要用於監控系統資源(如 CPU、內存、磁碟等)的運行情況。它包括三個指標:

  • Utilization(利用率):資源的使用率,評估資源的負荷情況。
  • Saturation(飽和度):資源的飽和程度,指資源是否接近或達到其最大容量,這是潛在瓶頸的指標。
  • Errors(錯誤率):資源運行中發生的錯誤數量,這可能表明資源存在故障或異常。

這種方法一開始幫助我們確定每種資源(CPU、記憶體等)使用哪些特定指標,但我們的下一個任務是解釋它們的值,而且它並不總是那麼明顯。

它可協助我們識別可能成為系統瓶頸的問題並採取適當的對策,但它需要仔細調查,因為系統很複雜,因此當您看到效能問題時:

這可能是一個問題,但也可能不是。

例如 100% 的使用率通常是系統瓶頸的象徵,但 50% 的使用率也可以使系統崩潰。

Golden Signals

https://ithelp.ithome.com.tw/upload/images/20240918/20149562TCN6BQVuL4.png

Golden Signals 是由 Google 提出的四個關鍵指標,用來監控分佈式系統和微服務架構的整體健康狀況。這四個指標包括:

  • Latency(延遲):請求從發出到收到回應的時間,反映了系統的響應速度。
  • Traffic(流量):系統處理的請求量或數據流量,衡量系統的負載。
  • Errors(錯誤率):請求失敗的比例,這是衡量系統穩定性的重要指標。
  • Saturation(飽和度):系統資源的使用程度,反映系統是否接近其容量極限。

Golden Signals 的目的是提供一個全面的框架,讓工程師能夠快速了解系統的整體狀態,並在出現異常時迅速作出響應。

Grafana Cloud 所實踐的可觀測策略 - Application Observability

https://ithelp.ithome.com.tw/upload/images/20240918/201495629AkGaftvry.jpg

正如 Grafana CTO Tom Wilkie 所說:「RED 指標可以很好地反映使用者的滿意度。如果我們的錯誤率很高,那麼這基本上會傳達給使用者,他們會遇到頁面載入錯誤。如果我們的持續時間很長,那麼網站就會很慢。因此,這些都是建立有意義的警報和衡量 SLA 的非常好的指標。」。

再回顧 Grafana 提供的指導原則,我們不難看出 Grafana Labs 對於 RED 指標的重視程度,為此 Grafana Labs 結合 Distributed Tracing 和 RED 指標的概念,在 Grafana Cloud 平台中打造了「Application Observability」作為監控分佈式系統和微服務的解決方案。它是一個圍繞 OpenTelemetry 語義約定和 Prometheus 資料模型構建的應用程式和效能監控解決方案。它旨在幫助您的團隊最大限度地縮短應用程式問題的平均修復時間 (MTTR)。

https://ithelp.ithome.com.tw/upload/images/20240918/20149562mslnsbfmiv.png

Application Observability 的定位

Application Observability 能夠協助開發人員和可靠性工程師減少偵測異常、識別根源和修復問題所需的時間:

  • 資料收集:使用 OpenTelemetry 開放標準和無供應商限定的方式來收集指標、追蹤和日誌。
  • 異常檢測:預先設定的儀表板可協助您偵測服務和應用程式中的異常狀況。
  • 根本原因分析:預先配置的儀表板可協助您確定問題的根本原因。

Application Observability - Service inventory

在 Service Inventory 頁面中,我們可以看到 Grafana Cloud 對於微服務監控的核心理念:

我們不應該依賴檢查數十個儀表板來確認一個服務是否正常。

因此,Grafana Cloud 強調應該從終端使用者的角度出發,聚焦於最相關的監控指標——也就是 RED 指標。通過收集和分析 Span 所提取的 SpanMetrics,我們可以完整獲取關鍵的請求量、狀態碼和延遲等指標。最終,RED 指標的實踐將幫助我們擺脫監控疲勞,提升系統監控的有效性。

在 Application Observability 的 Overview 頁面中,我們可以清晰地看到生產環境中的服務列表。最重要的是,每個服務並不依賴繁雜的 Dashboard 或不同角度的服務狀態視圖,而是專注於純粹反映使用者真實體驗的 RED 指標(Request Rate、Errors、Duration)。這意味著我們只關注與使用者最直接相關的三個指標,而這三個維度無論服務的大小或複雜度如何,皆不會改變,從而使我們能夠遵循統一的原則來確保良好的服務品質。

https://ithelp.ithome.com.tw/upload/images/20240918/20149562uXgjQAlFyY.png

Application Observability - Service Detail

Grafana Cloud 堅持貫徹 RED 方法實踐,當我們想要深入關注特定服務時,只需直觀地點擊服務名稱,即可進入 Service Detail 頁面。在這個頁面中,我們可以通過 Taggle 切換來快速查看所選服務的所有可觀測性指標資料,幫助我們聚焦在特定時間區間內的一切可能問題。Grafana 通過巧妙的階層式維度設計,使我們能夠輕鬆滿足縱向和橫向的探索需求,不僅限於服務本身,還能快速了解與之相關的所有上下游資源狀態。

在 Service Detail 頁面中,系統自動將服務請求鏈路中的上下游關聯服務標示出來,幫助我們在進行深層探索時能夠一目了然地掌握整體服務的依賴關係。這種清晰的鏈路視圖,結合直觀的數據切換,讓我們能夠快速定位服務的性能瓶頸和潛在問題,從而有效提升問題排查和解決的效率。

https://ithelp.ithome.com.tw/upload/images/20240918/20149562T3BDGszNfR.png

Application Observability - Service Map

另一個得益於完整分佈式追蹤的好處,是我們能夠輕易實現對複雜微服務之間的請求拓樸(ServiceGraph)進行可視化。Service Map 直觀地呈現了各個服務之間的依賴關係,讓我們能夠即時了解每個服務的請求流向、上下游依賴,以及整個系統的交互方式。透過這個圖示化的拓樸結構,我們不僅可以迅速識別瓶頸和潛在問題,還能夠追蹤服務之間的延遲、錯誤率及其他關鍵指標,進一步優化服務之間的協作與性能表現。這使我們能夠在微服務架構下更加有效地進行問題排查與調優,確保系統穩定性和高效運行。

https://ithelp.ithome.com.tw/upload/images/20240918/20149562Bqy1C9V5OJ.png

結論

當我們剛開始接觸 Grafana 時,很容易被它強大且即開即用的各種 Dashboard 所驚艷。然而,隨著我們越來越依賴 Grafana,龐大的監控資料也帶來龐大的資訊疲勞,這讓我們開始思考,究竟什麼樣的「策略」才是最佳策略。儘管我們讀過許多理論,每種看似都有道理,但在實踐中卻難以找到可以效仿的範例。幸運的是,Grafana Cloud 在產品設計上,往往經過仔細品味後,我們可以很快發現其精妙之處,以及其對完善設計理念和最佳實踐的堅持。


References:


上一篇
後 Grafana 時代的第三天 - 探討 Grafana 大規模團隊治理與挑戰
下一篇
後 Grafana 時代的第五天 - 探討 Grafana 大規模中心化架構的演變
系列文
後 Grafana 時代的自我修養13
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言