Dela via


Application Insights för ASP.NET- och ASP.NET Core-program

Varning

Vi rekommenderar Azure Monitor OpenTelemetry Distro för nya program eller kunder för att driva Azure Monitor Application Insights. Azure Monitor OpenTelemetry Distro ger en liknande funktion och upplevelse som Application Insights SDK. Det går att migrera från Application Insights SDK med hjälp av migreringsguiderna för .NET, Node.js och Python, men vi arbetar fortfarande med att lägga till ytterligare några funktioner för bakåtkompatibilitet.

Den här artikeln beskriver hur du aktiverar och konfigurerar Application Insights för ASP.NET- och ASP.NET Core-program. Den här proceduren konfigurerar ditt program för att skicka telemetri till Application Insights.

Application Insights kan samla in följande telemetri från dina ASP.NET- och ASP.NET Core-program:

  • Förfrågningar
  • Beroenden
  • Undantag
  • Prestandaräknare
  • Spårningar (loggar)
  • Hjärtslag
  • Anpassade händelser och mått (kräver manuell instrumentering)
  • Sidvisningar (kräver JavaScript SDK för webbsidor)
  • Tillgänglighetstester (kräver manuellt konfiguration av tillgänglighetstester)

Scenarier som stöds

Kommentar

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 telemetri samlas in. Application Insights-övervakning stöds överallt där .NET Core stöds.

Understödd ASP.NET ASP.NET Core
Operativsystem Windows Windows, Linux eller Mac
Värdtjänstmetod Pågående (IIS eller IIS Express) Inuti processen eller utanför processen
Distributionsmetod Webbdistribution, MSI eller manuell filkopiering Ramverksberoende eller fristående
Webbserver Internet Information Services (IIS) Internet Information Server (IIS) eller Kestrel
Värdplattform Azure App Service (Windows), Virtuella Azure-datorer eller lokala servrar Funktionen Web Apps i Azure App Service, Azure Virtual Machines, Docker och Azure Kubernetes Service (AKS)
.NET-version .NET Framework 4.6.1 och senare Alla .NET-versioner som stöds officiellt och som inte finns i förhandsversionen
IDE Visual Studio Visual Studio, Visual Studio Code eller kommandorad

Förutsättningar

Skapa en grundläggande webbapp

Vi använder ett MVC-programexempel . Om du använder Arbetstjänsten använder du anvisningarna i Application Insights för Worker Service-program.

  1. Öppna Visual Studio.
  2. Välj Skapa ett nytt projekt.
  3. Välj ASP.NET webbprogram (.NET Framework) med C# och välj Nästa.
  4. Ange ett projektnamn och välj sedan Skapa.
  5. Välj MVC och välj sedan Skapa.

Lägg till Application Insights automatiskt (Visual Studio)

Det här avsnittet vägleder dig genom att automatiskt lägga till Application Insights i en mallbaserad webbapp.

Kommentar

Om du vill använda den fristående ILogger-providern för ditt ASP.NET-program använder du Microsoft.Extensions.Logging.ApplicationInsight.

Inifrån ditt ASP.NET webbappsprojekt i Visual Studio:

  1. Välj Projekt>Lägg till Application Insights Telemetry>Application Insights SDK (lokal)>Nästa>Slutför>Stäng.

  2. Öppna filen ApplicationInsights.config.

  3. Innan du stänger </ApplicationInsights> taggen lägger du till en rad som innehåller anslutningssträng för Application Insights-resursen. Hitta din anslutningssträng i översiktsfönstret för den nyligen skapade Application Insights-resursen.

    <ConnectionString>Copy connection string from Application Insights Resource Overview</ConnectionString>
    
  4. Välj Projekt>Hantera NuGet-paket>Uppdateringar. Uppdatera sedan varje Microsoft.ApplicationInsights NuGet-paket till den senaste stabila versionen.

  5. Kör programmet genom att välja IIS Express. En grundläggande ASP.NET app öppnas. När du bläddrar igenom sidorna på webbplatsen skickas telemetri till Application Insights.

Lägg till Application Insights manuellt (ingen Visual Studio)

