Application Insights untuk aplikasi ASP.NET Core

Artikel ini menjelaskan cara mengaktifkan Application Insights untuk aplikasi ASP.NET Core.

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.

Application Insights dapat mengumpulkan telemetri berikut dari aplikasi ASP.NET Core Anda:

  • Permintaan
  • Dependensi
  • Pengecualian
  • Penghitung kinerja
  • Heartbeat
  • Log

Kami menggunakan contoh aplikasi MVC. Jika Anda menggunakan Layanan Pekerja, gunakan instruksi di aplikasi Application Insights for Worker Service.

Penawaran .NET berbasis OpenTelemetry tersedia. Untuk informasi selengkapnya, lihat Gambaran umum OpenTelemetry.

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.

Catatan

Jika Anda ingin menggunakan penyedia ILogger mandiri, gunakan Microsoft.Extensions.Logging.ApplicationInsight.

Skenario yang didukung

Application Insights SDK untuk ASP.NET Core dapat memantau aplikasi Anda di mana pun atau bagaimana mereka berjalan. Jika aplikasi Anda berjalan dan memiliki konektivitas jaringan ke Azure, telemetri dapat dikumpulkan. Pemantauan Application Insights didukung di mana pun .NET Core didukung dan mencakup skenario berikut:

  • Sistem operasi: Windows, Linux, atau Mac
  • Metode hosting: Di dalam proses atau di luar proses
  • Metode penyebaran: Kerangka kerja dependen atau mandiri
  • Server web: Internet Information Server (IIS) atau Kestrel
  • Platform hosting: Fitur Web Apps dari Azure App Service, Azure Virtual Machines, Docker, dan Azure Kubernetes Service (AKS)
  • Versi .NET: Semua versi .NET yang didukung secara resmi yang tidak dalam pratinjau
  • IDE: Visual Studio, Visual Studio Code, atau baris perintah

Prasyarat

Anda memerlukan:

  • Aplikasi ASP.NET Core yang berfungsi. Jika Anda perlu membuat aplikasi ASP.NET Core, ikuti tutorial ASP.NET Core ini.
  • Referensi ke versi paket Application Insights NuGet yang didukung.
  • String koneksi Application Insights yang valid. String ini diperlukan untuk mengirim telemetri apa pun ke Application Insights. Jika Anda perlu membuat sumber daya Application Insights baru untuk mendapatkan string koneksi, lihat Membuat sumber daya Application Insights.

Mengaktifkan telemetri sisi server Application Insight (Visual Studio)

Untuk Visual Studio untuk Mac, gunakan panduan manual. Hanya versi Windows Visual Studio yang mendukung prosedur ini.

  1. Buka proyek Anda di Visual Studio.

  2. Buka Proyek>Tambahkan Telemetri Application Insights.

  3. Pilih Azure Application Insights>Berikutnya.

  4. Pilih langganan dan instans Application Insights Anda. Atau Anda dapat membuat instans baru dengan Buat baru. Pilih Selanjutnya.

  5. Tambahkan atau konfirmasi string koneksi Application Insights Anda. Ini harus diisi sebelumnya berdasarkan pilihan Anda di langkah sebelumnya. Pilih Selesai.

  6. Setelah menambahkan Application Insights ke proyek Anda, periksa untuk memastikan bahwa Anda menggunakan rilis SDK stabil terbaru. Buka Project>Kelola Paket NuGet>Microsoft.ApplicationInsights.AspNetCore. Jika perlu, pilih Perbarui.

    Screenshot that shows where to select the Application Insights package for update.

