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 dan Peta Strategi OpenTelemetry kami. Panduan migrasi tersedia untuk .NET, Node.js, dan Python.
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.
Buka proyek Anda di Visual Studio.
Buka Proyek>Tambahkan Telemetri Application Insights.
Pilih Azure Application Insights>Berikutnya.
Pilih langganan dan instans Application Insights Anda. Atau Anda dapat membuat instans baru dengan Buat baru. Pilih Selanjutnya.
Tambahkan atau konfirmasi string koneksi Application Insights Anda. Ini harus diisi sebelumnya berdasarkan pilihan Anda di langkah sebelumnya. Pilih Selesai.
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.
Mengaktifkan telemetri sisi server Application Insight (tanpa Visual Studio)
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>
Tambahkan
AddApplicationInsightsTelemetry()
ke kelas atauprogram.cs
Andastartup.cs
. Pilihannya tergantung pada versi .NET Core Anda.Tambahkan
builder.Services.AddApplicationInsightsTelemetry();
setelahWebApplication.CreateBuilder()
metode di kelasProgram
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();
Siapkan string koneksi.
Meskipun Anda dapat memberikan string koneksi sebagai bagian
ApplicationInsightsServiceOptions
dari argumen keAddApplicationInsightsTelemetry
, kami sarankan Anda menentukan string koneksi dalam konfigurasi. Contoh kode berikut menunjukkan cara menentukan string koneksi diappsettings.json
. Pastikanappsettings.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 atauApplicationInsights: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_STRING
lingkungan , 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 IConfiguration
secara 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 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:
- Instal paket NuGet Microsoft.ApplicationInsights.PerfCounterCollector.
- Contoh kode aplikasi konsol berikut menunjukkan penyiapan metrik langsung:
using Microsoft.ApplicationInsights;
using Microsoft.ApplicationInsights.Extensibility;
using Microsoft.ApplicationInsights.Extensibility.PerfCounterCollector.QuickPulse;
// Create a TelemetryConfiguration instance.
TelemetryConfiguration config = TelemetryConfiguration.CreateDefault();
config.InstrumentationKey = "INSTRUMENTATION-KEY-HERE";
QuickPulseTelemetryProcessor quickPulseProcessor = null;
config.DefaultTelemetrySink.TelemetryProcessorChainBuilder
.Use((next) =>
{
quickPulseProcessor = new QuickPulseTelemetryProcessor(next);
return quickPulseProcessor;
})
.Build();
var quickPulseModule = new QuickPulseTelemetryModule();
// Secure the control channel.
// This is optional, but recommended.
quickPulseModule.AuthenticationApiKey = "YOUR-API-KEY-HERE";
quickPulseModule.Initialize(config);
quickPulseModule.RegisterTelemetryProcessor(quickPulseProcessor);
// Create a TelemetryClient instance. It is important
// to use the same TelemetryConfiguration here as the one
// used to set up live metrics.
TelemetryClient client = new TelemetryClient(config);
// This sample runs indefinitely. Replace with actual application logic.
while (true)
{
// Send dependency and request telemetry.
// These will be shown in live metrics.
// CPU/Memory Performance counter is also shown
// automatically without any additional steps.
client.TrackDependency("My dependency", "target", "http://sample",
DateTimeOffset.Now, TimeSpan.FromMilliseconds(300), true);
client.TrackRequest("My Request", DateTimeOffset.Now,
TimeSpan.FromMilliseconds(230), "200", true);
Task.Delay(1000).Wait();
}
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.
Log ILogger
Konfigurasi default mengumpulkan ILogger
Warning
log 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.
Dalam
_ViewImports.cshtml
tambahkan injeksi:@inject Microsoft.ApplicationInsights.AspNetCore.JavaScriptSnippet JavaScriptSnippet
Dalam
_Layout.cshtml
, masukkanHtmlHelper
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 live metrics (also known as QuickPulse).
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 , , EnableAzureInstanceMetadataTelemetryModule dan 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 panel 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 TelemetryModule
apa 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:
- SDK mengumpulkan penghitung peristiwa di Linux karena penghitung kinerja hanya didukung di Windows. Sebagian besar metrik juga sama.
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?.
- Hapus instalan paket Microsoft.ApplicationInsights.AspNetCore dengan menggunakan Manajer Paket NuGet.
- 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 }
Bagaimana cara menonaktifkan korelasi telemetri?
Untuk menonaktifkan korelasi telemetri dalam kode, lihat <ExcludeComponentCorrelationHttpHeadersOnDomains>
di Application Insights untuk aplikasi konsol.
Pemecahan Masalah
Lihat artikel pemecahan masalah khusus.
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
- Jelajahi alur pengguna untuk memahami cara pengguna berpindah melalui aplikasi Anda.
- Konfigurasikan pengumpulan rekam jepret untuk melihat status kode sumber dan variabel saat pengecualian muncul.
- Gunakan API untuk mengirim peristiwa dan metrik Anda sendiri untuk melihat lebih mendetail performa dan penggunaan aplikasi Anda.
- Gunakan pengujian ketersediaan untuk memeriksa aplikasi Anda secara konstan dari seluruh dunia.
- Pelajari tentang injeksi dependensi di ASP.NET Core.