Det här avsnittet vägleder dig genom att lägga till Application Insights manuellt i en mallbaserad webbapp.

  1. Lägg till följande NuGet-paket och deras beroenden i projektet:

  2. I vissa fall skapas applicationinsights.config-filen automatiskt åt dig. Om filen redan finns går du vidare till steg 4.

    Skapa den själv om den saknas. I rotkatalogen för ett ASP.NET-program skapar du en ny fil med namnet ApplicationInsights.config.

  3. Kopiera följande XML-konfiguration till den nyligen skapade filen:

    <?xml version="1.0" encoding="utf-8"?>
    <ApplicationInsights xmlns="http://schemas.microsoft.com/ApplicationInsights/2013/Settings">
      <TelemetryInitializers>
        <Add Type="Microsoft.ApplicationInsights.DependencyCollector.HttpDependenciesParsingTelemetryInitializer, Microsoft.AI.DependencyCollector" />
        <Add Type="Microsoft.ApplicationInsights.WindowsServer.AzureRoleEnvironmentTelemetryInitializer, Microsoft.AI.WindowsServer" />
        <Add Type="Microsoft.ApplicationInsights.WindowsServer.BuildInfoConfigComponentVersionTelemetryInitializer, Microsoft.AI.WindowsServer" />
        <Add Type="Microsoft.ApplicationInsights.Web.WebTestTelemetryInitializer, Microsoft.AI.Web" />
        <Add Type="Microsoft.ApplicationInsights.Web.SyntheticUserAgentTelemetryInitializer, Microsoft.AI.Web">
          <!-- Extended list of bots:
                search|spider|crawl|Bot|Monitor|BrowserMob|BingPreview|PagePeeker|WebThumb|URL2PNG|ZooShot|GomezA|Google SketchUp|Read Later|KTXN|KHTE|Keynote|Pingdom|AlwaysOn|zao|borg|oegp|silk|Xenu|zeal|NING|htdig|lycos|slurp|teoma|voila|yahoo|Sogou|CiBra|Nutch|Java|JNLP|Daumoa|Genieo|ichiro|larbin|pompos|Scrapy|snappy|speedy|vortex|favicon|indexer|Riddler|scooter|scraper|scrubby|WhatWeb|WinHTTP|voyager|archiver|Icarus6j|mogimogi|Netvibes|altavista|charlotte|findlinks|Retreiver|TLSProber|WordPress|wsr-agent|http client|Python-urllib|AppEngine-Google|semanticdiscovery|facebookexternalhit|web/snippet|Google-HTTP-Java-Client-->
          <Filters>search|spider|crawl|Bot|Monitor|AlwaysOn</Filters>
        </Add>
        <Add Type="Microsoft.ApplicationInsights.Web.ClientIpHeaderTelemetryInitializer, Microsoft.AI.Web" />
        <Add Type="Microsoft.ApplicationInsights.Web.AzureAppServiceRoleNameFromHostNameHeaderInitializer, Microsoft.AI.Web" />
        <Add Type="Microsoft.ApplicationInsights.Web.OperationNameTelemetryInitializer, Microsoft.AI.Web" />
        <Add Type="Microsoft.ApplicationInsights.Web.OperationCorrelationTelemetryInitializer, Microsoft.AI.Web" />
        <Add Type="Microsoft.ApplicationInsights.Web.UserTelemetryInitializer, Microsoft.AI.Web" />
        <Add Type="Microsoft.ApplicationInsights.Web.AuthenticatedUserIdTelemetryInitializer, Microsoft.AI.Web" />
        <Add Type="Microsoft.ApplicationInsights.Web.AccountIdTelemetryInitializer, Microsoft.AI.Web" />
        <Add Type="Microsoft.ApplicationInsights.Web.SessionTelemetryInitializer, Microsoft.AI.Web" />
      </TelemetryInitializers>
      <TelemetryModules>
        <Add Type="Microsoft.ApplicationInsights.DependencyCollector.DependencyTrackingTelemetryModule, Microsoft.AI.DependencyCollector">
          <ExcludeComponentCorrelationHttpHeadersOnDomains>
            <!-- 
            Requests to the following hostnames will not be modified by adding correlation headers.
            Add entries here to exclude additional hostnames.
            NOTE: this configuration will be lost upon NuGet upgrade.
            -->
            <Add>core.windows.net</Add>
            <Add>core.chinacloudapi.cn</Add>
            <Add>core.cloudapi.de</Add>
            <Add>core.usgovcloudapi.net</Add>
          </ExcludeComponentCorrelationHttpHeadersOnDomains>
          <IncludeDiagnosticSourceActivities>
            <Add>Microsoft.Azure.EventHubs</Add>
            <Add>Azure.Messaging.ServiceBus</Add>
          </IncludeDiagnosticSourceActivities>
        </Add>
        <Add Type="Microsoft.ApplicationInsights.Extensibility.PerfCounterCollector.PerformanceCollectorModule, Microsoft.AI.PerfCounterCollector">
          <!--
          Use the following syntax here to collect additional performance counters:
    
          <Counters>
            <Add PerformanceCounter="\Process(??APP_WIN32_PROC??)\Handle Count" ReportAs="Process handle count" />
            ...
          </Counters>
    
          PerformanceCounter must be either \CategoryName(InstanceName)\CounterName or \CategoryName\CounterName
    
          NOTE: performance counters configuration will be lost upon NuGet upgrade.
    
          The following placeholders are supported as InstanceName:
            ??APP_WIN32_PROC?? - instance name of the application process  for Win32 counters.
            ??APP_W3SVC_PROC?? - instance name of the application IIS worker process for IIS/ASP.NET counters.
            ??APP_CLR_PROC?? - instance name of the application CLR process for .NET counters.
          -->
        </Add>
        <Add Type="Microsoft.ApplicationInsights.Extensibility.PerfCounterCollector.QuickPulse.QuickPulseTelemetryModule, Microsoft.AI.PerfCounterCollector" />
        <Add Type="Microsoft.ApplicationInsights.WindowsServer.AppServicesHeartbeatTelemetryModule, Microsoft.AI.WindowsServer" />
        <Add Type="Microsoft.ApplicationInsights.WindowsServer.AzureInstanceMetadataTelemetryModule, Microsoft.AI.WindowsServer">
          <!--
          Remove individual fields collected here by adding them to the ApplicationInsighs.HeartbeatProvider
          with the following syntax:
    
          <Add Type="Microsoft.ApplicationInsights.Extensibility.Implementation.Tracing.DiagnosticsTelemetryModule, Microsoft.ApplicationInsights">
            <ExcludedHeartbeatProperties>
              <Add>osType</Add>
              <Add>location</Add>
              <Add>name</Add>
              <Add>offer</Add>
              <Add>platformFaultDomain</Add>
              <Add>platformUpdateDomain</Add>
              <Add>publisher</Add>
              <Add>sku</Add>
              <Add>version</Add>
              <Add>vmId</Add>
              <Add>vmSize</Add>
              <Add>subscriptionId</Add>
              <Add>resourceGroupName</Add>
              <Add>placementGroupId</Add>
              <Add>tags</Add>
              <Add>vmScaleSetName</Add>
            </ExcludedHeartbeatProperties>
          </Add>
    
          NOTE: exclusions will be lost upon upgrade.
          -->
        </Add>
        <Add Type="Microsoft.ApplicationInsights.WindowsServer.DeveloperModeWithDebuggerAttachedTelemetryModule, Microsoft.AI.WindowsServer" />
        <Add Type="Microsoft.ApplicationInsights.WindowsServer.UnhandledExceptionTelemetryModule, Microsoft.AI.WindowsServer" />
        <Add Type="Microsoft.ApplicationInsights.WindowsServer.UnobservedExceptionTelemetryModule, Microsoft.AI.WindowsServer">
          <!--</Add>
        <Add Type="Microsoft.ApplicationInsights.WindowsServer.FirstChanceExceptionStatisticsTelemetryModule, Microsoft.AI.WindowsServer">-->
        </Add>
        <Add Type="Microsoft.ApplicationInsights.Web.RequestTrackingTelemetryModule, Microsoft.AI.Web">
          <Handlers>
            <!-- 
            Add entries here to filter out additional handlers:
    
            NOTE: handler configuration will be lost upon NuGet upgrade.
            -->
            <Add>Microsoft.VisualStudio.Web.PageInspector.Runtime.Tracing.RequestDataHttpHandler</Add>
            <Add>System.Web.StaticFileHandler</Add>
            <Add>System.Web.Handlers.AssemblyResourceLoader</Add>
            <Add>System.Web.Optimization.BundleHandler</Add>
            <Add>System.Web.Script.Services.ScriptHandlerFactory</Add>
            <Add>System.Web.Handlers.TraceHandler</Add>
            <Add>System.Web.Services.Discovery.DiscoveryRequestHandler</Add>
            <Add>System.Web.HttpDebugHandler</Add>
          </Handlers>
        </Add>
        <Add Type="Microsoft.ApplicationInsights.Web.ExceptionTrackingTelemetryModule, Microsoft.AI.Web" />
        <Add Type="Microsoft.ApplicationInsights.Web.AspNetDiagnosticTelemetryModule, Microsoft.AI.Web" />
      </TelemetryModules>
      <ApplicationIdProvider Type="Microsoft.ApplicationInsights.Extensibility.Implementation.ApplicationId.ApplicationInsightsApplicationIdProvider, Microsoft.ApplicationInsights" />
      <TelemetrySinks>
        <Add Name="default">
          <TelemetryProcessors>
            <Add Type="Microsoft.ApplicationInsights.Extensibility.PerfCounterCollector.QuickPulse.QuickPulseTelemetryProcessor, Microsoft.AI.PerfCounterCollector" />
            <Add Type="Microsoft.ApplicationInsights.Extensibility.AutocollectedMetricsExtractor, Microsoft.ApplicationInsights" />
            <Add Type="Microsoft.ApplicationInsights.WindowsServer.TelemetryChannel.AdaptiveSamplingTelemetryProcessor, Microsoft.AI.ServerTelemetryChannel">
              <MaxTelemetryItemsPerSecond>5</MaxTelemetryItemsPerSecond>
              <ExcludedTypes>Event</ExcludedTypes>
            </Add>
            <Add Type="Microsoft.ApplicationInsights.WindowsServer.TelemetryChannel.AdaptiveSamplingTelemetryProcessor, Microsoft.AI.ServerTelemetryChannel">
              <MaxTelemetryItemsPerSecond>5</MaxTelemetryItemsPerSecond>
              <IncludedTypes>Event</IncludedTypes>
            </Add>
            <!--
              Adjust the include and exclude examples to specify the desired semicolon-delimited types. (Dependency, Event, Exception, PageView, Request, Trace)
            -->
          </TelemetryProcessors>
          <TelemetryChannel Type="Microsoft.ApplicationInsights.WindowsServer.TelemetryChannel.ServerTelemetryChannel, Microsoft.AI.ServerTelemetryChannel" />
        </Add>
      </TelemetrySinks>
      <!-- 
        Learn more about Application Insights configuration with ApplicationInsights.config here:
        http://go.microsoft.com/fwlink/?LinkID=513840
      -->
      <ConnectionString>Copy the connection string from your Application Insights resource</ConnectionString>
    </ApplicationInsights>
    
  4. Lägg till anslutningssträng, vilket kan göras på två sätt:

    • (Rekommenderas) Ange anslutningssträng i konfigurationen.

      Innan den avslutande </ApplicationInsights> taggen i ApplicationInsights.config lägger du till anslutningssträng för Application Insights-resursen. Du hittar din anslutningssträng i översiktsfönstret för den nyligen skapade Application Insights-resursen.

      <ConnectionString>Copy the connection string from your Application Insights resource</ConnectionString>
      
    • Ange anslutningssträng i kod.

      Ange en anslutningssträng i klassen program.cs.

      var configuration = new TelemetryConfiguration
      {
          ConnectionString = "Copy the connection string from your Application Insights resource"
      };
      
  5. På samma nivå i projektet som applicationInsights.config-filen skapar du en mapp med namnet ErrorHandler med en ny C#-fil med namnet AiHandleErrorAttribute.cs. Innehållet i filen ser ut så här:

    using System;
    using System.Web.Mvc;
    using Microsoft.ApplicationInsights;
    
    namespace WebApplication10.ErrorHandler //namespace will vary based on your project name
    {
        [AttributeUsage(AttributeTargets.Class | AttributeTargets.Method, Inherited = true, AllowMultiple = true)] 
        public class AiHandleErrorAttribute : HandleErrorAttribute
        {
            public override void OnException(ExceptionContext filterContext)
            {
                if (filterContext != null && filterContext.HttpContext != null && filterContext.Exception != null)
                {
                    //If customError is Off, then AI HTTPModule will report the exception
                    if (filterContext.HttpContext.IsCustomErrorEnabled)
                    {   
                        var ai = new TelemetryClient();
                        ai.TrackException(filterContext.Exception);
                    } 
                }
                base.OnException(filterContext);
            }
        }
    }
    
  6. I mappen App_Start öppnar du filen FilterConfig.cs och ändrar den så att den matchar exemplet:

    using System.Web;
    using System.Web.Mvc;
    
    namespace WebApplication10 //Namespace will vary based on project name
    {
        public class FilterConfig
        {
            public static void RegisterGlobalFilters(GlobalFilterCollection filters)
            {
                filters.Add(new ErrorHandler.AiHandleErrorAttribute());
            }
        }
    }
    
  7. Om Web.config redan har uppdaterats hoppar du över det här steget. Annars uppdaterar du filen på följande sätt:

    <?xml version="1.0" encoding="utf-8"?>
    <!--
      For more information on how to configure your ASP.NET application, please visit
      https://go.microsoft.com/fwlink/?LinkId=301880
      -->
    <configuration>
      <appSettings>
        <add key="webpages:Version" value="3.0.0.0" />
        <add key="webpages:Enabled" value="false" />
        <add key="ClientValidationEnabled" value="true" />
        <add key="UnobtrusiveJavaScriptEnabled" value="true" />
      </appSettings>
      <system.web>
        <compilation debug="true" targetFramework="4.7.2" />
        <httpRuntime targetFramework="4.7.2" />
        <!-- Code added for Application Insights start -->
        <httpModules>
          <add name="TelemetryCorrelationHttpModule" type="Microsoft.AspNet.TelemetryCorrelation.TelemetryCorrelationHttpModule, Microsoft.AspNet.TelemetryCorrelation" />
          <add name="ApplicationInsightsWebTracking" type="Microsoft.ApplicationInsights.Web.ApplicationInsightsHttpModule, Microsoft.AI.Web" />
        </httpModules>
        <!-- Code added for Application Insights end -->
      </system.web>
      <runtime>
        <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
          <dependentAssembly>
            <assemblyIdentity name="Antlr3.Runtime" publicKeyToken="eb42632606e9261f" />
            <bindingRedirect oldVersion="0.0.0.0-3.5.0.2" newVersion="3.5.0.2" />
          </dependentAssembly>
          <dependentAssembly>
            <assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" />
            <bindingRedirect oldVersion="0.0.0.0-12.0.0.0" newVersion="12.0.0.0" />
          </dependentAssembly>
          <dependentAssembly>
            <assemblyIdentity name="System.Web.Optimization" publicKeyToken="31bf3856ad364e35" />
            <bindingRedirect oldVersion="1.0.0.0-1.1.0.0" newVersion="1.1.0.0" />
          </dependentAssembly>
          <dependentAssembly>
            <assemblyIdentity name="WebGrease" publicKeyToken="31bf3856ad364e35" />
            <bindingRedirect oldVersion="0.0.0.0-1.6.5135.21930" newVersion="1.6.5135.21930" />
          </dependentAssembly>
          <dependentAssembly>
            <assemblyIdentity name="System.Web.Helpers" publicKeyToken="31bf3856ad364e35" />
            <bindingRedirect oldVersion="1.0.0.0-3.0.0.0" newVersion="3.0.0.0" />
          </dependentAssembly>
          <dependentAssembly>
            <assemblyIdentity name="System.Web.WebPages" publicKeyToken="31bf3856ad364e35" />
            <bindingRedirect oldVersion="1.0.0.0-3.0.0.0" newVersion="3.0.0.0" />
          </dependentAssembly>
          <dependentAssembly>
            <assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35" />
            <bindingRedirect oldVersion="1.0.0.0-5.2.7.0" newVersion="5.2.7.0" />
          </dependentAssembly>
          <!-- Code added for Application Insights start -->
          <dependentAssembly>
            <assemblyIdentity name="System.Memory" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
            <bindingRedirect oldVersion="0.0.0.0-4.0.1.1" newVersion="4.0.1.1" />
          </dependentAssembly>
          <!-- Code added for Application Insights end -->
        </assemblyBinding>
      </runtime>
      <system.codedom>
        <compilers>
          <compiler language="c#;cs;csharp" extension=".cs" type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.CSharpCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=2.0.1.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" warningLevel="4" compilerOptions="/langversion:default /nowarn:1659;1699;1701" />
          <compiler language="vb;vbs;visualbasic;vbscript" extension=".vb" type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.VBCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=2.0.1.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" warningLevel="4" compilerOptions="/langversion:default /nowarn:41008 /define:_MYTYPE=\&quot;Web\&quot; /optionInfer+" />
        </compilers>
      </system.codedom>
      <system.webServer>
        <validation validateIntegratedModeConfiguration="false" />
        <!-- Code added for Application Insights start -->
        <modules>
          <remove name="TelemetryCorrelationHttpModule" />
          <add name="TelemetryCorrelationHttpModule" type="Microsoft.AspNet.TelemetryCorrelation.TelemetryCorrelationHttpModule, Microsoft.AspNet.TelemetryCorrelation" preCondition="managedHandler" />
          <remove name="ApplicationInsightsWebTracking" />
          <add name="ApplicationInsightsWebTracking" type="Microsoft.ApplicationInsights.Web.ApplicationInsightsHttpModule, Microsoft.AI.Web" preCondition="managedHandler" />
        </modules>
        <!-- Code added for Application Insights end -->
      </system.webServer>
    </configuration>
    

