Sdílet prostřednictvím


Konfigurace OpenTelemetry služby Azure Monitor

Tento článek popisuje nastavení konfigurace pro distribuci OpenTelemetry služby Azure Monitor.

Connection string

Připojovací řetězec v Application Insights definuje cílové umístění pro odesílání telemetrických dat.

Ke konfiguraci připojovací řetězec použijte jeden z následujících tří způsobů:

  • Přidejte UseAzureMonitor() do program.cs souboru:

    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();
    
  • Nastavte proměnnou prostředí.

    APPLICATIONINSIGHTS_CONNECTION_STRING=<Your Connection String>
    
  • Do konfiguračního souboru přidejte následující část appsettings.json .

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

Poznámka:

Pokud nastavíte připojovací řetězec na více než jednom místě, dodržujeme následující prioritu:

  1. Kód
  2. Proměnná prostředí
  3. Konfigurační soubor

Nastavení názvu cloudové role a instance cloudové role

V případě podporovaných jazyků distro Služby Azure Monitor OpenTelemetry automaticky rozpozná kontext prostředku a poskytuje výchozí hodnoty pro název cloudové role a vlastnosti instance cloudové role vaší komponenty. Můžete ale chtít přepsat výchozí hodnoty na něco, co dává vašemu týmu smysl. Hodnota názvu cloudové role se zobrazí v mapě aplikace jako název pod uzlem.

Nastavte název cloudové role a instanci cloudové role prostřednictvím atributů prostředků . Název cloudové role používá service.namespace a service.name atributy, i když se vrátí zpět, service.name pokud service.namespace není nastavený. Instance cloudové role používá hodnotu atributu service.instance.id . Informace o standardních atributech pro prostředky naleznete v tématu sémantické konvence OpenTelemetry.

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

Povolení vzorkování

Můžete chtít povolit vzorkování, abyste snížili objem příjmu dat, což snižuje náklady. Azure Monitor poskytuje vlastní vzorkovací nástroj s pevnou rychlostí , který naplní události poměrem vzorkování, na ItemCountkterý Application Insights převede . Vzorkovník s pevnou rychlostí zajišťuje přesné zkušenosti a počty událostí. Sampler je navržený tak, aby zachoval trasování napříč službami a je interoperabilní se staršími sadami Application Insights Software Development Kit (SDK). Další informace najdete v tématu Další informace o vzorkování.

Poznámka:

Na metriky a protokoly nemá vzorkování vliv.

Vzorek očekává vzorkovací frekvenci mezi 0 a 1 včetně. Rychlost 0,1 znamená, že se odesílá přibližně 10 % trasování.

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

Pokud používáte vzorkování s pevnou rychlostí nebo procentem a nevíte, jak nastavit vzorkovací frekvenci, začněte na 5 % (tj. poměr vzorkování 0,05) a upravte rychlost na základě přesnosti operací zobrazených v podoknech selhání a výkonu. Vyšší míra obecně vede k vyšší přesnosti. Vzorkování ANY ale bude mít vliv na přesnost, takže doporučujeme upozorňovat na metriky OpenTelemetry, které nejsou ovlivněné vzorkováním.

Živé metriky

Živé metriky poskytují řídicí panel analýzy v reálném čase pro přehled o aktivitě a výkonu aplikací.

Důležité

Právní podmínky, které platí pro funkce Azure, které jsou ve verzi beta, verzi Preview nebo které zatím nejsou veřejně dostupné, najdete v Dodatečných podmínkách použití pro Microsoft Azure verze Preview.

Tato funkce je ve výchozím nastavení povolena.

Uživatelé můžou při konfiguraci distribuce zakázat živé metriky.

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

Povolení ověřování Microsoft Entra ID (dříve Azure AD)

Možná budete chtít povolit ověřování Microsoft Entra pro bezpečnější připojení k Azure, které brání neoprávněné telemetrii v ingestování do vašeho předplatného.

Podporujeme třídy přihlašovacích údajů poskytované službou Azure Identity.

  • DefaultAzureCredential Doporučujeme pro místní vývoj.
  • Doporučujeme ManagedIdentityCredential pro spravované identity přiřazené systémem a přiřazené uživatelem.
    • Pro přiřazení systému použijte výchozí konstruktor bez parametrů.
    • Pro uživatelem přiřazené zadejte ID klienta konstruktoru.
  • Doporučujeme ClientSecretCredential pro instanční objekty.
    • Do konstruktoru zadejte ID tenanta, ID klienta a tajný klíč klienta.
  1. Nainstalujte nejnovější balíček Azure.Identity :

    dotnet add package Azure.Identity
    
  2. Zadejte požadovanou třídu přihlašovacích údajů:

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

