Dela via


Konfigurera Azure Monitor OpenTelemetry

Den här artikeln beskriver konfigurationsinställningar för Azure Monitor OpenTelemetry-distributionen.

Connection string

En anslutningssträng i Application Insights definierar målplatsen för att skicka telemetridata.

Använd något av följande tre sätt att konfigurera anslutningssträng:

  • Lägg till UseAzureMonitor() i program.cs filen:

    var builder = WebApplication.CreateBuilder(args);
    
    // Add the OpenTelemetry telemetry service to the application.
    // This service will collect and send telemetry data to Azure Monitor.
    builder.Services.AddOpenTelemetry().UseAzureMonitor(options => {
        options.ConnectionString = "<Your Connection String>";
    });
    
    var app = builder.Build();
    
    app.Run();
    
  • Ange en miljövariabel.

    APPLICATIONINSIGHTS_CONNECTION_STRING=<Your Connection String>
    
  • Lägg till följande avsnitt i konfigurationsfilen appsettings.json .

    {
      "AzureMonitor": {
          "ConnectionString": "<Your Connection String>"
      }
    }
    

Kommentar

Om du anger anslutningssträng på fler än en plats följer vi följande prioritet:

  1. Kod
  2. Miljövariabel
  3. Konfigurationsfil

Ange namnet på molnrollen och molnrollinstansen

För språk som stöds identifierar Azure Monitor OpenTelemetry Distro automatiskt resurskontexten och tillhandahåller standardvärden för egenskaperna Cloud Role Name och Cloud Role Instance för din komponent. Men du kanske vill åsidosätta standardvärdena till något som passar ditt team. Värdet för molnrollens namn visas på programkartan som namnet under en nod.

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

// Setting role name and role instance

// Create a dictionary of resource attributes.
var resourceAttributes = new Dictionary<string, object> {
    { "service.name", "my-service" },
    { "service.namespace", "my-namespace" },
    { "service.instance.id", "my-instance" }};

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

// Add the OpenTelemetry telemetry service to the application.
// This service will collect and send telemetry data to Azure Monitor.
builder.Services.AddOpenTelemetry()
    .UseAzureMonitor()
    // Configure the ResourceBuilder to add the custom resource attributes to all signals.
    // Custom resource attributes should be added AFTER AzureMonitor to override the default ResourceDetectors.
    .ConfigureResource(resourceBuilder => resourceBuilder.AddAttributes(_testResourceAttributes));

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

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

Aktivera sampling

Du kanske vill aktivera sampling för att minska datainmatningsvolymen, vilket minskar kostnaden. Azure Monitor tillhandahåller ett anpassat exempel på fast hastighet som fyller händelser med ett samplingsförhållande som Application Insights konverterar till ItemCount. Sampeln med fast hastighet säkerställer korrekta upplevelser och händelseantal. Exempelprogrammet är utformat för att bevara dina spårningar mellan tjänster, och det är samverkande med äldre Application Insights Software Development Kits (SDK:er). Mer information finns i Läs mer om sampling.

Kommentar

Mått och loggar påverkas inte av sampling.

Provtagaren förväntar sig en exempelfrekvens på mellan 0 och 1 inklusive. En hastighet på 0,1 innebär att cirka 10 % av dina spårningar skickas.

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

// Add the OpenTelemetry telemetry service to the application.
// This service will collect and send telemetry data to Azure Monitor.
builder.Services.AddOpenTelemetry().UseAzureMonitor(options =>
{
    // Set the sampling ratio to 10%. This means that 10% of all traces will be sampled and sent to Azure Monitor.
    options.SamplingRatio = 0.1F;
});

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

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

Dricks

När du använder sampling med fast hastighet/procent och du inte är säker på vad du ska ange samplingsfrekvensen som, börjar du med 5 % (dvs. 0,05 samplingsförhållande) och justerar frekvensen baserat på noggrannheten för de åtgärder som visas i fel- och prestandarutorna. En högre frekvens resulterar vanligtvis i högre noggrannhet. All sampling påverkar dock noggrannheten, så vi rekommenderar aviseringar om OpenTelemetry-mått, som inte påverkas av sampling.

Live-mått

Live-mått ger en instrumentpanel för realtidsanalys för insikt i programaktivitet och prestanda.

Viktigt!

Juridiska villkor för Azure-funktioner i betaversion, förhandsversion eller som av någon annan anledning inte har gjorts allmänt tillgängliga ännu finns i kompletterande användningsvillkor för Microsoft Azure-förhandsversioner.

Den här funktionen aktiveras som standard.

Användare kan inaktivera livemått när de konfigurerar distributionen.

builder.Services.AddOpenTelemetry().UseAzureMonitor(options => {
	// Disable the Live Metrics feature.
    options.EnableLiveMetrics = false;
});

Aktivera autentisering med Microsoft Entra-ID (tidigare Azure AD)

Du kanske vill aktivera Microsoft Entra-autentisering för en säkrare anslutning till Azure, vilket förhindrar att obehörig telemetri matas in i din prenumeration.

