Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Çalışan Hizmeti için Application Insights SDK'sı, mesajlaşma, arka plan görevleri ve konsol uygulamaları gibi HTTP dışı iş yükleri için en uygun olan yeni bir SDK'dır. Bu tür uygulamalar geleneksel bir ASP.NET/ASP.NET Core web uygulaması gibi gelen HTTP isteğine sahip değildir. Bu nedenle, ASP.NET veya ASP.NET Core uygulamaları için Application Insights paketlerinin kullanılması desteklenmez.
Dikkat
Yeni uygulamalar veya müşteriler için Azure İzleyici OpenTelemetry Distro'yu öneririz, Azure İzleyici Application Insights'ı çalıştırmak için. Azure İzleyici OpenTelemetry Distro, Application Insights SDK'sı ile benzer bir işlev ve deneyim sunar. .NET, Node.js ve Python için geçiş kılavuzlarını kullanarak Application Insights SDK'sından geçiş yapmak mümkündür, ancak geriye dönük uyumluluk için birkaç özellik daha eklemeye çalışıyoruz.
Yeni SDK tek başına herhangi bir telemetri koleksiyonu yapmaz. Bunun yerine DependencyCollector, PerfCounterCollector ve ApplicationInsightsLoggingProvider gibi diğer iyi bilinen Application Insights otomatik toplayıcılarını getirir. Bu SDK, telemetri koleksiyonunu etkinleştirmek ve yapılandırmak için IServiceCollection
üzerinde genişletme yöntemleri sağlar.
Desteklenen senaryolar
Çalışan Hizmeti için Application Insights SDK'sı, nerede veya nasıl çalıştırılırsa çalışsın HTTP olmayan uygulamalar için en uygun yöntemdir. Uygulamanız çalışıyorsa ve Azure'a ağ bağlantısı varsa telemetri toplanabilir. .NET Core'un desteklendiği her yerde Application Insights izlemesi desteklenir. Bu paket, yeni kullanıma sunulan .NET Core Çalışan Hizmeti, ASP.NET Core'daki arka plan görevleri ve .NET Core ve .NET Framework gibi konsol uygulamalarında kullanılabilir.
Önkoşullar
Geçerli bir Application Insights bağlantı dizesi sahip olmanız gerekir. Bu dize, Application Insights'a telemetri göndermek için gereklidir. bağlantı dizesi almak için yeni bir Application Insights kaynağı oluşturmanız gerekiyorsa bkz. Bağlantı Dizeleri.
Not
31 Mart 2025'te araç anahtarı kullanımı desteği sona erecektir. İzleme anahtarı alımı çalışmaya devam edecek, ancak artık özellik için güncelleştirme veya destek sağlamayacağız. Bağlantı dizelerine geçiş yaparak yeni özelliklerden yararlanın.
Çalışan Hizmeti için Application Insights SDK'sını kullanma
Uygulamaya Microsoft.ApplicationInsights.WorkerService paketini yükleyin. Aşağıdaki kod parçacığı, projenizin
.csproj
dosyasına eklenmesi gereken değişiklikleri gösterir:<ItemGroup> <PackageReference Include="Microsoft.ApplicationInsights.WorkerService" Version="2.22.0" /> </ItemGroup>
Bağlantı dizesini
APPLICATIONINSIGHTS_CONNECTION_STRING
ortam değişkeninde veya yapılandırmada (appsettings.json
) yapılandırın.ILogger
veyaTelemetryClient
örneğini, Bağımlılık Enjeksiyonu (DI) kapsayıcısındanserviceProvider.GetRequiredService<TelemetryClient>();
kullanarak ya da Oluşturucu Enjeksiyonu ile alın. Bu adım,TelemetryConfiguration
ve otomatik toplama modüllerinin ayarlanmasını tetikler.
Her uygulama türü için belirli yönergeler aşağıdaki bölümlerde açıklanmıştır.
.NET Core Çalışan Hizmeti uygulaması
Tam örnek NuGet web sitesinde paylaşılır.
.NET SDK'sını indirip yükleyin.
Visual Studio yeni proje şablonunu veya komut satırını
dotnet new worker
kullanarak yeni bir Çalışan Hizmeti projesi oluşturun.Uygulamaya Microsoft.ApplicationInsights.WorkerService paketini ekleyin.
Örnekte olduğu gibi, sınıfınızdaki
services.AddApplicationInsightsTelemetryWorkerService();
içindekiCreateHostBuilder()
yöntemineProgram.cs
ekleyin:public static IHostBuilder CreateHostBuilder(string[] args) => Host.CreateDefaultBuilder(args) .ConfigureServices((hostContext, services) => { services.AddHostedService<Worker>(); services.AddApplicationInsightsTelemetryWorkerService(); });
Worker.cs
'yi aşağıdaki örneğe göre değiştirin.using Microsoft.ApplicationInsights; using Microsoft.ApplicationInsights.DataContracts; public class Worker : BackgroundService { private readonly ILogger<Worker> _logger; private TelemetryClient _telemetryClient; private static HttpClient _httpClient = new HttpClient(); public Worker(ILogger<Worker> logger, TelemetryClient tc) { _logger = logger; _telemetryClient = tc; } protected override async Task ExecuteAsync(CancellationToken stoppingToken) { while (!stoppingToken.IsCancellationRequested) { _logger.LogInformation("Worker running at: {time}", DateTimeOffset.Now); using (_telemetryClient.StartOperation<RequestTelemetry>("operation")) { _logger.LogWarning("A sample warning message. By default, logs with severity Warning or higher is captured by Application Insights"); _logger.LogInformation("Calling bing.com"); var res = await _httpClient.GetAsync("https://bing.com"); _logger.LogInformation("Calling bing completed with status:" + res.StatusCode); _telemetryClient.TrackEvent("Bing call event completed"); } await Task.Delay(1000, stoppingToken); } } }
Bağlantı dizesini kurun.
Not
Yapılandırmada bağlantı dizesi belirtmenizi öneririz. Aşağıdaki kod örneği, içinde
appsettings.json
bir bağlantı dizesi nasıl belirtileceğini gösterir. Yayımlama sırasında uygulama kök klasörüne kopyalandığından eminappsettings.json
olun.{ "ApplicationInsights": { "ConnectionString" : "InstrumentationKey=00000000-0000-0000-0000-000000000000;" }, "Logging": { "LogLevel": { "Default": "Warning" } } }
Alternatif olarak, ortam değişkenindeki APPLICATIONINSIGHTS_CONNECTION_STRING
bağlantı dizesi belirtin.
Genellikle, APPLICATIONINSIGHTS_CONNECTION_STRING
web uygulamalarına web işleri şeklinde dağıtılan uygulamalar için bağlantı dizesini belirler.
Not
Kodda belirtilen bir bağlantı dizesi, diğer seçeneklerden öncelikli olan ortam değişkenine APPLICATIONINSIGHTS_CONNECTION_STRING
göre önceliklidir.
barındırılan hizmetlerle ASP.NET Temel arka plan görevleri
Bu belgede , ASP.NET Core uygulamasında arka plan görevlerinin nasıl oluşturulacağı açıklanır.
Tam örnek bu GitHub sayfasında paylaşılır.
Uygulamaya Microsoft.ApplicationInsights.WorkerService paketini yükleyin.
services.AddApplicationInsightsTelemetryWorkerService();
'yı, bu örnekte olduğu gibiConfigureServices()
yöntemine ekleyin:public static async Task Main(string[] args) { var host = new HostBuilder() .ConfigureAppConfiguration((hostContext, config) => { config.AddJsonFile("appsettings.json", optional: true); }) .ConfigureServices((hostContext, services) => { services.AddLogging(); services.AddHostedService<TimedHostedService>(); // connection string is read automatically from appsettings.json services.AddApplicationInsightsTelemetryWorkerService(); }) .UseConsoleLifetime() .Build(); using (host) { // Start the host await host.StartAsync(); // Wait for the host to shutdown await host.WaitForShutdownAsync(); } }
Aşağıdaki kod,
TimedHostedService
arka plan görev mantığının bulunduğu içindir:using Microsoft.ApplicationInsights; using Microsoft.ApplicationInsights.DataContracts; public class TimedHostedService : IHostedService, IDisposable { private readonly ILogger _logger; private Timer _timer; private TelemetryClient _telemetryClient; private static HttpClient httpClient = new HttpClient(); public TimedHostedService(ILogger<TimedHostedService> logger, TelemetryClient tc) { _logger = logger; this._telemetryClient = tc; } public Task StartAsync(CancellationToken cancellationToken) { _logger.LogInformation("Timed Background Service is starting."); _timer = new Timer(DoWork, null, TimeSpan.Zero, TimeSpan.FromSeconds(1)); return Task.CompletedTask; } private void DoWork(object state) { _logger.LogInformation("Worker running at: {time}", DateTimeOffset.Now); using (_telemetryClient.StartOperation<RequestTelemetry>("operation")) { _logger.LogWarning("A sample warning message. By default, logs with severity Warning or higher is captured by Application Insights"); _logger.LogInformation("Calling bing.com"); var res = httpClient.GetAsync("https://bing.com").GetAwaiter().GetResult(); _logger.LogInformation("Calling bing completed with status:" + res.StatusCode); _telemetryClient.TrackEvent("Bing call event completed"); } } }
Bağlantı dizesini kurun. Önceki
appsettings.json
Çalışan Hizmeti örneğinde de aynısını kullanın.
.NET Core/.NET Framework konsol uygulaması
Bu makalenin başında belirtildiği gibi yeni paket, normal bir konsol uygulamasından bile Application Insights telemetrisini etkinleştirmek için kullanılabilir. Bu paket netstandard2.0
şu platformları hedefler, bu nedenle .NET Core veya üzeri ve .NET Framework veya üzeri konsol uygulamaları için kullanılabilir.
Tam örnek bu GitHub sayfasında paylaşılır.
Uygulamaya Microsoft.ApplicationInsights.WorkerService paketini yükleyin.
Aşağıdaki örnekte gösterildiği gibi Program.cs değiştirin:
using Microsoft.ApplicationInsights; using Microsoft.ApplicationInsights.DataContracts; using Microsoft.ApplicationInsights.WorkerService; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Logging; using System; using System.Net.Http; using System.Threading.Tasks; namespace WorkerSDKOnConsole { class Program { static async Task Main(string[] args) { // Create the DI container. IServiceCollection services = new ServiceCollection(); // Being a regular console app, there is no appsettings.json or configuration providers enabled by default. // Hence instrumentation key/ connection string and any changes to default logging level must be specified here. services.AddLogging(loggingBuilder => loggingBuilder.AddFilter<Microsoft.Extensions.Logging.ApplicationInsights.ApplicationInsightsLoggerProvider>("Category", LogLevel.Information)); services.AddApplicationInsightsTelemetryWorkerService((ApplicationInsightsServiceOptions options) => options.ConnectionString = "InstrumentationKey=<instrumentation key here>"); // To pass a connection string // - aiserviceoptions must be created // - set connectionstring on it // - pass it to AddApplicationInsightsTelemetryWorkerService() // Build ServiceProvider. IServiceProvider serviceProvider = services.BuildServiceProvider(); // Obtain logger instance from DI. ILogger<Program> logger = serviceProvider.GetRequiredService<ILogger<Program>>(); // Obtain TelemetryClient instance from DI, for additional manual tracking or to flush. var telemetryClient = serviceProvider.GetRequiredService<TelemetryClient>(); var httpClient = new HttpClient(); while (true) // This app runs indefinitely. Replace with actual application termination logic. { logger.LogInformation("Worker running at: {time}", DateTimeOffset.Now); // Replace with a name which makes sense for this operation. using (telemetryClient.StartOperation<RequestTelemetry>("operation")) { logger.LogWarning("A sample warning message. By default, logs with severity Warning or higher is captured by Application Insights"); logger.LogInformation("Calling bing.com"); var res = await httpClient.GetAsync("https://bing.com"); logger.LogInformation("Calling bing completed with status:" + res.StatusCode); telemetryClient.TrackEvent("Bing call event completed"); } await Task.Delay(1000); } // Explicitly call Flush() followed by sleep is required in console apps. // This is to ensure that even if application terminates, telemetry is sent to the back-end. telemetryClient.Flush(); Task.Delay(5000).Wait(); } } }
Bu konsol uygulaması aynı varsayılanı TelemetryConfiguration
da kullanır. Önceki bölümlerdeki örneklerle aynı şekilde özelleştirilebilir.
Uygulamanızı çalıştırma
Uygulamanızı çalıştırın. Önceki tüm örneklerde çalışanlar, bing.com'a her saniye bir HTTP çağrısı yapmaktadır ve ILogger
kullanarak birkaç günlük de yaymaktadır. Bu satırlar, bir işlem oluşturmak için kullanılan StartOperation
çağrısının TelemetryClient
içinde yer alır. Bu örnekte, RequestTelemetry
"operation" olarak adlandırılır.
Application Insights bu ILogger günlüklerini uyarı veya varsayılan olarak daha yüksek önem derecesine ve bağımlılıklara sahip olarak toplar. Üst-alt ilişkisiyle RequestTelemetry
ile ilişkilidir. Korelasyon, süreç/ağ sınırları arasında da çalışır. Örneğin, çağrı başka bir izlenen bileşene yapıldıysa, bu üst öğeyle de bağıntılı olur.
bu özel işlemi RequestTelemetry
, tipik bir web uygulamasında gelen web isteğinin eşdeğeri olarak düşünülebilir. İşlem kullanmak gerekli değildir, ancak Application Insights bağıntı veri modeline en uygun olanıdır.
RequestTelemetry
üst işlem olarak davranır ve çalışan yinelemesi içinde oluşturulan her telemetri mantıksal olarak aynı işleme ait olarak değerlendirilir.
Bu yaklaşım, otomatik ve el ile oluşturulan tüm telemetri verilerinin aynı operation_id
olmasını da sağlar. Örnekleme temel operation_id
alındığından, örnekleme algoritması tek bir yinelemedeki tüm telemetri verilerini tutar veya bırakır.
Aşağıdaki bölümlerde Application Insights tarafından otomatik olarak toplanan tam telemetri listesi yer almaktadır.
Canlı ölçümler
Canlı ölçümler , Application Insights ile uygulama izlemenin doğru yapılandırılıp yapılandırılmadığını hızla doğrulamak için kullanılabilir. Telemetrinin Azure portalında görünmesi birkaç dakika sürebilir, ancak canlı ölçümler bölmesinde çalışan işlemin CPU kullanımı neredeyse gerçek zamanlı olarak gösterilir. Ayrıca istekler, bağımlılıklar ve izlemeler gibi diğer telemetri verilerini de gösterebilir.
ILogger günlükleri
ILogger
iletilen ve Uyarı veya daha yüksek önem derecesine sahip günlükler otomatik olarak yakalanır. Bu davranışı değiştirmek için, aşağıdaki kodda gösterildiği gibi sağlayıcı ApplicationInsights
için günlüğe kaydetme yapılandırmasını açıkça geçersiz kılın. Aşağıdaki yapılandırma, Application Insights'ın tüm Information
günlükleri ve daha ciddi günlükleri yakalamasını sağlar.
{
"Logging": {
"LogLevel": {
"Default": "Warning"
},
"ApplicationInsights": {
"LogLevel": {
"Default": "Information"
}
}
}
}
Application Insights sağlayıcısının Information
günlükleri yakalamasına aşağıdaki örneğin neden olmadığını unutmayın. SDK yalnızca ApplicationInsights
günlükleri ve daha ciddi günlükleri Warning
yakalama talimatı veren bir varsayılan günlük filtresi eklediğinden bunu yakalamaz. Application Insights için açık bir geçersiz kılma gerekir.
{
"Logging": {
"LogLevel": {
"Default": "Information"
}
}
}
Not
Application Insights, koddaki ConfigureLogging(...) aracılığıyla yapılandırılan günlük seviyelerine saygı gösterir. Yalnızca appsettings.json kullanılıyorsa ve ConfigureLogging açıkça geçersiz kılınmıyorsa, varsayılan günlük düzeyi Uyarı'dır.
Daha fazla bilgi için, Application Insights tarafından yakalanan günlük düzeylerini özelleştirmek için ILogger belgelerini izleyin.
Bağımlılıklar
Bağımlılık koleksiyonu varsayılan olarak etkindir. Application Insights'ta bağımlılık izleme makalesi, otomatik olarak toplanan bağımlılıkları açıklar ve ayrıca el ile izleme gerçekleştirme adımlarını içerir.
EventCounter
EventCounterCollectionModule
varsayılan olarak etkindir ve .NET uygulamalarından varsayılan bir sayaç kümesi toplar.
EventCounter öğreticisinde, toplanan varsayılan sayaç kümesi listelenir. Ayrıca, listenin nasıl özelleştirileceğine ilişkin yönergeler de vardır.
Diğer telemetri verilerini el ile izleme
SDK, açıklandığı gibi telemetriyi otomatik olarak toplasa da, çoğu durumda Application Insights'a başka telemetri göndermeniz gerekir. Diğer telemetri verilerini izlemenin önerilen yolu, Bağımlılık Ekleme'den bir örneğini TelemetryClient
almak ve ardından bunun üzerinde desteklenen TrackXXX()
API yöntemlerinden birini çağırmaktır. Bir diğer tipik kullanım örneği de işlemlerin özel olarak izlenmesidir. Bu yaklaşım önceki çalışan örneklerinde gösterilmiştir.
Application Insights SDK'sını yapılandırma
Çalışan Hizmeti SDK'sı tarafından kullanılan varsayılan TelemetryConfiguration
, ASP.NET veya ASP.NET Core uygulamasında kullanılan otomatik yapılandırmaya benzer, ancak HttpContext
'den gelen telemetriyi zenginleştirmek için kullanılan telemetri başlatıcıları hariç tutulur.
Varsayılan yapılandırmayı değiştirmek için Çalışan Hizmeti için Application Insights SDK'sını özelleştirebilirsiniz. Application Insights ASP.NET Core SDK'sı kullanıcıları, ASP.NET Core yerleşik bağımlılık ekleme kullanarak yapılandırmayı değiştirme konusunda bilgi sahibi olabilir. Çalışan Hizmeti SDK'sı da benzer ilkeleri temel alır. Sonraki bölümde ayrıntılı olarak açıklandığı gibi, ConfigureServices()
üzerinde uygun yöntemleri çağırarak IServiceCollection
bölümünde neredeyse tüm yapılandırma değişikliklerini yapın.
Not
Bu SDK'yı kullandığınızda, TelemetryConfiguration.Active
değiştirilerek yapılandırma değişikliği yapmak desteklenmez ve değişiklikler yansıtılmaz.
ApplicationInsightsServiceOptions'u kullanma
Aşağıdaki örnekte olduğu gibi, ApplicationInsightsServiceOptions
öğesini AddApplicationInsightsTelemetryWorkerService
öğesine geçirerek birkaç yaygın ayarı değiştirebilirsiniz.
using Microsoft.ApplicationInsights.WorkerService;
public void ConfigureServices(IServiceCollection services)
{
var aiOptions = new ApplicationInsightsServiceOptions();
// Disables adaptive sampling.
aiOptions.EnableAdaptiveSampling = false;
// Disables live metrics (also known as QuickPulse).
aiOptions.EnableQuickPulseMetricStream = false;
services.AddApplicationInsightsTelemetryWorkerService(aiOptions);
}
Bu SDK'daki ApplicationInsightsServiceOptions
, ASP.NET Core SDK'sındaki Microsoft.ApplicationInsights.WorkerService
'nin aksine Microsoft.ApplicationInsights.AspNetCore.Extensions
ad alanındadır.
Aşağıdaki tabloda, içinde ApplicationInsightsServiceOptions
yaygın olarak kullanılan ayarlar listelenir.
Ayar | Açıklama | Varsayılan |
---|---|---|
Hızlı Nabız Metrik Akışını Etkinleştir | Canlı ölçümler özelliğini etkinleştirin/devre dışı bırakın. | Doğru |
Uyarlanabilir Örneklemeyi Etkinleştir | Uyarlamalı Örneklemeyi Etkinleştir/Devre Dışı Bırak. | Doğru |
EtkinleştirKalpAtışı | Sinyaller özelliğini aç/kapat; bu özellik, belirtilen aralıklarla (varsayılan olarak 15 dk), çalışma zamanı hakkında .NET sürümü ve Azure ortamı gibi bilgiler içeren "HeartBeatState" adlı özel bir ölçüm gönderir. | Doğru |
Otomatik Toplanan Metrik Çıkarıcı Ekle | Örnekleme gerçekleşmeden önce İstekler/Bağımlılıklar hakkında önceden toplanmış ölçümler gönderen bir telemetri işlemcisi olan AutoCollectedMetrics ayıklayıcısını etkinleştirin/devre dışı bırakın. | Doğru |
Tanılama Telemetri Modülünü Etkinleştir | etkinleştirin/devre dışı bırakın DiagnosticsTelemetryModule . Bu ayarın devre dışı bırakılması, aşağıdaki ayarların yoksayılmasına neden olur: EnableHeartbeat , EnableAzureInstanceMetadataTelemetryModule ve EnableAppServicesHeartbeatTelemetryModule . |
Doğru |
En güncel liste için içindeki yapılandırılabilir ayarlara ApplicationInsightsServiceOptions
bakın.
Örnekleme
Çalışan Hizmeti için Application Insights SDK'sı hem sabit oranlı örneklemeyi hem de uyarlamalı örneklemeyi destekler. Uyarlamalı örnekleme varsayılan olarak etkindir. Örnekleme, EnableAdaptiveSampling
seçeneği ApplicationInsightsServiceOptions kullanılarak devre dışı bırakılabilir.
Diğer örnekleme ayarlarını yapılandırmak için aşağıdaki örneği kullanabilirsiniz:
using Microsoft.ApplicationInsights.AspNetCore.Extensions;
using Microsoft.ApplicationInsights.Extensibility;
var builder = WebApplication.CreateBuilder(args);
builder.Services.Configure<TelemetryConfiguration>(telemetryConfiguration =>
{
var telemetryProcessorChainBuilder = telemetryConfiguration.DefaultTelemetrySink.TelemetryProcessorChainBuilder;
// Using adaptive sampling
telemetryProcessorChainBuilder.UseAdaptiveSampling(maxTelemetryItemsPerSecond: 5);
// Alternately, the following configures adaptive sampling with 5 items per second, and also excludes DependencyTelemetry from being subject to sampling:
// telemetryProcessorChainBuilder.UseAdaptiveSampling(maxTelemetryItemsPerSecond:5, excludedTypes: "Dependency");
});
builder.Services.AddApplicationInsightsTelemetryWorkerService(new ApplicationInsightsServiceOptions
{
EnableAdaptiveSampling = false,
});
var app = builder.Build();
Daha fazla bilgi için Örnekleme belgesine bakın.
Telemetri başlatıcıları ekleme
Tüm telemetri ile gönderilen özellikleri tanımlamak istediğinizde telemetri başlatıcılarını kullanın.
Kapsayıcıya DependencyInjection
yeni telemetri başlatıcısı eklediğinizde, SDK bunları otomatik olarak TelemetryConfiguration
öğesine ekler.
using Microsoft.ApplicationInsights.Extensibility;
public void ConfigureServices(IServiceCollection services)
{
services.AddSingleton<ITelemetryInitializer, MyCustomTelemetryInitializer>();
services.AddApplicationInsightsTelemetryWorkerService();
}
Telemetri başlatıcılarını kaldırma
Telemetri başlatıcıları varsayılan olarak vardır. Telemetri başlatıcılarının tümünü veya belirli bir öğesini kaldırmak için çağrısı yaptıktan sonraAddApplicationInsightsTelemetryWorkerService()
kullanın.
public void ConfigureServices(IServiceCollection services)
{
services.AddApplicationInsightsTelemetryWorkerService();
// Remove a specific built-in telemetry initializer.
var tiToRemove = services.FirstOrDefault<ServiceDescriptor>
(t => t.ImplementationType == typeof(AspNetCoreEnvironmentTelemetryInitializer));
if (tiToRemove != null)
{
services.Remove(tiToRemove);
}
// Remove all initializers.
// This requires importing namespace by using Microsoft.Extensions.DependencyInjection.Extensions;
services.RemoveAll(typeof(ITelemetryInitializer));
}
Telemetri işlemcileri ekleme
TelemetryConfiguration
üzerinde AddApplicationInsightsTelemetryProcessor
için uzantı yöntemi IServiceCollection
kullanarak özel telemetri işlemcileri ekleyebilirsiniz. Application Insights'a gönderdiğiniz telemetride bulunan veya dışlananlar üzerinde daha doğrudan denetim sağlamak için gelişmiş filtreleme senaryolarında telemetri işlemcileri kullanırsınız. Şu örneği kullanın:
public void ConfigureServices(IServiceCollection services)
{
services.AddApplicationInsightsTelemetryWorkerService();
services.AddApplicationInsightsTelemetryProcessor<MyFirstCustomTelemetryProcessor>();
// If you have more processors:
services.AddApplicationInsightsTelemetryProcessor<MySecondCustomTelemetryProcessor>();
}
Varsayılan telemetri modüllerini yapılandırma veya kaldırma
Application Insights, belirli iş yükleriyle ilgili telemetri verilerini el ile izlemeye gerek kalmadan otomatik olarak toplamak için telemetri modüllerini kullanır.
Aşağıdaki otomatik toplama modülleri varsayılan olarak etkindir. Bu modüller telemetri verilerini otomatik olarak toplamakla sorumludur. Varsayılan davranışlarını değiştirmek için bunları devre dışı bırakabilir veya yapılandırabilirsiniz.
DependencyTrackingTelemetryModule
PerformanceCollectorModule
QuickPulseTelemetryModule
-
AppServicesHeartbeatTelemetryModule
(Şu anda bu telemetri modülüyle ilgili bir sorun var. Geçici bir geçici çözüm için bkz . GitHub Sorunu 1689.) AzureInstanceMetadataTelemetryModule
Herhangi bir varsayılan telemetri modülünü yapılandırmak için, aşağıdaki örnekte gösterildiği gibi üzerinde ConfigureTelemetryModule<T>
uzantı yöntemini IServiceCollection
kullanın:
using Microsoft.ApplicationInsights.Extensibility.PerfCounterCollector.QuickPulse;
using Microsoft.ApplicationInsights.Extensibility.PerfCounterCollector;
public void ConfigureServices(IServiceCollection services)
{
services.AddApplicationInsightsTelemetryWorkerService();
// The following configures QuickPulseTelemetryModule.
// Similarly, any other default modules can be configured.
services.ConfigureTelemetryModule<QuickPulseTelemetryModule>((module, o) =>
{
module.AuthenticationApiKey = "keyhere";
});
// The following removes PerformanceCollectorModule to disable perf-counter collection.
// Similarly, any other default modules can be removed.
var performanceCounterService = services.FirstOrDefault<ServiceDescriptor>
(t => t.ImplementationType == typeof(PerformanceCollectorModule));
if (performanceCounterService != null)
{
services.Remove(performanceCounterService);
}
}
Telemetri kanalını yapılandırma
Varsayılan kanaldır ServerTelemetryChannel
. Aşağıdaki örnekte gösterildiği gibi geçersiz kılabilirsiniz:
using Microsoft.ApplicationInsights.Channel;
public void ConfigureServices(IServiceCollection services)
{
// Use the following to replace the default channel with InMemoryChannel.
// This can also be applied to ServerTelemetryChannel.
services.AddSingleton(typeof(ITelemetryChannel), new InMemoryChannel() {MaxTelemetryBufferCapacity = 19898 });
services.AddApplicationInsightsTelemetryWorkerService();
}
Telemetriyi dinamik olarak devre dışı bırakma
Telemetriyi koşullu ve dinamik şekilde devre dışı bırakmak istiyorsanız, TelemetryConfiguration
örneğini kodunuzun herhangi bir yerinde ASP.NET Core bağımlılık ekleme kapsayıcısıyla çözümleyebilir ve bunun üzerinde DisableTelemetry
bayrağını ayarlayabilirsiniz.
public void ConfigureServices(IServiceCollection services)
{
services.AddApplicationInsightsTelemetryWorkerService();
}
public void Configure(IApplicationBuilder app, IHostingEnvironment env, TelemetryConfiguration configuration)
{
configuration.DisableTelemetry = true;
...
}
Örnek uygulamalar
.NET Core konsol uygulaması: .NET Core (2.0 veya üzeri) veya .NET Framework (4.7.2 veya üzeri) ile yazılmış bir konsol uygulaması kullanıyorsanız bu örneği kullanın.
ASP.NET Core'da HostedServices ile arka plan görevleri: Resmi yönergelere uygun olarak ASP.NET Core'da arka plan görevleri oluşturuyorsanız, bu örneği kullanın.
.NET Core Çalışan Hizmeti: Resmi yönergelere uygun bir .NET Çalışan Hizmeti uygulamanız varsa bu örneği kullanın.
Açık kaynak SDK
Kodu okuyun ve koda katkıda bulunun.
En son güncelleştirmeler ve hata düzeltmeleri için Sürüm Notları'na bakın.
Sonraki adımlar
- Sık sorulan soruları (SSS) gözden geçirmek için bkz Çalışan Hizmeti uygulamaları hakkında SSS.
- Application Insights SDK'sının desteklenen bir sürümünü çalıştırdığınızı doğrulayın.
- Uygulamanızın performansına ve kullanımına ilişkin ayrıntılı bir görünüm için kendi olaylarınızı ve ölçümlerinizi göndermek için API'yi kullanın.
- Otomatik olarak izlenmeyen diğer bağımlılıkları izleyin.
- Otomatik olarak toplanan telemetri verilerini zenginleştirin veya filtreleyin.
- ASP.NET Core'a Bağımlılık Ekleme.