Konfigurera OpenTelemetry i Application Insights

Anmärkning

För .NET, Node.js, och Python program:

För Java program använder du Azure Monitor OpenTelemetry Distro.

Vägledning för AI-assisterad instrumentering finns i Application Insights instrumentation skill. För guidad konfiguration och analys av befintlig Application Insights-instrumentering, se Azure MCP Server-verktygen för Azure Monitor.

Den här guiden beskriver hur du konfigurerar OpenTelemetry (OTel) i Azure Monitor Application Insights. Använd Microsoft OpenTelemetry Distro för .NET, Node.jsoch Python. För Java använder du Azure Monitor OpenTelemetry Distro och dess befintliga agent- eller native-image-integreringar.

Först aktiverar du OpenTelemetry för ditt språk.

Microsoft OpenTelemetry Distro-paketidentifierare och installationskommandon är:

Language Package Installationskommando
Python microsoft-opentelemetry pip install microsoft-opentelemetry
Node.js @microsoft/opentelemetry npm install @microsoft/opentelemetry
.NET Microsoft.OpenTelemetry dotnet add package Microsoft.OpenTelemetry

Initiera inte Microsoft OpenTelemetry Distro och Azure Monitor OpenTelemetry Distro tillsammans. Azure Monitor förblir telemetrimålet. Fristående Azure Monitor exportörer behåller sina befintliga namn.

Exemplen i .NET använder Microsoft.OpenTelemetry och OpenTelemetry-namnrymder. Initiera Node.js instrumentation innan applikationsbibliotek läses in. ESM-program måste förinläsa Microsoft OpenTelemetry Distro-inläsaren. Ange APPLICATIONINSIGHTS_CONNECTION_STRING innan du startar programmet om inte ett exempel anger reťazec pripojenia i kod.

Anmärkning

För Azure-funktionsappar, se Använd OpenTelemetry med Azure Functions.

Anslutningssträng

I Application Insights definierar en reťazec pripojenia målplatsen för att skicka telemetridata.

Använd något av följande tre sätt att konfigurera reťazec pripojenia:

  • Konfigurera UseMicrosoftOpenTelemetry() i Program.cs.

    // Import the Microsoft OpenTelemetry Distro and supporting APIs.
    using Microsoft.OpenTelemetry;
    
    // Create the application builder.
    var builder = WebApplication.CreateBuilder(args);
    
    // Configure the Microsoft OpenTelemetry Distro.
    builder.UseMicrosoftOpenTelemetry(options =>
    {
      options.Exporters = ExportTarget.AzureMonitor;
    
      // Set the connection string for Azure Monitor export.
      options.AzureMonitor.ConnectionString = "<ConnectionString>";
    });
    
    // Build the application with the configured telemetry services.
    var app = builder.Build();
    
    // Run the application and its telemetry providers.
    app.Run();
    
  • Ange en miljövariabel.

    export APPLICATIONINSIGHTS_CONNECTION_STRING="<ConnectionString>"
    
  • Lägg till följande avsnitt i appsettings.json och läs det sedan när du initierar distron.

        {
            "AzureMonitor": {
                "ConnectionString": "<ConnectionString>"
            }
        }
    
    // Import the Microsoft OpenTelemetry Distro and supporting APIs.
    using Microsoft.OpenTelemetry;
    
    // Create the application builder.
    var builder = WebApplication.CreateBuilder(args);
    
    // Configure the Microsoft OpenTelemetry Distro.
    builder.UseMicrosoftOpenTelemetry(options =>
    {
      options.Exporters = ExportTarget.AzureMonitor;
    
      // Read the environment setting before the application configuration.
      options.AzureMonitor.ConnectionString =
        builder.Configuration["APPLICATIONINSIGHTS_CONNECTION_STRING"] ??
        builder.Configuration["AzureMonitor:ConnectionString"];
    });
    
    // Build the application with the configured telemetry services.
    var app = builder.Build();
    
    // Run the application and its telemetry providers.
    app.Run();
    

Anmärkning

Ett explicit options.AzureMonitor.ConnectionString värde har företräde. Exemplet med configuration-file kontrollerar miljövariabelnyckeln före avsnittet AzureMonitor. Att läsa avsnittet undviker uttryckligen att förlita sig på implicit konfigurationsbindning.

Ange namnet på molnrollen och molnrollinstansen