Mengaktifkan telemetri sisi server Application Insight (tanpa Visual Studio)

  1. Instal Paket Application Insights NuGet SDK untuk ASP.NET Core.

    Sebaiknya Anda selalu menggunakan versi stabil terbaru. Temukan catatan rilis lengkap untuk SDK di repositori GitHub sumber terbuka.

    Sampel kode berikut menunjukkan perubahan yang akan ditambahkan ke file proyek .csproj Anda:

    <ItemGroup>
        <PackageReference Include="Microsoft.ApplicationInsights.AspNetCore" Version="2.21.0" />
    </ItemGroup>
    
  2. Tambahkan AddApplicationInsightsTelemetry() ke kelas atau program.cs Andastartup.cs. Pilihannya tergantung pada versi .NET Core Anda.

    Tambahkan builder.Services.AddApplicationInsightsTelemetry(); setelah WebApplication.CreateBuilder() metode di kelas Program Anda, seperti dalam contoh ini:

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

    Meskipun Anda dapat memberikan string koneksi sebagai bagian ApplicationInsightsServiceOptions dari argumen ke AddApplicationInsightsTelemetry, kami sarankan Anda menentukan string koneksi dalam konfigurasi. Contoh kode berikut menunjukkan cara menentukan string koneksi di appsettings.json. Pastikan appsettings.json disalin ke folder akar aplikasi selama penerbitan.

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

    Atau, tentukan string koneksi dalam APPLICATIONINSIGHTS_CONNECTION_STRING variabel lingkungan atau ApplicationInsights:ConnectionString dalam file konfigurasi JSON.

    Contohnya:

    • SET ApplicationInsights:ConnectionString = <Copy connection string from Application Insights Resource Overview>
    • SET APPLICATIONINSIGHTS_CONNECTION_STRING = <Copy connection string from Application Insights Resource Overview>
    • Biasanya, APPLICATIONINSIGHTS_CONNECTION_STRING digunakan di Web Apps. Ini juga dapat digunakan di semua tempat di mana SDK ini didukung.

    Catatan

    string koneksi yang ditentukan dalam kode menang atas variabel APPLICATIONINSIGHTS_CONNECTION_STRINGlingkungan , yang menang atas opsi lain.

Rahasia pengguna dan penyedia konfigurasi lainnya

Jika Anda ingin menyimpan string koneksi di rahasia pengguna ASP.NET Core atau mengambilnya dari penyedia konfigurasi lain, Anda dapat menggunakan kelebihan beban dengan parameter Microsoft.Extensions.Configuration.IConfiguration. Contoh parameter adalah services.AddApplicationInsightsTelemetry(Configuration);.

Di Microsoft.ApplicationInsights.AspNetCore versi 2.15.0 dan yang lebih baru, panggilan services.AddApplicationInsightsTelemetry() secara otomatis membaca string koneksi dari Microsoft.Extensions.Configuration.IConfiguration aplikasi. Tidak perlu menyediakan IConfigurationsecara eksplisit .

Jika IConfiguration telah memuat konfigurasi dari beberapa penyedia, maka services.AddApplicationInsightsTelemetry memprioritaskan konfigurasi dari appsettings.json, terlepas dari urutan penyedia ditambahkan. services.AddApplicationInsightsTelemetry(IConfiguration) Gunakan metode untuk membaca konfigurasi dari IConfiguration tanpa perlakuan istimewa ini untuk appsettings.json.

Jalankan aplikasi Anda

Jalankan aplikasi Anda dan buat permintaan untuknya. Telemetri sekarang akan mengalir ke Application Insights. Application Insights SDK secara otomatis mengumpulkan permintaan web yang masuk ke aplikasi Anda, bersama dengan telemetri berikut.

Metrik Langsung

Metrik Langsung dapat digunakan untuk memverifikasi dengan cepat apakah pemantauan Application Insights dikonfigurasi dengan benar. Mungkin diperlukan beberapa menit untuk telemetri muncul di portal dan analitik, tetapi Live Metrics menunjukkan penggunaan CPU dari proses yang berjalan dalam waktu dekat. Ini juga dapat menunjukkan telemetri lain seperti permintaan, dependensi, dan jejak.

Log ILogger

Konfigurasi default mengumpulkan log ILoggerWarning dan log yang lebih parah. Untuk informasi selengkapnya, lihat Bagaimana cara menyesuaikan koleksi log ILogger?.

Dependensi

Pengumpulan dependensi diaktifkan secara default. Pelacakan dependensi di Application Insights menjelaskan dependensi yang dikumpulkan secara otomatis dan juga berisi langkah-langkah untuk melakukan pelacakan manual.

Penghitung kinerja

