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 aplikaci Přehledy definuje cílové umístění pro odesílání telemetrických dat a zajišťuje, že dosáhne příslušného prostředku pro monitorování a analýzu.

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

  • Přidejte UseAzureMonitor() do spuštění aplikace ve třídě program.cs .

    // 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 => {
        options.ConnectionString = "<Your Connection String>";
    });
    
    // Build the ASP.NET Core web application.
    var app = builder.Build();
    
    // Start the ASP.NET Core web application.    
    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 OpenTelemetry tracer provider to add the resource attributes to all traces.
builder.Services.ConfigureOpenTelemetryTracerProvider((sp, builder) => 
    builder.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();

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 který aplikace Přehledy převede ItemCount. 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 Přehledy 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(o =>
{
    // Set the sampling ratio to 10%. This means that 10% of all traces will be sampled and sent to Azure Monitor.
    o.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 ostřích 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.

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, nabídky založené na Azure Monitoru OpenTelemetry ve výchozím nastavení zapisují do offline nebo místního úložiště, když aplikace ztratí připojení ke službě Application Přehledy. 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 pro prostředek Přehledy aplikace.
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.

Nejčastější dotazy

Tato část obsahuje odpovědi na běžné otázky.

Co je OpenTelemetry?

Jedná se o nový opensourcový standard pro pozorovatelnost. Další informace najdete v OpenTelemetry.

Proč Microsoft Azure Monitor investuje do OpenTelemetry?

Microsoft je mezi největšími přispěvateli OpenTelemetry.

Návrhy klíčových hodnot OpenTelemetry jsou v tom, že jsou neutrální od dodavatele a poskytují konzistentní rozhraní API a sady SDK napříč jazyky.

V průběhu času věříme, že OpenTelemetry umožní zákazníkům služby Azure Monitor sledovat aplikace napsané v jazycích nad rámec našich podporovaných jazyků. Rozšiřuje také typy dat, které můžete shromažďovat prostřednictvím bohaté sady knihoven instrumentace. Sady OpenTelemetry SDK navíc mají tendenci být výkonnější ve velkém měřítku než jejich předchůdci, sada Application Přehledy SDK.

Nakonec OpenTelemetry odpovídá strategii Microsoftu pro přijetí opensourcových řešení.

Jaký je stav OpenTelemetry?

Viz stav OpenTelemetry.

Co je distro "Azure Monitor OpenTelemetry"?

Můžete si ho představit jako tenký obal, který spojuje všechny komponenty OpenTelemetry pro prvotřídní prostředí v Azure. Tento obálka se také nazývá distribuce v OpenTelemetry.

Proč mám používat distro "Azure Monitor OpenTelemetry"?

Použití opentelemetry Azure Monitoru přes nativní OpenTelemetry od komunity má několik výhod:

V duchu OpenTelemetry jsme navrhli distribuci tak, aby byla otevřená a rozšiřitelná. Můžete například přidat:

  • Vývozce protokolu OTLP (OpenTelemetry Protocol) a odeslání do druhého místa určení současně
  • Jiné knihovny instrumentace, které nejsou součástí distribuce

Vzhledem k tomu, že distro poskytuje distribuci OpenTelemetry, distro podporuje cokoli, co podporuje OpenTelemetry. Pokud je OpenTelemetry podporuje, můžete například přidat další procesory telemetrie, exportéry nebo knihovny instrumentace.

Poznámka:

Distribuce nastaví vzorkovník na vlastní vzorkovník s pevnou rychlostí pro aplikační Přehledy. Můžete to změnit na jiný sampler, ale můžete to udělat tak, že zakážete některé zahrnuté funkce distribuce. Další informace o podporovaném sampleru najdete v části Povolení vzorkování v části Konfigurace OpenTelemetry služby Azure Monitor.

Pro jazyky bez podporovaného samostatného exportéru OpenTelemetry je jediným aktuálně podporovaným způsobem použití OpenTelemetry se službou Azure Monitor. Pro jazyky s podporovaným samostatným exportérem OpenTelemetry máte možnost použít distro služby Azure Monitor OpenTelemetry nebo příslušný samostatný exportér OpenTelemetry v závislosti na vašem scénáři telemetrie. Další informace najdete v tématu Kdy mám použít exportér OpenTelemetry služby Azure Monitor?.

Jak můžu otestovat distribuci OpenTelemetry služby Azure Monitor?

Projděte si naši dokumentaci k povolení pro .NET, Java, JavaScript (Node.js) a Python.

Mám použít OpenTelemetry nebo sadu Application Přehledy SDK?

Pokud nepotřebujete funkci, která je dostupná pouze s formální podporou v sadě Application Přehledy SDK, doporučujeme používat distro OpenTelemetry.

Přijetí OpenTelemetry teď brání migraci později.

Kdy mám použít exportér OpenTelemetry služby Azure Monitor?

Pro ASP.NET Core, Javu, Node.js a Python doporučujeme použít distro OpenTelemetry služby Azure Monitor. Začněte jedním řádkem kódu.

Pro všechny ostatní scénáře .NET, včetně klasických ASP.NET, konzolových aplikací atd., doporučujeme použít exportér OpenTelemetry pro .NET Azure Monitor: Azure.Monitor.OpenTelemetry.Exporter

Pro složitější scénáře telemetrie Pythonu, které vyžadují pokročilou konfiguraci, doporučujeme použít exportér OpenTelemetry služby Python Azure Monitor.

Jaký je aktuální stav funkcí ve službě Azure Monitor OpenTelemetry Distro?

Následující graf rozebíral podporu funkcí OpenTelemetry pro každý jazyk.

Funkce .NET Node.js Python Java
Distribuované trasování
Vlastní metrika
Standardní metriky (přesnost aktuálně ovlivněná vzorkováním)
Vzorkování s pevnou frekvencí
Offline úložiště a automatické opakování
Generování sestav výjimek
Shromažďování protokolů ⚠️
Vlastní události ⚠️ ⚠️ ⚠️
Ověřování Microsoft Entra
Živé metriky
Zjištění kontextu prostředků pro virtuální počítač nebo VMSS a App Service
Zjištění kontextu prostředku pro AKS a funkce
Filtrování rozsahu testování dostupnosti
Automatické naplnění ID uživatele, ověřené ID uživatele a IP adresy uživatele
Ruční přepsání/nastavení názvu operace, ID uživatele nebo ověřeného ID uživatele
Adaptivní vzorkování
Profiler ⚠️
Ladicí program snímků

Klíč

  • ✅ Tato funkce je dostupná všem zákazníkům s formální podporou.
  • ⚠✔ Tato funkce je k dispozici jako veřejná verze Preview. Přečtěte si doplňkové podmínky použití pro verze Preview Microsoft Azure.
  • ❌ Tato funkce není dostupná nebo se nedá použít.

Je možné OpenTelemetry použít pro webové prohlížeče?

Ano, ale nedoporučujeme ho a Azure ho nepodporuje. OpenTelemetry JavaScript je silně optimalizovaný pro Node.js. Místo toho doporučujeme použít sadu Application Přehledy JavaScript SDK.

Kdy můžeme očekávat, že sada OpenTelemetry SDK bude dostupná pro použití ve webových prohlížečích?

Webová sada SDK OpenTelemetry nemá určenou časovou osu dostupnosti. Pravděpodobně jsme několik let daleko od sady SDK prohlížeče, která je možná alternativou k sadě Application Přehledy JavaScript SDK.

Můžu dnes testovat OpenTelemetry ve webovém prohlížeči?

Webový sandbox OpenTelemetry je fork navržený tak, aby openTelemetry fungoval v prohlížeči. Zatím není možné odesílat telemetrii do služby Application Přehledy. Sada SDK nedefinuje obecné události klienta.

Běží aplikace Přehledy společně s agenty konkurentů, jako jsou AppDynamics, DataDog a NewRelic?

Ne. Tento postup není něco, co plánujeme testovat nebo podporovat, i když naše distribuce umožňují exportovat do koncového bodu OTLP společně se službou Azure Monitor současně.

Můžu používat funkce preview v produkčních prostředích?

Nedoporučujeme ho. Přečtěte si doplňkové podmínky použití pro verze Preview Microsoft Azure.

Jaký je rozdíl mezi ručním a automatickým instrumentací?

Viz přehled OpenTelemetry.

Můžu použít kolektor OpenTelemetry?

Někteří zákazníci používají OpenTelemetry Collector jako alternativu agenta, i když Microsoft oficiálně nepodporuje přístup založený na agentech pro monitorování aplikací. Do té doby opensourcová komunita přispěla exportérem Azure Monitoru OpenTelemetry Collector, který někteří zákazníci používají k odesílání dat do aplikačního Přehledy služby Azure Monitor. Microsoft to nepodporuje.

Jaký je rozdíl mezi OpenCensus a OpenTelemetry?

OpenCensus je prekurzorem OpenTelemetry. Microsoft pomohl spojit OpenTracing a OpenCensus k vytvoření OpenTelemetry, jediného pozorovatelného standardu pro svět. Aktuální sada Python SDK doporučená pro produkční prostředí pro Azure Monitor je založená na OpenCensus. Společnost Microsoft se zavázala vytvářet Azure Monitor na základě OpenTelemetry.

Řešení problému

Nefunguje to? Podívejte se na stránku pro řešení potíží pro ASP.NET Core.

Technická podpora

Vyberte kartu pro jazyk podle vašeho výběru a objevte možnosti podpory.

  • V případě podpora Azure problémů otevřete lístek podpora Azure.
  • V případě problémů s OpenTelemetry se obraťte přímo na komunitu OpenTelemetry .NET.
  • Seznam otevřených problémů souvisejících s exportérem služby Azure Monitor najdete na stránce Problémy GitHubu.

Zpětná vazba k OpenTelemetry

Poskytnutí zpětné vazby:

  • Vyplňte průzkum názorů zákazníků komunity OpenTelemetry.
  • Řekněte Microsoftu o sobě tím, že se připojíte ke komunitě OpenTelemetry Early Adopter.
  • Spojte se s dalšími uživateli služby Azure Monitor v technické komunitě Microsoftu.
  • Vytvořte žádost o funkci na fóru Azure Feedback.