Microsoft OpenTelemetry Distro för .NET, Node.js och Python och Azure Monitor OpenTelemetry för Java identifierar resurskontext där det stöds och tillhandahåller standardvärden för Cloud Role Name och Cloud Role Instance. Du kan åsidosätta dessa värden för ditt program. Molnrollsnamnet visas på Application Map som namnet under en nod.

Ange namnet på molnrollen och molnrollinstansen via resursattribut . Namnet på molnrollen använder attributen service.namespace och service.name, men återgår till service.name om service.namespace inte har angetts. Cloud Role Instance använder service.instance.id attributvärdet. Information om standardattribut för resurser finns i OpenTelemetry Semantiska konventioner.

Ange namnet på molnrollen och molnrollinstansen
// Import the Microsoft OpenTelemetry Distro and supporting APIs.
using Microsoft.OpenTelemetry;
using OpenTelemetry;
using OpenTelemetry.Resources;

// Define the service attributes used for cloud role name and instance.
var resourceAttributes = new Dictionary<string, object>
{
    ["service.name"] = "<ServiceName>",
    ["service.namespace"] = "<ServiceNamespace>",
    ["service.instance.id"] = "<ServiceInstanceId>"
};

// Create the application builder.
var builder = WebApplication.CreateBuilder(args);

builder.Services.AddOpenTelemetry()

  // Configure the Microsoft OpenTelemetry Distro.
  .UseMicrosoftOpenTelemetry(options =>
  {
    options.Exporters = ExportTarget.AzureMonitor;
  })

    // Apply the resource attributes to traces, metrics, and logs.
    .ConfigureResource(resourceBuilder => resourceBuilder.AddAttributes(
        resourceAttributes));

// Build the application with the configured telemetry services.
var app = builder.Build();

// Run the application and its telemetry providers.
app.Run();

Ange resursattribut

Microsoft OpenTelemetry Distro för .NET, Node.js och Python och Azure Monitor OpenTelemetry för Java aktiverar resursidentifiering i Azure miljöer som stöds. Mer information finns i Automatisk datainsamling och resursdetektorer.

För manuella installationer anger du resursattribut direkt med hjälp av standardalternativ för OpenTelemetry:

# Set variables
serviceName="<ServiceName>"
location="<Location>"
subscriptionId="<SubscriptionId>"
resourceGroupName="<ResourceGroupName>"
appName="<AppName>"

# Build App Service resource ID
path="/subscriptions/$subscriptionId/resourceGroups/$resourceGroupName"
provider="/providers/Microsoft.Web/sites/$appName"
resourceId="$path$provider"

resourceAttributes="cloud.provider=azure,cloud.region=$location"
resourceAttributes+=",cloud.resource_id=$resourceId"
export OTEL_SERVICE_NAME="$serviceName"
export OTEL_RESOURCE_ATTRIBUTES="$resourceAttributes"

På Windows PowerShell:

# Set variables
$serviceName = "<ServiceName>"
$location = "<Location>"
$subscriptionId = "<SubscriptionId>"
$resourceGroupName = "<ResourceGroupName>"
$appName = "<AppName>"

# Build App Service resource ID
$path = "/subscriptions/$subscriptionId/resourceGroups/$resourceGroupName"
$provider = "/providers/Microsoft.Web/sites/$appName"
$resourceId = "$path$provider"

$resourceAttributes = "cloud.provider=azure,cloud.region=$location"
$resourceAttributes += ",cloud.resource_id=$resourceId"
$env:OTEL_SERVICE_NAME = $serviceName
$env:OTEL_RESOURCE_ATTRIBUTES = $resourceAttributes

Aktivera sampling

Sampling minskar telemetriinmatningens volym och kostnad. distributionerna stöder fast procentsats och hastighetsbegränsad sampling för Azure Monitor export. Du kan också anpassa programloggar med beslut om spårningssampling. Samplern bifogar samplingsinformation till exporterade spann så att Application Insights kan justera upplevelseantal. En konceptuell översikt finns i Läs mer om sampling.

Viktigt!

  • Samplingsbeslut gäller för spårningar (intervall).
  • Loggdata kan följa beslut om trace-sampling. Det här beteendet är aktiverat som standard i Microsoft OpenTelemetry Distro för .NET och är inaktiverat som standard i Node.js- och Python-versionerna av Microsoft OpenTelemetry Distro. Se spårningsbaserad sampling för loggar.
  • Mått samplas aldrig.

