Toepassings Insights voor ASP.NET Core toepassingen

In dit artikel wordt beschreven hoe u Application Insights inschakelen voor ASP.NET Core toepassing. Wanneer u de instructies in dit artikel hebt voltooid, verzamelt Application Insights aanvragen, afhankelijkheden, uitzonderingen, prestatiemeters, heartbeats en logboeken van uw ASP.NET Core toepassing.

Het voorbeeld dat we hier gebruiken, is een MVC-toepassing die is gericht op netcoreapp3.0 . U kunt deze instructies toepassen op alle ASP.NET Core toepassingen. Als u de Worker-service gebruikt,volgt u de instructies hier.

Ondersteunde scenario's

De Application Insights SDK voor ASP.NET Core kunt uw toepassingen bewaken, ongeacht waar of hoe ze worden uitgevoerd. Als uw toepassing wordt uitgevoerd en netwerkverbinding heeft met Azure, kan telemetrie worden verzameld. Toepassings Insights bewaking wordt overal ondersteund waar .NET Core wordt ondersteund. Ondersteuning omvat het volgende:

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

Notitie

ASP.NET Core 3.1 vereist Application Insights 2.8.0 of hoger.

Vereisten

  • Een werkende ASP.NET Core toepassing. Als u een toepassing voor een ASP.NET Core wilt maken, volgt u deze ASP.NET Core zelfstudie.
  • Een geldige Application Insights instrumentatiesleutel. Deze sleutel is vereist voor het verzenden van telemetrie naar Application Insights. Als u een nieuwe Application Insights-resource moet maken om een instrumentatiesleutel op te halen, zie Een Application Insights maken.

Belangrijk

Verbindingsreeksen worden aanbevolen voor instrumentatiesleutels. Nieuwe Azure-regio's vereisen het gebruik van verbindingsreeksen in plaats van instrumentatiesleutels. Verbindingsreeks identificeert de resource waar u uw telemetriegegevens aan wilt koppelen. U kunt hiermee ook de eindpunten wijzigen die door uw resource worden gebruikt als bestemming voor uw telemetrie. U moet de gegevens kopiëren connection string toevoegen aan de code van uw toepassing of aan een omgevingsvariabele.

Telemetrie Insights toepassingsserver inschakelen (Visual Studio)

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

  1. Open uw project in Visual Studio.

    Tip

    Als u alle wijzigingen wilt bijhouden die application Insights maakt, kunt u broncodebeheer instellen voor uw project. Selecteer Bestand toevoegen aan broncodebeheer om dit in > te stellen.

  2. Selecteer Project > Add Application Insights Telemetry.

  3. Selecteer Aan de slag. Afhankelijk van uw versie van Visual Studio, kan de naam van deze knop variëren. In sommige eerdere versies heet dit de knop Gratis starten.

  4. Selecteer uw abonnement en selecteer vervolgens Resource > registreren.

  5. Nadat u Application Insights aan uw project hebt toevoegen, 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 die laat zien waar het Application Insights-pakket voor update moet worden geselecteerd

  6. Als u uw project hebt toegevoegd aan broncodebeheer, gaat u naar Wijzigingen in > Team Explorer > weergeven. U kunt elk bestand selecteren om een diff-weergave te zien van de wijzigingen die zijn aangebracht door Application Insights telemetrie.