Dukungan untuk penghitung kinerja ASP.NET Core terbatas:

  • SDK versi 2.4.1 dan yang lebih baru mengumpulkan penghitung kinerja jika aplikasi berjalan di Web Apps (Windows).
  • SDK versi 2.7.1 dan yang lebih baru mengumpulkan penghitung kinerja jika aplikasi berjalan Windows dan menargetkan netstandard2.0 atau yang lebih baru.
  • Untuk aplikasi yang menargetkan .NET Framework, semua versi SDK mendukung penghitung kinerja.
  • SDK versi 2.8.0 dan yang lebih baru mendukung penghitung CPU/memori di Linux. Tidak ada penghitung lain yang didukung di Linux. Untuk mendapatkan penghitung sistem di Linux dan lingkungan non-Windows lainnya, gunakan EventCounters.

EventCounter

Secara default, EventCounterCollectionModule diaktifkan. Untuk mempelajari cara mengonfigurasi daftar penghitungan yang akan dikumpulkan, lihat Pengantar EventCounters.

Memperkaya data melalui HTTP

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

Mengaktifkan telemetri sisi klien untuk aplikasi web

Langkah-langkah sebelumnya sudah cukup untuk membantu Anda mulai mengumpulkan telemetri sisi server. Jika aplikasi Anda memiliki komponen sisi klien, ikuti langkah berikutnya untuk mulai mengumpulkan telemetri penggunaan menggunakan injeksi Skrip Pemuat SDK JavaScript (Web) menurut konfigurasi.

  1. Dalam _ViewImports.cshtml tambahkan injeksi:

    @inject Microsoft.ApplicationInsights.AspNetCore.JavaScriptSnippet JavaScriptSnippet
    
  2. Dalam _Layout.cshtml, masukkan HtmlHelper di akhir bagian <head> tetapi sebelum skrip lainnya. Jika Anda ingin melaporkan telemetri JavaScript kustom dari halaman, masukkan setelah cuplikan ini:

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

Sebagai alternatif untuk menggunakan FullScript, ScriptBody tersedia mulai dari Application Insights SDK untuk ASP.NET Core versi 2.14. Gunakan ScriptBody jika Anda perlu mengontrol tag <script> untuk mengatur Kebijakan Keamanan Konten:

<script> // apply custom changes to this script tag.
 @Html.Raw(JavaScriptSnippet.ScriptBody)
</script>

Nama file .cshtml yang direferensikan sebelumnya berasal dari templat aplikasi MVC default. Pada akhirnya, jika Anda ingin mengaktifkan pemantauan sisi klien dengan benar untuk aplikasi Anda, Skrip Pemuat JavaScript JavaScript (Web) SDK harus muncul di <head> bagian setiap halaman aplikasi yang ingin Anda pantau. Tambahkan Skrip Pemuat JavaScript JavaScript (Web) SDK ke _Layout.cshtml dalam templat aplikasi untuk mengaktifkan pemantauan sisi klien.

Jika proyek Anda tidak menyertakan _Layout.cshtml, Anda masih dapat menambahkan pemantauan sisi klien dengan menambahkan Skrip Pemuat JavaScript JavaScript (Web) SDK ke file yang setara yang mengontrol <head> semua halaman dalam aplikasi Anda. Atau, Anda dapat menambahkan Skrip Pemuat SDK JavaScript (Web) ke beberapa halaman, tetapi kami tidak merekomendasikannya.

Catatan

Injeksi JavaScript memberikan pengalaman konfigurasi default. Jika Anda memerlukan konfigurasi di luar pengaturan string koneksi, Anda harus menghapus injeksi otomatis seperti yang dijelaskan dan menambahkan JavaScript SDK secara manual.

Mengonfigurasi Application Insights SDK

Anda dapat menyesuaikan Application Insights SDK untuk ASP.NET Core untuk mengubah konfigurasi default. Pengguna SDK ASP.NET Application Insights mungkin sudah tidak asing dengan mengubah konfigurasi dengan menggunakan ApplicationInsights.config atau dengan mengubah TelemetryConfiguration.Active. Untuk ASP.NET Core, buat hampir semua perubahan konfigurasi dalam ConfigureServices()metode Startup.cs dari kelas Anda, kecuali jika Anda diarahkan sebaliknya. Bagian berikut memberikan informasi selengkapnya.

