新增、修改和篩選 OpenTelemetry

本文提供如何使用 Azure 監視器 Application Insights 為應用程式新增、修改和篩選 OpenTelemetry 的指導。

若要深入了解 OpenTelemetry 概念,請參閱 OpenTelemetry 概觀OpenTelemetry 常見問題

自動收集資料

發行版本會藉由統合 OpenTelemetry 檢測程式庫來自動收集資料。

包含的檢測程式庫

要求

相依性

記錄

  • ILogger

如需 ILogger 的詳細資訊,請參閱使用 C# 和 .NET 進行記錄程式碼範例

註腳

  • ¹:支援自動報告未處理/未攔截的例外狀況
  • ²:支援 OpenTelemetry 計量
  • ³:根據預設,只會在 INFO 層級或更高層級收集記錄。 若要變更此層級,請參閱設定選項
  • 根據預設,只有在 INFO 層級或警告層級執行記錄時,才會收集該記錄。

注意

Azure 監視器 OpenTelemetry 發行版本包含自訂對應和邏輯,可自動發出 Application Insights 標準計量

提示

全部 OpenTelemetry 計量,無論是從檢測程式庫自動收集,還是從自訂程式碼中手動收集,目前都會被視為 Application Insights 的「自訂計量」,以供計費之用。 深入了解

新增社群檢測程式庫

您從 OpenTelemetry 社群包含檢測程式庫時,可以自動收集更多資料。

警告

我們不支援或保證社群檢測程式庫的品質。 若要在我們的意見反應社群中建議發行版本、張貼或附議。 請注意,有些是以實驗性 OpenTelemetry 規格為基礎,而且可能會帶來未來的重大變更。

若要新增社群程式庫,請在新增程式庫的 nuget 套件之後,使用 ConfigureOpenTelemetryMeterProviderConfigureOpenTelemetryTracerProvider 方法。

下列範例示範如何新增執行階段檢測收集額外的計量。

dotnet add package OpenTelemetry.Instrumentation.Runtime 
// Create a new ASP.NET Core web application builder.
var builder = WebApplication.CreateBuilder(args);

// Configure the OpenTelemetry meter provider to add runtime instrumentation.
builder.Services.ConfigureOpenTelemetryMeterProvider((sp, builder) => builder.AddRuntimeInstrumentation());

// Add the Azure Monitor telemetry service to the application.
// This service will collect and send telemetry data to Azure Monitor.
builder.Services.AddOpenTelemetry().UseAzureMonitor();

// Build the ASP.NET Core web application.
var app = builder.Build();

// Start the ASP.NET Core web application.
app.Run();

收集自訂遙測

本節說明如何從您的應用程式中收集自訂遙測。

視您的語言和訊號類型而定,有不同的方式可以收集自訂遙測,其中包括:

  • OpenTelemetry API
  • 語言特定的記錄/計量程式庫
  • Application Insights 傳統 API

下表代表目前支援的自訂遙測類型:

語言 自訂事件 自訂計量 相依性 例外狀況 頁面檢視 要求 追蹤
ASP.NET Core
   OpenTelemetry API Yes .是 .是 Yes
   ILogger API Yes
   AI 傳統 API
Java
   OpenTelemetry API Yes .是 .是 Yes
   Logback、Log4j、JUL Yes Yes
   Micrometer Metrics Yes
   AI 傳統 API Yes .是 .是 .是 .是 .是 Yes
Node.js
   OpenTelemetry API Yes .是 .是 Yes
Python
   OpenTelemetry API Yes .是 .是 Yes
   Python 記錄模組 Yes
   事件延伸模組 Yes

注意

Application Insights Java 3.x 會接聽傳送至 Application Insights 傳統 API 的遙測。 同樣地,Application Insights Node.js 3.x 會收集使用 Application Insights 傳統 API 建立的事件。 因此,升級更容易,而且自訂遙測支援的不足之處得以補強,直到全部自訂遙測類型都透過 OpenTelemetry API 支援為止。

新增自訂計量

在此內容中,自訂計量是指手動檢測您的程式碼,以收集 OpenTelemetry 檢測設備程式庫自動收集的其他計量。

OpenTelemetry API 提供六個計量「檢測」來涵蓋各種的計量案例,而且您必須在「計量瀏覽器」中視覺化計量時挑選正確的「彙總類型」。 使用 OpenTelemetry 計量 API 來傳送計量,以及使用檢測程式庫時,這項需求是必要的。

下表顯示每個 OpenTelemetry 計量檢測的建議彙總類型

OpenTelemetry 檢測 Azure 監視器彙總類型
計數器 Sum
非同步計數器 Sum
長條圖 Min、Max、Average、Sum 和 Count
非同步量測計 平均
UpDownCounter Sum
非同步 UpDownCounter Sum

警告

超出表格中所顯示內容的彙總類型通常沒有意義。

OpenTelemetry 規格說明檢測,並提供您何時可以使用每個檢測的範例。

提示

長條圖是最活用且最接近於 Application Insights GetMetric 傳統 API。 Azure 監視器目前會將長條圖檢測扁平化為五種支援的彙總類型,且對百分位數的支援正在進行中。 雖然其他 OpenTelemetry 檢測較不活用,但對您的應用程式效能的影響較小。

長條圖範例

應用程式啟動必須依名稱訂閱計量。

// Create a new ASP.NET Core web application builder.
var builder = WebApplication.CreateBuilder(args);

// Configure the OpenTelemetry meter provider to add a meter named "OTel.AzureMonitor.Demo".
builder.Services.ConfigureOpenTelemetryMeterProvider((sp, builder) => builder.AddMeter("OTel.AzureMonitor.Demo"));

// Add the Azure Monitor telemetry service to the application.
// This service will collect and send telemetry data to Azure Monitor.
builder.Services.AddOpenTelemetry().UseAzureMonitor();

// Build the ASP.NET Core web application.
var app = builder.Build();

// Start the ASP.NET Core web application.
app.Run();

Meter 必須使用相同的名稱初始化。

// Create a new meter named "OTel.AzureMonitor.Demo".
var meter = new Meter("OTel.AzureMonitor.Demo");

// Create a new histogram metric named "FruitSalePrice".
Histogram<long> myFruitSalePrice = meter.CreateHistogram<long>("FruitSalePrice");

// Create a new Random object.
var rand = new Random();

// Record a few random sale prices for apples and lemons, with different colors.
myFruitSalePrice.Record(rand.Next(1, 1000), new("name", "apple"), new("color", "red"));
myFruitSalePrice.Record(rand.Next(1, 1000), new("name", "lemon"), new("color", "yellow"));
myFruitSalePrice.Record(rand.Next(1, 1000), new("name", "lemon"), new("color", "yellow"));
myFruitSalePrice.Record(rand.Next(1, 1000), new("name", "apple"), new("color", "green"));
myFruitSalePrice.Record(rand.Next(1, 1000), new("name", "apple"), new("color", "red"));
myFruitSalePrice.Record(rand.Next(1, 1000), new("name", "lemon"), new("color", "yellow"));

計數器範例

應用程式啟動必須依名稱訂閱計量。

// Create a new ASP.NET Core web application builder.
var builder = WebApplication.CreateBuilder(args);

// Configure the OpenTelemetry meter provider to add a meter named "OTel.AzureMonitor.Demo".
builder.Services.ConfigureOpenTelemetryMeterProvider((sp, builder) => builder.AddMeter("OTel.AzureMonitor.Demo"));

// Add the Azure Monitor telemetry service to the application.
// This service will collect and send telemetry data to Azure Monitor.
builder.Services.AddOpenTelemetry().UseAzureMonitor();

// Build the ASP.NET Core web application.
var app = builder.Build();

// Start the ASP.NET Core web application.
app.Run();