Telemetrie Insights toepassingsserver inschakelen (geen Visual Studio)

  1. Installeer het Application Insights SDK NuGet-pakket voor ASP.NET Core. U wordt aangeraden altijd de nieuwste stabiele versie te gebruiken. Zoek de volledige release-opmerkingen voor de SDK in de opensource-GitHub-repo.

    In het volgende codevoorbeeld ziet u de wijzigingen die moeten worden toegevoegd aan het bestand van uw .csproj project.

        <ItemGroup>
          <PackageReference Include="Microsoft.ApplicationInsights.AspNetCore" Version="2.16.0" />
        </ItemGroup>
    
  2. Voeg services.AddApplicationInsightsTelemetry(); toe aan de methode in uw ConfigureServices() Startup klasse, zoals in dit voorbeeld:

        // This method gets called by the runtime. Use this method to add services to the container.
        public void ConfigureServices(IServiceCollection services)
        {
            // The following line enables Application Insights telemetry collection.
            services.AddApplicationInsightsTelemetry();
    
            // This code adds other services for your application.
            services.AddMvc();
        }
    
  3. Stel de instrumentatiesleutel in.

    Hoewel u de instrumentatiesleutel als argument voor kunt opgeven, raden we u aan de instrumentatiesleutel op te geven AddApplicationInsightsTelemetry in de configuratie. In het volgende codevoorbeeld ziet u hoe u een instrumentatiesleutel opgeeft in appsettings.json . Zorg ervoor appsettings.json dat tijdens het publiceren naar de hoofdmap van de toepassing wordt gekopieerd.

        {
          "ApplicationInsights": {
            "InstrumentationKey": "putinstrumentationkeyhere"
          },
          "Logging": {
            "LogLevel": {
              "Default": "Warning"
            }
          }
        }
    

    U kunt ook de instrumentatiesleutel opgeven in een van de volgende omgevingsvariabelen:

    • APPINSIGHTS_INSTRUMENTATIONKEY

    • ApplicationInsights:InstrumentationKey

    Bijvoorbeeld:

    • SET ApplicationInsights:InstrumentationKey=putinstrumentationkeyhere

    • SET APPINSIGHTS_INSTRUMENTATIONKEY=putinstrumentationkeyhere

    • Wordt doorgaans gebruikt in Azure Web Apps, maar het kan ook worden gebruikt op alle APPINSIGHTS_INSTRUMENTATIONKEY plaatsen waar deze SDK wordt ondersteund. (Als u web-app-bewaking zonder code gebruikt, is deze indeling vereist als u geen verbindingsreeksen gebruikt.)

    In plaats van instrumentatiesleutels in te stellen, kunt u nu ook verbindingsreeksen gebruiken.

    Notitie

    Een instrumentatiesleutel die is opgegeven in code, wint van de omgevingsvariabele APPINSIGHTS_INSTRUMENTATIONKEY , die over andere opties wint.

Gebruikersgeheimen en andere configuratieproviders

Als u de instrumentatiesleutel wilt opslaan in ASP.NET Core-gebruikersgeheimen of wilt ophalen van een andere configuratieprovider, kunt u de overbelasting met een Microsoft.Extensions.Configuration.IConfiguration parameter gebruiken. Bijvoorbeeld services.AddApplicationInsightsTelemetry(Configuration);. Vanaf Microsoft.ApplicationInsights.AspNetCore versie 2.15.0leest aanroepen automatisch de instrumentatiesleutel van services.AddApplicationInsightsTelemetry() de Microsoft.Extensions.Configuration.IConfiguration toepassing. U hoeft de niet expliciet op te IConfiguration geven.

Uw toepassing uitvoeren

Voer uw toepassing uit en maak er aanvragen voor. Telemetrie wordt nu naar Application Insights. De Application Insights SDK verzamelt automatisch inkomende webaanvragen naar uw toepassing, samen met de volgende telemetrie.

Live Metrics

Live Metrics kan worden gebruikt om snel te controleren of application Insights juist is geconfigureerd. Het kan enkele minuten duren voordat telemetrie wordt weergegeven in de portal en analyses, maar live metrische gegevens tonen het CPU-gebruik van het lopende proces in bijna realtime. Er kunnen ook andere telemetrie worden weer geven, zoals aanvragen, afhankelijkheden en traceringen.

ILoggerlogboeken

De standaardconfiguratie verzamelt ILogger Warning logboeken en ernstigere logboeken. U kunt deze configuratie aanpassen.

Afhankelijkheden

Afhankelijkheidsverzameling is standaard ingeschakeld. In dit artikel worden de afhankelijkheden uitgelegd die automatisch worden verzameld, en vindt u ook stappen om handmatige tracering uit te voeren.

Prestatiemeteritems