Catatan

Di aplikasi ASP.NET Core, mengubah konfigurasi dengan mengubah TelemetryConfiguration.Active tidak didukung.

Menggunakan ApplicationInsightsServiceOptions

Anda dapat mengubah beberapa pengaturan umum dengan meneruskan ApplicationInsightsServiceOptions ke AddApplicationInsightsTelemetry, seperti dalam contoh ini:

var builder = WebApplication.CreateBuilder(args);

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

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

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

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

Tabel ini memiliki daftar lengkap ApplicationInsightsServiceOptions setelan:

Pengaturan Deskripsi Default
EnablePerformanceCounterCollectionModule Aktifkan/Nonaktifkan PerformanceCounterCollectionModule. Benar
EnableRequestTrackingTelemetryModule Aktifkan/Nonaktifkan RequestTrackingTelemetryModule. Benar
EnableEventCounterCollectionModule Aktifkan/Nonaktifkan EventCounterCollectionModule. Benar
EnableDependencyTrackingTelemetryModule Aktifkan/Nonaktifkan DependencyTrackingTelemetryModule. Benar
EnableAppServicesHeartbeatTelemetryModule Aktifkan/Nonaktifkan AppServicesHeartbeatTelemetryModule. Benar
EnableAzureInstanceMetadataTelemetryModule Aktifkan/Nonaktifkan AzureInstanceMetadataTelemetryModule. Benar
EnableQuickPulseMetricStream Mengaktifkan/Menonaktifkan fitur LiveMetrics. Benar
EnableAdaptiveSampling Aktifkan/Nonaktifkan Pengambilan Sampel Adaptif. Benar
EnableHeartbeat Aktifkan/Nonaktifkan fitur heartbeats. Ini secara berkala (default 15 menit) mengirimkan metrik HeartbeatState kustom bernama dengan informasi tentang runtime seperti versi .NET dan informasi lingkungan Azure, jika berlaku. Benar
AddAutoCollectedMetricExtractor Aktifkan/Nonaktifkan AutoCollectedMetrics extractor. Prosesor telemetri ini mengirimkan metrik yang telah ditentukan sebelumnya tentang permintaan/dependensi sebelum pengambilan sampel terjadi. Benar
RequestCollectionOptions.TrackExceptions Aktifkan/Nonaktifkan pelaporan pelacakan pengecualian yang tidak tertangani oleh modul pengumpulan permintaan. False in netstandard2.0 (karena pengecualian dilacak dengan ApplicationInsightsLoggerProvider). Benar sebaliknya.
EnableDiagnosticsTelemetryModule Aktifkan/Nonaktifkan DiagnosticsTelemetryModule. Menonaktifkan menyebabkan pengaturan berikut diabaikan: EnableHeartbeat, , EnableAzureInstanceMetadataTelemetryModuledan EnableAppServicesHeartbeatTelemetryModule. Benar

Untuk daftar terbaru, lihat setelan yang dapat dikonfigurasi di ApplicationInsightsServiceOptions.

Rekomendasi konfigurasi untuk Microsoft.ApplicationInsights.AspNetCore SDK 2.15.0 dan yang lebih baru

Di Microsoft.ApplicationInsights.AspNetCore SDK versi 2.15.0 dan yang lebih baru, konfigurasikan setiap pengaturan yang tersedia di ApplicationInsightsServiceOptions, termasuk ConnectionString. Gunakan instans aplikasi IConfiguration . Pengaturan harus berada di bawah bagian ApplicationInsights, seperti yang ditunjukkan dalam contoh berikut. Bagian berikut dari appsettings.json mengonfigurasi string koneksi dan menonaktifkan pengambilan sampel adaptif dan pengumpulan penghitung kinerja.

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

Jika builder.Services.AddApplicationInsightsTelemetry(aiOptions) untuk ASP.NET Core 6.0 atau services.AddApplicationInsightsTelemetry(aiOptions) untuk ASP.NET Core 3.1 dan versi sebelumnya digunakan, itu akan mengambil alih pengaturan dari Microsoft.Extensions.Configuration.IConfiguration.

