Application Insights inschakelen voor ASP.NET Core toepassingen
In dit artikel wordt beschreven hoe u Application Insights inschakelt voor een ASP.NET Core-toepassing die is geïmplementeerd als een Azure-web-app. Deze implementatie maakt gebruik van een OP SDK gebaseerde benadering. Er is ook een automatische instrumentatie-benadering beschikbaar.
Application Insights kan de volgende telemetrie van uw ASP.NET Core-toepassing verzamelen:
- Aanvragen
- Afhankelijkheden
- Uitzonderingen
- Prestatiemeteritems
- Heartbeats
- Logboeken
Voor een voorbeeldtoepassing gebruiken we een ASP.NET Core MVC-toepassing die is gericht op net6.0
. U kunt deze instructies echter toepassen op alle ASP.NET Core toepassingen. Als u de Werkrolservice gebruikt, gebruikt u de instructies hier.
Notitie
Er is een op OpenTelemetry gebaseerde .NET-aanbieding beschikbaar. Meer informatie.
Notitie
Op 31 maart 2025 eindigt de ondersteuning voor opname van instrumentatiesleutels. Opname van instrumentatiesleutels blijft werken, maar we bieden geen updates of ondersteuning meer voor de functie. Overgang naar verbindingsreeksen om te profiteren van nieuwe mogelijkheden.
Ondersteunde scenario's
De Application Insights SDK voor ASP.NET Core kunt uw toepassingen bewaken, ongeacht waar en hoe ze worden uitgevoerd. Als uw toepassing wordt uitgevoerd en een netwerkverbinding met Azure heeft, kan Application Insights telemetrie van de toepassing verzamelen. Application Insights-bewaking wordt overal ondersteund waar .NET Core wordt ondersteund. De volgende scenario's worden ondersteund:
- Besturingssysteem: Windows, Linux of Mac
- Hostingmethode: Wordt verwerkt of niet verwerkt
- Implementatiemethode: Afhankelijk van framework of op zichzelf staand
- Webserver: Internet Information Server (IIS) of Kestrel
- Hostingplatform: de Web Apps-functie van Azure App Service, Azure VM, Docker, Azure Kubernetes Service (AKS), enzovoort
- .NET Core-versie: alle officieel ondersteunde .NET Core-versies die niet in preview zijn
- IDE: Visual Studio, Visual Studio Code of opdrachtregel
Vereisten
Voor deze zelfstudie hebt u het volgende nodig:
- Visual Studio 2022
- De volgende Visual Studio-workloads:
- ASP.NET-ontwikkeling en webontwikkeling
- Gegevensopslag en -verwerking
- Azure-ontwikkeling
- .NET 6.0
- Azure-abonnement en gebruikersaccount (met de mogelijkheid om resources te maken en te verwijderen)
Azure-resources implementeren
Om resources wereldwijd unieke namen te geven, wordt aan sommige resources een achtervoegsel van zes tekens toegewezen. Noteer dit achtervoegsel voor gebruik verderop in dit artikel.
Een Application Insights-resource maken
Selecteer in de Azure Portal de resourcegroep application-insights-azure-café.
Selecteer + Maken in het bovenste werkbalkmenu.
Zoek en selecteer Application Insights in het zoekvak van Marketplace in het scherm Een resource maken.
Selecteer Maken in het scherm Overzicht van Application Insights-resources.
Vul op het scherm Application Insights, tabblad Basisinformatie , het formulier in met behulp van de volgende tabel en selecteer vervolgens de knop Beoordelen en maken . Velden die niet in de onderstaande tabel zijn opgegeven, kunnen hun standaardwaarden behouden.
Veld Waarde Naam Voer in azure-cafe-application-insights-{SUFFIX}
en vervang {SUFFIX} door de juiste achtervoegselwaarde die eerder is vastgelegd.Region Selecteer dezelfde regio die is gekozen bij het implementeren van de artikelresources. Log Analytics-werkruimte Selecteer azure-café-log-analytics-workspace. U kunt ook een nieuwe Log Analytics-werkruimte maken. Zodra de validatie is voltooid, selecteert u Maken om de resource te implementeren.
Zodra de resource is geïmplementeerd, gaat u terug naar de
application-insights-azure-cafe
resourcegroep en selecteert u de Application Insights-resource die u hebt geïmplementeerd.Selecteer in het scherm Overzicht van de Application Insights-resource de knop Kopiëren naar klembord om de waarde verbindingsreeks te kopiëren. U gebruikt de waarde verbindingsreeks in de volgende sectie van dit artikel.
De toepassingsinstelling Application Insights verbindingsreeks configureren in het web App Service
Ga terug naar de
application-insights-azure-cafe
resourcegroep en open de resource azure-café-web-{SUFFIX} App Service.Selecteer in het linkermenu onder de sectie Instellingen de optie Configuratie. Selecteer vervolgens op het tabblad Toepassingsinstellingen de optie + Nieuwe toepassingsinstelling onder de kop Toepassingsinstellingen.
Vul in het deelvenster Toepassingsinstelling toevoegen/bewerken het formulier als volgt in en selecteer OK.
Veld Waarde Naam APPLICATIONINSIGHTS_CONNECTION_STRING Waarde Plak de waarde van Application Insights verbindingsreeks die u in de vorige sectie hebt gekopieerd. Selecteer in het scherm App Service Configuratie de knop Opslaan in het werkbalkmenu. Wanneer u wordt gevraagd de wijzigingen op te slaan, selecteert u Doorgaan.
Het NuGet-pakket van Application Insights installeren
We moeten de ASP.NET Core MVC-webtoepassing configureren om telemetrie te verzenden. Dit wordt bereikt met behulp van het NuGet-pakket Application Insights voor ASP.NET Core webtoepassingen.
Open in
1 - Starter Application\src\AzureCafe.sln
Visual Studio.Klik in het deelvenster Visual Studio Solution Explorer met de rechtermuisknop op het projectbestand AzureCafe en selecteer NuGet-pakketten beheren.
Selecteer het tabblad Bladeren en zoek en selecteer Vervolgens Microsoft.ApplicationInsights.AspNetCore. Selecteer Installeren en accepteer de licentievoorwaarden. U wordt aangeraden de nieuwste stabiele versie te gebruiken. Zie de opensource GitHub-opslagplaats voor de volledige releaseopmerkingen voor de SDK.
Houd Visual Studio geopend voor de volgende sectie van het artikel.
Telemetrie aan de serverzijde van Application Insights inschakelen
Het NuGet-pakket Application Insights voor ASP.NET Core webtoepassingen bevat functies voor het verzenden van telemetrie aan de serverzijde naar de Application Insights-resource in Azure.
Open in de Visual Studio-Solution Explorer het bestand Program.cs.
Voeg de volgende code in vóór de
builder.Services.AddControllersWithViews()
instructie. Deze code leest automatisch de Application Insights verbindingsreeks waarde uit de configuratie. DeAddApplicationInsightsTelemetry
methode registreert deApplicationInsightsLoggerProvider
met de ingebouwde afhankelijkheidsinjectiecontainer die vervolgens wordt gebruikt om te voldoen aan ILogger - en ILogger<TCategoryName-implementatieaanvragen> .builder.Services.AddApplicationInsightsTelemetry();
Tip
Meer informatie over de configuratieopties in ASP.NET Core.
Telemetrie aan de clientzijde inschakelen voor webtoepassingen
De voorgaande stappen zijn voldoende om u te helpen bij het verzamelen van telemetrie aan de serverzijde. De voorbeeldtoepassing heeft onderdelen aan de clientzijde. Volg de volgende stappen om te beginnen met het verzamelen van telemetriegegevens over gebruik.
Open
\Views\_ViewImports.cshtml
in Visual Studio Solution Explorer.Voeg de volgende code toe aan het einde van het bestaande bestand.
@inject Microsoft.ApplicationInsights.AspNetCore.JavaScriptSnippet JavaScriptSnippet
Als u bewaking aan de clientzijde voor uw toepassing op de juiste manier wilt inschakelen, opent
\Views\Shared\_Layout.cshtml
u in Visual Studio Solution Explorer de volgende code en voegt u deze direct vóór de afsluitende tag in<\head>
. Dit JavaScript-fragment moet worden ingevoegd in de<head>
sectie van elke pagina van uw toepassing die u wilt bewaken.@Html.Raw(JavaScriptSnippet.FullScript)
Tip
Een alternatief voor het gebruik is
FullScript
ScriptBody
. GebruikScriptBody
als u de<script>
tag wilt beheren om een inhoudsbeveiligingsbeleid in te stellen:<script> // apply custom changes to this script tag. @Html.Raw(JavaScriptSnippet.ScriptBody) </script>
Notitie
JavaScript-injectie biedt een standaardconfiguratie-ervaring. Als u configuratie nodig hebt naast het instellen van de verbindingsreeks, moet u automatische injectie verwijderen zoals hierboven wordt beschreven en de JavaScript SDK handmatig toevoegen.
Bewaking van databasequery's inschakelen
Bij het onderzoeken van oorzaken voor prestatievermindering is het belangrijk om inzichten op te nemen in databaseaanroepen. U schakelt bewaking in door de afhankelijkheidsmodule te configureren. Afhankelijkheidsbewaking, inclusief SQL, is standaard ingeschakeld.
Volg deze stappen om de volledige SQL-querytekst vast te leggen.
Notitie
SQL-tekst kan gevoelige gegevens bevatten, zoals wachtwoorden en PII. Wees voorzichtig bij het inschakelen van deze functie.
Open in de Visual Studio-Solution Explorer het bestand Program.cs.
Voeg bovenaan het bestand de volgende
using
instructie toe.using Microsoft.ApplicationInsights.DependencyCollector;
Als u de tekst-instrumentatie van de SQL-opdracht wilt inschakelen, voegt u de volgende code direct na de
builder.Services.AddApplicationInsightsTelemetry()
code in.builder.Services.ConfigureTelemetryModule<DependencyTrackingTelemetryModule>((module, o) => { module.EnableSqlCommandTextInstrumentation = true; });
De Azure Cafe-webtoepassing uitvoeren
Nadat u de code van de webtoepassing hebt geïmplementeerd, wordt telemetrie naar Application Insights verzonden. De Application Insights SDK verzamelt automatisch binnenkomende webaanvragen voor uw toepassing.
Klik in de Visual Studio-Solution Explorer met de rechtermuisknop op het project AzureCafe en selecteer Publiceren in het contextmenu.
Selecteer Publiceren om de nieuwe code te promoveren naar de Azure App Service.
Wanneer de Azure Cafe-webtoepassing is gepubliceerd, wordt een nieuw browservenster geopend met de Azure Cafe-webtoepassing.
Als u telemetrie wilt genereren, volgt u deze stappen in de webtoepassing om een beoordeling toe te voegen.
Als u het menu en beoordelingen van een café wilt bekijken, selecteert u Details naast een café.
Als u beoordelingen wilt weergeven en toevoegen, selecteert u op het scherm Café het tabblad Beoordelingen . Selecteer de knop Beoordeling toevoegen om een beoordeling toe te voegen.
Voer in het dialoogvenster Een beoordeling maken een naam, beoordeling en opmerkingen in en upload een foto voor de beoordeling. Wanneer u klaar bent, selecteert u Beoordeling toevoegen.
Als u aanvullende telemetrie wilt genereren, voegt u extra beoordelingen toe.
Metrische livegegevens
U kunt live metrische gegevens gebruiken om snel te controleren of Application Insights-bewaking correct is geconfigureerd. Live Metrics toont het CPU-gebruik van het actieve proces in bijna realtime. Er kunnen ook andere telemetriegegevens worden weergegeven, zoals Aanvragen, Afhankelijkheden en Traceringen. Houd er rekening mee dat het enkele minuten kan duren voordat de telemetrie wordt weergegeven in de portal en analyse.
Het toepassingsoverzicht weergeven
De voorbeeldtoepassing roept meerdere Azure-resources aan, waaronder Azure SQL, Azure Blob Storage en de Azure Language Service (voor beoordeling van sentimentanalyse).
Application Insights neemt de binnenkomende telemetriegegevens in zich op en kan een visueel overzicht genereren van de systeemintegraties die worden gedetecteerd.
Meld u aan bij de Azure-portal.
Open de resourcegroep voor de voorbeeldtoepassing, namelijk
application-insights-azure-cafe
.Selecteer in de lijst met resources de
azure-cafe-insights-{SUFFIX}
Application Insights-resource.Selecteer in het linkermenu onder de kop Onderzoekende optie Toepassingstoewijzing. Bekijk het gegenereerde toepassingsoverzicht.
HTTP-aanroepen en sql-opdrachttekst van database weergeven
Open in de Azure Portal de Application Insights-resource.
Selecteer in het linkermenu, onder de kop Onderzoeken , de optie Prestaties.
Het tabblad Bewerkingen bevat details van de HTTP-aanroepen die door de toepassing zijn ontvangen. Als u wilt schakelen tussen server- en browserweergaven (clientzijde) van de gegevens, gebruikt u de wisselknop Server/browser.
Selecteer een bewerking in de tabel en kies ervoor om in te zoomen op een voorbeeld van de aanvraag.
De end-to-end-transactie wordt weergegeven voor de geselecteerde aanvraag. In dit geval is er een beoordeling gemaakt, inclusief een installatiekopieën, dus deze bevat aanroepen naar Azure Storage en de Language Service (voor sentimentanalyse). Het omvat ook database-aanroepen naar SQL Azure om de beoordeling voort te zetten. In dit voorbeeld geeft de eerste geselecteerde gebeurtenis informatie weer ten opzichte van de HTTP POST-aanroep.
Selecteer een SQL-item om de sql-opdrachttekst te controleren die is uitgegeven aan de database.
Selecteer desgewenst de afhankelijkheidsaanvragen (uitgaande) naar Azure Storage of de taalservice.
Ga terug naar het scherm Prestaties en selecteer het tabblad Afhankelijkheden om aanroepen naar externe resources te onderzoeken. U ziet dat de tabel Operations aanroepen bevat in Sentimentanalyse, Blob Storage en Azure SQL.
Toepassingslogboeken met Application Insights
Overzicht van logboekregistratie
Application Insights is een type logboekregistratieprovider dat beschikbaar is voor ASP.NET Core toepassingen die beschikbaar worden voor toepassingen wanneer het Application Insights voor ASP.NET Core NuGet-pakket is geïnstalleerd en telemetrieverzameling aan de serverzijde is ingeschakeld.
Ter herinnering: de volgende code in Program.cs registreert de ApplicationInsightsLoggerProvider
met de ingebouwde afhankelijkheidsinjectiecontainer.
builder.Services.AddApplicationInsightsTelemetry();
Als de ApplicationInsightsLoggerProvider
app is geregistreerd als de logboekregistratieprovider, kan de app zich aanmelden bij Application Insights met behulp van constructorinjectie met ILogger of het algemene alternatief ILogger<TCategoryName>.
Notitie
De logboekregistratieprovider is standaard geconfigureerd voor het automatisch vastleggen van logboekgebeurtenissen met een ernst van LogLevel.Warning of hoger.
Bekijk de volgende voorbeeldcontroller. Het toont de injectie van ILogger, die wordt opgelost met de ApplicationInsightsLoggerProvider
die is geregistreerd met de afhankelijkheidsinjectiecontainer. In de methode Ophalen ziet u dat een informatief, waarschuwing en foutbericht zijn vastgelegd.
Notitie
Standaard wordt de tracering op informatieniveau niet vastgelegd. Alleen de niveaus Waarschuwing en hoger worden vastgelegd.
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" };
}
}
Zie Logboekregistratie in ASP.NET Core voor meer informatie.
Logboeken weergeven in Application Insights
De bovenstaande ValuesController wordt geïmplementeerd met de voorbeeldtoepassing en bevindt zich in de map Controllers van het project.
Open de voorbeeldtoepassing met behulp van een internetbrowser. Voeg toe
/api/Values
in de adresbalk en druk op Enter.Wacht in de Azure Portal even en selecteer vervolgens de Application Insights-resource azure-café-insights-{SUFFIX}.
Selecteer in het linkermenu van de Application Insights-resource onder de sectie Bewakingde optie Logboeken.
Dubbelklik in het deelvenster Tabellen onder de Application Insights-structuur op de traceringentabel .
Wijzig de query om traceringen voor de waardencontroller op te halen als volgt en selecteer vervolgens Uitvoeren om de resultaten te filteren.
traces | where operation_Name == "GET Values/Get"
In de resultaten worden de logboekberichten weergegeven die aanwezig zijn in de controller. Een logboekernst van 2 geeft een waarschuwingsniveau aan en een logboekernst van 3 geeft een foutniveau aan.
U kunt ook de query schrijven om resultaten op te halen op basis van de categorie van het logboek. Standaard is de categorie de volledig gekwalificeerde naam van de klasse waarin de ILogger wordt geïnjecteerd. In dit geval is de categorienaam ValuesController (als er een naamruimte is gekoppeld aan de klasse, wordt de naam voorafgegaan door de naamruimte). Schrijf de volgende query opnieuw en voer deze uit om resultaten op basis van categorie op te halen.
traces | where customDimensions.CategoryName == "ValuesController"
Het niveau van logboeken beheren dat naar Application Insights wordt verzonden
ILogger
implementaties hebben een ingebouwd mechanisme om logboekfiltering toe te passen. Met deze filtering kunt u de logboeken beheren die naar elke geregistreerde provider worden verzonden, inclusief de Application Insights-provider. U kunt het filteren gebruiken in de configuratie (met behulp van een bestand appsettings.json ) of in code. Zie de documentatie over logboekniveau voor meer informatie over logboekniveaus en richtlijnen voor het juiste gebruik ervan.
In de volgende voorbeelden ziet u hoe u filterregels toepast op de om het ApplicationInsightsLoggerProvider
niveau te bepalen van logboeken die naar Application Insights worden verzonden.
Filterregels maken met configuratie
De ApplicationInsightsLoggerProvider
is in configuratie alias ApplicationInsights . In de volgende sectie van een bestand appsettings.json wordt het standaardlogboekniveau voor alle providers ingesteld op LogLevel.Warning. De configuratie voor de ApplicationInsights-provider, met name voor categorieën die beginnen met 'ValuesController', overschrijft deze standaardwaarde met LogLevel.Error en hoger.
{
//... 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
}
}
}
}
Als u de voorbeeldtoepassing implementeert met de voorgaande code in appsettings.json , wordt alleen de fouttracering naar Application Insights verzonden bij interactie met de ValuesController. Dit komt doordat het LogLevel voor de categorie ValuesController is ingesteld op Fout. Daarom wordt de waarschuwingstracering onderdrukt.
Logboekregistratie naar Application Insights uitschakelen
Als u logboekregistratie wilt uitschakelen met behulp van configuratie, stelt u alle LogLevel-waarden in op 'Geen'.
{
//... 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
}
}
}
}
Stel in de code ook het standaardniveau voor de ApplicationInsightsLoggerProvider
en eventuele volgende logboekniveaus in op Geen.
var builder = WebApplication.CreateBuilder(args);
builder.Logging.AddFilter<ApplicationInsightsLoggerProvider>("", LogLevel.None);
builder.Logging.AddFilter<Microsoft.Extensions.Logging.ApplicationInsights.ApplicationInsightsLoggerProvider>("ValuesController", LogLevel.None);
Opensource-SDK
Zie de opmerkingen bij de release voor de meest recente updates en oplossingen voor fouten.
Volgende stappen
- Verken gebruikersstromen om te begrijpen hoe gebruikers door uw app navigeren.
- Configureer een verzameling momentopnamen om de status van de broncode en variabelen te zien op het moment dat er een uitzondering wordt gegenereerd.
- Gebruik de API om uw eigen gebeurtenissen en metrische gegevens te verzenden voor een gedetailleerde weergave van de prestaties en het gebruik van uw app.
- Beschikbaarheidsoverzicht
- Afhankelijkheidsinjectie in ASP.NET Core
- Logboekregistratie in ASP.NET Core
- .NET-traceringslogboeken in Application Insights
- Automatische instrumentatie voor Application Insights