Dela via


Aktivera Application Insights för ASP.NET Core program

Den här artikeln beskriver hur du aktiverar Application Insights för ett ASP.NET Core program som distribueras som en Azure-webbapp. Den här implementeringen använder en SDK-baserad metod. Det finns också en metod för automatisk instrumentering .

Application Insights kan samla in följande telemetri från ditt ASP.NET Core program:

  • Begäranden
  • Beroenden
  • Undantag
  • Prestandaräknare
  • Hjärtslag
  • Loggar

För ett exempelprogram använder vi ett ASP.NET Core MVC-program som är avsett net6.0för . Du kan dock använda dessa instruktioner för alla ASP.NET Core program. Om du använder Arbetstjänsten använder du anvisningarna här.

Anteckning

Ett OpenTelemetry-baserat .NET-erbjudande är tillgängligt. Läs mer.

Anteckning

Stödet för inmatning av instrumentationsnycklar upphör den 31 mars 2025. Inmatningen av instrumenteringsnyckeln fortsätter att fungera, men vi kommer inte längre att tillhandahålla uppdateringar eller stöd för funktionen. Övergå till anslutningssträngar för att dra nytta av nya funktioner.

Scenarier som stöds

Application Insights SDK för ASP.NET Core kan övervaka dina program oavsett var eller hur de körs. Om programmet körs och har nätverksanslutning till Azure kan Application Insights samla in telemetri från det. Application Insights-övervakning stöds överallt där .NET Core stöds. Följande scenarier stöds:

  • Operativsystem: Windows, Linux eller Mac
  • Värdmetod: Processas eller är ur process
  • Distributionsmetod: Ramverksberoende eller fristående
  • Webbserver: Internet Information Server (IIS) eller Kestrel
  • Värdplattform: funktionen Web Apps i Azure App Service, virtuell Azure-dator, Docker, Azure Kubernetes Service (AKS) och så vidare
  • .NET Core-version: Alla .NET Core-versioner som stöds officiellt och som inte finns i förhandsversionen
  • IDE: Visual Studio, Visual Studio Code eller kommandorad

Förutsättningar

För att slutföra den här kursen behöver du:

  • Visual Studio 2022
  • Följande Visual Studio-arbetsbelastningar:
    • ASP.NET och webbutveckling
    • Datalagring och -bearbetning
    • Azure Development
  • .NET 6.0
  • Azure-prenumeration och användarkonto (med möjlighet att skapa och ta bort resurser)

Distribuera Azure-resurser

Följ anvisningarna för att distribuera exempelprogrammet från github-lagringsplatsen.

För att ge globalt unika namn till resurser tilldelas ett suffix med sex tecken till vissa resurser. Anteckna det här suffixet för senare användning i den här artikeln.

Skärmbild av den distribuerade Azure-resurslistan i Azure Portal med suffixet med sex tecken markerat.

Skapa en Application Insights-resurs

  1. I Azure Portal väljer du resursgruppen application-insights-azure-café.

  2. Välj + Skapa i den översta verktygsfältsmenyn.

    Skärmbild av resursgruppen application-insights-azure-café i Azure Portal med knappen + Skapa markerad på verktygsfältsmenyn.

  3. På skärmen Skapa en resurs söker du efter och väljer Application Insights i textrutan Sök på Marketplace.

    Skärmbild av skärmen Skapa en resurs i Azure Portal.

  4. På skärmen Översikt över Application Insights-resurser väljer du Skapa.

    Skärmbild av översiktsskärmen för Application Insights i Azure Portal med knappen Skapa markerad.

  5. På skärmen Application Insights på fliken Grundläggande fyller du i formuläret med hjälp av följande tabell och väljer sedan knappen Granska + skapa . Fält som inte anges i tabellen nedan kan behålla sina standardvärden.

    Fält Värde
    Namn Ange azure-cafe-application-insights-{SUFFIX}och ersätt {SUFFIX} med lämpligt suffixvärde som registrerades tidigare.
    Region Välj samma region som du valde när du distribuerade artikelresurserna.
    Log Analytics-arbetsyta Välj azure-café-log-analytics-workspace. Du kan också skapa en ny log analytics-arbetsyta.

    Skärmbild av fliken Grundläggande på skärmen Application Insights i Azure Portal med ett formulär fyllt med föregående värden.

  6. När verifieringen har slutförts väljer du Skapa för att distribuera resursen.

    Skärmbild av skärmen Application Insights i Azure Portal. Meddelandet som anger att valideringen har skickats och knappen Skapa markeras båda.

  7. När resursen har distribuerats går du tillbaka till application-insights-azure-cafe resursgruppen och väljer den Application Insights-resurs som du har distribuerat.

    Skärmbild av resursgruppen application-insights-azure-café i Azure Portal med Application Insights-resursen markerad.

  8. På skärmen Översikt för Application Insights-resursen väljer du knappen Kopiera till Urklipp för att kopiera värdet för anslutningssträng. Du använder värdet anslutningssträng i nästa avsnitt i den här artikeln.

    Skärmbild av skärmen Översikt över Application Insights i Azure Portal.