Pengambilan sampel

Application Insights SDK untuk ASP.NET Core mendukung pengambilan sampel laju tetap dan adaptif. Secara default, pengambilan sampel adaptif diaktifkan.

Untuk informasi selengkapnya, lihat Mengonfigurasi pengambilan sampel adaptif aplikasi ASP.NET Core.

Menambahkan TelemetryInitializers

Saat Anda ingin memperkaya telemetri dengan informasi lebih lanjut, gunakan penginisialisasi telemetri.

Tambahkan TelemetryInitializer yang baru ke kontainer DependencyInjection seperti yang ditunjukkan dalam kode berikut. SDK akan otomatis mengambil semua TelemetryInitializer yang ditambahkan ke kontainer DependencyInjection.

var builder = WebApplication.CreateBuilder(args);

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

var app = builder.Build();

Catatan

builder.Services.AddSingleton<ITelemetryInitializer, MyCustomTelemetryInitializer>(); berfungsi untuk inisialisasi sederhana. Untuk yang lain, builder.Services.AddSingleton(new MyCustomTelemetryInitializer() { fieldName = "myfieldName" }); diperlukan.

Menghapus TelemetryInitializers

Secara default, inisialisasi telemetri hadir. Untuk menghapus semua atau penginisialisasi telemetri tertentu, gunakan kode contoh berikut setelah memanggil AddApplicationInsightsTelemetry().

var builder = WebApplication.CreateBuilder(args);

builder.Services.AddApplicationInsightsTelemetry();

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

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

var app = builder.Build();

Menambahkan prosesor telemetri

Anda dapat menambahkan prosesor telemetri kustom ke TelemetryConfiguration dengan menggunakan metode ekstensi pada AddApplicationInsightsTelemetryProcessor di IServiceCollection. Anda akan menggunakan prosesor telemetri dalam skenario pemfilteran tingkat lanjut. Gunakan contoh berikut:

var builder = WebApplication.CreateBuilder(args);

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

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

var app = builder.Build();

Mengonfigurasi atau menghapus TelemetryModules default

Application Insights secara otomatis mengumpulkan telemetri tentang beban kerja tertentu tanpa memerlukan pelacakan manual oleh pengguna.

Secara default, modul pengumpulan otomatis berikut diaktifkan. Modul ini bertanggung jawab untuk mengumpulkan telemetri secara otomatis. Anda dapat menonaktifkan atau mengonfigurasinya untuk mengubah perilaku defaultnya.

  • RequestTrackingTelemetryModule: Mengumpulkan RequestTelemetry dari permintaan web masuk.
  • DependencyTrackingTelemetryModule: Mengumpulkan DependencyTelemetry dari panggilan HTTP keluar dan panggilan SQL.
  • PerformanceCollectorModule: Mengumpulkan Windows PerformanceCounters.
  • QuickPulseTelemetryModule: Mengumpulkan telemetri untuk ditampilkan di portal Metrik Langsung.
  • AppServicesHeartbeatTelemetryModule: Mengumpulkan heartbeat (yang dikirim sebagai metrik kustom), tentang lingkungan App Service tempat aplikasi dihosting.
  • AzureInstanceMetadataTelemetryModule: Mengumpulkan heartbeat (yang dikirim sebagai metrik kustom), tentang lingkungan Azure VM tempat aplikasi dihosting.
  • EventCounterCollectionModule: Mengumpulkan EventCounters. Modul ini adalah fitur baru dan tersedia di SDK versi 2.8.0 dan yang lebih baru.

Untuk mengonfigurasi default TelemetryModuleapa pun, gunakan metode ConfigureTelemetryModule<T> ekstensi pada IServiceCollection, seperti yang ditunjukkan dalam contoh berikut:

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

var builder = WebApplication.CreateBuilder(args);

builder.Services.AddApplicationInsightsTelemetry();

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

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

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

var app = builder.Build();

Dalam versi 2.12.2 dan yang lebih baru, ApplicationInsightsServiceOptions menyertakan opsi mudah untuk menonaktifkan salah satu modul default.

Mengonfigurasi saluran telemetri

Saluran telemetri default adalah ServerTelemetryChannel. Contoh berikut menunjukkan cara mengambil alih.