Nu har du konfigurerat programövervakning på serversidan. Om du kör webbappen ser du att telemetri börjar visas i Application Insights.

Kör ditt program

Kör ditt program och skicka begäranden till det. Telemetri bör nu flöda till Application Insights. Application Insights SDK samlar automatiskt in inkommande webbförfrågningar till ditt program, tillsammans med följande telemetri.

Livemått

Live-mätvärden kan användas för att snabbt kontrollera om programövervakning via Application Insights är korrekt konfigurerad. Det kan ta några minuter innan telemetri visas i Azure Portal, men fönstret livemått visar CPU-användningen i den körande processen i nästan realtid. Den kan också visa andra telemetrier som begäranden, beroenden och spårningar.

Kommentar

Realtidsmått aktiveras som standard när du konfigurerar det med hjälp av de rekommenderade anvisningarna för .NET-program.

Aktivera livemått med hjälp av kod för alla .NET-program

Så här konfigurerar du livemått manuellt:

  1. Installera NuGet-paketet Microsoft.ApplicationInsights.PerfCounterCollector.

  2. Följande exempelkonsolappkod visar hur du konfigurerar livemått:

using Microsoft.ApplicationInsights;
using Microsoft.ApplicationInsights.Extensibility;
using Microsoft.ApplicationInsights.Extensibility.PerfCounterCollector.QuickPulse;
using System;
using System.Threading.Tasks;