Vi stöder de autentiseringsklasser som tillhandahålls av Azure Identity.

  • Vi rekommenderar DefaultAzureCredential för lokal utveckling.
  • Vi rekommenderar ManagedIdentityCredential systemtilldelade och användartilldelade hanterade identiteter.
    • För systemtilldelade använder du standardkonstruktorn utan parametrar.
    • För användartilldelad anger du klient-ID:t till konstruktorn.
  • Vi rekommenderar ClientSecretCredential för tjänstens huvudnamn.
    • Ange klient-ID, klient-ID och klienthemlighet till konstruktorn.
  1. Installera det senaste Azure.Identity-paketet :

    dotnet add package Azure.Identity
    
  2. Ange önskad klass för autentiseringsuppgifter:

    // Create a new ASP.NET Core web application builder.    
    var builder = WebApplication.CreateBuilder(args);
    
    // Add the OpenTelemetry telemetry service to the application.
    // This service will collect and send telemetry data to Azure Monitor.
    builder.Services.AddOpenTelemetry().UseAzureMonitor(options => {
        // Set the Azure Monitor credential to the DefaultAzureCredential.
        // This credential will use the Azure identity of the current user or
        // the service principal that the application is running as to authenticate
        // to Azure Monitor.
        options.Credential = new DefaultAzureCredential();
    });
    
    // Build the ASP.NET Core web application.
    var app = builder.Build();
    
    // Start the ASP.NET Core web application.
    app.Run();
    

Offlinelagring och automatiska återförsök

För att förbättra tillförlitligheten och motståndskraften skriver Azure Monitor OpenTelemetry-baserade erbjudanden som standard till offline/lokal lagring när ett program förlorar sin anslutning till Application Insights. Programmets telemetri sparas på disken och försöker regelbundet skicka den igen i upp till 48 timmar. I program med hög belastning tas telemetri ibland bort av två skäl. Först när den tillåtna tiden överskrids, och för det andra, när den maximala filstorleken överskrids eller SDK:t inte har möjlighet att rensa filen. Om vi behöver välja sparar produkten nyare händelser jämfört med gamla. Läs mer

Distributionspaketet 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 bör du ange AzureMonitorOptions.StorageDirectory.

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

// Add the OpenTelemetry telemetry service to the application.
// This service will collect and send telemetry data to Azure Monitor.
builder.Services.AddOpenTelemetry().UseAzureMonitor(options =>
{
    // Set the Azure Monitor storage directory to "C:\\SomeDirectory".
    // This is the directory where the OpenTelemetry SDK will store any telemetry data that cannot be sent to Azure Monitor immediately.
    options.StorageDirectory = "C:\\SomeDirectory";
});

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

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

Om du vill inaktivera den här funktionen bör du ange AzureMonitorOptions.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.

Kommentar

OTLP-exportören visas endast för enkelhetens skull. Vi har inte officiellt stöd för OTLP-exportören eller komponenter eller tredjepartsupplevelser nedströms.

  1. Installera paketet OpenTelemetry.Exporter.OpenTelemetryProtocol i projektet.

    dotnet add package OpenTelemetry.Exporter.OpenTelemetryProtocol
    
  2. Lägg till följande kodfragment. Det här exemplet förutsätter att du har en OpenTelemetry Collector med en OTLP-mottagare som körs. Mer information finns i exemplet på GitHub.

    // Create a new ASP.NET Core web application builder.
    var builder = WebApplication.CreateBuilder(args);
    
    // Add the OpenTelemetry telemetry service to the application.
    // This service will collect and send telemetry data to Azure Monitor.
    builder.Services.AddOpenTelemetry().UseAzureMonitor();
    
    // Add the OpenTelemetry OTLP exporter to the application.
    // This exporter will send telemetry data to an OTLP receiver, such as Prometheus
    builder.Services.AddOpenTelemetry().WithTracing(builder => builder.AddOtlpExporter());
    builder.Services.AddOpenTelemetry().WithMetrics(builder => builder.AddOtlpExporter());
    
    // Build the ASP.NET Core web application.
    var app = builder.Build();
    
    // Start the ASP.NET Core web application.
    app.Run();
    

OpenTelemetry-konfigurationer

Följande OpenTelemetry-konfigurationer kan nås via miljövariabler när du använder Azure Monitor OpenTelemetry Distros.

Miljövariabel beskrivning
APPLICATIONINSIGHTS_CONNECTION_STRING Ange den till anslutningssträng för application insights-resursen.
APPLICATIONINSIGHTS_STATSBEAT_DISABLED Ställ in den på true om du vill avregistrera dig från 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 också i OTEL_RESOURCE_ATTRIBUTEShar du OTEL_SERVICE_NAME företräde.

Redigera URL-frågesträngar

Om du vill redigera URL-frågesträngar inaktiverar du frågesträngssamlingen. Vi rekommenderar den här inställningen om du anropar Azure Storage med en SAS-token.

När du använder distributionspaketet Azure.Monitor.OpenTelemetry.AspNetCore ingår både biblioteken ASP.NET Core och HttpClient Instrumentation. Vårt distributionspaket ställer in frågesträngsredigering som standard.

Om du vill ändra det här beteendet måste du ange en miljövariabel till antingen "true" eller "false".

  • ASP.NET Core Instrumentation: OTEL_DOTNET_EXPERIMENTAL_ASPNETCORE_DISABLE_URL_QUERY_REDACTION Frågesträngsredigering är inaktiverad som standard. Om du vill aktivera anger du den här miljövariabeln till "false".
  • Http-klientinstrumentation: OTEL_DOTNET_EXPERIMENTAL_HTTPCLIENT_DISABLE_URL_QUERY_REDACTION Frågesträngsredigering är inaktiverad som standard. Om du vill aktivera anger du den här miljövariabeln till "false".