Delen via


Azure Monitor OpenTelemetry configureren

In dit artikel worden configuratie-instellingen voor de Azure Monitor OpenTelemetry-distributie behandeld.

Connection string

Een verbindingsreeks in Application Insights definieert de doellocatie voor het verzenden van telemetriegegevens.

Gebruik een van de volgende drie manieren om de verbindingsreeks te configureren:

  • Toevoegen UseAzureMonitor() aan uw program.cs bestand:

    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();
    
  • Stel een omgevingsvariabele in.

    APPLICATIONINSIGHTS_CONNECTION_STRING=<Your Connection String>
    
  • Voeg de volgende sectie toe aan uw appsettings.json configuratiebestand.

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

Notitie

Als u de verbindingsreeks op meer dan één plaats instelt, houden we ons aan de volgende prioriteit:

  1. Code
  2. Omgevingsvariabele
  3. Configuratiebestand

De naam van de cloudrol en het cloudrolexemplaren instellen

Voor ondersteunde talen detecteert De Azure Monitor OpenTelemetry Distro automatisch de resourcecontext en biedt standaardwaarden voor de eigenschappen van de cloudrolnaam en de eigenschappen van het cloudrolexemplaren van uw onderdeel. Het is echter mogelijk dat u de standaardwaarden wilt overschrijven naar iets dat zinvol is voor uw team. De naamwaarde van de cloudrol wordt weergegeven op het toepassingsoverzicht als de naam onder een knooppunt.

Stel de naam van de cloudrol en het cloudrolexemplaren in via resourcekenmerken . Cloudrolnaam gebruikt service.namespace en service.name kenmerken, hoewel deze terugvalt op service.name als service.namespace deze niet is ingesteld. Cloud Role Instance maakt gebruik van de service.instance.id kenmerkwaarde. Zie OpenTelemetry Semantic Conventions (OpenTelemetry Semantic Conventions) voor informatie over standaardkenmerken voor resources.

// 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();

Steekproeven inschakelen