using Microsoft.ApplicationInsights.Channel;

var builder = WebApplication.CreateBuilder(args);

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

builder.Services.AddApplicationInsightsTelemetry();

var app = builder.Build();

Catatan

Jika Anda ingin menghapus buffer, lihat Data pembilasan. Misalnya, Anda mungkin perlu menghapus buffer jika Anda menggunakan SDK dalam aplikasi yang dimatikan.

Menonaktifkan telemetri secara dinamis

Jika Anda ingin menonaktifkan telemetri secara kondisional dan dinamis, Anda dapat menyelesaikan instance TelemetryConfiguration dengan kontainer injeksi dependensi ASP.NET Core di mana saja dalam kode Anda dan menyetel tanda DisableTelemetry di atasnya.

var builder = WebApplication.CreateBuilder(args);

builder.Services.AddApplicationInsightsTelemetry();

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

var app = builder.Build();

Sampel kode sebelumnya mencegah pengiriman data telemetri ke Application Insights. Itu tidak mencegah modul pengumpulan otomatis mengumpulkan telemetri. Jika Anda ingin menghapus modul autocollection tertentu, lihat Menghapus modul telemetri.

Tanya jawab umum

Bagian ini menyediakan jawaban atas pertanyaan umum.

Apakah Application Insights mendukung ASP.NET Core 3.1?

ASP.NET Core 3.1 tidak lagi didukung oleh Microsoft.

Application Insights SDK untuk ASP.NET Core versi 2.8.0 dan Visual Studio 2019 atau yang lebih baru dapat digunakan dengan aplikasi ASP.NET Core 3.1.

Bagaimana cara melacak telemetri yang tidak dikumpulkan secara otomatis?

Dapatkan instans TelemetryClient dengan menggunakan injeksi konstruktor dan panggil metode yang diperlukan TrackXXX() di dalamnya. Kami tidak menyarankan pembuatan instans TelemetryClient atau TelemetryConfiguration baru di aplikasi ASP.NET Core. Instans TelemetryClient singleton sudah terdaftar dalam DependencyInjection kontainer, yang berbagi TelemetryConfiguration dengan telemetri lainnya. Buat instans baru TelemetryClient hanya jika memerlukan konfigurasi yang terpisah dari telemetri lainnya.

Contoh berikut menunjukkan cara melacak lebih banyak telemetri dari pengontrol.

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();
    }

Untuk informasi selengkapnya tentang pelaporan data kustom di Application Insights, lihat Referensi API metrik kustom Application Insights. Pendekatan serupa dapat digunakan untuk mengirim metrik kustom ke Application Insights dengan menggunakan GetMetric API.

Bagaimana cara mengambil isi Permintaan dan Respons dalam telemetri saya?

ASP.NET Core memiliki dukungan bawaan untuk mencatat informasi Permintaan/Respons HTTP (termasuk isi) melalui ILogger. Disarankan untuk memanfaatkan ini. Ini dapat berpotensi mengekspos informasi pengidentifikasi pribadi (PII) dalam telemetri, dan dapat menyebabkan biaya (biaya performa dan penagihan Application Insights) meningkat secara signifikan, jadi evaluasi risiko dengan hati-hati sebelum menggunakan ini.

Bagaimana cara menyesuaikan kumpulan log ILogger?

Pengaturan default untuk Application Insights adalah hanya menangkap Peringatan dan log yang lebih parah.

Ambil Informasi dan log yang kurang parah dengan mengubah konfigurasi pengelogan untuk penyedia Application Insights sebagai berikut.

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

Penting untuk diperhatikan bahwa contoh berikut tidak menyebabkan penyedia Application Insights mengambil log Information. Itu tidak menangkapnya karena SDK menambahkan filter logging default yang memerintahkan ApplicationInsights untuk mengambil hanya Warning log dan log yang lebih parah. Application Insights membutuhkan pengambil alih eksplisit.

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

Untuk informasi selengkapnya, lihat Konfigurasi ILogger.

Beberapa templat Visual Studio menggunakan metode ekstensi UseApplicationInsights() di IWebHostBuilder untuk mengaktifkan Application Insights. Apakah penggunaan ini masih valid?