Konfigurera application insights anslutningssträng-programinställningen på webben App Service

  1. Gå tillbaka till application-insights-azure-cafe resursgruppen och öppna azure-café-web-{SUFFIX} App Service resurs.

    Skärmbild av resursgruppen application-insights-azure-café i Azure Portal med resursen azure-café-web-{SUFFIX} markerad.

  2. Välj Konfiguration under avsnittet Inställningar på den vänstra menyn. På fliken Programinställningar väljer du sedan + Ny programinställning under rubriken Programinställningar.

    Skärmbild av skärmen App Service resurs i Azure Portal.

  3. I fönstret Lägg till/redigera programinställning fyller du i formuläret på följande sätt och väljer OK.

    Fält Värde
    Namn APPLICATIONINSIGHTS_CONNECTION_STRING
    Värde Klistra in det Application Insights-anslutningssträng värde som du kopierade i föregående avsnitt.

    Skärmbild av fönstret Lägg till/redigera programinställning i Azure Portal med föregående värden ifyllda i fälten Namn och Värde.

  4. På skärmen App Service Konfiguration väljer du knappen Spara i verktygsfältsmenyn. När du uppmanas att spara ändringarna väljer du Fortsätt.

    Skärmbild av skärmen App Service Konfiguration i Azure Portal med knappen Spara markerad på verktygsfältsmenyn.

Installera Application Insights NuGet-paketet

Vi måste konfigurera ASP.NET Core MVC-webbappen för att skicka telemetri. Detta görs med hjälp av NuGet-paketet Application Insights för ASP.NET Core webbprogram.

  1. Öppna i Visual Studio 1 - Starter Application\src\AzureCafe.sln.

  2. Högerklicka på AzureCafe-projektfilen i Visual Studio Solution Explorer-panelen och välj Hantera NuGet-paket.

    Skärmbild av Visual Studio-Solution Explorer med Azure Cafe-projektet valt och snabbmenyalternativet Hantera NuGet-paket markerat.

  3. Välj fliken Bläddra och sök sedan efter och välj Microsoft.ApplicationInsights.AspNetCore. Välj Installera och godkänn licensvillkoren. Vi rekommenderar att du använder den senaste stabila versionen. Fullständiga viktig information för SDK finns i GitHub-lagringsplatsen med öppen källkod.

    Skärmbild av Användargränssnittet för NuGet Package Manager i Visual Studio.

    Håll Visual Studio öppet för nästa avsnitt i artikeln.

Aktivera Application Insights-telemetri på serversidan

NuGet-paketet Application Insights för ASP.NET Core webbprogram kapslar in funktioner för att göra det möjligt att skicka telemetri på serversidan till Application Insights-resursen i Azure.

  1. Öppna filen Program.cs från Visual Studio-Solution Explorer.

    Skärmbild av Visual Studio-Solution Explorer med filen Program.cs markerad.

  2. Infoga följande kod före -instruktionen builder.Services.AddControllersWithViews() . Den här koden läser automatiskt Application Insights-anslutningssträng-värdet från konfigurationen. Metoden AddApplicationInsightsTelemetry registrerar ApplicationInsightsLoggerProvider med den inbyggda containern för beroendeinmatning som sedan ska användas för att uppfylla ILogger - och ILogger<TCategoryName-implementeringsbegäranden> .

    builder.Services.AddApplicationInsightsTelemetry();
    

    Skärmbild av ett kodfönster i Visual Studio med föregående kodfragment markerat.

Aktivera telemetri på klientsidan för webbprogram