namespace LiveMetricsDemo
{
    class Program
    {
        static void Main(string[] args)
        {
            // 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();
            }
        }
    }
}

ILogger-loggar

Standardkonfigurationen samlar in ILoggerWarning loggar och allvarligare loggar. Mer information finns i Hur gör jag för att anpassa ILogger-loggsamlingen?.

Beroenden

Beroendeinsamling är aktiverad som standard. Beroendespårning i Application Insights förklarar de beroenden som samlas in automatiskt och innehåller även steg för att utföra manuell spårning.

Prestandaräknare

ASP.NET har fullt stöd för prestandaräknare, medan ASP.NET Core erbjuder begränsad support beroende på SDK-versionen och värdmiljön. Mer information finns i Räknare för .NET i Application Insights.

Händelseräknare

Application Insights stöder insamling av EventCounters med dess EventCounterCollectionModule, vilket är aktiverat som standard för ASP.NET Core. Information om hur du konfigurerar listan över räknare som ska samlas in finns i Räknare för .NET i Application Insights.

Utöka data via HTTP

var requestTelemetry = HttpContext.Current?.Items["Microsoft.ApplicationInsights.RequestTelemetry"] as RequestTelemetry;

if (requestTelemetry != null)
{
    requestTelemetry.Properties["myProp"] = "someData";
}