Meter 必須使用相同的名稱初始化。

// Create a new meter named "OTel.AzureMonitor.Demo".
var meter = new Meter("OTel.AzureMonitor.Demo");

// Create a new counter metric named "MyFruitCounter".
Counter<long> myFruitCounter = meter.CreateCounter<long>("MyFruitCounter");

// Record the number of fruits sold, grouped by name and color.
myFruitCounter.Add(1, new("name", "apple"), new("color", "red"));
myFruitCounter.Add(2, new("name", "lemon"), new("color", "yellow"));
myFruitCounter.Add(1, new("name", "lemon"), new("color", "yellow"));
myFruitCounter.Add(2, new("name", "apple"), new("color", "green"));
myFruitCounter.Add(5, new("name", "apple"), new("color", "red"));
myFruitCounter.Add(4, new("name", "lemon"), new("color", "yellow"));

量測計範例

應用程式啟動必須依名稱訂閱計量。

// Create a new ASP.NET Core web application builder.
var builder = WebApplication.CreateBuilder(args);

// Configure the OpenTelemetry meter provider to add a meter named "OTel.AzureMonitor.Demo".
builder.Services.ConfigureOpenTelemetryMeterProvider((sp, builder) => builder.AddMeter("OTel.AzureMonitor.Demo"));

// Add the Azure Monitor telemetry service to the application.
// This service will collect and send telemetry data to Azure Monitor.
builder.Services.AddOpenTelemetry().UseAzureMonitor();

// Build the ASP.NET Core web application.
var app = builder.Build();

// Start the ASP.NET Core web application.
app.Run();

Meter 必須使用相同的名稱初始化。

// Get the current process.
var process = Process.GetCurrentProcess();

// Create a new meter named "OTel.AzureMonitor.Demo".
var meter = new Meter("OTel.AzureMonitor.Demo");

// Create a new observable gauge metric named "Thread.State".
// This metric will track the state of each thread in the current process.
ObservableGauge<int> myObservableGauge = meter.CreateObservableGauge("Thread.State", () => GetThreadState(process));

private static IEnumerable<Measurement<int>> GetThreadState(Process process)
{
    // Iterate over all threads in the current process.
    foreach (ProcessThread thread in process.Threads)
    {
        // Create a measurement for each thread, including the thread state, process ID, and thread ID.
        yield return new((int)thread.ThreadState, new("ProcessId", process.Id), new("ThreadId", thread.Id));
    }
}

新增自訂例外狀況

選取檢測程式庫會自動報告 Application Insights 的例外狀況。 不過,您可能想要手動報告超出檢測程式庫報告範圍的例外狀況。 例如,您的程式碼攔截到的例外狀況通常不會報告。 您可能想要對其進行報告,以便在相關的體驗中吸引注意,包括失敗區段和端對端交易檢視。

  • 若要使用活動記錄例外狀況:
    // Start a new activity named "ExceptionExample".
    using (var activity = activitySource.StartActivity("ExceptionExample"))
    {
        // Try to execute some code.
        try
        {
            throw new Exception("Test exception");
        }
        // If an exception is thrown, catch it and set the activity status to "Error".
        catch (Exception ex)
        {
            activity?.SetStatus(ActivityStatusCode.Error);
            activity?.RecordException(ex);
        }
    }
    
  • 若要使用 ILogger 記錄例外狀況:
    // Create a logger using the logger factory. The logger category name is used to filter and route log messages.
    var logger = loggerFactory.CreateLogger(logCategoryName);
    
    // Try to execute some code.
    try
    {
        throw new Exception("Test Exception");
    }
    catch (Exception ex)
    {
        // Log an error message with the exception. The log level is set to "Error" and the event ID is set to 0.
        // The log message includes a template and a parameter. The template will be replaced with the value of the parameter when the log message is written.
        logger.Log(
            logLevel: LogLevel.Error,
            eventId: 0,
            exception: ex,
            message: "Hello {name}.",
            args: new object[] { "World" });
    }
    

