Bagikan melalui


Mengonfigurasikan Application Insights untuk website ASP.NET Anda

Prosedur ini mengonfigurasi aplikasi web ASP.NET Anda untuk mengirim telemetri ke fitur Application Insights dari layanan Azure Monitor. Ini berfungsi untuk aplikasi ASP.NET yang dihosting baik di Server Informasi Internet (IIS) Anda sendiri secara lokal atau di cloud.

Catatan

Dokumentasi berikut bergantung pada API klasik Application Insights. Rencana jangka panjang untuk Application Insights adalah mengumpulkan data menggunakan OpenTelemetry. Untuk informasi selengkapnya, lihat Mengaktifkan Azure Monitor OpenTelemetry untuk aplikasi .NET, Node.js, Python, dan Java dan Peta Strategi OpenTelemetry kami. Panduan migrasi tersedia untuk .NET, Node.js, dan Python.

Catatan

Pada tanggal 31 Maret 2025, dukungan untuk penyerapan kunci instrumentasi akan berakhir. Penyerapan kunci instrumentasi akan berjalan terus, namun kami tidak akan lagi menyediakan pembaruan atau dukungan terhadap fitur tersebut. Transisi ke string koneksi untuk memanfaatkan kemampuan baru.

Prasyarat

Untuk menambahkan Application Insights ke situs web ASP.NET, Anda perlu:

Penting

Kami menyarankan string koneksi daripada kunci instrumentasi. Wilayah Azure baru mewajibkan penggunaan string koneksi, dan bukan kunci instrumentasi.

String koneksi mengidentifikasi sumber daya yang ingin Anda kaitkan dengan data telemetri Anda. String koneksi juga memungkinkan Anda memodifikasi titik akhir yang akan digunakan sumber daya sebagai tujuan untuk telemetri Anda. Anda harus menyalin string koneksi dan menambahkannya ke kode aplikasi Anda atau ke variabel lingkungan “APPLICATIONINSIGHTS_CONNECTION_STRING”.

Membuat aplikasi web ASP.NET dasar

  1. Buka Visual Studio Code 2019.
  2. Pilih File>Baru>Proyek.
  3. Pilih ASP.NET Web Application(.NET Framework) C#.
  4. Masukkan nama proyek, lalu pilih Buat.
  5. Pilih MVC>Buat.

Menambahkan Application Insights secara otomatis

Bagian ini memandu Anda menambahkan Application Insights secara otomatis ke aplikasi web ASP.NET berbasis templat. Dari dalam proyek ASP.NET aplikasi web Anda di Visual Studio:

  1. Pilih Proyek>Tambahkan Telemetri Application Insights>SDK Application Insights (lokal)>Berikutnya>Selesai>Tutup.

  2. Buka file ApplicationInsights.config.

  3. Sebelum tag </ApplicationInsights> penutup, tambahkan baris yang berisi string koneksi untuk sumber daya Application Insights Anda. Temukan string koneksi Anda di panel ringkasan dari sumber daya Application Insights yang baru dibuat.

    <ConnectionString>Copy connection string from Application Insights Resource Overview</ConnectionString>
    
  4. Pilih Proyek>Kelola Paket NuGet>Pembaruan. Kemudian perbarui setiap Microsoft.ApplicationInsights paket NuGet ke rilis stabil terbaru.

  5. Jalankan aplikasi Anda dengan memilih IIS Express. Aplikasi ASP.NET dasar terbuka. Saat Anda menelusuri halaman di situs, telemetri dikirim ke Application Insights.

Menambahkan Application Insights secara manual

Bagian ini memandu Anda menambahkan Application Insights secara manual ke aplikasi web ASP.NET berbasis templat. Bagian ini mengasumsikan bahwa Anda menggunakan aplikasi web berdasarkan templat aplikasi web Model, Tampilan, dan Pengontrol (MVC) standar untuk kerangka kerja ASP.NET.

  1. Tambahkan paket NuGet berikut dan dependensinya ke proyek Anda:

  2. Dalam beberapa kasus, file ApplicationInsights.config dibuat untuk Anda secara otomatis. Jika file sudah ada, lewati ke langkah 4.

Buat sendiri jika hilang. Di direktori akar aplikasi ASP.NET, buat file baru yang disebut ApplicationInsights.config.

  1. Salin konfigurasi XML berikut ke file yang baru Anda buat:

    <?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 connection string from Application Insights Resource Overview</ConnectionString>
    </ApplicationInsights>
    
  2. Sebelum tag </ApplicationInsights> penutup, tambahkan string koneksi untuk sumber daya Application Insights Anda. Anda dapat menemukan string koneksi Anda di panel ringkasan dari sumber daya Application Insights yang baru dibuat.

    <ConnectionString>Copy connection string from Application Insights Resource Overview</ConnectionString>
    
  3. Pada tingkat proyek yang sama dengan file ApplicationInsights.config, buat folder bernama ErrorHandler dengan file C# baru bernama AiHandleErrorAttribute.cs. Isi file terlihat seperti ini:

    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);
            }
        }
    }
    
  4. Di folder App_Start, buka file FilterConfig.cs dan ubah agar sesuai dengan contoh:

    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());
            }
        }
    }
    
  5. Jika Web.config sudah diperbarui, lewati langkah ini. Jika tidak, perbarui file sebagai berikut:

    <?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>
    
    