Konfigurera Application Insights SDK

Du kan anpassa Application Insights SDK för ASP.NET och ASP.NET Core för att ändra standardkonfigurationen.

Information om hur du konfigurerar Application Insights SDK för ASP.NET program finns i Konfigurera Application Insights SDK med ApplicationInsights.config eller .xml.

Provtagning

Mer information om hur du konfigurerar sampling för ASP.NET program finns i Sampling i Application Insights.

Telemetriinitierare

Om du vill utöka telemetri med ytterligare information eller åsidosätta telemetriegenskaper som anges av standardtelemetrimodulerna använder du telemetriinitierare.

Information om hur du använder telemetriinitierare med ASP.NET program finns i Filtrera och förbearbeta telemetri i Application Insights SDK.

Telemetriprocessorer

Information om hur du använder telemetriprocessorer med ASP.NET program finns i Filtrera och förbearbeta telemetri i Application Insights SDK.

Konfigurera eller ta bort standardtelemetrimoduler

Application Insights samlar automatiskt in telemetri om specifika arbetsbelastningar utan att användaren behöver manuell spårning.

Som standard är följande moduler för automatisk insamling aktiverade. Dessa moduler ansvarar för att automatiskt samla in telemetri. Du kan inaktivera eller konfigurera dem för att ändra deras standardbeteende.

  • RequestTrackingTelemetryModule: Samlar in RequestTelemetry från inkommande webbbegäranden.
  • DependencyTrackingTelemetryModule: Samlar in DependencyTelemetry från utgående HTTP-anrop och SQL-anrop.
  • PerformanceCollectorModule: Samlar in Windows PerformanceCounters.
  • QuickPulseTelemetryModule: Samlar in telemetri som ska visas i fönstret livemått.
  • AppServicesHeartbeatTelemetryModule: Samlar in pulsslag (som skickas som anpassade mått) om App Service-miljön där programmet finns.
  • AzureInstanceMetadataTelemetryModule: Samlar in pulsslag (som skickas som anpassade mått) om den virtuella Azure-datormiljö där programmet finns.
  • EventCounterCollectionModule: Samlar in EventCounters. Den här modulen är en ny funktion och är tillgänglig i SDK version 2.8.0 och senare.