新增自訂範圍

您可能會想要在兩個案例中新增自訂範圍。 首先,檢測程式庫尚未收集相依性要求時。 其次,您想要將應用程式流程模型化為端對端交易檢視上的範圍時。

注意

System.Diagnostics 命名空間中的 ActivityActivitySource 類別分別代表 OpenTelemetry 的 SpanTracer 概念。 您可以使用其建構函式直接建立 ActivitySource,而不是使用 TracerProvider。 每個 ActivitySource 類別都必須使用 AddSource() 明確連接到 TracerProvider。 這是因為部分 OpenTelemetry 追蹤 API 會直接併入 .NET 執行階段。 若要深入了解,請參閱 OpenTelemetry .NET 追蹤 API 簡介

// Define an activity source named "ActivitySourceName". This activity source will be used to create activities for all requests to the application.
internal static readonly ActivitySource activitySource = new("ActivitySourceName");

// Create an ASP.NET Core application builder.
var builder = WebApplication.CreateBuilder(args);

// Configure the OpenTelemetry tracer provider to add a source named "ActivitySourceName". This will ensure that all activities created by the activity source are traced.
builder.Services.ConfigureOpenTelemetryTracerProvider((sp, builder) => builder.AddSource("ActivitySourceName"));

// Add the Azure Monitor telemetry service to the application. This service will collect and send telemetry data to Azure Monitor.
builder.Services.AddOpenTelemetry().UseAzureMonitor();

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

// Map a GET request to the root path ("/") to the specified action.
app.MapGet("/", () =>
{
    // Start a new activity named "CustomActivity". This activity will be traced and the trace data will be sent to Azure Monitor.
    using (var activity = activitySource.StartActivity("CustomActivity"))
    {
        // your code here
    }

    // Return a response message.
    return $"Hello World!";
});

// Start the ASP.NET Core application.
app.Run();

StartActivity 預設為 ActivityKind.Internal,但您可以提供其他任何 ActivityKindActivityKind.ClientActivityKind.ProducerActivityKind.Internal 會對應於 Application Insights dependenciesActivityKind.ServerActivityKind.Consumer 會對應於 Application Insights requests

使用 Application Insights 傳統 API 傳送自訂遙測

建議您盡可能使用 OpenTelemetry API,但在某些情況下,您必須使用 Application Insights 傳統 API。

事件
  1. Microsoft.ApplicationInsights 新增至您的應用程式。

  2. 建立 TelemetryClient 執行個體。

注意

務必只為每個應用程式建立一次 TelemetryClient 執行個體。

var telemetryConfiguration = new TelemetryConfiguration { ConnectionString = "" };
var telemetryClient = new TelemetryClient(telemetryConfiguration);
  1. 使用用戶端來傳送自訂遙測。
telemetryClient.TrackEvent("testEvent");

修改遙測

本節說明如何修改遙測。

新增範圍屬性

這些屬性可能包括將自訂屬性新增至遙測。 您也可以使用屬性來設定 Application Insights 結構描述中的選用欄位,例如用戶端 IP。

將自訂屬性新增至範圍

您新增至範圍的任何屬性都會匯出為自訂屬性。 這些會在要求、追蹤、相依性或例外狀況資料表中填入 customDimensions 欄位。

若要新增範圍屬性,請使用下列兩種方式之一:

  • 使用檢測程式庫所提供的選項。
  • 新增自訂範圍處理器。

提示

使用檢測程式庫所提供選項的優點 (如果可用),就是可以使用整個內容。 因此,使用者可以選取要新增或篩選更多屬性。 例如,HttpClient 檢測程式庫中的擴充選項可讓使用者存取 HttpRequestMessageHttpResponseMessage 本身。 使用者可以從中選取任何部分並儲存為屬性。

  1. 許多檢測程式庫都提供擴充選項。 如需指引,請參閱個別檢測程式庫的讀我檔案:

  2. 使用自訂處理器:

提示

新增 Azure 監視器之前,請先新增此處顯示的處理器。

// Create an ASP.NET Core application builder.
var builder = WebApplication.CreateBuilder(args);

// Configure the OpenTelemetry tracer provider to add a new processor named ActivityEnrichingProcessor.
builder.Services.ConfigureOpenTelemetryTracerProvider((sp, builder) => builder.AddProcessor(new ActivityEnrichingProcessor()));

// Add the Azure Monitor telemetry service to the application. This service will collect and send telemetry data to Azure Monitor.
builder.Services.AddOpenTelemetry().UseAzureMonitor();

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

// Start the ASP.NET Core application.
app.Run();

使用下列程式碼,將 ActivityEnrichingProcessor.cs 新增至您的專案:

public class ActivityEnrichingProcessor : BaseProcessor<Activity>
{
    public override void OnEnd(Activity activity)
    {
        // The updated activity will be available to all processors which are called after this processor.
        activity.DisplayName = "Updated-" + activity.DisplayName;
        activity.SetTag("CustomDimension1", "Value1");
        activity.SetTag("CustomDimension2", "Value2");
    }
}

設定使用者 IP

您可以在範圍上設定屬性,以填入 要求的client_IP 欄位。 Application Insights 使用 IP 位址來產生使用者位置屬性,然後依預設捨棄

使用新增自訂屬性範例,但取代 ActivityEnrichingProcessor.cs 中的下列程式碼行:

// Add the client IP address to the activity as a tag.
// only applicable in case of activity.Kind == Server
activity.SetTag("client.address", "<IP Address>");

設定使用者識別碼或已驗證的使用者識別碼

您可以使用下列指導填入要求的 user_Iduser_AuthenticatedId 欄位。 使用者識別碼是匿名使用者識別碼。 已驗證的使用者識別碼是已知的使用者識別碼。

重要

在您設定已驗證的使用者識別碼之前,請參閱適用的隱私權法律。

使用新增自訂屬性範例

// Add the user ID to the activity as a tag, but only if the activity is not null.
activity?.SetTag("enduser.id", "<User Id>");

新增記錄屬性

OpenTelemetry 使用。NET 的 ILogger。 您可以使用訊息範本將自訂維度附加至記錄。

篩選遙測

您可以使用下列方式,在遙測離開您的應用程式之前篩選出遙測資料。

  1. 許多檢測程式庫都提供篩選選項。 如需指引,請參閱個別檢測程式庫的讀我檔案:

  2. 使用自訂處理器:

    提示

    新增 Azure 監視器之前,請先新增此處顯示的處理器。

    // Create an ASP.NET Core application builder.
    var builder = WebApplication.CreateBuilder(args);
    
    // Configure the OpenTelemetry tracer provider to add a new processor named ActivityFilteringProcessor.
    builder.Services.ConfigureOpenTelemetryTracerProvider((sp, builder) => builder.AddProcessor(new ActivityFilteringProcessor()));
    // Configure the OpenTelemetry tracer provider to add a new source named "ActivitySourceName".
    builder.Services.ConfigureOpenTelemetryTracerProvider((sp, builder) => builder.AddSource("ActivitySourceName"));
    // Add the Azure Monitor telemetry service to the application. This service will collect and send telemetry data to Azure Monitor.
    builder.Services.AddOpenTelemetry().UseAzureMonitor();
    
    // Build the ASP.NET Core application.
    var app = builder.Build();
    
    // Start the ASP.NET Core application.
    app.Run();
    

    使用下列程式碼,將 ActivityFilteringProcessor.cs 新增至您的專案:

    public class ActivityFilteringProcessor : BaseProcessor<Activity>
    {
        // The OnStart method is called when an activity is started. This is the ideal place to filter activities.
        public override void OnStart(Activity activity)
        {
            // prevents all exporters from exporting internal activities
            if (activity.Kind == ActivityKind.Internal)
            {
                activity.IsAllDataRequested = false;
            }
        }
    }
    
  3. 如果未使用 AddSource("ActivitySourceName") 明確新增特定來源,則不會匯出使用該來源所建立的任何活動。