Föregående steg är tillräckliga för att hjälpa dig att börja samla in telemetri på serversidan. Exempelprogrammet har komponenter på klientsidan. Följ nästa steg för att börja samla in användningstelemetri.

  1. Öppna i Visual Studio Solution Explorer\Views\_ViewImports.cshtml.

  2. Lägg till följande kod i slutet av den befintliga filen.

    @inject Microsoft.ApplicationInsights.AspNetCore.JavaScriptSnippet JavaScriptSnippet
    

    Skärmbild av filen _ViewImports.cshtml i Visual Studio med föregående kodrad markerad.

  3. Om du vill aktivera övervakning på klientsidan för ditt program i Visual Studio Solution Explorer öppnar \Views\Shared\_Layout.cshtml du och infogar följande kod omedelbart före den avslutande <\head> taggen. Det här JavaScript-kodfragmentet måste infogas i <head> avsnittet på varje sida i ditt program som du vill övervaka.

    @Html.Raw(JavaScriptSnippet.FullScript)
    

    Skärmbild av filen _Layout.cshtml i Visual Studio med föregående kodrad markerad i huvudavsnittet i filen.

    Tips

    Ett alternativ till att använda FullScript är ScriptBody. Använd ScriptBody om du behöver styra taggen <script> för att ange en innehållssäkerhetsprincip:

    <script> // apply custom changes to this script tag.
        @Html.Raw(JavaScriptSnippet.ScriptBody)
    </script>
    

Anteckning

JavaScript-inmatning ger en standardkonfigurationsupplevelse. Om du behöver konfiguration utöver att ange anslutningssträng måste du ta bort automatisk inmatning enligt beskrivningen ovan och lägga till JavaScript SDK manuellt.

Aktivera övervakning av databasfrågor

När du undersöker orsaker till prestandaförsämring är det viktigt att ta med insikter i databasanrop. Du aktiverar övervakning genom att konfigurera beroendemodulen. Beroendeövervakning, inklusive SQL, är aktiverat som standard.

Följ dessa steg för att samla in den fullständiga SQL-frågetexten.

Anteckning

SQL-text kan innehålla känsliga data som lösenord och PII. Var försiktig när du aktiverar den här funktionen.

  1. Öppna filen Program.cs från Visual Studio-Solution Explorer.

  2. Lägg till följande using -instruktion överst i filen.

    using Microsoft.ApplicationInsights.DependencyCollector;
    
  3. Om du vill aktivera SQL-kommandotextinstrumentation infogar du följande kod direkt efter builder.Services.AddApplicationInsightsTelemetry() koden.

    builder.Services.ConfigureTelemetryModule<DependencyTrackingTelemetryModule>((module, o) => { module.EnableSqlCommandTextInstrumentation = true; });
    

    Skärmbild av ett kodfönster i Visual Studio med föregående kod markerad.

Köra Azure Cafe-webbappen

När du har distribuerat webbprogramkoden flödar telemetrin till Application Insights. Application Insights SDK samlar automatiskt in inkommande webbbegäranden till ditt program.

  1. Högerklicka på AzureCafe-projektet i Visual Studio Solution Explorer och välj Publicera på snabbmenyn.

    Skärmbild av Visual Studio-Solution Explorer med Azure Cafe-projektet valt och snabbmenyalternativet Publicera markerat.

  2. Välj Publicera för att höja upp den nya koden till Azure App Service.

    Skärmbild av AzureCafe-publiceringsprofilen med knappen Publicera markerad.

    När Azure Cafe-webbappen har publicerats öppnas ett nytt webbläsarfönster för Azure Cafe-webbappen.

    Skärmbild av Azure Cafe-webbappen.

  3. Om du vill generera viss telemetri följer du de här stegen i webbprogrammet för att lägga till en granskning.

    1. Om du vill visa ett kafés meny och recensioner väljer du Information bredvid ett kafé.

      Skärmbild av en del av Azure Cafe-listan i Azure Cafe-webbappen med knappen Information markerad.

    2. Om du vill visa och lägga till recensioner väljer du fliken Recensioner på skärmen Café. Välj knappen Lägg till granskning för att lägga till en recension.

      Skärmbild av skärmen Cafe-information i Azure Cafe-webbappen med knappen Lägg till granskning markerad.

    3. I dialogrutan Skapa en granskning anger du ett namn, ett omdöme, kommentarer och laddar upp ett foto för recensionen. När du är klar väljer du Lägg till granskning.

      Skärmbild av dialogrutan Skapa en granskning i Azure Cafe-webbappen.

    4. Om du behöver generera ytterligare telemetri lägger du till ytterligare granskningar.

Live-mått

Du kan använda livemått för att snabbt kontrollera om Application Insights-övervakningen är korrekt konfigurerad. Live-mått visar CPU-användning av den pågående processen nästan i realtid. Den kan också visa annan telemetri, till exempel begäranden, beroenden och spårningar. Observera att det kan ta några minuter innan telemetrin visas i portalen och analys.

Visa programkartan