Anmärkning

Om du ser oväntade avgifter eller höga kostnader i Application Insights kan vanliga orsaker vara hög telemetrivolym, datainmatningstoppar och felkonfigurerad sampling. Information om hur du börjar felsöka finns i Felsöka hög datainmatning i Application Insights.

Konfigurera sampling med hjälp av miljövariabler

Använd standardvariabler för OpenTelemetry-miljön för att välja sampler och ange dess argument där distrot läser dem. Välj en konfigurationsmetod. Du behöver inte konfigurera samma samplingsinställningar i både kod och miljövariabler. Följ den versionsspecifika vägledningen på .NET-flikarna. Mer information om samplernamn finns i OTEL_TRACES_SAMPLER.

För Microsoft.OpenTelemetry 1.1.0 använder du kodexemplen för att ange sampling i UseMicrosoftOpenTelemetry(). Du behöver inte heller ange OTEL_TRACES_SAMPLER eller OTEL_TRACES_SAMPLER_ARG.

I följande exempel anges miljövariablerna för sampling för Node.js och Python. För den .NET-version som behandlas på föregående flikar använder du kodbaserad konfiguration i stället.

Anmärkning

Följande exempel är inte giltiga för Java. För rätt miljövariabler, se föregående Java fliken.

Fast procentsats sampling (~10%)

export OTEL_TRACES_SAMPLER="microsoft.fixed_percentage"
export OTEL_TRACES_SAMPLER_ARG=0.1

Frekvensbegränsad sampling (~1,5 spårningar per sekund)

export OTEL_TRACES_SAMPLER="microsoft.rate_limited"
export OTEL_TRACES_SAMPLER_ARG=1.5

Konfigurera sampling i kod

Anmärkning

Samplerkonfiguration och prioritet beror på språket. I .NET-exemplen anges distroalternativ uttryckligen. Python använder sampler-miljövariablerna. Undvik motstridiga inställningar i kod och miljö för Node.js.

Fast procentsurval

// Import the Microsoft OpenTelemetry Distro and supporting APIs.
using Microsoft.OpenTelemetry;

// Create the application builder.
var builder = WebApplication.CreateBuilder(args);

// Configure the Microsoft OpenTelemetry Distro.
builder.UseMicrosoftOpenTelemetry(options =>
{
  options.Exporters = ExportTarget.AzureMonitor;

  // Select fixed-percentage sampling instead of rate-limited sampling.
  options.AzureMonitor.TracesPerSecond = null;

  // Keep approximately 10% of traces.
  options.AzureMonitor.SamplingRatio = 0.1F;
});

// Build the application with the configured telemetry services.
var app = builder.Build();

// Run the application and its telemetry providers.
app.Run();

Frekvensbegränsad sampling

// Import the Microsoft OpenTelemetry Distro and supporting APIs.
using Microsoft.OpenTelemetry;

// Create the application builder.
var builder = WebApplication.CreateBuilder(args);

// Configure the Microsoft OpenTelemetry Distro.
builder.UseMicrosoftOpenTelemetry(options =>
{
  options.Exporters = ExportTarget.AzureMonitor;

  // Limit sampling to approximately 1.5 traces per second.
  options.AzureMonitor.TracesPerSecond = 1.5;
});

// Build the application with the configured telemetry services.
var app = builder.Build();

// Run the application and its telemetry providers.
app.Run();

Anmärkning

Microsoft OpenTelemetry Distro för .NET har som standard frekvensbegränsad sampling med fem spårningar per sekund. Ställ in TracesPerSecond till null när du väljer sampling med fast procent i kod.

Tips

När du använder sampling med fast procentandel och du inte är säker på vilket värde som ska anges för samplingsfrekvensen börjar du med 5% (0.05). Justera hastigheten baserat på noggrannheten för de åtgärder som visas i fel- och prestandafönstret. All sampling minskar noggrannheten, så aviseringar om OpenTelemetry-mått, som inte påverkas av sampling.

Konfigurera sampling i konfigurationsfilen