Ondersteuning voor prestatiemeters in ASP.NET Core is beperkt:

  • SDK-versies 2.4.1 en hoger verzamelen prestatiemeters als de toepassing wordt uitgevoerd in Azure Web Apps (Windows).
  • SDK-versies 2.7.1 en hoger verzamelen prestatiemeters als de toepassing wordt uitgevoerd in Windows doelen NETSTANDARD2.0 of hoger.
  • Voor toepassingen die zijn gericht .NET Framework, ondersteunen alle versies van de SDK prestatiemeters.
  • SDK-versies 2.8.0 en hoger ondersteunen teller cpu/geheugen in Linux. Er wordt geen andere teller ondersteund in Linux. De aanbevolen manier om systeemtellers op te halen in Linux (en andere niet-Windows omgevingen) is door EventCounters te gebruiken.

EventCounter

Is standaard EventCounterCollectionModule ingeschakeld. Zie Inleiding tot EventCountersvoor meer informatie over het configureren van de lijst met tellers die moeten worden verzameld.

Telemetrie aan clientzijde inschakelen voor webtoepassingen

De voorgaande stappen zijn voldoende om telemetrie aan de serverzijde te verzamelen. Als uw toepassing onderdelen aan de clientzijde heeft, volgt u de volgende stappen om te beginnen met het verzamelen van gebruiks-telemetrie.

  1. Voeg _ViewImports.cshtml in injectie toe:
    @inject Microsoft.ApplicationInsights.AspNetCore.JavaScriptSnippet JavaScriptSnippet
  1. Voeg _Layout.cshtml in toe aan het einde van de HtmlHelper <head> sectie, 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 van de is de beschikbaar vanaf Application Insights SDK voor ASP.NET Core FullScript ScriptBody versie 2.14. Gebruik deze als u de tag wilt bepalen <script> 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 uit een standaard-MVC-toepassingssjabloon. Als u bewaking aan de clientzijde voor uw toepassing op de juiste wijze wilt inschakelen, moet het JavaScript-fragment uiteindelijk worden weergegeven in de sectie van elke pagina van uw toepassing die <head> u wilt bewaken. Voeg het JavaScript-fragment toe aan om dit in deze toepassingssjabloon te _Layout.cshtml doen.

Als uw project niet bevat, kunt _Layout.cshtml u nog steeds bewaking aan clientzijde toevoegen. Voeg hiervoor het JavaScript-fragment toe aan een gelijkwaardig bestand waarmee de van alle <head> pagina's in uw app wordt bestuurd. U kunt het fragment ook toevoegen aan meerdere pagina's, maar deze oplossing is moeilijk te onderhouden en wordt doorgaans niet aanbevolen.

Notitie

JavaScript-injectie biedt een standaardconfiguratie-ervaring. Als u configuratie vereist naast het instellen van de instrumentatiesleutel, moet u automatische injectie verwijderen zoals hierboven wordt beschreven en de JavaScript SDK handmatig toevoegen.

De Application Insights-SDK configureren

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

Notitie

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

ApplicationInsightsServiceOptions gebruiken

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

public void ConfigureServices(IServiceCollection services)
{
    Microsoft.ApplicationInsights.AspNetCore.Extensions.ApplicationInsightsServiceOptions aiOptions
                = new Microsoft.ApplicationInsights.AspNetCore.Extensions.ApplicationInsightsServiceOptions();
    // Disables adaptive sampling.
    aiOptions.EnableAdaptiveSampling = false;

    // Disables QuickPulse (Live Metrics stream).
    aiOptions.EnableQuickPulseMetricStream = false;
    services.AddApplicationInsightsTelemetry(aiOptions);
}

Deze tabel heeft de volledige lijst met ApplicationInsightsServiceOptions instellingen:

Instelling Beschrijving Standaard
EnablePerformanceCounterCollectionModule Inschakelen/uitschakelen PerformanceCounterCollectionModule true
EnableRequestTrackingTelemetryModule Inschakelen/uitschakelen RequestTrackingTelemetryModule true
EnableEventCounterCollectionModule Inschakelen/uitschakelen EventCounterCollectionModule true
EnableDependencyTrackingTelemetryModule Inschakelen/uitschakelen DependencyTrackingTelemetryModule true
EnableAppServicesBeatTelemetryModule Inschakelen/uitschakelen AppServicesHeartbeatTelemetryModule true
EnableAzureInstanceMetadataTelemetryModule Inschakelen/uitschakelen AzureInstanceMetadataTelemetryModule true
EnableQuickPulseMetricStream De functie LiveMetrics in-/uitschakelen true
EnableAdaptiveSampling Adaptieve steekproeven in-/uitschakelen true
EnableBeat De functie Heartbeats in-/uitschakelen, die periodiek (standaard 15 minuten) een aangepaste metriek met de naam HeartbeatState verzendt met informatie over de runtime, zoals .NET-versie, informatie over de Azure-omgeving, indien van toepassing, enzovoort. true
AddAutoCollectedMetricExtractor AutoCollectedMetrics-extractor inschakelen/uitschakelen. Dit is een TelemetryProcessor die vooraf geaggregeerde metrische gegevens over aanvragen/afhankelijkheden verzendt voordat steekproeven worden genomen. true
RequestCollectionOptions.TrackExceptions De rapportage van onverhandelde uitzonderingstracking door de module Aanvraagverzameling in-/uitschakelen. false in NETSTANDARD2.0 (omdat uitzonderingen worden bij te houden met ApplicationInsightsLoggerProvider), anders true.
EnableDiagnosticsTelemetryModule In- of DiagnosticsTelemetryModule uitschakelen. Als u dit uitvolgt, worden de volgende instellingen genegeerd; EnableHeartbeat, EnableAzureInstanceMetadataTelemetryModule, EnableAppServicesHeartbeatTelemetryModule true

Zie de configureerbare instellingen in voor de meest recente lijst. ApplicationInsightsServiceOptions

Configuratieaanbeveling voor Microsoft.ApplicationInsights.AspNetCore SDK 2.15.0 en hoger

In Microsoft.ApplicationInsights.AspNetCore SDK versie 2.15.0 en hoger kunt u het beste elke instelling configureren die beschikbaar is in , inclusief ApplicationInsightsServiceOptions InstrumentationKey met behulp van het exemplaar van de IConfiguration toepassing. De instellingen moeten in de sectie ApplicationInsights staan, zoals wordt weergegeven in het volgende voorbeeld. De volgende sectie van appsettings.jsconfigureert de instrumentatiesleutel en schakelt het verzamelen van adaptieve steekproeven en prestatiemeters uit.

{
    "ApplicationInsights": {
    "InstrumentationKey": "putinstrumentationkeyhere",
    "EnableAdaptiveSampling": false,
    "EnablePerformanceCounterCollectionModule": false
    }
}

Als services.AddApplicationInsightsTelemetry(aiOptions) wordt gebruikt, worden de instellingen van overschrijven. Microsoft.Extensions.Configuration.IConfiguration

Steekproeven

De Application Insights SDK voor ASP.NET Core ondersteunt zowel vaste 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 aanvullende informatie, gebruikt u initialisaties voor telemetrie.

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

public void ConfigureServices(IServiceCollection services)
{
    services.AddSingleton<ITelemetryInitializer, MyCustomTelemetryInitializer>();
}

Notitie

services.AddSingleton<ITelemetryInitializer, MyCustomTelemetryInitializer>(); werkt voor eenvoudige initialisaties. Voor andere is het volgende vereist: services.AddSingleton(new MyCustomTelemetryInitializer() { fieldName = "myfieldName" });

TelemetryInitializers verwijderen

Standaard zijn initialisaties voor telemetrie aanwezig. Als u alle of specifieke initialisaties voor telemetrie wilt verwijderen, gebruikt u de volgende voorbeeldcode nadat u hebt aanroept. AddApplicationInsightsTelemetry()