Pada titik ini, Anda berhasil mengonfigurasi pemantauan aplikasi sisi server. Jika Anda menjalankan aplikasi web, Anda akan melihat telemetri mulai muncul di Application Insights.

Menambahkan pemantauan sisi klien

Bagian sebelumnya memberikan panduan tentang metode untuk mengonfigurasikan pemantauan sisi server secara otomatis dan manual. Untuk menambahkan pemantauan sisi klien, gunakan SDK JavaScript sisi klien. Anda dapat memantau transaksi sisi klien halaman web apa pun dengan menambahkan Skrip Pemuat JavaScript JavaScript (Web) SDK sebelum tag penutup </head> HTML halaman.

Meskipun dimungkinkan untuk menambahkan Skrip Pemuat SDK JavaScript (Web) secara manual ke header setiap halaman HTML, kami sarankan Anda menambahkan Skrip Pemuat SDK JavaScript (Web) ke halaman utama. Tindakan itu menyuntikkan Skrip Pemuat SDK JavaScript (Web) ke semua halaman situs.

Untuk aplikasi ASP.NET MVC berbasis templat dari artikel ini, file yang perlu Anda edit adalah _Layout.cshtml. Anda dapat menemukannya di Tampilan>yang Dibagikan. Untuk menambahkan pemantauan sisi klien, buka _Layout.cshtml dan ikuti instruksi penyiapan berbasis JavaScript (Web) SDK Loader Script dari artikel tentang konfigurasi JavaScript SDK sisi klien.

Metrik langsung

Metrik langsung dapat digunakan untuk memverifikasi dengan cepat apakah pemantauan aplikasi dengan Application Insights dikonfigurasi dengan benar. Telemetri dapat memakan waktu beberapa menit untuk muncul di portal Azure, tetapi panel metrik langsung memperlihatkan penggunaan CPU dari proses yang sedang berjalan hampir secara real time. Ini juga dapat menunjukkan telemetri lain seperti permintaan, dependensi, dan jejak.

Aktifkan metrik langsung dengan menggunakan kode untuk aplikasi .NET apa pun

Catatan

Metrik langsung diaktifkan secara default saat Anda onboarding dengan menggunakan instruksi yang direkomendasikan untuk aplikasi .NET.

Untuk mengonfigurasi metrik langsung secara manual:

  1. Instal paket NuGet Microsoft.ApplicationInsights.PerfCounterCollector.
  2. Contoh kode aplikasi konsol berikut menunjukkan penyiapan metrik langsung:
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();
            }
        }
    }
}

Sampel sebelumnya adalah untuk aplikasi konsol, tetapi kode yang sama dapat digunakan dalam aplikasi .NET apa pun. Jika ada modul telemetri lain yang diaktifkan untuk telemetri autocollect, penting untuk memastikan bahwa konfigurasi yang sama yang digunakan untuk menginisialisasi modul tersebut digunakan untuk modul metrik langsung.

Tanya jawab umum

Bagian ini menyediakan jawaban atas pertanyaan umum.

Bagaimana cara menghapus instalan SDK?

Untuk menghapus Application Insights, Anda perlu menghapus paket dan referensi NuGet dari API di aplikasi Anda. Anda dapat menghapus instalan paket NuGet dengan menggunakan NuGet Package Manager di Visual Studio.

  1. Jika pengumpulan jejak diaktifkan, pertama-tama hapus instalan paket Microsoft.ApplicationInsights.TraceListener dengan menggunakan Manajer Paket NuGet tetapi jangan hapus dependensi apa pun.
  2. Hapus instalan paket Microsoft.ApplicationInsights.Web dan hapus dependensinya dengan menggunakan Manajer Paket NuGet dan opsi Hapus Instalannya dalam kontrol Opsi Manajer Paket NuGet.
  3. Untuk sepenuhnya menghapus Application Insights, periksa dan hapus kode atau file yang ditambahkan secara manual bersama dengan panggilan API apa pun yang Anda tambahkan di proyek Anda. Untuk informasi selengkapnya, lihat Apa yang dibuat secara otomatis saat Anda menambahkan Application Insights SDK?.

Apa yang dibuat secara otomatis saat Anda menambahkan Application Insights SDK?

Saat Anda menambahkan Application Insights ke proyek Anda, Application Insights secara otomatis membuat file dan menambahkan kode ke beberapa file Anda. Hanya menghapus instalan Paket NuGet tidak selalu membuang file dan kode. Untuk menghapus sepenuhnya Application Insights, Anda harus memeriksa dan menghapus secara manual kode atau file yang ditambahkan bersama dengan panggilan API apa pun yang Anda tambahkan dalam proyek Anda.

Saat Anda menambahkan Telemetri Application Insights ke proyek Visual Studio ASP.NET, file berikut akan ditambahkan:

  • ApplicationInsights.config
  • AiHandleErrorAttribute.cs