Exempelprogrammet gör anrop till flera Azure-resurser, inklusive Azure SQL, Azure Blob Storage och Azure Language Service (för granskning av attitydanalys).

Diagram som visar arkitekturen för Azure Cafe-exempelwebbprogrammet.

Application Insights introspektar inkommande telemetridata och kan generera en visuell karta över systemintegreringarna som identifieras.

  1. Logga in på Azure-portalen.

  2. Öppna resursgruppen för exempelprogrammet, som är application-insights-azure-cafe.

  3. I listan över resurser väljer du Application Insights-resursen azure-cafe-insights-{SUFFIX} .

  4. Välj Programkarta under rubriken Undersök på den vänstra menyn. Observera den genererade programkartan.

    Skärmbild av Application Insights-programkartan i Azure Portal.

Visa HTTP-anrop och SQL-databaskommandotext

  1. Öppna Application Insights-resursen i Azure Portal.

  2. På den vänstra menyn under rubriken Undersök väljer du Prestanda.

  3. Fliken Åtgärder innehåller information om DE HTTP-anrop som tas emot av programmet. Om du vill växla mellan server- och webbläsarvyer (på klientsidan) för data använder du växlingsknappen Server/Webbläsare.

    Skärmbild av skärmen Prestanda i Azure Portal.

  4. Välj en åtgärd i tabellen och välj att granska ett exempel på begäran.

    Skärmbild av skärmen Application Insights-prestanda i Azure Portal med åtgärder och exempelåtgärder i listan.

    Transaktionen från slutpunkt till slutpunkt visas för den valda begäran. I det här fallet skapades en granskning, inklusive en avbildning, så den innehåller anrop till Azure Storage och Language Service (för attitydanalys). Den innehåller även databasanrop till SQL Azure för att bevara granskningen. I det här exemplet visar den första valda händelsen information i förhållande till HTTP POST-anropet.

    Skärmbild av transaktionen från slutpunkt till slutpunkt i Azure Portal med HTTP Post-anropet valt.

  5. Välj ett SQL-objekt för att granska SQL-kommandotexten som utfärdats till databasen.

    Skärmbild av transaktionen från slutpunkt till slutpunkt i Azure Portal med SQL-kommandoinformation.

  6. Du kan också välja beroendebegäranden (utgående) till Azure Storage eller språktjänsten.

  7. Gå tillbaka till skärmen Prestanda och välj fliken Beroenden för att undersöka anrop till externa resurser. Observera att tabellen Åtgärder innehåller anrop till Attitydanalys, Blob Storage och Azure SQL.

    Skärmbild av skärmen Prestanda för Application Insights på Azure Portal med fliken Beroenden markerad och tabellen Åtgärder markerad.

Programloggning med Application Insights

Loggningsöversikt

Application Insights är en typ av loggningsprovider som är tillgänglig för ASP.NET Core program som blir tillgängliga för program när Application Insights för ASP.NET CoreNuGet-paketet installeras och telemetrisamling på serversidan är aktiverad.

Som en påminnelse registrerar ApplicationInsightsLoggerProvider följande kod i Program.cs med den inbyggda containern för beroendeinmatning.

builder.Services.AddApplicationInsightsTelemetry();

Med den ApplicationInsightsLoggerProvider registrerade som loggningsprovider är appen redo att logga in på Application Insights med hjälp av antingen konstruktorinmatning med ILogger eller alternativ av generisk typ ILogger<TCategoryName>.

Anteckning

Som standard är loggningsprovidern konfigurerad för att automatiskt samla in logghändelser med allvarlighetsgraden LogLevel.Warning eller större.

Överväg följande exempelkontrollant. Det visar inmatningen av ILogger, som löses med ApplicationInsightsLoggerProvider som är registrerad med beroendeinmatningscontainern. Observera i metoden Get att ett informations-, varnings- och felmeddelande registreras.

Anteckning

Som standard registreras inte spårningen på informationsnivå. Endast nivåerna Varning och ovan registreras.

using Microsoft.AspNetCore.Mvc;

[Route("api/[controller]")]
[ApiController]
public class ValuesController : ControllerBase
{
    private readonly ILogger _logger;

    public ValuesController(ILogger<ValuesController> logger)
    {
        _logger = logger;
    }

    [HttpGet]
    public ActionResult<IEnumerable<string>> Get()
    {
        //Info level traces are not captured by default
        _logger.LogInformation("An example of an Info trace..");
        _logger.LogWarning("An example of a Warning trace..");
        _logger.LogError("An example of an Error level message");

        return new string[] { "value1", "value2" };
    }
}

Mer information finns i Logga in ASP.NET Core.