Metode ekstensi UseApplicationInsights() masih didukung, tetapi ditandai sebagai usang di Application Insights SDK versi 2.8.0 dan yang lebih seterusnya. Ini dihapus dalam versi utama SDK berikutnya. Untuk mengaktifkan telemetri Application Insights, gunakan AddApplicationInsightsTelemetry() karena menyediakan kelebihan beban untuk mengontrol beberapa konfigurasi. Juga, di aplikasi ASP.NET Core 3.X, services.AddApplicationInsightsTelemetry() adalah satu-satunya cara untuk mengaktifkan Application Insights.

Saya menyebarkan aplikasi ASP.NET Core ke Web Apps. Apakah saya harus tetap mengaktifkan ekstensi Application Insights dari Web Apps?

Jika SDK diinstal pada waktu build seperti yang ditunjukkan dalam artikel ini, Anda tidak perlu mengaktifkan ekstensi Application Insights dari portal App Service. Jika ekstensi diinstal, ekstensi akan mundur saat mendeteksi SDK sudah ditambahkan. Jika Anda mengaktifkan Application Insights dari ekstensi, Anda tidak perlu menginstal dan memperbarui SDK. Tetapi jika Anda mengaktifkan Application Insights dengan mengikuti instruksi dalam artikel ini, Anda memiliki lebih banyak fleksibilitas karena:

  • Telemetri Application Insights terus berfungsi di:
    • Semua sistem operasi, termasuk Windows, Linux, dan Mac.
    • Semua mode publikasi, termasuk dependen kerangka kerja atau mandiri.
    • Semua kerangka kerja target, termasuk .NET Framework lengkap.
    • Semua opsi hosting, termasuk Web Apps, VM, Linux, kontainer, AKS, dan hosting non-Azure.
    • Semua versi .NET Core, termasuk versi pratinjau.
  • Anda dapat melihat telemetri secara lokal saat melakukan debug dari Visual Studio.
  • Anda dapat melacak lebih banyak telemetri kustom dengan menggunakan API TrackXXX().
  • Anda memiliki kontrol penuh atas konfigurasi.

Dapatkah saya mengaktifkan pemantauan Application Insights dengan menggunakan alat seperti Azure Monitor Application Insights Agent (sebelumnya Status Monitor v2)?

Ya. Di Agen Application Insights 2.0.0-beta1 dan yang lebih baru, aplikasi ASP.NET Core yang dihosting di IIS didukung.

Apakah semua fitur didukung jika saya menjalankan aplikasi saya di Linux?

Ya. Dukungan fitur untuk SDK sama di semua platform, dengan pengecualian berikut:

Apakah SDK ini didukung untuk Layanan Pekerja?

Tidak. Silakan gunakan Application Insights untuk aplikasi Layanan Pekerja (aplikasi non-HTTP) untuk layanan pekerja.

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.

Catatan

Instruksi ini adalah untuk menghapus instalan ASP.NET Core SDK. Jika Anda perlu menghapus instalan SDK ASP.NET, lihat Bagaimana cara menghapus instalan SDK ASP.NET?.

  1. Hapus instalan paket Microsoft.ApplicationInsights.AspNetCore dengan menggunakan Manajer Paket NuGet.
  2. 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 saat Anda menambahkan Application Insights SDK?.

Apa yang dibuat saat Anda menambahkan Application Insights SDK?

Saat Anda menambahkan Application Insights ke proyek Anda, Application Insights membuat file dan menambahkan kode ke beberapa file Anda. Hanya menghapus instalan Paket NuGet tidak akan 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 templat Visual Studio ASP.NET Core, kode berikut akan ditambahkan:

  • [Nama proyek Anda].csproj

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

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

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

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

Pemecahan Masalah

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 pembaruan terbaru dan perbaikan bug, lihat catatan rilis.

Catatan Rilis

Untuk versi 2.12 dan yang lebih baru: SDK .NET (Termasuk ASP.NET, ASP.NET Core, dan Adapter Pengelogan)

Pembaruan Layanan kami juga meringkas peningkatan Application Insights utama.

Langkah berikutnya