Offline úložiště a automatické opakování

Aby se zlepšila spolehlivost a odolnost, zapisují nabídky založené na Azure Monitoru OpenTelemetry ve výchozím nastavení do offline nebo místního úložiště, když aplikace ztratí připojení ke službě Application Insights. Ukládá telemetrii aplikace na disk a pravidelně se ji pokouší odeslat až po dobu 48 hodin. V aplikacích s vysokým zatížením se telemetrie občas zahodí ze dvou důvodů. Za prvé, když je překročen povolený čas a druhý, když je překročena maximální velikost souboru nebo sada SDK nemá příležitost soubor vymazat. Pokud si chceme vybrat, produkt uloží novější události oproti starým událostem. Další informace

Balíček Distro obsahuje AzureMonitorExporter, který ve výchozím nastavení používá pro offline úložiště jedno z následujících umístění (v pořadí podle priority):

  • Windows:
    • %LOCALAPPDATA%\Microsoft\AzureMonitor
    • %TEMP%\Microsoft\AzureMonitor
  • Jiné než Windows
    • %TMPDIR%/Microsoft/AzureMonitor
    • /var/tmp/Microsoft/AzureMonitor
    • /tmp/Microsoft/AzureMonitor

Pokud chcete přepsat výchozí adresář, měli byste nastavit 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();

Chcete-li tuto funkci zakázat, měli byste nastavit AzureMonitorOptions.DisableOfflineStorage = true.

Povolení vývozce OTLP

Možná budete chtít povolit exportér openTelemetry Protocol (OTLP) společně s exportérem služby Azure Monitor, aby odesílal telemetrická data do dvou umístění.

Poznámka:

Vývozce OTLP se zobrazuje pouze pro usnadnění. Oficiálně nepodporujeme vývozce OTLP ani žádné komponenty ani zkušenosti třetích stran.

  1. Do projektu nainstalujte balíček OpenTelemetry.Exporter.OpenTelemetryProtocol.

    dotnet add package OpenTelemetry.Exporter.OpenTelemetryProtocol
    
  2. Přidejte následující fragment kódu. Tento příklad předpokládá, že máte kolektor OpenTelemetry se spuštěným přijímačem OTLP. Podrobnosti najdete v příkladu na GitHubu.

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

Konfigurace OpenTelemetry

K následujícím konfiguracím OpenTelemetry je možné přistupovat prostřednictvím proměnných prostředí při použití distros openTelemetry služby Azure Monitor.

Proměnná prostředí Popis
APPLICATIONINSIGHTS_CONNECTION_STRING Nastavte ho na připojovací řetězec prostředku Application Insights.
APPLICATIONINSIGHTS_STATSBEAT_DISABLED Nastavte ji tak, aby true se odhlásila z interní kolekce metrik.
OTEL_RESOURCE_ATTRIBUTES Páry klíč-hodnota, které se mají použít jako atributy prostředků. Další informace o atributech prostředků najdete ve specifikaci sady Sdk prostředků.
OTEL_SERVICE_NAME Nastaví hodnotu atributu service.name prostředku. Pokud service.name je také uveden v OTEL_RESOURCE_ATTRIBUTES, pak OTEL_SERVICE_NAME má přednost.

Redact URL Query Strings

Pokud chcete řetězce dotazu adresy URL redactovat, vypněte kolekci řetězců dotazů. Toto nastavení doporučujeme, pokud voláte úložiště Azure pomocí tokenu SAS.

Při použití balíčku distribuce Azure.Monitor.OpenTelemetry.AspNetCore jsou zahrnuté jak knihovny ASP.NET Core, tak knihovny HttpClient Instrumentation. Náš balíček distribuce nastaví ve výchozím nastavení redaction řetězce dotazu.

Chcete-li toto chování změnit, musíte nastavit proměnnou prostředí na hodnotu true nebo false.

  • ASP.NET základní instrumentace: OTEL_DOTNET_EXPERIMENTAL_ASPNETCORE_DISABLE_URL_QUERY_REDACTION Ve výchozím nastavení je redakce řetězce dotazu zakázaná. Pokud chcete tuto proměnnou prostředí povolit, nastavte ji na false.
  • Instrumentace klienta HTTP: OTEL_DOTNET_EXPERIMENTAL_HTTPCLIENT_DISABLE_URL_QUERY_REDACTION Ve výchozím nastavení je akce řetězce dotazu zakázaná. Pokud chcete tuto proměnnou prostředí povolit, nastavte ji na false.