為 .NET、Node.js、Python 和 Java 應用程式啟用 Azure 監視器 OpenTelemetry

本文說明如何啟用和設定以 OpenTelemetry 為基礎的數據收集,以在 Azure 監視器 Application Insights提供體驗。 我們會逐步解說如何安裝「Azure 監視器 OpenTelemetry Distro」。散發版本 會自動收集 應用程式及其相依性的追蹤、計量、記錄和例外狀況。 若要深入瞭解如何使用 OpenTelemetry 收集數據,請參閱 數據收集基本概 念或 OpenTelemetry 常見問題

OpenTelemetry 發行狀態

OpenTelemetry 供應專案適用於 .NET、Node.js、Python 和 Java 應用程式。

注意

如需依功能發行狀態,請參閱 常見問題

開始使用

請遵循本節中的步驟,以 OpenTelemetry 檢測您的應用程式。

必要條件

提示

不建議搭配 Azure 監視器 OTel 散發版本使用 OTel Community SDK/API,因為它會自動將它們載入為相依性。

安裝客戶端連結庫

安裝最新的 Azure.Monitor.OpenTelemetry.AspNetCore NuGet 套件:

dotnet add package Azure.Monitor.OpenTelemetry.AspNetCore 

啟用 Azure 監視器 Application Insights

若要啟用 Azure 監視器 Application Insights,您可以稍微修改應用程式,並設定「連線 ion String」。連線 ion String 會告訴應用程式要傳送散發版本收集的遙測,而且對您而言是唯一的。

修改您的應用程式

將新增 UseAzureMonitor() 至您的應用程式啟動。 這在您的類別中 program.cs

// Import the Azure.Monitor.OpenTelemetry.AspNetCore namespace.
using Azure.Monitor.OpenTelemetry.AspNetCore;

// Create a new WebApplicationBuilder instance.
var builder = WebApplication.CreateBuilder(args);

// Add OpenTelemetry and configure it to use Azure Monitor.
builder.Services.AddOpenTelemetry().UseAzureMonitor();

// Build the application.
var app = builder.Build();

// Run the application.
app.Run();

從 Application Insights 資源複製 連線 字串

提示

如果您還沒有帳戶,現在是建立 Application Insights 資源的絕佳時機。 以下是建議您 建立新的 Application Insights 資源,而不是使用現有的資源。

若要複製唯一 連線 字串:

Screenshot that shows Application Insights overview and connection string.

  1. 移至 Application Insights 資源的 [概觀] 窗格。
  2. 尋找您的 連線 字串
  3. 將滑鼠停留在 連接字串 上,然後選取 [複製到剪貼簿] 圖示。

在您的環境中貼上 連線 ion String

若要貼上您的 連線 ion String,請從下列選項中選取:

A. 透過環境變數設定 (建議)

將下列命令中的 取代<Your Connection String>為您的唯一 連接字串。

APPLICATIONINSIGHTS_CONNECTION_STRING=<Your Connection String>

B. 透過組態檔設定 - 僅限 Java (建議)

建立名為 applicationinsights.json的組態檔,並將它放在與下列內容相同的目錄中 applicationinsights-agent-3.4.19.jar

{
  "connectionString": "<Your Connection String>"
}

將上述 JSON 中的 取代<Your Connection String>為您的唯一 連接字串。

C. 透過程式代碼設定 - 僅限 ASP.NET Core、Node.js 和 Python (不建議)

如需透過程式代碼設定 連線 字串的範例,請參閱 連線 字串組態。

注意

如果您在多個位置設定 連接字串,我們會遵循下列優先順序:

  1. 代碼
  2. 環境變數
  3. 組態檔

確認數據正在流動

執行您的應用程式,並在 Azure 入口網站 中開啟 Application Insights 資源索引標籤。 可能需要幾分鐘的時間,數據才會顯示在入口網站中。

Screenshot of the Application Insights Overview tab with server requests and server response time highlighted.

Application Insights 現在已針對您的應用程式啟用。 下列步驟都是選擇性的,並允許進一步自定義。

重要

如果您有兩個以上的服務向相同的 Application Insights 資源發出遙測,您必須 設定雲端角色名稱 ,才能在應用程式對應上正確表示。

提示

取樣預設會以每秒 5 個要求的速度啟用,以協助成本管理。 在超出此速率的案例中,可能會遺漏遙測數據。 如需修改取樣組態的詳細資訊,請參閱 取樣覆寫。

作為使用 Application Insights 檢測的一部分,我們會收集診斷數據並將其傳送給 Microsoft。 此數據可協助我們執行及改善 Application Insights。 若要深入瞭解,請參閱 Azure 應用程式 Insights 中的 Statsbeat。

常見問題集

本節提供常見問題的解答。

什麼是 OpenTelemetry?

這是可觀察性的新開放原始碼標準。 若要深入瞭解,請參閱 OpenTelemetry

為什麼 Microsoft Azure 監視器投資 OpenTelemetry?

Microsoft 是 OpenTelemetry 的最大參與者之一。

OpenTelemetry 的主要價值主張是,它是廠商中立的,並跨語言提供一致的 API/SDK。

一段時間后,我們相信OpenTelemetry可讓Azure監視器客戶觀察以我們支持的語言以外的語言撰寫的應用程式。 它也會擴充您可以透過一組 豐富的檢測連結庫所收集的數據類型。 此外,OpenTelemetry SDK 的規模比其前身 Application Insights SDK 更具效能。

最後,OpenTelemetry 與 Microsoft 採用 開放原始碼 的策略一致。

OpenTelemetry 的狀態為何?

請參閱 OpenTelemetry 狀態

什麼是「Azure 監視器 OpenTelemetry Distro」?

您可以將它視為精簡包裝函式,將所有 OpenTelemetry 元件組合在一起,以取得 Azure 上一流的體驗。 這也稱為 OpenTelemetry 中的散發

為何應該使用「Azure 監視器 OpenTelemetry Distro」?

從社群使用 Azure 監視器 OpenTelemetry Distro,比起原生 OpenTelemetry,有幾個優點:

以OpenTelemetry的精神,我們設計了要開放且可延伸的散發版本。 例如,您可以新增:

  • OTLP 導出工具,並同時傳送至第二個目的地
  • 散發版本未包含的其他檢測連結庫

如何測試 Azure 監視器 OpenTelemetry Distro?

請查看 .NET、Java、JavaScript(Node.js)和 Python 的啟用檔

我應該使用 OpenTelemetry 或 Application Insights SDK 嗎?

我們建議您使用 OpenTelemetry Distro,除非您需要 只有 Application Insights SDK 中正式支援才能使用的功能。

採用 OpenTelemetry 現在可防止稍後移轉。

何時應該使用 Azure 監視器 OpenTelemetry 導出工具?

針對 ASP.NET Core、Java、Node.js 和 Python,我們建議使用 OpenTelemetry 散發版本。 這是開始使用的一行程序代碼。

針對所有其他 .NET 案例(例如傳統 ASP.NET、控制台應用程式等),我們建議使用我們的導出工具: Azure.Monitor.OpenTelemetry.Exporter

Azure 監視器 OpenTelemetry Distro 中功能目前的發行狀態為何?

下圖細分了每個語言的 OpenTelemetry 功能支援。

功能 .NET Node.js Python Java
分散式追蹤
自訂計量
標準計量 (目前受取樣影響的正確性)
固定取樣率
離線記憶體和自動重試
例外狀況報告
記錄收集 ⚠️
自訂事件 ⚠️ ⚠️ ⚠️
Microsoft Entra 驗證
即時計量
偵測 VM/VMSS 和 App Service 的資源內容
偵測 AKS 和函式的資源內容
可用性測試範圍篩選
自動填入使用者標識碼、已驗證的使用者標識碼和使用者IP
手動覆寫/設定作業名稱、使用者標識碼或已驗證的使用者識別碼
調適型取樣
分析工具 ⚠️
快照偵錯工具

索引鍵

  • ✅ 這項功能適用於所有具有正式支持的客戶。
  • ⚠️ 這項功能可作為公開預覽。 請參閱 Microsoft Azure 預覽版的補充使用規定。
  • ❌ 此功能無法使用或不適用。

OpenTelemetry 是否可以用於網頁瀏覽器?

是的,但我們不建議使用,Azure 不支援它。 OpenTelemetry JavaScript 已針對Node.js進行大量優化。 相反地,我們建議使用Application Insights JavaScript SDK。

何時可以預期 OpenTelemetry SDK 可用於網頁瀏覽器?

OpenTelemetry Web SDK 沒有決定的可用性時程表。 我們很可能與瀏覽器 SDK 相距數年,這是 Application Insights JavaScript SDK 的可行替代方案。

我今天可以在網頁瀏覽器中測試 OpenTelemetry 嗎?

OpenTelemetry Web 沙箱是一個分支,其設計目的是讓 OpenTelemetry 在瀏覽器中運作。 尚無法將遙測傳送至 Application Insights。 SDK 不會定義一般用戶端事件。

是否支援與 AppDynamics、DataDog 和 NewRelic 等競爭對手代理程式一起執行 Application Insights?

否。 雖然我們的散發版本可讓您 同時導出至 OTLP 端點 ,但這種做法並非我們打算測試或支援的做法。

我可以在生產環境中使用預覽功能嗎?

我們不建議這麼做。 請參閱 Microsoft Azure 預覽版的補充使用規定。

手動和自動檢測之間的差異為何?

請參閱 OpenTelemetry 概觀

我可以使用 OpenTelemetry 收集器嗎?

有些客戶會使用 OpenTelemetry Collector 做為代理程式替代方案,即使 Microsoft 尚未正式支援代理程式型方法來監視應用程式。 與此同時,開放原始碼社群貢獻了 OpenTelemetry 收集器 Azure 監視器導出工具 ,有些客戶會用來將數據傳送至 Azure 監視器 Application Insights。 Microsoft 不支援此功能。

OpenCensus 和 OpenTelemetry 有何差異?

OpenCensus 是 OpenTelemetry 的前身。 Microsoft 協助整合 OpenTracing 和 OpenCensus 來建立 OpenTelemetry,這是世界上的單一可觀察性標準。 目前 生產建議的適用於 Azure 監視器的 Python SDK 是以 OpenCensus 為基礎。 Microsoft 致力於根據 OpenTelemetry 製作 Azure 監視器。

疑難排解

無法運作? 請參閱 ASP.NET Core疑難解答頁面。

支援

選取您選擇的語言索引標籤,以探索支援選項。

OpenTelemetry 意見反應

若要提供意見反應:

下一步