Delen via


Application Insights voor ASP.NET Core-toepassingen

In dit artikel wordt beschreven hoe u Application Insights inschakelt en configureert voor een ASP.NET Core-toepassing .

Notitie

De volgende documentatie is afhankelijk van de klassieke Application Insights-API. Het langetermijnplan voor Application Insights is het verzamelen van gegevens met behulp van OpenTelemetry. Zie Azure Monitor OpenTelemetry inschakelen voor .NET-, Node.js-, Python- en Java-toepassingen en onze OpenTelemetry Roadmap voor meer informatie. Migratierichtlijnen zijn beschikbaar voor .NET, Node.js en Python.

Application Insights kan de volgende telemetrie verzamelen van uw ASP.NET Core-toepassing:

  • Verzoeken
  • Afhankelijkheden
  • Uitzonderingen
  • Prestatiemeteritems
  • Heartbeats
  • Logboeken

We gebruiken een voorbeeld van een MVC-toepassing . Als u de Worker-service gebruikt, gebruikt u de instructies in Application Insights voor Worker Service-toepassingen.

Er is een .NET-aanbieding op basis van OpenTelemetry beschikbaar. Zie Het overzicht van OpenTelemetry voor 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 verbindingsreeks s om te profiteren van nieuwe mogelijkheden.

Notitie

Als u een zelfstandige ILogger-provider wilt gebruiken, gebruikt u Microsoft.Extensions.Logging.ApplicationInsight.

Ondersteunde scenario's

Met de Application Insights SDK voor ASP.NET Core kunt u uw toepassingen bewaken, ongeacht waar of hoe ze worden uitgevoerd. Als uw toepassing wordt uitgevoerd en een netwerkverbinding met Azure heeft, kan telemetrie worden verzameld. Application Insights-bewaking wordt overal ondersteund waar .NET Core wordt ondersteund en behandelt de volgende scenario's:

  • Besturingssysteem: Windows, Linux of Mac
  • Hostingmethode: In proces of buiten proces
  • Implementatiemethode: Frameworkafhankelijk of zelfstandig
  • Webserver: Internet Information Server (IIS) of Kestrel
  • Hostingplatform: de functie Web Apps van Azure-app Service, Azure Virtual Machines, Docker en Azure Kubernetes Service (AKS)
  • .NET-versie: alle officieel ondersteunde .NET-versies die niet in preview zijn
  • IDE: Visual Studio, Visual Studio Code of opdrachtregel

Vereisten

U hebt het volgende nodig:

Telemetrie aan de serverzijde van Application Insights inschakelen (Visual Studio)

Gebruik de handleiding voor Visual Studio voor Mac. Alleen de Windows-versie van Visual Studio ondersteunt deze procedure.

  1. Open uw project in Visual Studio.

  2. Ga naar Application Insights-telemetrie toevoegen in Project>.

  3. Selecteer Azure-toepassing Insights>Next.

  4. Kies uw abonnement en Application Insights-exemplaar. U kunt ook een nieuw exemplaar maken met Nieuwe maken. Selecteer Volgende.

  5. Voeg uw Application Insights-verbindingsreeks toe of bevestig deze. Deze moet vooraf worden ingevuld op basis van uw selectie in de vorige stap. Selecteer Voltooien.

  6. Nadat u Application Insights aan uw project hebt toegevoegd, controleert u of u de nieuwste stabiele versie van de SDK gebruikt. Ga naar Project>Manage NuGet Packages>Microsoft.ApplicationInsights.AspNetCore. Als dat nodig is, selecteert u Bijwerken.

    Schermopname van waar u het Application Insights-pakket voor update kunt selecteren.

