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.0
fö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.
Skapa en Application Insights-resurs
I Azure Portal väljer du resursgruppen application-insights-azure-café.
Välj + Skapa i den översta verktygsfältsmenyn.
På skärmen Skapa en resurs söker du efter och väljer Application Insights i textrutan Sök på Marketplace.
På skärmen Översikt över Application Insights-resurser väljer du Skapa.
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. När verifieringen har slutförts väljer du Skapa för att distribuera resursen.
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.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.
Konfigurera application insights anslutningssträng-programinställningen på webben App Service
Gå tillbaka till
application-insights-azure-cafe
resursgruppen och öppna azure-café-web-{SUFFIX} App Service resurs.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.
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. 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.
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.
Öppna i Visual Studio
1 - Starter Application\src\AzureCafe.sln
.Högerklicka på AzureCafe-projektfilen i Visual Studio Solution Explorer-panelen och välj Hantera NuGet-paket.
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.
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.
Öppna filen Program.cs från Visual Studio-Solution Explorer.
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. MetodenAddApplicationInsightsTelemetry
registrerarApplicationInsightsLoggerProvider
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();
Tips
Läs mer om konfigurationsalternativen i ASP.NET Core.
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.
Öppna i Visual Studio Solution Explorer
\Views\_ViewImports.cshtml
.Lägg till följande kod i slutet av den befintliga filen.
@inject Microsoft.ApplicationInsights.AspNetCore.JavaScriptSnippet JavaScriptSnippet
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)
Tips
Ett alternativ till att använda
FullScript
ärScriptBody
. AnvändScriptBody
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.
Öppna filen Program.cs från Visual Studio-Solution Explorer.
Lägg till följande
using
-instruktion överst i filen.using Microsoft.ApplicationInsights.DependencyCollector;
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; });
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.
Högerklicka på AzureCafe-projektet i Visual Studio Solution Explorer och välj Publicera på snabbmenyn.
Välj Publicera för att höja upp den nya koden till Azure App Service.
När Azure Cafe-webbappen har publicerats öppnas ett nytt webbläsarfönster för Azure Cafe-webbappen.
Om du vill generera viss telemetri följer du de här stegen i webbprogrammet för att lägga till en granskning.
Om du vill visa ett kafés meny och recensioner väljer du Information bredvid ett kafé.
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.
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.
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).
Application Insights introspektar inkommande telemetridata och kan generera en visuell karta över systemintegreringarna som identifieras.
Logga in på Azure-portalen.
Öppna resursgruppen för exempelprogrammet, som är
application-insights-azure-cafe
.I listan över resurser väljer du Application Insights-resursen
azure-cafe-insights-{SUFFIX}
.Välj Programkarta under rubriken Undersök på den vänstra menyn. Observera den genererade programkartan.
Visa HTTP-anrop och SQL-databaskommandotext
Öppna Application Insights-resursen i Azure Portal.
På den vänstra menyn under rubriken Undersök väljer du Prestanda.
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.
Välj en åtgärd i tabellen och välj att granska ett exempel på begäran.
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.
Välj ett SQL-objekt för att granska SQL-kommandotexten som utfärdats till databasen.
Du kan också välja beroendebegäranden (utgående) till Azure Storage eller språktjänsten.
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.
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.
Öppna exempelprogrammet i en webbläsare. I adressfältet lägger du till
/api/Values
och trycker på Retur.I Azure Portal väntar du en stund och väljer sedan Application Insights-resursen azure-café-insights-{SUFFIX}.
På den vänstra menyn i Application Insights-resursen går du till avsnittet Övervakning och väljer Loggar.
Dubbelklicka på spårningstabellen under trädet Application Insights i fönstret Tabeller.
Ä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å.
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
- Utforska användarflöden för att förstå hur användare navigerar i din app.
- Konfigurera en samling ögonblicksbilder för att se tillståndet för källkod och variabler när ett undantag utlöses.
- Använd API:et för att skicka egna händelser och mått för en detaljerad vy över appens prestanda och användning.
- Tillgänglighetsöversikt
- Beroendeinmatning i ASP.NET Core
- Logga in ASP.NET Core
- .NET-spårningsloggar i Application Insights
- Automatisk instrumentering för Application Insights