何謂可檢視性?
在深入探討程序代碼之前,讓我們回過頭來討論可檢視性。 您需要有工具可協助您根據外部可見的內容來了解系統的內部狀態。
為什麼要實作可觀察性?
有數個原因導致可觀察性是開發和改善雲端原生應用程式的重要層面:
- 了解系統行為:可檢視性可讓您深入瞭解應用程式的執行方式,以及發生瓶頸或錯誤的位置。
- 偵錯和疑難解答:發生問題時,可觀察性工具可以提供問題發生時系統中發生狀況的詳細資訊。
- 持續改善:可檢視性不只用於識別和解決問題,也用於持續改善。 透過監視系統效能一段時間,您可以找出優化程式代碼、改善系統效能的機會,以及量化改善用戶的體驗。
- 主動式問題偵測:有了正確的可檢視性工具,您通常可以在使用者看到問題之前偵測到問題。
在雲端原生應用程式中實作可觀察性不只是最佳做法,也是維護、優化及持續改善應用程式的必要條件。 它可讓開發人員提供可靠且高效能的應用程式,並提供推動明智決策所需的見解。
可觀察性的三大支柱
可觀察性有三個主要要素:
- 記錄:記錄提供應用程式或系統內所發生事件的詳細記錄。 在您的應用程式中,您可以使用
Microsoft.Extensions.Logging
基礎結構來記錄事件。 - 計量:計量是指數值度量和計數器,可提供系統效能和健康情況的深入解析。 範例包括要求速率、回應時間、CPU/記憶體使用量,以及錯誤率。 在您的應用程式中,您可能會有需要追蹤的特定度量。
- 分散式追蹤:此程式牽涉到追蹤要求,因為它會傳播至雲端原生應用程式中的所有微服務。 每個服務都會記錄追蹤數據,例如要求標識符,讓您能夠跨服務相互關聯事件。 分散式追蹤也適用於對複雜系統中的效能問題和錯誤進行偵錯。
這三個支柱共同為系統提供完整的可觀察性。
遙測的數據來源
在您的公司的雲端原生應用程式中,有數個遙測來源可供您選擇收集:
- 應用程式記錄:應用程式會產生記錄,以在發生時提供其作業和錯誤的詳細資訊。 記錄是豐富的遙測數據來源。
- 資料庫:資料庫可以提供其處理查詢、運行時間,以及所發生之任何錯誤的遙測數據。
- HTTP 要求和回應:微服務之間的 HTTP 要求和回應可提供豐富且有價值的遙測數據。 此數據報括要求和回應標頭、本文內容、狀態代碼和計時資訊。
- 用戶端效能數據:在具有前端的雲端原生應用程式中,您可以收集用戶端效能數據。 此數據可能包括頁面點擊次數、載入時間和UI互動時間。
- 基礎結構計量:如果您的應用程式裝載在雲端環境中,您可以收集基礎結構計量,例如CPU使用量、記憶體使用量、網路流量和磁碟 I/O 作業。
藉由收集和分析此遙測數據,您可以深入瞭解應用程式的效能和健康情況。
實作可檢視性
若要將可觀察性新增至雲端原生應用程式,請執行下列步驟:
- 新增記錄。
- 啟用計量並定義要擷取的自定義計量。
- 使用 OpenTelemetry 和 Zipkin 啟用分散式追蹤。
- 再次使用 OpenTelemetry 檢測您的應用程式,並將遙測新增至您的程式代碼。
- 使用 Prometheus、Grafana 或 Application Insights 分析遙測數據。
OpenTelemetry 簡介
OpenTelemetry 如何協助將可檢視性新增至您的應用程式,以及為什麼 .NET 中有如此深入的支援? OpenTelemetry 是開放原始碼可觀察性架構。 它提供與廠商無關的標準方法來產生遙測數據。
OpenTelemetry 會將遙測數據收集和傳輸至後端平臺的方式標準化。 它藉由提供所有微服務的一般檢測格式來橋接可見度差距。 您不需要重新建構程式代碼,或每次後端平台變更時安裝不同的專屬代理程式。
因為它是開放式標準,因此它支援 .NET 以外的許多其他工具。 OpenTelemetry 已設定為使用延伸模組,讓匯出者能夠建立所有不同工具的遙測數據。 這表示您可以使用相同的工具來監視微服務,而不論其撰寫的語言為何。
OpenTelemetry 可協助您收集和監視可觀察性的所有三個要素:記錄、計量和追蹤。 您將瞭解如何在下列單元中執行這些工作。