Delen via


Azure Monitor OpenTelemetry configureren

In deze handleiding wordt uitgelegd hoe u OpenTelemetry (OTel) configureert in Azure Monitor Application Insights met behulp van de Distributie van Azure Monitor OpenTelemetry. De juiste configuratie zorgt voor consistente verzameling van telemetriegegevens in .NET-, Java-, Node.js- en Python-toepassingen, zodat u betrouwbaardere bewaking en diagnostische gegevens kunt uitvoeren.

verbindingsstring

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 cloudrolnaam en de cloudrolexemplaar instellen

Voor ondersteunde talen detecteert de Azure Monitor OpenTelemetry Distro automatisch de resourcecontext en voorziet van standaardwaarden voor de cloudrolnaam en het cloudrolexemplaar van uw component. 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 cloudrolexemplaar in met resourcekenmerken. Cloud-rolnaam gebruikt service.namespace en service.name attributen, hoewel het terugvalt op service.name als service.namespace niet is ingesteld. Cloud Role Instance maakt gebruik van de service.instance.id kenmerkwaarde. Zie 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(resourceAttributes));

// 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 steekproefnemer met een vaste frequentie, die gebeurtenissen vult met een steekproefverhouding, waarna Application Insights dit omzet naar 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. Als u onverwachte kosten of hoge kosten in Application Insights ziet, kan deze handleiding u helpen. Het behandelt veelvoorkomende oorzaken, zoals een hoog telemetrievolume, pieken in gegevensopname en onjuist geconfigureerde steekproeven. Het is vooral handig als u problemen aan het oplossen bent met betrekking tot kostenpieken; telemetrievolumes; het niet werken van steekproeven; gegevenslimieten; hoge gegevensinname; of onverwachte facturering. Zie Problemen met hoge gegevensopname in Application Insights oplossen om aan de slag te gaan.

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

Aanbeveling

Wanneer u steekproeven met vaste snelheid/percentage gebruikt en u niet zeker weet wat u moet instellen als de steekproeffrequentie, begint u bij 5%. (0,05 steekproefverhouding) Pas 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 is echter van 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 statistieken

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.

Zie onze speciale Microsoft Entra-verificatiepagina gekoppeld voor elke ondersteunde taal voor meer informatie.

Zie Microsoft Entra-verificatie voor Application Insights voor meer informatie over het configureren van Entra-id-verificatie

Offlineopslag en automatische nieuwe pogingen

Azure Monitor OpenTelemetry-gebaseerde diensten cacheren telemetriegegevens wanneer een toepassing de verbinding met Application Insights verbreekt en worden pogingen voor maximaal 48 uur herhaald om de gegevens te verzenden. Zie Privégegevens exporteren en verwijderen voor aanbevelingen voor gegevensverwerking. Toepassingen met hoge belasting laten af en toe telemetrie vallen om twee redenen: het overschrijden van de toegestane tijd of het overschrijden van de maximale bestandsgrootte. Indien nodig geeft het product prioriteit aan recente gebeurtenissen ten opzichte van oude gebeurtenissen.

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

  • Ramen
    • %LOCALAPPDATA%\Microsoft\AzureMonitor
    • %TEMP%\Microsoft\AzureMonitor
  • Anders dan Windows
    • %TMPDIR%/Microsoft/AzureMonitor
    • /var/tmp/Microsoft/AzureMonitor
    • /tmp/Microsoft/AzureMonitor

Als u de standaardmap wilt overschrijven, moet u AzureMonitorOptions.StorageDirectory definiëren.

// 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 stroomafwaarts daarvan niet officieel.

  1. Installeer het pakket OpenTelemetry.Exporter.OpenTelemetryProtocol in uw project.
    dotnet add package OpenTelemetry.Exporter.OpenTelemetryProtocol
  1. Voeg het volgende codefragment toe. In dit voorbeeld wordt ervan uitgegaan dat u een OpenTelemetry Collector hebt met een OTLP-ontvanger die actief is. 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 op true om niet deel te nemen aan de interne verzameling van metrische gegevens.
OTEL_RESOURCE_ATTRIBUTES Sleutel-waardeparen die als attributen van bronnen worden gebruikt. 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 ook in OTEL_RESOURCE_ATTRIBUTES wordt opgegeven, heeft OTEL_SERVICE_NAME voorrang.

URL-queryreeksen redigeren

Als u url-queryreeksen wilt redacteren, schakelt u de verzameling van queryreeksen uit. We raden deze instelling aan als u Azure Storage aanroept met behulp van een SAS-token.

Wanneer u het distro-pakket Azure.Monitor.OpenTelemetry.AspNetCore gebruikt, worden de instrumentatiebibliotheken voor zowel ASP.NET Core als HttpClient opgenomen. De standaardinstelling van ons distributiepakket schakelt de anonimisering van queryreeksen uit.

Als u dit gedrag wilt wijzigen, moet u een omgevingsvariabele instellen op of truefalse.

  • ASP.NET Core Instrumentation: OTEL_DOTNET_EXPERIMENTAL_ASPNETCORE_DISABLE_URL_QUERY_REDACTION Query String Redaction is standaard uitgeschakeld. Als u deze omgevingsvariabele wilt inschakelen, stelt u deze omgevingsvariabele in op false.
  • Http Client Instrumentation: OTEL_DOTNET_EXPERIMENTAL_HTTPCLIENT_DISABLE_URL_QUERY_REDACTION Query String Redaction is standaard uitgeschakeld. Als u deze omgevingsvariabele wilt inschakelen, stelt u deze omgevingsvariabele in op false.

Interval voor export van metrische gegevens

U kunt het exportinterval voor metrische gegevens configureren met behulp van de OTEL_METRIC_EXPORT_INTERVAL omgevingsvariabele.

OTEL_METRIC_EXPORT_INTERVAL=60000

De standaardwaarde is 60000 milliseconden (60 seconden). Met deze instelling bepaalt u hoe vaak de OpenTelemetry SDK metrische gegevens exporteert.

Aanbeveling

Azure Monitor Metrics en Azure Monitor Workspace registreren aangepaste metrische gegevens met een vast interval van 60 seconden. Metrische gegevens die vaker worden verzonden, worden elke 60 seconden gebufferd en verwerkt. Log Analytics registreert metrics op het interval waarop ze worden verzonden, wat de kosten kan verhogen bij kortere intervallen en de zichtbaarheid kan vertragen bij langere intervallen.

Raadpleeg de volgende OpenTelemetry-specificaties ter referentie: