Sdílet prostřednictvím


Použijte Application Insights pro telemetrii .NET Aspire

Azure Application Insights, funkce Azure Monitor, exceluje ve správě výkonu aplikací (APM) pro živé webové aplikace. .NET Aspire projekty jsou navržené tak, aby používaly OpenTelemetry pro telemetrii aplikací. OpenTelemetry podporuje model rozšíření, který podporuje odesílání dat do různých apM. .NET .NET Aspire ve výchozím nastavení používá pro export telemetrie OTLP, který řídicí panel používá během vývoje. Azure Monitor zatím nepodporuje OTLP, takže aplikace je potřeba upravit tak, aby používaly exportér Azure Monitor a nakonfigurovaly připojovací řetězec.

Pokud chcete používat Application Insights, zadejte jeho konfiguraci v projektu hostitele aplikace a, a použijte distro Azure Monitor ve výchozím projektu služby.

Volba způsobu zajištění Application Insights

.NET Aspire má schopnost zajišťovat cloudové prostředky jako součást nasazení cloudu, včetně Application Insights. V projektu .NET Aspire se můžete rozhodnout, zda má .NET Aspire zřídit prostředek Application Insights při nasazování do Azure. Můžete také vybrat, jestli chcete použít existující prostředek Application Insights zadáním jeho připojovacího řetězce. Informace o připojení spravuje konfigurace prostředků v projektu hostitele aplikace.

Zřizování služby Application Insights během nasazení Azure

S touto možností se pro vás vytvoří instance Application Insights při nasazení aplikace pomocí Azure Developer CLI (azd).

Pokud chcete použít automatické zřizování, zadáte závislost v hostitelském projektu aplikace a budete na ni odkazovat v každém projektu nebo prostředku, který potřebuje odesílat telemetrická data do Application Insights. Mezi tyto kroky patří:

  • Přidejte odkaz na balíček NuGet do Aspire.Hosting.Azure.ApplicationInsights v projektu hostování aplikace.

  • Aktualizujte kód hostitele aplikace tak, aby používal prostředek Application Insights, a odkazujte na něj z každého projektu:

var builder = DistributedApplication.CreateBuilder(args);

// Automatically provision an Application Insights resource
var insights = builder.AddAzureApplicationInsights("MyApplicationInsights");

// Reference the resource from each project 
var apiService = builder.AddProject<Projects.ApiService>("apiservice")
    .WithReference(insights);

builder.AddProject<Projects.Web>("webfrontend")
    .WithReference(apiService)
    .WithReference(insights);

builder.Build().Run();

Postupujte podle kroků v Nasazení projektu .NET Aspire pro Azure Container Apps pomocí Azure Developer CLI (podrobný průvodce) a nasaďte aplikaci do Azure Container Apps. azd vytvoří prostředek Application Insights jako součást stejné skupiny prostředků a nakonfiguruje připojovací řetězec pro každý kontejner.

Ruční zřizování prostředku Application Insights

Application Insights používá připojovací řetězec k tomu, aby OpenTelemetry vývozci řekl, kam mají odesílat telemetrická data. Připojovací řetězec je specifický pro instanci Application Insights, do které chcete odeslat telemetrii. Najdete ji na stránce Přehled instance Application Insights.

umístění připojovacího řetězce v uživatelském rozhraní portálu AzureApplication Insights.

Pokud chcete použít instanci Application Insights, kterou jste zřídili ručně, měli byste použít rozhraní API AddConnectionString v hostitelském projektu aplikace k předání dat telemetrie projektům nebo kontejnerům. Distribuce Azure Monitor očekává, že proměnná prostředí bude APPLICATIONINSIGHTS_CONNECTION_STRING, takže při definování připojovacího řetězce je potřeba explicitně nastavit.

var builder = DistributedApplication.CreateBuilder(args);

var insights = builder.AddConnectionString(
    "myInsightsResource",
    "APPLICATIONINSIGHTS_CONNECTION_STRING");

var apiService = builder.AddProject<Projects.ApiService>("apiservice")
    .WithReference(insights);

builder.AddProject<Projects.Web>("webfrontend")
    .WithReference(apiService)
    .WithReference(insights);

builder.Build().Run();

Využití prostředků během vývoje

Při místním spuštění projektu .NET.NET Aspire tento kód načte připojovací řetězec z konfigurace. Protože se jedná o tajný kód, měli byste hodnotu uložit do tajných kódů aplikace. Klikněte pravým tlačítkem na projekt hostitele aplikace a v místní nabídce zvolte Spravovat tajné kódy a otevřete soubor tajných kódů pro hostitelský projekt aplikace. Do souboru přidejte klíč a váš konkrétní připojovací řetězec, příklad níže je určený pro ilustraci.

{
  "ConnectionStrings": {
    "myInsightsResource": "InstrumentationKey=12345678-abcd-1234-abcd-1234abcd5678;IngestionEndpoint=https://westus3-1.in.applicationinsights.azure.com"
  }
}

Poznámka

name zadané v kódu hostitele aplikace musí odpovídat klíči uvnitř oddílu ConnectionStrings v souboru nastavení.

Využití prostředků během nasazení

Při nasazení aplikace Aspire sAzure Developer CLI (azd) rozpozná prostředek připojovacího řetězce a zobrazí výzvu k zadání hodnoty. To umožňuje použití jiného prostředku pro nasazení než ten, který se používá pro místní vývoj.

Smíšené nasazení

Pokud chcete použít jiný mechanismus nasazení pro každý kontext spuštění, použijte příslušné rozhraní API podmíněně. Následující kód například používá předpřipravené připojení v době vývoje a automaticky zřízený prostředek v době nasazení.

var builder = DistributedApplication.CreateBuilder(args);

var insights = builder.ExecutionContext.IsPublishMode
    ? builder.AddAzureApplicationInsights("myInsightsResource")
    : builder.AddConnectionString("myInsightsResource", "APPLICATIONINSIGHTS_CONNECTION_STRING");

var apiService = builder.AddProject<Projects.ApiService>("apiservice")
    .WithReference(insights);

builder.AddProject<Projects.Web>("webfrontend")
    .WithReference(apiService)
    .WithReference(insights);

builder.Build().Run();

Spropitné

Předchozí kód vyžaduje zadání informací o připojovacím řetězci v tajných kódech aplikace pro použití během fáze vývoje a během nasazení budete vyzváni k zadání připojovacího řetězce azd.

Použijte distribuci Azure Monitor

Pokud chcete zjednodušit export do Azure Monitor, tento příklad používá úložiště Azure Monitor Exporter. Toto je obalový balíček kolem balíčku Azure Monitor OpenTelemetry Exporter, který usnadňuje export do Azure Monitor s běžnými výchozími nastaveními.

Do projektu ServiceDefaults přidejte následující balíček, aby byl zahrnut do každé služby .NET.NET Aspire. Pro více informací viz výchozí nastavení služby .NET.NET Aspire.

<PackageReference Include="Azure.Monitor.OpenTelemetry.AspNetCore" 
                  Version="*" />

Na začátek projektu přidejte příkaz using.

using Azure.Monitor.OpenTelemetry.AspNetCore;

Odkomentujte řádek v AddOpenTelemetryExporters pro použití vývozce Monitoru Azure:

private static IHostApplicationBuilder AddOpenTelemetryExporters(
    this IHostApplicationBuilder builder)
{
    // Omitted for brevity...

    // Uncomment the following lines to enable the Azure Monitor exporter 
    // (requires the Azure.Monitor.OpenTelemetry.AspNetCore package)
    if (!string.IsNullOrEmpty(builder.Configuration["APPLICATIONINSIGHTS_CONNECTION_STRING"]))
    {
        builder.Services.AddOpenTelemetry().UseAzureMonitor();
    }
    return builder;
}

Exportér monitorování Azure je možné dále přizpůsobit, včetně přizpůsobení názvu prostředku a změny vzorkování. Další informace najdete v tématu Přizpůsobení Azure exportéru Monitoru. Pomocí bezparametrové verze UseAzureMonitor()převezme připojovací řetězec z proměnné prostředí APPLICATIONINSIGHTS_CONNECTION_STRING, kterou jsme nakonfigurovali prostřednictvím hostitelského projektu aplikace.