Potongan kode berikut ditambahkan secara otomatis:

  • [Nama proyek Anda].csproj

     <ApplicationInsightsResourceId>/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/Default-ApplicationInsights-EastUS/providers/microsoft.insights/components/WebApplication4</ApplicationInsightsResourceId>
    
  • Packages.config

    <packages>
    ...
    
      <package id="Microsoft.ApplicationInsights" version="2.12.0" targetFramework="net472" />
      <package id="Microsoft.ApplicationInsights.Agent.Intercept" version="2.4.0" targetFramework="net472" />
      <package id="Microsoft.ApplicationInsights.DependencyCollector" version="2.12.0" targetFramework="net472" />
      <package id="Microsoft.ApplicationInsights.PerfCounterCollector" version="2.12.0" targetFramework="net472" />
      <package id="Microsoft.ApplicationInsights.Web" version="2.12.0" targetFramework="net472" />
      <package id="Microsoft.ApplicationInsights.WindowsServer" version="2.12.0" targetFramework="net472" />
      <package id="Microsoft.ApplicationInsights.WindowsServer.TelemetryChannel" version="2.12.0" targetFramework="net472" />
    
      <package id="Microsoft.AspNet.TelemetryCorrelation" version="1.0.7" targetFramework="net472" />
    
      <package id="System.Buffers" version="4.4.0" targetFramework="net472" />
      <package id="System.Diagnostics.DiagnosticSource" version="4.6.0" targetFramework="net472" />
      <package id="System.Memory" version="4.5.3" targetFramework="net472" />
      <package id="System.Numerics.Vectors" version="4.4.0" targetFramework="net472" />
      <package id="System.Runtime.CompilerServices.Unsafe" version="4.5.2" targetFramework="net472" />
    ...
    </packages>
    
  • Layout.cshtml

    Jika proyek Anda memiliki file Layout.cshtml, kode berikut ditambahkan.

    <head>
    ...
        <script type = 'text/javascript' >
            var appInsights=window.appInsights||function(config)
            {
                function r(config){ t[config] = function(){ var i = arguments; t.queue.push(function(){ t[config].apply(t, i)})} }
                var t = { config:config},u=document,e=window,o='script',s=u.createElement(o),i,f;for(s.src=config.url||'//az416426.vo.msecnd.net/scripts/a/ai.0.js',u.getElementsByTagName(o)[0].parentNode.appendChild(s),t.cookie=u.cookie,t.queue=[],i=['Event','Exception','Metric','PageView','Trace','Ajax'];i.length;)r('track'+i.pop());return r('setAuthenticatedUserContext'),r('clearAuthenticatedUserContext'),config.disableExceptionTracking||(i='onerror',r('_'+i),f=e[i],e[i]=function(config, r, u, e, o) { var s = f && f(config, r, u, e, o); return s !== !0 && t['_' + i](config, r, u, e, o),s}),t
            }({
                instrumentationKey:'00000000-0000-0000-0000-000000000000'
            });
    
            window.appInsights=appInsights;
            appInsights.trackPageView();
        </script>
    ...
    </head>
    
  • ConnectedService.json

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

            public static void RegisterGlobalFilters(GlobalFilterCollection filters)
            {
                filters.Add(new ErrorHandler.AiHandleErrorAttribute());// This line was added
            }
    

Bagaimana cara menonaktifkan korelasi telemetri?

Untuk menonaktifkan korelasi telemetri dalam konfigurasi, lihat <ExcludeComponentCorrelationHttpHeadersOnDomains> di Application Insights untuk aplikasi konsol.

Pemecahan Masalah

Lihat artikel pemecahan masalah khusus.

Ada masalah yang diketahui dalam versi Visual Studio 2019 saat ini: menyimpan kunci instrumentasi atau string koneksi dalam rahasia pengguna rusak untuk aplikasi berbasis .NET Framework. Kuncinya pada akhirnya harus dikode secara permanen ke dalam file applicationinsights.config untuk mengatasi bug ini. Artikel ini dirancang untuk menghindari masalah ini sepenuhnya, dengan tidak menggunakan rahasia pengguna.

Menguji konektivitas antara host aplikasi Anda dan layanan penyerapan

Application Insights SDK dan agen mengirim telemetri untuk diserap sebagai panggilan REST ke titik akhir penyerapan kami. Anda dapat menguji konektivitas dari server web atau komputer host aplikasi Anda ke titik akhir layanan penyerapan dengan menggunakan klien REST mentah dari PowerShell atau perintah curl. Lihat Memecahkan masalah telemetri aplikasi yang hilang di Azure Monitor Application Insights.

SDK sumber terbuka

Baca dan berkontribusi pada kode.

Untuk informasi terbaru dan perbaikan bug, lihat catatan rilis.

Catatan Rilis

Untuk versi 2.12 dan yang lebih baru: .NET Software Development Kits (SDK) termasuk ASP.NET, ASP.NET Core, dan Adaptor Pengelogan

Pembaruan Layanan kami juga meringkas peningkatan Application Insights utama.

Langkah berikutnya