Läs dina samplingsinställningar från builder.Configuration och tilldela dem till options.AzureMonitor.SamplingRatio eller options.AzureMonitor.TracesPerSecond när du initierar Microsoft OpenTelemetry Distro. Om du väljer procentsampling anger du TracesPerSecond = nullockså . Verifiera kvoter i intervallet 0 till 1 och icke-negativa gränsvärden för frekvens. Du behöver inte heller sampler-miljövariabler för den här konfigurationen.

Konfigurera spårningsbaserad sampling för loggar

När du aktiverar den här funktionen släpper systemet loggposter som tillhör osamplade spårningar så att loggarna håller sig i linje med spårningssampling.

  • En loggpost är en del av en spårning när den har en giltig SpanId.
  • Om indikeras som inte samplat, ignorerar funktionen loggposten.
  • Loggposter utanspårningskontext påverkas inte.
  • Standardvärdet beror på språket och distributionsversionen. Se de inställningar per språk som följer.

Använd följande inställningar för att konfigurera spårningsbaserad loggsampling:

Distrot möjliggör spårningsbaserad loggsampling som standard. Ställ in EnableTraceBasedLogsSampler på false för att inaktivera den.

// Configure the Microsoft OpenTelemetry Distro.
builder.Services.AddOpenTelemetry().UseMicrosoftOpenTelemetry(options =>
{
  options.Exporters = ExportTarget.AzureMonitor;
});

Live-metriker

Realtidsmått erbjuder en realtidsanalysinstrumentpanel för insikt i applikationsaktivitet och prestanda.

Viktigt!

Se Tilläggsvillkor för användning av Microsoft Azure Preview-funktioner för juridiska villkor som gäller för Azure-funktioner som är i beta, förhandsgranskning eller andra som ännu inte släppts för allmän tillgänglighet.

Den här funktionen aktiveras som standard.

Du kan inaktivera Live Metrics när du konfigurerar Microsoft OpenTelemetry Distro.

// Configure the Microsoft OpenTelemetry Distro.
builder.Services.AddOpenTelemetry().UseMicrosoftOpenTelemetry(options =>
{
  options.Exporters = ExportTarget.AzureMonitor;

  // Disable Live Metrics.
  options.AzureMonitor.EnableLiveMetrics = false;
});

Aktivera autentisering med Microsoft Entra ID (tidigare Azure AD)

Om du vill skapa en säkrare anslutning till Azure aktiverar du Microsoft Entra autentisering. Den här autentiseringsmetoden förhindrar att obehörig telemetri matas in i din prenumeration.

Mer information finns på den dedikerade Microsoft Entra autentiseringssidan som är länkad för varje språk som stöds.

Information om hur du konfigurerar Entra ID autentisering finns i Microsoft Entra-autentisering för Application Insights.

För Microsoft OpenTelemetry Distro anger du options.AzureMonitor.Credential. Se .NET-autentiseringsexemplet.

Offlinelagring och automatiska återförsök

Azure Monitor OpenTelemetry-baserade erbjudanden cachelagrar telemetri när ett program kopplar från Application Insights och försöker skicka det igen under en period på upp till 48 timmar. Rekommendationer för datahantering finns i Exportera och ta bort privata data. Program med hög belastning släpper ibland telemetri av två skäl: överskrider den tillåtna tiden eller överskrider den maximala filstorleken. Vid behov prioriterar produkten de senaste händelserna framför gamla.

Microsoft OpenTelemetry Distro innehåller AzureMonitorExporter, som som standard använder någon av följande platser för offlinelagring (listad i prioritetsordning):

  • Windows

    • %LOCALAPPDATA%\Microsoft\AzureMonitor
    • %TEMP%\Microsoft\AzureMonitor
  • Icke-Windows

    • %TMPDIR%/Microsoft/AzureMonitor
    • /var/tmp/Microsoft/AzureMonitor
    • /tmp/Microsoft/AzureMonitor

Om du vill åsidosätta standardkatalogen anger du options.AzureMonitor.StorageDirectory när du konfigurerar Microsoft OpenTelemetry Distro.

// Import the Microsoft OpenTelemetry Distro and supporting APIs.
using Microsoft.OpenTelemetry;

// Create the application builder.
var builder = WebApplication.CreateBuilder(args);

// Configure the Microsoft OpenTelemetry Distro.
builder.UseMicrosoftOpenTelemetry(options =>
{
  options.Exporters = ExportTarget.AzureMonitor;

    // Store telemetry here when the exporter cannot send it immediately.
    options.AzureMonitor.StorageDirectory = "<StorageDirectory>";
});