public void ConfigureServices(IServiceCollection services)
{
    services.AddApplicationInsightsTelemetry();

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

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

Telemetrieprocessors toevoegen

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

public void ConfigureServices(IServiceCollection services)
{
    // ...
    services.AddApplicationInsightsTelemetry();
    services.AddApplicationInsightsTelemetryProcessor<MyFirstCustomTelemetryProcessor>();

    // If you have more processors:
    services.AddApplicationInsightsTelemetryProcessor<MySecondCustomTelemetryProcessor>();
}

Standaard TelemetryModules configureren of verwijderen

Application Insights telemetriemodules gebruikt om automatisch nuttige telemetrie over specifieke werkbelastingen te verzamelen zonder handmatige tracering door de gebruiker.

Standaard worden 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 de portal voor live metrische gegevens
  • AppServicesHeartbeatTelemetryModule - Verzamelt hart-/hart-/hart-/Azure App Service worden verzonden (die worden verzonden als aangepaste metrische gegevens), over de Azure App Service waar de toepassing wordt gehost
  • AzureInstanceMetadataTelemetryModule - Verzamelt hartslag (die worden verzonden als aangepaste metrische gegevens), over de Azure VM-omgeving waarin 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 wilt TelemetryModule configureren, gebruikt u de ConfigureTelemetryModule<T> extensiemethode op IServiceCollection , zoals wordt weergegeven in het volgende voorbeeld.

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

public void ConfigureServices(IServiceCollection services)
{
    services.AddApplicationInsightsTelemetry();

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

    // The following removes all default counters from EventCounterCollectionModule, and adds a single one.
    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 = services.FirstOrDefault<ServiceDescriptor>(t => t.ImplementationType == typeof(PerformanceCollectorModule));
    if (performanceCounterService != null)
    {
        services.Remove(performanceCounterService);
    }
}

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

Een telemetriekanaal configureren

Het standaardkanaal voor telemetrie is ServerTelemetryChannel . In het volgende voorbeeld ziet u hoe u deze kunt overschrijven.

using Microsoft.ApplicationInsights.Channel;

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

        services.AddApplicationInsightsTelemetry();
    }

Telemetrie dynamisch uitschakelen

Als u telemetrie voorwaardelijk en dynamisch wilt uitschakelen, kunt u het exemplaar oplossen met een container voor ASP.NET Core-afhankelijkheidsinjectie overal in uw code en de vlag op het exemplaar TelemetryConfiguration DisableTelemetry instellen.

    public void ConfigureServices(IServiceCollection services)
    {
        services.AddApplicationInsightsTelemetry();
    }

    public void Configure(IApplicationBuilder app, IHostingEnvironment env, TelemetryConfiguration configuration)
    {
        configuration.DisableTelemetry = true;
        ...
    }

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

Veelgestelde vragen

Biedt Application Insights ondersteuning ASP.NET Core 3.X?

Ja. Werk bij naar Application Insights SDK ASP.NET Core versie 2.8.0 of hoger. Eerdere versies van de SDK bieden geen ondersteuning voor ASP.NET Core 3.X.

Als u telemetrieaan de serverzijde inschakelen op basis van Visual Studio, moet u ook bijwerken naar de nieuwste versie van Visual Studio 2019 (16.3.0) voor onboarding. Eerdere versies van Visual Studio bieden geen ondersteuning voor automatische onboarding voor ASP.NET Core 3.X-apps.

Hoe kan ik telemetrie bijhouden die niet automatisch wordt verzameld?

Haal een exemplaar van TelemetryClient op met behulp van constructorinjectie en roep de vereiste methode TrackXXX() aan. Het is niet raadzaam om nieuwe exemplaren TelemetryClient of TelemetryConfiguration exemplaren te maken in een ASP.NET Core toepassing. Er is al een TelemetryClient singleton-exemplaar van geregistreerd in de DependencyInjection container, die deelt TelemetryConfiguration met de rest van de telemetrie. Het maken van een nieuw exemplaar wordt alleen aanbevolen als er een configuratie nodig is TelemetryClient die los staat van de rest van de telemetrie.

In het volgende voorbeeld ziet u hoe u aanvullende 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 Application Insights custom metrics API reference (Api-naslag voor application Insights metrics) voormeer 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 verzameling ILogger-logboeken aanpassen?