Information om hur du konfigurerar eller tar bort telemetrimoduler för ASP.NET program finns i Konfigurera Application Insights SDK med ApplicationInsights.config eller .xml.

Lägga till övervakning på klientsidan

De föregående avsnitten gav vägledning om metoder för att automatiskt och manuellt konfigurera övervakning på serversidan. Om du vill lägga till övervakning på klientsidan använder du JavaScript SDK på klientsidan. Du kan övervaka en webbsidas transaktioner på klientsidan genom att lägga till ett JavaScript-SDK-inläsningsskript (Web) före den avslutande </head> taggen för sidans HTML.

Även om det är möjligt att manuellt lägga till SDK-inläsningsskriptet för JavaScript (Web) i sidhuvudet på varje HTML-sida rekommenderar vi att du i stället lägger till JavaScript-SDK-inläsningsskriptet (Web) på en primär sida. Den åtgärden injicerar JavaScript (webb) SDK-laddningsskriptet i alla sidor på en webbplats.

För den mallbaserade ASP.NET MVC-appen från den här artikeln är filen som du behöver redigera _Layout.cshtml. Du hittar den under Vy>Delat. Om du vill lägga till övervakning på klientsidan öppnar du _Layout.cshtml och följer skriptbaserade installationsinstruktioner för JavaScript (Web) SDK Loader i artikeln om JavaScript SDK-konfiguration på klientsidan.

