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. En metod för automatisk instrumentering är också tillgänglig.
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
En förhandsversion av 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 distribuerade.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ängen. Du använder värdet för anslutningssträngen i nästa avsnitt i den här artikeln.
Konfigurera programinställningen Application Insights-anslutningssträng på 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 värdet för Application Insights-anslutningssträngen 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 åstadkoms med Hjälp av Application Insights för ASP.NET Core-webbprogram NuGet-paketet.
Öppna i Visual Studio
1 - Starter Application\src\AzureCafe.sln
.I visual studio Solution Explorer-panelen högerklickar du på AzureCafe-projektfilen och väljer 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
Application Insights för ASP.NET Core webbprogram NuGet-paketet 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 värdet för Application Insights-anslutningssträngen från konfigurationen. MetodenAddApplicationInsightsTelemetry
registrerar med den inbyggda beroendeinmatningscontainernApplicationInsightsLoggerProvider
som sedan används för att uppfylla implementeringsbegäranden för ILogger och ILogger<TCategoryName> .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äcker 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 öppnar du och infogar följande kod direkt före den avslutande
<\head>
taggen i Visual Studio Solution Explorer\Views\Shared\_Layout.cshtml
. Det här JavaScript-kodfragmentet måste infogas i avsnittet på varje sida i<head>
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ängen 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 inkludera insikter i databasanrop. Du aktiverar övervakning genom att konfigurera beroendemodulen. Beroendeövervakning, inklusive SQL, är aktiverat som standard.
Följ de här stegen för att samla in den fullständiga SQL-frågetexten.
Anteckning
SQL-text kan innehålla känsliga data, till exempel 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 omedelbart 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.
I Visual Studio-Solution Explorer högerklickar du på AzureCafe-projektet och väljer Publicera på snabbmenyn.
Välj Publicera för att flytta 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 telemetri följer du de här stegen i webbappen 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 Cafe. Välj knappen Lägg till granskning för att lägga till en granskning.
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 Live Metrics för att snabbt kontrollera om Application Insights-övervakningen är korrekt konfigurerad. Live-mått visar CPU-användningen 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 anropar flera Azure-resurser, inklusive Azure SQL, Azure Blob Storage och Azure Language Service (för att granska attitydanalys).
Application Insights introspektar inkommande telemetridata och kan generera en visuell karta över de systemintegreringar som identifieras.
Komma åt och logga in på Azure Portal.
Ö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}
.På den vänstra menyn under rubriken Undersök väljer du Programkarta. Observera den genererade programkartan.
Visa HTTP-anrop och SQL-databaskommandotext
Öppna Application Insights-resursen i Azure Portal.
Välj Prestanda under rubriken Undersök på den vänstra menyn.
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 (klientsidan) för data använder du växlingsknappen Server/webbläsare.
Välj en åtgärd i tabellen och välj att gå in på detaljnivå i 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 språktjänsten (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
Översikt över loggning
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 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 konfigureras loggningsprovidern för att automatiskt avbilda logghändelser med en allvarlighetsgrad på LogLevel.Warning eller större.
Överväg följande exempelkontrollant. Den visar inmatningen av ILogger, som löses med ApplicationInsightsLoggerProvider
den som är registrerad i containern för beroendeinmatning. 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 samlas in.
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.LogInfo("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 med hjälp av 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 resursen azure-café-insights-{SUFFIX} Application Insights.
I den vänstra menyn i Application Insights-resursen går du till avsnittet Övervakning och väljer Loggar.
Dubbelklicka på spårningstabellen under Application Insights-trädet i fönstret Tabeller.
Ändra frågan för att hämta spårningar för värden-kontrollanten 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å loggens kategori. Som standard är kategorin det fullständigt kvalificerade namnet på den klass där ILogger matas in. I det här fallet är kategorinamnet ValuesController (om det finns ett namnområde 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 hjälp av 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 loggnivån 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 har angetts till 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 ögonblicksbildsamling 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.
- Använd tillgänglighetstester för att ständigt kontrollera din app från hela världen.
- Beroendeinmatning i ASP.NET Core
- Logga in ASP.NET Core
- .NET-spårningsloggar i Application Insights
- Automatisk instrumentering för Application Insights