Visa loggar i Application Insights

ValuesController ovan distribueras med exempelprogrammet och finns i mappen Controllers i projektet.

  1. Öppna exempelprogrammet i en webbläsare. I adressfältet lägger du till /api/Values och trycker på Retur.

    Skärmbild av ett webbläsarfönster med /api/Values tillagt i URL:en i adressfältet.

  2. I Azure Portal väntar du en stund och väljer sedan Application Insights-resursen azure-café-insights-{SUFFIX}.

    Skärmbild av resursgruppen application-insights-azure-café i Azure Portal med Application Insights-resursen markerad.

  3. På den vänstra menyn i Application Insights-resursen går du till avsnittet Övervakning och väljer Loggar.

  4. Dubbelklicka på spårningstabellen under trädet Application Insights i fönstret Tabeller.

  5. Ändra frågan för att hämta spårningar för värdekontrollanten på följande sätt och välj sedan Kör för att filtrera resultatet.

    traces 
    | where operation_Name == "GET Values/Get"
    

    Resultatet visar loggningsmeddelandena som finns i kontrollanten. Loggens allvarlighetsgrad 2 anger en varningsnivå och loggens allvarlighetsgrad 3 anger en felnivå.

  6. Du kan också skriva frågan för att hämta resultat baserat på loggkategorin. Som standard är kategorin det fullständigt kvalificerade namnet på klassen där ILogger matas in. I det här fallet är kategorinamnet ValuesController (om det finns ett namnområde som är associerat med klassen kommer namnet att föregås av namnområdet). Skriv om och kör följande fråga för att hämta resultat baserat på kategori.

    traces 
    | where customDimensions.CategoryName == "ValuesController"
    

Kontrollera nivån för loggar som skickas till Application Insights

ILogger implementeringar har en inbyggd mekanism för att tillämpa loggfiltrering. Med den här filtreringen kan du styra loggarna som skickas till varje registrerad provider, inklusive Application Insights-providern. Du kan använda filtreringen antingen i konfigurationen (med en appsettings.json-fil ) eller i kod. Mer information om loggnivåer och vägledning om hur du använder dem på rätt sätt finns i dokumentationen om loggnivå .

I följande exempel visas hur du tillämpar filterregler på ApplicationInsightsLoggerProvider för att styra nivån på loggar som skickas till Application Insights.

Skapa filterregler med konfiguration

ApplicationInsightsLoggerProvider är alias som ApplicationInsights i konfigurationen. I följande avsnitt i en appsettings.json-fil anges standardloggnivån för alla leverantörer till LogLevel.Warning. Konfigurationen för ApplicationInsights-providern, särskilt för kategorier som börjar med "ValuesController", åsidosätter det här standardvärdet med LogLevel.Error och högre.

{
  //... additional code removed for brevity
  "Logging": {
    "LogLevel": { // No provider, LogLevel applies to all the enabled providers.
      "Default": "Warning"
    },
    "ApplicationInsights": { // Specific to the provider, LogLevel applies to the Application Insights provider.
      "LogLevel": {
        "ValuesController": "Error" //Log Level for the "ValuesController" category
      }
    }
  }
}

Om du distribuerar exempelprogrammet med föregående kod i appsettings.json returneras endast felspårningen som skickas till Application Insights när du interagerar med ValuesController. Det beror på att LogLevel för kategorin ValuesController är inställd på Fel. Därför ignoreras varningsspårningen .

Inaktivera loggning till Application Insights

Om du vill inaktivera loggning med hjälp av konfigurationen anger du alla LogLevel-värden till "Ingen".

{
  //... additional code removed for brevity
  "Logging": {
    "LogLevel": { // No provider, LogLevel applies to all the enabled providers.
      "Default": "None"
    },
    "ApplicationInsights": { // Specific to the provider, LogLevel applies to the Application Insights provider.
      "LogLevel": {
        "ValuesController": "None" //Log Level for the "ValuesController" category
      }
    }
  }
}

I koden anger du på samma sätt standardnivån för ApplicationInsightsLoggerProvider och eventuella efterföljande loggnivåer till Ingen.

var builder = WebApplication.CreateBuilder(args);
builder.Logging.AddFilter<ApplicationInsightsLoggerProvider>("", LogLevel.None);
builder.Logging.AddFilter<Microsoft.Extensions.Logging.ApplicationInsights.ApplicationInsightsLoggerProvider>("ValuesController", LogLevel.None);

SDK med öppen källkod

De senaste uppdateringarna och felkorrigeringarna finns i viktig information.

Nästa steg