Application Insights untuk aplikasi konsol .NET
Peringatan
Gunakan paket Microsoft.ApplicationInsights.WorkerService dan instruksi terkait dari Application Insights untuk aplikasi Layanan Pekerja (aplikasi non-HTTP) untuk aplikasi konsol. Ini kompatibel dengan versi Dukungan Jangka Panjang (LTS) dari .NET Core dan .NET Framework atau lebih tinggi.
Application Insights memungkinkan Anda memantau aplikasi web untuk ketersediaan, performa, dan penggunaan.
Mulai
Di portal Azure, buat sumber daya Application Insights.
Ambil salinan string dari koneksi. Temukan string koneksi di menu dropdown Essentials dari sumber daya baru yang Anda buat.
Instal paket Microsoft.ApplicationInsights terbaru.
Atur string koneksi dalam kode Anda sebelum Anda melacak telemetri apa pun (atau mengatur
APPLICATIONINSIGHTS_CONNECTION_STRING
variabel lingkungan). Setelah itu, Anda harus dapat melacak telemetri secara manual dan melihatnya di portal Azure.// You may use different options to create configuration as shown later in this article TelemetryConfiguration configuration = TelemetryConfiguration.CreateDefault(); configuration.ConnectionString = <Copy connection string from Application Insights Resource Overview>; var telemetryClient = new TelemetryClient(configuration); telemetryClient.TrackTrace("Hello World!");
Catatan
Telemetri tidak dikirim secara instan. Item di-batch dan dikirim oleh ApplicationInsights SDK. Aplikasi konsol keluar setelah memanggil
Track()
metode.Telemetri mungkin tidak dikirim kecuali
Flush()
danDelay
Sleep
/dilakukan sebelum aplikasi keluar, seperti yang ditunjukkan dalam contoh lengkap nanti di artikel ini.Sleep
tidak diperlukan jika Anda menggunakanInMemoryChannel
.Instal versi terbaru paket Microsoft.ApplicationInsights.DependencyCollector . Ini secara otomatis melacak HTTP, SQL, atau beberapa panggilan dependensi eksternal lainnya.
Anda dapat menginisialisasi dan mengonfigurasi Application Insights dari kode atau dengan menggunakan ApplicationInsights.config
file. Pastikan inisialisasi terjadi sedini mungkin.
Catatan
ApplicationInsights.config tidak didukung oleh aplikasi .NET Core.
Menggunakan file konfigurasi
Untuk aplikasi berbasis .NET Framework, secara default, Application Insights SDK mencari ApplicationInsights.config
file di direktori kerja saat TelemetryConfiguration
sedang dibuat. Membaca file konfigurasi tidak didukung pada .NET Core.
TelemetryConfiguration config = TelemetryConfiguration.Active; // Reads ApplicationInsights.config file if present
Anda juga dapat menentukan jalur ke file konfigurasi:
using System.IO;
TelemetryConfiguration configuration = TelemetryConfiguration.CreateFromConfiguration(File.ReadAllText("C:\\ApplicationInsights.config"));
var telemetryClient = new TelemetryClient(configuration);
Anda bisa mendapatkan contoh lengkap file konfigurasi dengan menginstal versi terbaru paket Microsoft.ApplicationInsights.WindowsServer . Berikut adalah konfigurasi minimal untuk pengumpulan dependensi yang setara dengan contoh kode:
<?xml version="1.0" encoding="utf-8"?>
<ApplicationInsights xmlns="http://schemas.microsoft.com/ApplicationInsights/2013/Settings">
<ConnectionString>"Copy connection string from Application Insights Resource Overview"</ConnectionString>
<TelemetryInitializers>
<Add Type="Microsoft.ApplicationInsights.DependencyCollector.HttpDependenciesParsingTelemetryInitializer, Microsoft.AI.DependencyCollector"/>
</TelemetryInitializers>
<TelemetryModules>
<Add Type="Microsoft.ApplicationInsights.DependencyCollector.DependencyTrackingTelemetryModule, Microsoft.AI.DependencyCollector">
<ExcludeComponentCorrelationHttpHeadersOnDomains>
<Add>core.windows.net</Add>
<Add>core.chinacloudapi.cn</Add>
<Add>core.cloudapi.de</Add>
<Add>core.usgovcloudapi.net</Add>
<Add>localhost</Add>
<Add>127.0.0.1</Add>
</ExcludeComponentCorrelationHttpHeadersOnDomains>
<IncludeDiagnosticSourceActivities>
<Add>Microsoft.Azure.ServiceBus</Add>
<Add>Microsoft.Azure.EventHubs</Add>
</IncludeDiagnosticSourceActivities>
</Add>
</TelemetryModules>
<TelemetryChannel Type="Microsoft.ApplicationInsights.WindowsServer.TelemetryChannel.ServerTelemetryChannel, Microsoft.AI.ServerTelemetryChannel"/>
</ApplicationInsights>
Mengonfigurasi koleksi telemetri dari kode
Catatan
Membaca file konfigurasi tidak didukung pada .NET Core.
Selama pengaktifan aplikasi, buat dan konfigurasikan
DependencyTrackingTelemetryModule
instans. Ini harus singleton dan harus dipertahankan untuk masa pakai aplikasi.var module = new DependencyTrackingTelemetryModule(); // prevent Correlation Id to be sent to certain endpoints. You may add other domains as needed. module.ExcludeComponentCorrelationHttpHeadersOnDomains.Add("core.windows.net"); //... // enable known dependency tracking, note that in future versions, we will extend this list. // please check default settings in https://github.com/Microsoft/ApplicationInsights-dotnet-server/blob/develop/Src/DependencyCollector/DependencyCollector/ApplicationInsights.config.install.xdt module.IncludeDiagnosticSourceActivities.Add("Microsoft.Azure.ServiceBus"); module.IncludeDiagnosticSourceActivities.Add("Microsoft.Azure.EventHubs"); //.... // initialize the module module.Initialize(configuration);
Tambahkan penginisialisasi telemetri umum:
// ensures proper DependencyTelemetry.Type is set for Azure RESTful API calls configuration.TelemetryInitializers.Add(new HttpDependenciesParsingTelemetryInitializer());
Jika Anda membuat konfigurasi dengan konstruktor biasa
TelemetryConfiguration()
, Anda perlu mengaktifkan dukungan korelasi juga. Ini tidak diperlukan jika Anda membaca konfigurasi dari file atau digunakanTelemetryConfiguration.CreateDefault()
atauTelemetryConfiguration.Active
.configuration.TelemetryInitializers.Add(new OperationCorrelationTelemetryInitializer());
Anda mungkin juga ingin menginstal dan menginisialisasi modul pengumpul Penghitung Kinerja seperti yang dijelaskan di situs web ini.
Contoh lengkap
using Microsoft.ApplicationInsights;
using Microsoft.ApplicationInsights.DependencyCollector;
using Microsoft.ApplicationInsights.Extensibility;
using System.Net.Http;
using System.Threading.Tasks;
namespace ConsoleApp
{
class Program
{
static void Main(string[] args)
{
TelemetryConfiguration configuration = TelemetryConfiguration.CreateDefault();
configuration.ConnectionString = "removed";
configuration.TelemetryInitializers.Add(new HttpDependenciesParsingTelemetryInitializer());
var telemetryClient = new TelemetryClient(configuration);
using (InitializeDependencyTracking(configuration))
{
// run app...
telemetryClient.TrackTrace("Hello World!");
using (var httpClient = new HttpClient())
{
// Http dependency is automatically tracked!
httpClient.GetAsync("https://microsoft.com").Wait();
}
}
// before exit, flush the remaining data
telemetryClient.Flush();
// Console apps should use the WorkerService package.
// This uses ServerTelemetryChannel which does not have synchronous flushing.
// For this reason we add a short 5s delay in this sample.
Task.Delay(5000).Wait();
// If you're using InMemoryChannel, Flush() is synchronous and the short delay is not required.
}
static DependencyTrackingTelemetryModule InitializeDependencyTracking(TelemetryConfiguration configuration)
{
var module = new DependencyTrackingTelemetryModule();
// prevent Correlation Id to be sent to certain endpoints. You may add other domains as needed.
module.ExcludeComponentCorrelationHttpHeadersOnDomains.Add("core.windows.net");
module.ExcludeComponentCorrelationHttpHeadersOnDomains.Add("core.chinacloudapi.cn");
module.ExcludeComponentCorrelationHttpHeadersOnDomains.Add("core.cloudapi.de");
module.ExcludeComponentCorrelationHttpHeadersOnDomains.Add("core.usgovcloudapi.net");
module.ExcludeComponentCorrelationHttpHeadersOnDomains.Add("localhost");
module.ExcludeComponentCorrelationHttpHeadersOnDomains.Add("127.0.0.1");
// enable known dependency tracking, note that in future versions, we will extend this list.
// please check default settings in https://github.com/microsoft/ApplicationInsights-dotnet-server/blob/develop/WEB/Src/DependencyCollector/DependencyCollector/ApplicationInsights.config.install.xdt
module.IncludeDiagnosticSourceActivities.Add("Microsoft.Azure.ServiceBus");
module.IncludeDiagnosticSourceActivities.Add("Microsoft.Azure.EventHubs");
// initialize the module
module.Initialize(configuration);
return module;
}
}
}