// Build the application with the configured telemetry services.
var app = builder.Build();

// Run the application and its telemetry providers.
app.Run();

Om du vill inaktivera den här funktionen anger du options.AzureMonitor.DisableOfflineStorage = true.

Aktivera OTLP-exportören

Du kanske vill aktivera exportör av OpenTelemetry Protocol (OTLP) tillsammans med Azure Monitor Exporter för att skicka telemetrin till två platser.

Anmärkning

OTLP-exportören visas bara för att underlätta. Microsoft har inte officiellt stöd för OTLP-exporteraren eller några komponenter eller tredjepartsupplevelser som kommer efter den.

Microsoft OpenTelemetry Distro innehåller OTLP-export. Konfigurera insamlingsslutpunkten med OTEL_EXPORTER_OTLP_ENDPOINToch välj båda målen:

// Import the Microsoft OpenTelemetry Distro and supporting APIs.
using Microsoft.OpenTelemetry;

// Create the application builder.
var builder = WebApplication.CreateBuilder(args);

// Configure the Microsoft OpenTelemetry Distro.
builder.UseMicrosoftOpenTelemetry(options =>
{
  // Send telemetry to Azure Monitor and the configured OTLP collector.
  options.Exporters = ExportTarget.AzureMonitor | ExportTarget.Otlp;
});

// Build the application with the configured telemetry services.
var app = builder.Build();

// Run the application and its telemetry providers.
app.Run();

OpenTelemetry-konfigurationer

Du kan konfigurera följande inställningar via miljövariabler. Använd fliken för ditt språk och distro.

Miljövariabel beskrivning
APPLICATIONINSIGHTS_CONNECTION_STRING Ange den här variabeln till reťazec pripojenia för Application Insights-resursen.
APPLICATIONINSIGHTS_STATSBEAT_DISABLED Ställ in den här variabeln på true för att välja bort intern måttsamling.
OTEL_RESOURCE_ATTRIBUTES Nyckel/värde-par som ska användas som resursattribut. Mer information om resursattribut finns i Resource SDK-specifikationen.
OTEL_SERVICE_NAME Anger värdet för resursattributet service.name . Om service.name anges även i OTEL_RESOURCE_ATTRIBUTES, OTEL_SERVICE_NAME har företräde.

Redigera URL-frågesträngar

Om du vill redigera URL-frågesträngar inaktiverar du frågesträngssamlingen. Den här inställningen rekommenderas om du anropar Azure lagring med hjälp av en SAS-token.

Microsoft.OpenTelemetry distro innehåller ASP.NET Core- och HttpClient-instrumentation. För program som hanterar känsliga frågesträngar aktiverar du uttryckligen maskering av frågesträngar innan distron initieras:

  • Ange OTEL_DOTNET_EXPERIMENTAL_ASPNETCORE_DISABLE_URL_QUERY_REDACTION till false för ASP.NET Core instrumentation.
  • Ställ in OTEL_DOTNET_EXPERIMENTAL_HTTPCLIENT_DISABLE_URL_QUERY_REDACTION på false för HttpClient-instrumentation.

Om du ställer endera variabeln till true, inaktiveras instrumenteringens maskering av frågesträngar.

Måttexportintervall

Du kan konfigurera måttexportintervallet med hjälp OTEL_METRIC_EXPORT_INTERVAL av miljövariabeln.

export OTEL_METRIC_EXPORT_INTERVAL="60000"

Standardvärdet är 60000 millisekunder (60 sekunder). Den här inställningen styr hur ofta OpenTelemetry SDK exporterar mått.

Tips

Azure Monitor Mått och Azure Monitor Arbetsyta matar in anpassade mått med ett fast intervall på 60 sekunder. Mått som skickas oftare är buffrade och bearbetas en gång varje 60:e sekund. Log Analytics registrerar mått med det intervall som de skickas, vilket kan öka kostnaden med kortare intervall och fördröja synligheten vid längre.

Mer information finns i följande OpenTelemetry-specifikationer:

Felsökning, feedback och support

Tips

Följande avsnitt är tillgängliga i alla OpenTelemetry Distro-artiklar.

Felsökning

OpenTelemetry Återkoppling

Så här ger du feedback:

Support

Välj en flik för det språk du väljer för att identifiera supportalternativ.

Nästa steg