Mogelijk wilt u steekproeven inschakelen om uw gegevensopnamevolume te verminderen, waardoor uw kosten worden verminderd. Azure Monitor biedt een aangepaste sampler met vaste frequentie waarmee gebeurtenissen worden gevuld met een steekproefverhouding, waarnaar Application Insights wordt geconverteerd ItemCount. De sampler met vaste frequentie zorgt voor nauwkeurige ervaringen en het aantal gebeurtenissen. De sampler is ontworpen om uw traceringen over services te behouden en is interoperabel met oudere Application Insights Software Development Kits (SDK's). Zie Meer informatie over steekproeven voor meer informatie.

Notitie

Metrische gegevens en logboeken worden niet beïnvloed door steekproeven.

De sampler verwacht een steekproeffrequentie tussen 0 en 1. Een snelheid van 0,1 betekent dat ongeveer 10% van uw traceringen worden verzonden.

// 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();

Tip

Wanneer u steekproeven met vaste snelheid/percentage gebruikt en u niet zeker weet wat u moet instellen voor de steekproeffrequentie, begint u bij 5% (bijvoorbeeld 0,05 steekproefverhouding) en past u de snelheid aan op basis van de nauwkeurigheid van de bewerkingen die worden weergegeven in de fouten en prestatievensters. Een hogere snelheid resulteert in het algemeen in een hogere nauwkeurigheid. Elke steekproef heeft echter invloed op de nauwkeurigheid, dus we raden u aan waarschuwingen te geven over metrische gegevens van OpenTelemetry, die niet worden beïnvloed door steekproeven.

Live metrische gegevens

Live metrics biedt een realtime analysedashboard voor inzicht in de activiteit en prestaties van toepassingen.

Belangrijk

Raadpleeg de Aanvullende voorwaarden voor Microsoft Azure-previews voor juridische voorwaarden die van toepassing zijn op Azure-functies die in bèta of preview zijn of die anders nog niet algemeen beschikbaar zijn.

Deze functie is standaard ingeschakeld.

Gebruikers kunnen Live Metrics uitschakelen bij het configureren van de distributie.

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

Microsoft Entra ID-verificatie (voorheen Azure AD) inschakelen

U kunt Microsoft Entra-verificatie inschakelen voor een veiligere verbinding met Azure, waardoor onbevoegde telemetrie niet kan worden opgenomen in uw abonnement.

We ondersteunen de referentieklassen van Azure Identity.

  • We raden u aan DefaultAzureCredential voor lokale ontwikkeling.
  • U wordt aangeraden ManagedIdentityCredential voor door het systeem toegewezen en door de gebruiker toegewezen beheerde identiteiten.
    • Gebruik voor door het systeem toegewezen de standaardconstructor zonder parameters.
    • Geef voor door de gebruiker toegewezen de client-id op voor de constructor.
  • We raden u aan ClientSecretCredential voor service-principals.
    • Geef de tenant-id, client-id en clientgeheim op voor de constructor.
  1. Installeer het nieuwste Azure.Identity-pakket :

    dotnet add package Azure.Identity
    
  2. Geef de gewenste referentieklasse op:

    // 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();
    

Offlineopslag en automatische nieuwe pogingen

Om de betrouwbaarheid en tolerantie te verbeteren, schrijven aanbiedingen op basis van Azure Monitor OpenTelemetry standaard naar offline/lokale opslag wanneer een toepassing de verbinding met Application Insights verliest. Hiermee wordt de telemetrie van de toepassing op schijf opgeslagen en wordt er periodiek gedurende maximaal 48 uur opnieuw naartoe verzonden. In toepassingen met hoge belasting wordt telemetrie af en toe om twee redenen verwijderd. Ten eerste, wanneer de toegestane tijd wordt overschreden en ten tweede, wanneer de maximale bestandsgrootte wordt overschreden of de SDK geen mogelijkheid heeft om het bestand te wissen. Als we een keuze moeten maken, slaat het product recentere gebeurtenissen op boven oude gebeurtenissen. Meer informatie

Het Distro-pakket bevat de AzureMonitorExporter, die standaard een van de volgende locaties gebruikt voor offlineopslag (vermeld in volgorde van prioriteit):

  • Windows
    • %LOCALAPPDATA%\Microsoft\AzureMonitor
    • %TEMP%\Microsoft\AzureMonitor
  • Niet-Windows
    • %TMPDIR%/Microsoft/AzureMonitor
    • /var/tmp/Microsoft/AzureMonitor
    • /tmp/Microsoft/AzureMonitor

Als u de standaardmap wilt overschrijven, moet u instellen 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();

Als u deze functie wilt uitschakelen, moet u instellen AzureMonitorOptions.DisableOfflineStorage = true.

De OTLP-exporteur inschakelen

Mogelijk wilt u de OTLP-exporteur (OpenTelemetry Protocol) naast de Azure Monitor-exporteur inschakelen om uw telemetrie naar twee locaties te verzenden.

Notitie

De OTLP-exporteur wordt alleen voor het gemak weergegeven. We ondersteunen de OTLP-exporteur of onderdelen of ervaringen van derden daar niet officieel mee.

  1. Installeer het pakket OpenTelemetry.Exporter.OpenTelemetryProtocol in uw project.

    dotnet add package OpenTelemetry.Exporter.OpenTelemetryProtocol
    
  2. Voeg het volgende codefragment toe. In dit voorbeeld wordt ervan uitgegaan dat u een OpenTelemetry Collector hebt met een OTLP-ontvanger die wordt uitgevoerd. Zie het voorbeeld op GitHub voor meer informatie.

    // 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-configuraties

De volgende OpenTelemetry-configuraties zijn toegankelijk via omgevingsvariabelen tijdens het gebruik van de Azure Monitor OpenTelemetry Distros.

Omgevingsvariabele Beschrijving
APPLICATIONINSIGHTS_CONNECTION_STRING Stel deze in op de verbindingsreeks voor uw Application Insights-resource.
APPLICATIONINSIGHTS_STATSBEAT_DISABLED Stel deze in om ervoor te true kiezen om geen interne verzameling met metrische gegevens te verzamelen.
OTEL_RESOURCE_ATTRIBUTES Sleutel-waardeparen die moeten worden gebruikt als resourcekenmerken. Zie de resource-SDK-specificatie voor meer informatie over resourcekenmerken.
OTEL_SERVICE_NAME Hiermee stelt u de waarde van het service.name resourcekenmerk in. Als service.name er ook in wordt opgegeven OTEL_RESOURCE_ATTRIBUTES, heeft dit OTEL_SERVICE_NAME voorrang.