.NET 中的遙測 API

已完成

如何調查應用程式的行為以進行疑難排解或效能最佳化? 您有越多有關應用程式執行的資料,就越容易診斷問題。

假設您任職於戶外設備零售商。 您的小組正在建置其微服務,準備好進行測試階段。 您想要確保您的雲端原生應用程式發出其行為的遙測資料,以便您可以在測試、預備和生產期間診斷問題。

在此單元中,您將了解遙測,以及可以使用遙測記錄的不同資料類型。

什麼是遙測?

在工程中,遙測是指測量資料並將其自動傳輸至中央系統以進行監視。 例如,賽車可能會記錄其效能的相關資料,並將其送回圍場,由工程師進行分析。 同樣地,太空艙可能會記錄有關艙內狀況的資訊,並將其送回任務控制中心。 近年來,在較常見的系統中記錄和分析遙測資料變得很常見。 例如,您的中央供暖系統可能會將遙測傳送給製造商,以協助進行疑難排解。

如果您要撰寫雲端原生應用程式,遙測在下列情況下會很有用:

  • 您正在開發微服務,並想知道它們是否如預期般運作。
  • 您正在測試您的應用程式,並想知道在測試失敗時發生了什麼。
  • 您正在預備您的應用程式,並想要知道其執行方式。
  • 您支援生產環境中的應用程式,並想要對例外狀況進行疑難排解或將效能最佳化。

我們可以將發出豐富遙測的系統描述為:

  • 可檢視:可檢視的系統可讓您從外部了解其行為。
  • 已檢測:已檢測的系統可以發出開發人員疑難排解問題所需的所有資料。

OpenTelemetry 是可檢視性架構和工具組,您可以在應用程式中用來建立、處理及發出遙測資料。 您可以輕鬆地將它新增至任何 .NET 應用程式,包括雲端原生應用程式中的微服務。 它會以表單發出資料,讓 Jaeger 和 Prometheus 等常見可檢視性工具可以使用和分析。

可檢視性的要素

雲端原生應用是由使用不同技術的分散式微服務所組成,其本質使得建置可檢視且正確檢測的程式碼變得困難。 所有小組都必須將可檢視性整合到其微服務中,否則您可能會發現應用程式的這部分難以監視和疑難排解。

重要

若要確保您的整個應用程式可檢視性,您應該確定所有開發小組都會考慮其微服務中可檢視性的三大要素:記錄計量追蹤

可檢視性的三個要素是三種不同類型的記錄,可儲存軟體整合的行為以供稍後分析:

  • 記錄:處理要求期間所發生事件的時間戳記文字記錄。
  • 計量:在執行階段擷取的服務量值。 計量可以匯總成有關流程的統計資料,包括:
    • .NET 執行階段統計資料,例如所使用的記憶體,或發生的記憶體回收次數。
    • ASP.NET 或 NuGet 套件統計資料,例如已完成的要求數目、要求持續時間或錯誤計數。
    • 針對您的應用程式的特有自訂統計資料,例如訂單數目。
  • 分散式追蹤:處理個別要求所需的所有工作單元記錄,通常稱為 Spans。 在雲端原生應用程式中,單一要求可能涉及許多微服務和備份服務,分散式追蹤會顯示在共同作業以準備回應的所有服務。

注意

在 OpenTelemetry 中,不屬於分散式追蹤或計量的任何資料都會被視為記錄,例如事件。

在 .NET 中使用遙測

.NET 具有內建類型,可代表三個要素:

  • ILogger:此介面提供標準介面,您可以在在從任何 .NET 程式碼記錄事件時使用。
  • 計量:您可以使用這個類別來建立一組檢測,每個檢測都會測量與程式碼效能或行為相關聯的值。 例如,您可以新增一個可計算產品銷售量的工具,或另一個測量佇列中等候訊息的時間長度的工具。 .NET 也提供許多內建計量。
  • 活動:您可以使用這個類別來記錄追蹤資訊。 首先,為您的命名空間建立 ActivitySource 物件。 然後呼叫 StartActivity 方法來開始錄製資料。

您可以在任何 .NET 程式碼中使用這些類別。 在下一個單元中,您將了解 .NET Aspire 如何讓在雲端原生應用程式中使用 OpenTelemetry 類別變得更輕鬆。

深入了解