Felsökning

Se den dedikerade felsökningsartikeln.

Det finns ett känt problem i Visual Studio 2019: lagringen av instrumentationsnyckeln eller anslutningssträng i en användarhemlighet är bruten för .NET Framework-baserade appar. Nyckeln måste slutligen hårdkodas i filen applicationinsights.config för att undvika felet. Den här artikeln är utformad för att undvika det här problemet helt och hållet genom att inte använda användarhemligheter.

Testa anslutningen mellan din applikationsvärd och inmatningstjänsten

Application Insights SDK:er och agenter skickar telemetri för att matas in som REST-anrop till våra inmatningsslutpunkter. Du kan testa anslutningen från webbservern eller programvärddatorn till slutpunkterna för inmatningstjänsten med hjälp av råa REST-klienter från PowerShell- eller curl-kommandon. Se Felsöka programtelemetri som saknas i Azure Monitor Application Insights.

SDK med öppen källkod

Läsa och bidra till koden.

De senaste uppdateringarna och felkorrigeringarna finns i versionsinformationen.

Versionsanteckningar

För version 2.12 och senare: .NET Programvaruutvecklingskit (SDK:er) inklusive ASP.NET, ASP.NET Core och loggningsadaptrar

Våra tjänstuppdateringar sammanfattar även större Förbättringar av Application Insights.

Nästa steg