.NET 中的遙測 API
如何調查應用程式的行為以進行疑難排解或效能最佳化? 您有越多有關應用程式執行的資料,就越容易診斷問題。
假設您任職於戶外設備零售商。 您的小組正在建置其微服務,準備好進行測試階段。 您想要確保您的雲端原生應用程式發出其行為的遙測資料,以便您可以在測試、預備和生產期間診斷問題。
在此單元中,您將了解遙測,以及可以使用遙測記錄的不同資料類型。
什麼是遙測?
在工程中,遙測是指測量資料並將其自動傳輸至中央系統以進行監視。 例如,賽車可能會記錄其效能的相關資料,並將其送回圍場,由工程師進行分析。 同樣地,太空艙可能會記錄有關艙內狀況的資訊,並將其送回任務控制中心。 近年來,在較常見的系統中記錄和分析遙測資料變得很常見。 例如,您的中央供暖系統可能會將遙測傳送給製造商,以協助進行疑難排解。
如果您要撰寫雲端原生應用程式,遙測在下列情況下會很有用:
- 您正在開發微服務,並想知道它們是否如預期般運作。
- 您正在測試您的應用程式,並想知道在測試失敗時發生了什麼。
- 您正在預備您的應用程式,並想要知道其執行方式。
- 您支援生產環境中的應用程式,並想要對例外狀況進行疑難排解或將效能最佳化。
我們可以將發出豐富遙測的系統描述為:
- 可檢視:可檢視的系統可讓您從外部了解其行為。
- 已檢測:已檢測的系統可以發出開發人員疑難排解問題所需的所有資料。
OpenTelemetry 是可檢視性架構和工具組,您可以在應用程式中用來建立、處理及發出遙測資料。 您可以輕鬆地將它新增至任何 .NET 應用程式,包括雲端原生應用程式中的微服務。 它會以表單發出資料,讓 Jaeger 和 Prometheus 等常見可檢視性工具可以使用和分析。
可檢視性的要素
雲端原生應用是由使用不同技術的分散式微服務所組成,其本質使得建置可檢視且正確檢測的程式碼變得困難。 所有小組都必須將可檢視性整合到其微服務中,否則您可能會發現應用程式的這部分難以監視和疑難排解。
重要
若要確保您的整個應用程式可檢視性,您應該確定所有開發小組都會考慮其微服務中可檢視性的三大要素:記錄、計量和追蹤。
可檢視性的三個要素是三種不同類型的記錄,可儲存軟體整合的行為以供稍後分析:
- 記錄:處理要求期間所發生事件的時間戳記文字記錄。
- 計量:在執行階段擷取的服務量值。 計量可以匯總成有關流程的統計資料,包括:
- .NET 執行階段統計資料,例如所使用的記憶體,或發生的記憶體回收次數。
- ASP.NET 或 NuGet 套件統計資料,例如已完成的要求數目、要求持續時間或錯誤計數。
- 針對您的應用程式的特有自訂統計資料,例如訂單數目。
- 分散式追蹤:處理個別要求所需的所有工作單元記錄,通常稱為 Spans。 在雲端原生應用程式中,單一要求可能涉及許多微服務和備份服務,分散式追蹤會顯示在共同作業以準備回應的所有服務。
注意
在 OpenTelemetry 中,不屬於分散式追蹤或計量的任何資料都會被視為記錄,例如事件。
在 .NET 中使用遙測
.NET 具有內建類型,可代表三個要素:
- ILogger:此介面提供標準介面,您可以在在從任何 .NET 程式碼記錄事件時使用。
- 計量:您可以使用這個類別來建立一組檢測,每個檢測都會測量與程式碼效能或行為相關聯的值。 例如,您可以新增一個可計算產品銷售量的工具,或另一個測量佇列中等候訊息的時間長度的工具。 .NET 也提供許多內建計量。
- 活動:您可以使用這個類別來記錄追蹤資訊。 首先,為您的命名空間建立
ActivitySource
物件。 然後呼叫StartActivity
方法來開始錄製資料。
您可以在任何 .NET 程式碼中使用這些類別。 在下一個單元中,您將了解 .NET Aspire 如何讓在雲端原生應用程式中使用 OpenTelemetry 類別變得更輕鬆。