Telemetrie aan de serverzijde van Application Insights inschakelen (geen Visual Studio)

  1. Installeer het NuGet-pakket van de Application Insights SDK voor ASP.NET Core.

    U wordt aangeraden altijd de nieuwste stabiele versie te gebruiken. Zoek volledige releaseopmerkingen voor de SDK in de opensource GitHub-opslagplaats.

    In het volgende codevoorbeeld ziet u de wijzigingen die u aan het .csproj projectbestand kunt toevoegen:

    <ItemGroup>
        <PackageReference Include="Microsoft.ApplicationInsights.AspNetCore" Version="2.21.0" />
    </ItemGroup>
    
  2. Toevoegen AddApplicationInsightsTelemetry() aan uw startup.cs of program.cs klas. De keuze is afhankelijk van uw .NET Core-versie.

    Voeg builder.Services.AddApplicationInsightsTelemetry(); na de WebApplication.CreateBuilder() methode in uw Program klasse toe, zoals in dit voorbeeld:

    // This method gets called by the runtime. Use this method to add services to the container.
    var builder = WebApplication.CreateBuilder(args);
    
    // The following line enables Application Insights telemetry collection.
    builder.Services.AddApplicationInsightsTelemetry();
    
    // This code adds other services for your application.
    builder.Services.AddMvc();
    
    var app = builder.Build();
    
  3. Stel de verbindingsreeks in.

    Hoewel u een verbindingsreeks kunt opgeven als onderdeel van het ApplicationInsightsServiceOptions argumentAddApplicationInsightsTelemetry, raden we u aan de verbindingsreeks in de configuratie op te geven. In het volgende codevoorbeeld ziet u hoe u een verbindingsreeks kunt opgeven in appsettings.json. Zorg ervoor dat appsettings.json deze tijdens het publiceren naar de hoofdmap van de toepassing wordt gekopieerd.

    {
      "Logging": {
        "LogLevel": {
          "Default": "Information",
          "Microsoft.AspNetCore": "Warning"
        }
      },
      "AllowedHosts": "*",
      "ApplicationInsights": {
        "ConnectionString": "Copy connection string from Application Insights Resource Overview"
      }
    }
    

    U kunt ook de verbindingsreeks opgeven in de APPLICATIONINSIGHTS_CONNECTION_STRING omgevingsvariabele of ApplicationInsights:ConnectionString in het JSON-configuratiebestand.

    Voorbeeld:

    • SET ApplicationInsights:ConnectionString = <Copy connection string from Application Insights Resource Overview>
    • SET APPLICATIONINSIGHTS_CONNECTION_STRING = <Copy connection string from Application Insights Resource Overview>
    • APPLICATIONINSIGHTS_CONNECTION_STRING Normaal gesproken wordt deze gebruikt in Web Apps. Het kan ook worden gebruikt op alle plaatsen waar deze SDK wordt ondersteund.

    Notitie

    Een verbindingsreeks die is opgegeven in code wint van de omgevingsvariabeleAPPLICATIONINSIGHTS_CONNECTION_STRING, die wint van andere opties.

Gebruikersgeheimen en andere configuratieproviders

Als u de verbindingsreeks wilt opslaan in ASP.NET Core-gebruikersgeheimen of deze wilt ophalen van een andere configuratieprovider, kunt u de overbelasting met een Microsoft.Extensions.Configuration.IConfiguration parameter gebruiken. Een voorbeeldparameter is services.AddApplicationInsightsTelemetry(Configuration);.

In Microsoft.ApplicationInsights.AspNetCore versie 2.15.0 en hoger leest aanroepen services.AddApplicationInsightsTelemetry() automatisch de verbindingsreeks uit Microsoft.Extensions.Configuration.IConfiguration de toepassing. Het is niet nodig om expliciet op te geven IConfiguration.

Als IConfiguration de configuratie van meerdere providers is geladen, geeft services.AddApplicationInsightsTelemetry u prioriteit aan de configuratie van appsettings.json, ongeacht de volgorde waarin providers worden toegevoegd. Gebruik de services.AddApplicationInsightsTelemetry(IConfiguration) methode om configuratie van IConfiguration zonder deze preferentiële behandeling voor appsettings.jsonte lezen.

Uw toepassing uitvoeren

Voer uw toepassing uit en dien aanvragen in. Telemetrie moet nu naar Application Insights stromen. De Application Insights SDK verzamelt automatisch binnenkomende webaanvragen voor uw toepassing, samen met de volgende telemetrie.

Live metrische gegevens

Live metrische gegevens kunnen worden gebruikt om snel te controleren of toepassingsbewaking met Application Insights correct is geconfigureerd. Het kan enkele minuten duren voordat telemetrie wordt weergegeven in Azure Portal, maar in het deelvenster met livegegevens wordt het CPU-gebruik van het actieve proces bijna in realtime weergegeven. Er kunnen ook andere telemetriegegevens worden weergegeven, zoals aanvragen, afhankelijkheden en traceringen.

Live metrics inschakelen met behulp van code voor elke .NET-toepassing

Notitie

Live-metrische gegevens worden standaard ingeschakeld wanneer u deze onboardt met behulp van de aanbevolen instructies voor .NET-toepassingen.

Live metrics handmatig configureren:

  1. Installeer het NuGet-pakket Microsoft.ApplicationInsights.PerfCounterCollector.
  2. In de volgende voorbeeldcode van de console-app ziet u het instellen van live metrische gegevens:
using Microsoft.ApplicationInsights;
using Microsoft.ApplicationInsights.Extensibility;
using Microsoft.ApplicationInsights.Extensibility.PerfCounterCollector.QuickPulse;

// Create a TelemetryConfiguration instance.
TelemetryConfiguration config = TelemetryConfiguration.CreateDefault();
config.InstrumentationKey = "INSTRUMENTATION-KEY-HERE";
QuickPulseTelemetryProcessor quickPulseProcessor = null;
config.DefaultTelemetrySink.TelemetryProcessorChainBuilder
    .Use((next) =>
    {
        quickPulseProcessor = new QuickPulseTelemetryProcessor(next);
        return quickPulseProcessor;
    })
    .Build();

var quickPulseModule = new QuickPulseTelemetryModule();

// Secure the control channel.
// This is optional, but recommended.
quickPulseModule.AuthenticationApiKey = "YOUR-API-KEY-HERE";
quickPulseModule.Initialize(config);
quickPulseModule.RegisterTelemetryProcessor(quickPulseProcessor);

// Create a TelemetryClient instance. It is important
// to use the same TelemetryConfiguration here as the one
// used to set up live metrics.
TelemetryClient client = new TelemetryClient(config);

// This sample runs indefinitely. Replace with actual application logic.
while (true)
{
    // Send dependency and request telemetry.
    // These will be shown in live metrics.
    // CPU/Memory Performance counter is also shown
    // automatically without any additional steps.
    client.TrackDependency("My dependency", "target", "http://sample",
        DateTimeOffset.Now, TimeSpan.FromMilliseconds(300), true);
    client.TrackRequest("My Request", DateTimeOffset.Now,
        TimeSpan.FromMilliseconds(230), "200", true);
    Task.Delay(1000).Wait();
}

Het voorgaande voorbeeld is voor een console-app, maar dezelfde code kan worden gebruikt in .NET-toepassingen. Als andere telemetriemodules zijn ingeschakeld voor het automatisch verzamelen van telemetrie, is het belangrijk om ervoor te zorgen dat dezelfde configuratie die wordt gebruikt voor het initialiseren van deze modules wordt gebruikt voor de module met live metrische gegevens.

ILogger-logboeken

De standaardconfiguratie verzamelt ILogger Warning logboeken en ernstigere logboeken. Zie Hoe kan ik het verzamelen van ILogger-logboeken aanpassen voor meer informatie.

Afhankelijkheden

Verzameling afhankelijkheden is standaard ingeschakeld. Bijhouden van afhankelijkheden in Application Insights legt de afhankelijkheden uit die automatisch worden verzameld en bevat ook stappen om handmatig bij te houden.

Prestatiemeteritems

Ondersteuning voor prestatiemeteritems in ASP.NET Core is beperkt:

  • SDK-versies 2.4.1 en hoger verzamelen prestatiemeteritems als de toepassing wordt uitgevoerd in Web Apps (Windows).
  • SDK-versies 2.7.1 en hoger verzamelen prestatiemeteritems als de toepassing wordt uitgevoerd in Windows en doelen netstandard2.0 of hoger.
  • Voor toepassingen die zijn gericht op .NET Framework, bieden alle versies van de SDK ondersteuning voor prestatiemeteritems.
  • SDK-versies 2.8.0 en hoger ondersteunen het CPU-/geheugenmeteritem in Linux. Er wordt geen andere teller ondersteund in Linux. Gebruik EventCounters om systeemtellers op te halen in Linux- en andere niet-Windows-omgevingen.

EventCounter

EventCounterCollectionModule is standaard ingeschakeld. Zie de inleiding eventCounters voor meer informatie over het configureren van de lijst met meteritems die moeten worden verzameld.

Gegevens verrijken via HTTP

HttpContext.Features.Get<RequestTelemetry>().Properties["myProp"] = someData

Telemetrie aan clientzijde inschakelen voor webtoepassingen

De voorgaande stappen zijn voldoende om u te helpen bij het verzamelen van telemetrie aan de serverzijde. Als uw toepassing onderdelen aan de clientzijde heeft, volgt u de volgende stappen om gebruikstelemetrie te verzamelen met behulp van JavaScript (Web) SDK Loader Script injectie by configuration.

  1. Voeg in _ViewImports.cshtml, voeg injectie toe:

    @inject Microsoft.ApplicationInsights.AspNetCore.JavaScriptSnippet JavaScriptSnippet
    
  2. Voeg _Layout.cshtmlHtmlHelper aan het einde van de <head> sectie in, maar vóór een ander script. Als u aangepaste JavaScript-telemetrie van de pagina wilt rapporteren, injecteert u deze na dit fragment:

    @Html.Raw(JavaScriptSnippet.FullScript)
    </head>
    

Als alternatief voor het gebruik FullScriptvan , ScriptBody is beschikbaar vanaf Application Insights SDK voor ASP.NET Core versie 2.14. Gebruik ScriptBody deze optie 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>

De .cshtml bestandsnamen waarnaar eerder wordt verwezen, zijn afkomstig van een standaard-MVC-toepassingssjabloon. Als u uiteindelijk bewaking aan clientzijde voor uw toepassing goed wilt inschakelen, moet het JavaScript JavaScript SDK Loader Script (Web) worden weergegeven in de <head> sectie van elke pagina van uw toepassing die u wilt bewaken. Voeg het JavaScript JavaScript (Web) SDK Loader Script toe aan _Layout.cshtml in een toepassingssjabloon om bewaking aan de clientzijde in te schakelen.

Als uw project niet is opgenomen_Layout.cshtml, kunt u nog steeds bewaking aan de clientzijde toevoegen door het JavaScript JavaScript SDK-loaderscript (Web) toe te voegen aan een gelijkwaardig bestand dat de <head> controle van alle pagina's in uw app regelt. U kunt ook het JavaScript -SDK-loaderscript (web) toevoegen aan meerdere pagina's, maar dit wordt niet aanbevolen.

Notitie

JavaScript-injectie biedt een standaardconfiguratie-ervaring. Als u geen configuratie meer nodig hebt dan het instellen van de verbindingsreeks, moet u automatische injectie verwijderen zoals beschreven en de JavaScript SDK handmatig toevoegen.

De Application Insights-SDK configureren

U kunt de Application Insights SDK voor ASP.NET Core aanpassen om de standaardconfiguratie te wijzigen. Gebruikers van de Application Insights ASP.NET SDK zijn mogelijk bekend met het wijzigen van de configuratie met behulp ApplicationInsights.config van of door deze te TelemetryConfiguration.Activewijzigen. Voor ASP.NET Core moet u bijna alle configuratiewijzigingen aanbrengen in de ConfigureServices() methode van uw Startup.cs klasse, tenzij u anders wordt omgeleid. De volgende secties bieden meer informatie.

Notitie

In ASP.NET Core-toepassingen wordt het wijzigen van de configuratie door het wijzigen TelemetryConfiguration.Active niet ondersteund.

ApplicationInsightsServiceOptions gebruiken

U kunt enkele algemene instellingen wijzigen door dit door te geven ApplicationInsightsServiceOptions aan AddApplicationInsightsTelemetry, zoals in dit voorbeeld:

var builder = WebApplication.CreateBuilder(args);

var aiOptions = new Microsoft.ApplicationInsights.AspNetCore.Extensions.ApplicationInsightsServiceOptions();

// Disables adaptive sampling.
aiOptions.EnableAdaptiveSampling = false;

// Disables live metrics (also known as QuickPulse).
aiOptions.EnableQuickPulseMetricStream = false;

builder.Services.AddApplicationInsightsTelemetry(aiOptions);
var app = builder.Build();

Deze tabel bevat de volledige lijst met ApplicationInsightsServiceOptions instellingen:

Instelling Beschrijving Standaard
EnablePerformanceCounterCollectionModule In- en uitschakelen PerformanceCounterCollectionModule. Waar
EnableRequestTrackingTelemetryModule In- en uitschakelen RequestTrackingTelemetryModule. Waar
EnableEventCounterCollectionModule In- en uitschakelen EventCounterCollectionModule. Waar
EnableDependencyTrackingTelemetryModule In- en uitschakelen DependencyTrackingTelemetryModule. Waar
EnableAppServicesHeartbeatTelemetryModule In- en uitschakelen AppServicesHeartbeatTelemetryModule. Waar
EnableAzureInstanceMetadataTelemetryModule In- en uitschakelen AzureInstanceMetadataTelemetryModule. Waar
EnableQuickPulseMetricStream De functie LiveMetrics in- of uitschakelen. Waar
EnableAdaptiveSampling Adaptieve steekproeven in- of uitschakelen. Waar
EnableHeartbeat Schakel de heartbeatfunctie in of uit. Er wordt periodiek (standaardwaarde van 15 minuten) een aangepaste metrische waarde met de naam verzonden HeartbeatState met informatie over de runtime, zoals .NET-versie en Informatie over de Azure-omgeving, indien van toepassing. Waar
AddAutoCollectedMetricExtractor Schakel de AutoCollectedMetrics extractoroptie in of uit. Deze telemetrieprocessor verzendt vooraf geaggregeerde metrische gegevens over aanvragen/afhankelijkheden voordat er steekproeven worden genomen. Waar
RequestCollectionOptions.TrackExceptions Rapportage van niet-verwerkte uitzonderingen bijhouden door de module aanvraagverzameling in- of uitschakelen. Onwaar in netstandard2.0 (omdat uitzonderingen worden bijgehouden met ApplicationInsightsLoggerProvider). Waar anders.
EnableDiagnosticsTelemetryModule In- en uitschakelen DiagnosticsTelemetryModule. Als u uitschakelt, worden de volgende instellingen genegeerd: EnableHeartbeat, EnableAzureInstanceMetadataTelemetryModuleen EnableAppServicesHeartbeatTelemetryModule. Waar

Zie de configureerbare instellingen in ApplicationInsightsServiceOptionsvoor de meest recente lijst.

Configuratieaanbeveling voor Microsoft.ApplicationInsights.AspNetCore SDK 2.15.0 en hoger

Configureer in Microsoft.ApplicationInsights.AspNetCore SDK versie 2.15.0 en hoger elke instelling die beschikbaar is in ApplicationInsightsServiceOptions, inclusief ConnectionString. Gebruik het exemplaar van IConfiguration de toepassing. De instellingen moeten zich onder de sectie bevinden ApplicationInsights, zoals wordt weergegeven in het volgende voorbeeld. In de volgende sectie van appsettings.json configureert u de verbindingsreeks en schakelt u de verzameling adaptieve steekproeven en prestatiemeteritems uit.

{
    "ApplicationInsights": {
    "ConnectionString": "Copy connection string from Application Insights Resource Overview",
    "EnableAdaptiveSampling": false,
    "EnablePerformanceCounterCollectionModule": false
    }
}

Als builder.Services.AddApplicationInsightsTelemetry(aiOptions) voor ASP.NET Core 6.0 of services.AddApplicationInsightsTelemetry(aiOptions) voor ASP.NET Core 3.1 en eerder wordt gebruikt, worden de instellingen overschreven van Microsoft.Extensions.Configuration.IConfiguration.

Steekproeven

De Application Insights SDK voor ASP.NET Core ondersteunt zowel vaste frequentie als adaptieve steekproeven. Adaptieve steekproeven zijn standaard ingeschakeld.

Zie Adaptieve steekproeven configureren voor ASP.NET Core-toepassingen voor meer informatie.

TelemetryInitializers toevoegen

Als u telemetrie wilt verrijken met meer informatie, gebruikt u initialisatiefuncties voor telemetrie.

Voeg nieuwe items TelemetryInitializer toe aan de DependencyInjection container, zoals wordt weergegeven in de volgende code. De SDK haalt automatisch alle TelemetryInitializer items op die aan de DependencyInjection container worden toegevoegd.

var builder = WebApplication.CreateBuilder(args);

builder.Services.AddSingleton<ITelemetryInitializer, MyCustomTelemetryInitializer>();

var app = builder.Build();

Notitie

builder.Services.AddSingleton<ITelemetryInitializer, MyCustomTelemetryInitializer>(); werkt voor eenvoudige initialisaties. Voor anderen builder.Services.AddSingleton(new MyCustomTelemetryInitializer() { fieldName = "myfieldName" }); is dit vereist.

TelemetryInitializers verwijderen

Telemetrie-initialisatiefuncties zijn standaard aanwezig. Als u alle of specifieke telemetrie-initialisatiefuncties wilt verwijderen, gebruikt u de volgende voorbeeldcode na het aanroepen AddApplicationInsightsTelemetry().

var builder = WebApplication.CreateBuilder(args);

builder.Services.AddApplicationInsightsTelemetry();

// Remove a specific built-in telemetry initializer
var tiToRemove = builder.Services.FirstOrDefault<ServiceDescriptor>
                    (t => t.ImplementationType == typeof(AspNetCoreEnvironmentTelemetryInitializer));
if (tiToRemove != null)
{
    builder.Services.Remove(tiToRemove);
}

// Remove all initializers
// This requires importing namespace by using Microsoft.Extensions.DependencyInjection.Extensions;
builder.Services.RemoveAll(typeof(ITelemetryInitializer));

var app = builder.Build();

Telemetrieprocessors toevoegen

U kunt aangepaste telemetrieprocessors TelemetryConfiguration toevoegen met behulp van de extensiemethode AddApplicationInsightsTelemetryProcessor op IServiceCollection. U gebruikt telemetrieprocessors in geavanceerde filterscenario's. Gebruik het volgende voorbeeld:

var builder = WebApplication.CreateBuilder(args);

// ...
builder.Services.AddApplicationInsightsTelemetry();
builder.Services.AddApplicationInsightsTelemetryProcessor<MyFirstCustomTelemetryProcessor>();

// If you have more processors:
builder.Services.AddApplicationInsightsTelemetryProcessor<MySecondCustomTelemetryProcessor>();

var app = builder.Build();

Standaardtelemetriemodules configureren of verwijderen

Application Insights verzamelt automatisch telemetrie over specifieke werkbelastingen zonder dat handmatig bijhouden door de gebruiker is vereist.

Standaard zijn de volgende modules voor automatische verzameling ingeschakeld. Deze modules zijn verantwoordelijk voor het automatisch verzamelen van telemetrie. U kunt ze uitschakelen of configureren om hun standaardgedrag te wijzigen.

  • RequestTrackingTelemetryModule: verzamelt RequestTelemetry van binnenkomende webaanvragen.
  • DependencyTrackingTelemetryModule: verzamelt DependencyTelemetry van uitgaande HTTP-aanroepen en SQL-aanroepen.
  • PerformanceCollectorModule: verzamelt Windows PerformanceCounters.
  • QuickPulseTelemetryModule: verzamelt telemetrie om weer te geven in het deelvenster met live metrische gegevens.
  • AppServicesHeartbeatTelemetryModule: verzamelt heartbeats (die worden verzonden als aangepaste metrische gegevens), over de App Service-omgeving waar de toepassing wordt gehost.
  • AzureInstanceMetadataTelemetryModule: verzamelt heartbeats (die worden verzonden als aangepaste metrische gegevens), over de Azure VM-omgeving waar de toepassing wordt gehost.
  • EventCounterCollectionModule: Verzamelt EventCounters. Deze module is een nieuwe functie en is beschikbaar in SDK-versie 2.8.0 en hoger.

Als u een standaardinstelling TelemetryModulewilt configureren, gebruikt u de extensiemethode ConfigureTelemetryModule<T> op IServiceCollection, zoals wordt weergegeven in het volgende voorbeeld:

using Microsoft.ApplicationInsights.DependencyCollector;
using Microsoft.ApplicationInsights.Extensibility.PerfCounterCollector;

var builder = WebApplication.CreateBuilder(args);

builder.Services.AddApplicationInsightsTelemetry();

// The following configures DependencyTrackingTelemetryModule.
// Similarly, any other default modules can be configured.
builder.Services.ConfigureTelemetryModule<DependencyTrackingTelemetryModule>((module, o) =>
        {
            module.EnableW3CHeadersInjection = true;
        });

// The following removes all default counters from EventCounterCollectionModule, and adds a single one.
builder.Services.ConfigureTelemetryModule<EventCounterCollectionModule>((module, o) =>
        {
            module.Counters.Add(new EventCounterCollectionRequest("System.Runtime", "gen-0-size"));
        });

// The following removes PerformanceCollectorModule to disable perf-counter collection.
// Similarly, any other default modules can be removed.
var performanceCounterService = builder.Services.FirstOrDefault<ServiceDescriptor>(t => t.ImplementationType == typeof(PerformanceCollectorModule));
if (performanceCounterService != null)
{
    builder.Services.Remove(performanceCounterService);
}

var app = builder.Build();

In versie 2.12.2 en hoger ApplicationInsightsServiceOptions is een eenvoudige optie om een van de standaardmodules uit te schakelen.

Een telemetriekanaal configureren

Het standaardtelemetriekanaal is ServerTelemetryChannel. In het volgende voorbeeld ziet u hoe u deze kunt overschrijven.

using Microsoft.ApplicationInsights.Channel;

var builder = WebApplication.CreateBuilder(args);

// Use the following to replace the default channel with InMemoryChannel.
// This can also be applied to ServerTelemetryChannel.
builder.Services.AddSingleton(typeof(ITelemetryChannel), new InMemoryChannel() {MaxTelemetryBufferCapacity = 19898 });

builder.Services.AddApplicationInsightsTelemetry();

var app = builder.Build();

Notitie

Zie Gegevens leegmaken als u de buffer wilt leegmaken. U moet de buffer bijvoorbeeld leegmaken als u de SDK gebruikt in een toepassing die wordt afgesloten.

Telemetrie dynamisch uitschakelen

Als u telemetrie voorwaardelijk en dynamisch wilt uitschakelen, kunt u het TelemetryConfiguration exemplaar oplossen met een ASP.NET Container voor kernafhankelijkheidsinjectie overal in uw code en de DisableTelemetry vlag erop instellen.

var builder = WebApplication.CreateBuilder(args);

builder.Services.AddApplicationInsightsTelemetry();

// any custom configuration can be done here:
builder.Services.Configure<TelemetryConfiguration>(x => x.DisableTelemetry = true);

var app = builder.Build();

Het voorgaande codevoorbeeld voorkomt het verzenden van telemetrie naar Application Insights. Er wordt niet voorkomen dat automatische verzamelingsmodules telemetrie verzamelen. Zie De telemetriemodule verwijderen als u een bepaalde module voor automatisch verzamelen wilt verwijderen.

Veelgestelde vragen

In deze sectie vindt u antwoorden op veelgestelde vragen.

Biedt Application Insights ondersteuning voor ASP.NET Core 3.1?

ASP.NET Core 3.1 wordt niet meer ondersteund door Microsoft.

Application Insights SDK voor ASP.NET Core versie 2.8.0 en Visual Studio 2019 of hoger kan worden gebruikt met ASP.NET Core 3.1-toepassingen.

Hoe kan ik telemetrie bijhouden die niet automatisch wordt verzameld?

Haal een exemplaar op van het gebruik van TelemetryClient constructorinjectie en roep de vereiste TrackXXX() methode erop aan. Het is niet raadzaam om nieuwe TelemetryClient exemplaren te TelemetryConfiguration maken in een ASP.NET Core-toepassing. Er is al een singleton-instantie geregistreerd TelemetryClient in de DependencyInjection container, die wordt gedeeld TelemetryConfiguration met de rest van de telemetrie. Maak alleen een nieuw TelemetryClient exemplaar als er een configuratie nodig is die losstaat van de rest van de telemetrie.

In het volgende voorbeeld ziet u hoe u meer telemetrie van een controller kunt bijhouden.

using Microsoft.ApplicationInsights;

public class HomeController : Controller
{
    private TelemetryClient telemetry;

    // Use constructor injection to get a TelemetryClient instance.
    public HomeController(TelemetryClient telemetry)
    {
        this.telemetry = telemetry;
    }

    public IActionResult Index()
    {
        // Call the required TrackXXX method.
        this.telemetry.TrackEvent("HomePageRequested");
        return View();
    }

Zie de api-naslaginformatie over aangepaste metrische gegevens in Application Insights voor meer informatie over aangepaste gegevensrapportage in Application Insights. Een vergelijkbare benadering kan worden gebruikt voor het verzenden van aangepaste metrische gegevens naar Application Insights met behulp van de GetMetric-API.

Hoe kan ik de hoofdtekst aanvraag en antwoord vastleggen in mijn telemetrie?

ASP.NET Core heeft ingebouwde ondersteuning voor het vastleggen van HTTP-aanvraag-/antwoordgegevens (inclusief hoofdtekst) via ILogger. Het wordt aanbevolen om dit te gebruiken. Hierdoor kunnen mogelijk persoonlijke gegevens (PII) in telemetrie worden weergegeven en kunnen kosten (prestatiekosten en Application Insights-facturering) aanzienlijk toenemen, dus evalueer de risico's zorgvuldig voordat u dit gebruikt.

Hoe kan ik het verzamelen van ILogger-logboeken aanpassen?

De standaardinstelling voor Application Insights is om alleen waarschuwingen en ernstigere logboeken vast te leggen.

Leg informatie vast en minder ernstige logboeken door de logboekconfiguratie voor de Application Insights-provider als volgt te wijzigen.

{
  "Logging": {
    "LogLevel": {
      "Default": "Information"
    },
    "ApplicationInsights": {
      "LogLevel": {
        "Default": "Information"
      }
    }
  },
  "ApplicationInsights": {
    "ConnectionString": "InstrumentationKey=00000000-0000-0000-0000-000000000000"
  }
}

Het is belangrijk te weten dat in het volgende voorbeeld de Application Insights-provider geen logboeken kan vastleggen Information . Deze wordt niet vastgelegd omdat de SDK een standaardlogboekfilter toevoegt ApplicationInsights waarmee alleen Warning logboeken en ernstigere logboeken kunnen worden vastgelegd. Application Insights vereist een expliciete onderdrukking.

{
  "Logging": {
    "LogLevel": {
      "Default": "Information"
    }
  }
}

Zie ILogger-configuratie voor meer informatie.

Sommige Visual Studio-sjablonen hebben de extensiemethode UseApplicationInsights() op IWebHostBuilder gebruikt om Application Insights in te schakelen. Is dit gebruik nog steeds geldig?

De extensiemethode UseApplicationInsights() wordt nog steeds ondersteund, maar deze is gemarkeerd als verouderd in Application Insights SDK versie 2.8.0 en hoger. Deze wordt verwijderd in de volgende primaire versie van de SDK. Als u Application Insights-telemetrie wilt inschakelen, gebruikt AddApplicationInsightsTelemetry() u deze omdat deze overbelasting biedt om bepaalde configuraties te beheren. In ASP.NET Core 3.X-apps services.AddApplicationInsightsTelemetry() is ook de enige manier om Application Insights in te schakelen.

Ik implementeer mijn ASP.NET Core-toepassing in Web Apps. Moet ik de Application Insights-extensie nog steeds inschakelen vanuit Web Apps?

Als de SDK is geïnstalleerd tijdens de build, zoals wordt weergegeven in dit artikel, hoeft u de Application Insights-extensie niet in te schakelen vanuit de App Service-portal. Als de extensie is geïnstalleerd, wordt deze weer uitgeschakeld wanneer wordt gedetecteerd dat de SDK al is toegevoegd. Als u Application Insights vanuit de extensie inschakelt, hoeft u de SDK niet te installeren en bij te werken. Maar als u Application Insights inschakelt door de instructies in dit artikel te volgen, hebt u meer flexibiliteit omdat:

  • Application Insights-telemetrie blijft werken in:
    • Alle besturingssystemen, waaronder Windows, Linux en Mac.
    • Alle publicatiemodi, inclusief zelfstandige of frameworkafhankelijke modi.
    • Alle doelframeworks, inclusief het volledige .NET Framework.
    • Alle hostingopties, waaronder Web Apps, VM's, Linux, containers, AKS en niet-Azure-hosting.
    • Alle .NET Core-versies, inclusief preview-versies.
  • U kunt telemetrie lokaal zien wanneer u fouten opspoort vanuit Visual Studio.
  • U kunt meer aangepaste telemetrie bijhouden met behulp van de TrackXXX() API.
  • U hebt volledige controle over de configuratie.

Kan ik Application Insights-bewaking inschakelen met behulp van hulpprogramma's zoals Azure Monitor Application Insights Agent (voorheen Status Monitor v2)?

Ja. In Application Insights Agent 2.0.0-beta1 en hoger worden ASP.NET Core-toepassingen die worden gehost in IIS, ondersteund.

Worden alle functies ondersteund als ik mijn toepassing in Linux uitvoer?

Ja. Functieondersteuning voor de SDK is op alle platforms hetzelfde, met de volgende uitzonderingen:

Wordt deze SDK ondersteund voor Worker Services?

Nee Gebruik Application Insights voor Worker Service-toepassingen (niet-HTTP-toepassingen) voor werkrolservices.

Hoe kan ik de SDK verwijderen?

Als u Application Insights wilt verwijderen, moet u de NuGet-pakketten en verwijzingen uit de API in uw toepassing verwijderen. U kunt NuGet-pakketten verwijderen met behulp van de NuGet-Pakketbeheer in Visual Studio.

Notitie

Deze instructies zijn bedoeld voor het verwijderen van de ASP.NET Core SDK. Als u de ASP.NET SDK wilt verwijderen, raadpleegt u Hoe kan ik de ASP.NET SDK verwijderen?

  1. Verwijder het Microsoft.ApplicationInsights.AspNetCore-pakket met behulp van de NuGet-Pakketbeheer.
  2. Als u Application Insights volledig wilt verwijderen, controleert en verwijdert u handmatig de toegevoegde code of bestanden, samen met eventuele API-aanroepen die u in uw project hebt toegevoegd. Zie Wat wordt er gemaakt wanneer u de Application Insights SDK toevoegt voor meer informatie.

Wat wordt er gemaakt wanneer u de Application Insights SDK toevoegt?

Wanneer u Application Insights aan uw project toevoegt, worden er bestanden gemaakt en code toegevoegd aan enkele van uw bestanden. Als u de NuGet-pakketten alleen verwijdert, worden de bestanden en code niet altijd verwijderd. Als u Application Insights volledig wilt verwijderen, moet u de toegevoegde code of bestanden controleren en handmatig verwijderen, samen met eventuele API-aanroepen die u in uw project hebt toegevoegd.

Wanneer u Application Insights-telemetrie toevoegt aan een Visual Studio ASP.NET Core-sjabloonproject, wordt de volgende code toegevoegd:

  • [De naam van uw project].csproj

      <PropertyGroup>
        <TargetFramework>netcoreapp3.1</TargetFramework>
        <ApplicationInsightsResourceId>/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/Default-ApplicationInsights-EastUS/providers/microsoft.insights/components/WebApplication4core</ApplicationInsightsResourceId>
      </PropertyGroup>
    
      <ItemGroup>
        <PackageReference Include="Microsoft.ApplicationInsights.AspNetCore" Version="2.12.0" />
      </ItemGroup>
    
      <ItemGroup>
        <WCFMetadata Include="Connected Services" />
      </ItemGroup>
    
  • Appsettings.json:

    "ApplicationInsights": {
        "InstrumentationKey": "00000000-0000-0000-0000-000000000000"
    
  • ConnectedService.json

    {
      "ProviderId": "Microsoft.ApplicationInsights.ConnectedService.ConnectedServiceProvider",
      "Version": "16.0.0.0",
      "GettingStartedDocument": {
        "Uri": "https://go.microsoft.com/fwlink/?LinkID=798432"
      }
    }
    
  • Startup.cs

       public void ConfigureServices(IServiceCollection services)
            {
                services.AddRazorPages();
                services.AddApplicationInsightsTelemetry(); // This is added
            }
    

Hoe kan ik telemetriecorrelatie uitschakelen?

Als u telemetriecorrelatie in code wilt uitschakelen, raadpleegt <ExcludeComponentCorrelationHttpHeadersOnDomains> u Application Insights voor consoletoepassingen.

Probleemoplossing

Zie het speciale artikel over probleemoplossing.

Connectiviteit testen tussen uw toepassingshost en de opnameservice

Application Insights SDK's en agents verzenden telemetrie om opgenomen te worden als REST-aanroepen naar onze opname-eindpunten. U kunt de connectiviteit vanaf uw webserver of toepassingshostcomputer testen op de service-eindpunten voor opname met behulp van onbewerkte REST-clients uit PowerShell- of curl-opdrachten. Zie Problemen met ontbrekende toepassingstelemetrie oplossen in Azure Monitor Application Insights.

Opensource-SDK

Lezen en bijdragen aan de code.

Zie de releaseopmerkingen voor de meest recente updates en oplossingen voor fouten.

Opmerkingen bij de release

Voor versie 2.12 en hoger: .NET SDK's (inclusief ASP.NET, ASP.NET Core- en Logboekregistratieadapters)

Onze service-updates geven ook een overzicht van belangrijke Application Insights-verbeteringen.

Volgende stappen