Standaard worden alleen Warning logboeken en ernstigere logboeken automatisch vastgelegd. Als u dit gedrag wilt wijzigen, overschrijven we expliciet de configuratie van de logboekregistratie voor de ApplicationInsights provider, zoals hieronder wordt weergegeven. Met de volgende configuratie kan ApplicationInsights alle logboeken en Information ernstigere logboeken vastleggen.

{
  "Logging": {
    "LogLevel": {
      "Default": "Warning"
    },
    "ApplicationInsights": {
      "LogLevel": {
        "Default": "Information"
      }
    }
  }
}

Het is belangrijk te weten dat het volgende er niet toe zorgt dat de ApplicationInsights-provider logboeken vast Information legt. De SDK legt deze niet vast omdat de SDK een standaardfilter voor logboekregistratie toevoegt dat instrueert om alleen logboeken en ApplicationInsights Warning ernstigere logboeken vast te leggen. Voor ApplicationInsights is een expliciete overschrijvingen vereist.

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

Zie ILogger-configuratie voor meer informatie.

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

De extensiemethode wordt nog steeds ondersteund, maar is gemarkeerd als verouderd UseApplicationInsights() in Application Insights SDK versie 2.8.0 en hoger. Deze wordt verwijderd in de volgende belangrijke versie van de SDK. Als u Application Insights wilt inschakelen, raden we u aan om te gebruiken, omdat dit AddApplicationInsightsTelemetry() overbelastingen biedt om bepaalde configuraties te controleren. Bovendien is in ASP.NET Core 3.X-apps de enige manier om services.AddApplicationInsightsTelemetry() Application Insights.

Ik implementeer mijn ASP.NET Core toepassing naar Web Apps. Moet ik de extensie Application Insights 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 App Service de portal. Zelfs als de extensie is geïnstalleerd, wordt deze uitgeschakeld wanneer wordt gedetecteerd dat de SDK al aan de toepassing is toegevoegd. Als u Application Insights vanuit de extensie inschakelen, hoeft u de SDK niet te installeren en bij te werken. Maar als u Application Insights door de instructies in dit artikel te volgen, hebt u meer flexibiliteit omdat:

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

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

Nee, Azure Monitor Application Insights Agent ondersteunt momenteel alleen ASP.NET 4.x.

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

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

  • De SDK verzamelt gebeurtenistellers in Linux omdat prestatiemeters alleen worden ondersteund in Windows. De meeste metrische gegevens zijn hetzelfde.
  • Hoewel standaard is ingeschakeld, maakt het kanaal, als de toepassing wordt uitgevoerd in Linux of macOS, niet automatisch een lokale opslagmap om telemetrie tijdelijk te bewaren als er netwerkproblemen ServerTelemetryChannel zijn. Vanwege deze beperking gaat telemetrie verloren wanneer er tijdelijke netwerk- of serverproblemen zijn. U kunt dit probleem oplossen door een lokale map voor het kanaal te configureren:
using Microsoft.ApplicationInsights.Channel;
using Microsoft.ApplicationInsights.WindowsServer.TelemetryChannel;

    public void ConfigureServices(IServiceCollection services)
    {
        // The following will configure the channel to use the given folder to temporarily
        // store telemetry items during network or Application Insights server issues.
        // User should ensure that the given folder already exists
        // and that the application has read/write permissions.
        services.AddSingleton(typeof(ITelemetryChannel),
                                new ServerTelemetryChannel () {StorageFolder = "/tmp/myfolder"});
        services.AddApplicationInsightsTelemetry();
    }

Deze beperking is niet van toepassing vanaf versie 2.15.0 en hoger.

Wordt deze SDK ondersteund voor de nieuwe .NET Core 3.X Worker Service-sjabloontoepassingen?

Voor deze SDK is vereist. Daarom werkt deze niet in niet-HTTP-toepassingen, met inbegrip van HttpContext de .NET Core 3.X Worker Service-toepassingen. Zie Application Insights for Worker Service applications (niet-HTTP-toepassingen)als u Application Insights in dergelijke toepassingen wilt inschakelen met behulp van de nieuw uitgebrachte Microsoft.ApplicationInsights.WorkerService SDK.

Opensource-SDK

Zie de opmerkingen bij de release voor de meest recente updates en bugfixes.

Volgende stappen