取得追蹤識別碼或範圍識別碼

您可能想要取得追蹤識別碼或範圍識別碼。 如果您已將記錄傳送至 Application Insights 以外的目的地,請考慮新增追蹤識別碼或範圍識別碼。 這麼做可在偵錯和診斷問題時提供更好的相互關聯。

注意

System.Diagnostics 命名空間中的 ActivityActivitySource 類別分別代表 OpenTelemetry 的 SpanTracer 概念。 這是因為部分 OpenTelemetry 追蹤 API 會直接併入 .NET 執行階段。 若要深入了解,請參閱 OpenTelemetry .NET 追蹤 API 簡介

// Get the current activity.
Activity activity = Activity.Current;
// Get the trace ID of the activity.
string traceId = activity?.TraceId.ToHexString();
// Get the span ID of the activity.
string spanId = activity?.SpanId.ToHexString();

下一步

常見問題集

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

什麼是 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」?

相較於原生 OpenTelemetry,從社群使用 Azure 監視器 OpenTelemetry Distro 的一些優點如下:

秉持 OpenTelemetry 的精神,我們設計出開放且可延伸的發行版本。 例如,您可以新增:

  • OpenTelemetry 通訊協定 (OTLP) 匯出工具,並同時傳送至第二個目的地
  • 發行版本未包含的其他檢測程式庫

因為散發版本提供 OpenTelemetry 散發套件,因此 Distro 支援 OpenTelemetry 所支援的任何專案。 例如,如果 OpenTelemetry 支援遙測處理器、匯出者或檢測連結庫,您可以新增更多遙測處理器、導出者或檢測連結庫。

注意

散發版本會將取樣器設定為 Application Insights 的自定義固定速率取樣器。 您可以將此變更為不同的取樣器,但這樣做可能會停用部分散發版本包含的功能。 如需支持取樣器的詳細資訊,請參閱設定 Azure 監視器 OpenTelemetry啟用取樣一節。

對於沒有支持的獨立 OpenTelemetry 導出工具的語言,Azure 監視器 OpenTelemetry Distro 是目前唯一支援搭配 Azure 監視器使用 OpenTelemetry 的方式。 針對具有支持的獨立 OpenTelemetry 匯出工具的語言,您可以選擇使用 Azure 監視器 OpenTelemetry Distro 或視您的遙測案例而定的適當獨立 OpenTelemetry 導出工具。 如需詳細資訊,請參閱 何時應該使用 Azure 監視器 OpenTelemetry 導出工具?

如何測試 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,我們建議使用 Azure 監視器 OpenTelemetry Distro。 這是開始使用的一行程式碼。

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

如需需要進階設定的更複雜的 Python 遙測案例,建議您使用 Python Azure 監視器 OpenTelemetry 導出工具

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

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

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

索引鍵

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 端點與 Azure 監視器,但這種做法並非我們打算測試或支援的做法。

是否可以在生產環境中使用預覽功能?

不建議這樣做。 請參閱 Microsoft Azure 預覽專用的使用補充條款

手動和自動檢測有何不同?

請參閱 OpenTelemetry 概觀

我可以使用 OpenTelemetry 收集器嗎?

儘管 Microsoft 尚未正式支援以代理程式型方法進行應用程式監視,有些客戶使用 OpenTelemetry 收集器做為代理程式替代方案。 同時,開放原始碼社群貢獻了 OpenTelemetry 收集器 Azure 監視器匯出工具,部分客戶目前已使用該工具來將資料傳送至 Azure 監視器 Application Insights。 Microsoft 不支援這項功能。

OpenCensus 和 OpenTelemetry 之間有何差異?

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

疑難排解

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

支援

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

OpenTelemetry 意見反應

若要提供意見反應: