Çalışan Hizmeti uygulamaları için Application Insights (HTTP olmayan uygulamalar)
Ç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.
Not
Aşağıdaki belgeler Application Insights klasik API'sine dayanır. Application Insights için uzun vadeli plan, OpenTelemetry kullanarak veri toplamaktır. Daha fazla bilgi için bkz . .NET, Node.js, Python ve Java uygulamaları için Azure İzleyici OpenTelemetry'yi etkinleştirme ve OpenTelemetry Yol Haritamız. Geçiş kılavuzu .NET, Node.js ve Python için kullanılabilir.
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 uzantı yöntemlerini kullanıma IServiceCollection
sunar.
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 izleme anahtarı alı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. Yeni özelliklerden yararlanmak için bağlantı dizesi geçiş.
Ç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>
ortam değişkeninde veya yapılandırmada
APPLICATIONINSIGHTS_CONNECTION_STRING
(appsettings.json
) bağlantı dizesi yapılandırın.ILogger
Bağımlılık Ekleme (DI) kapsayıcısından bir örneği veyaTelemetryClient
örneği çağırarakserviceProvider.GetRequiredService<TelemetryClient>();
veya Oluşturucu Ekleme'yi kullanarak alın. Bu adım, ve otomatik toplama modüllerinin ayarlanmasınıTelemetryConfiguration
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.
Bu örnekte olduğu
CreateHostBuilder()
gibi sınıfınızdakiProgram.cs
yöntemine ekleyinservices.AddApplicationInsightsTelemetryWorkerService();
:public static IHostBuilder CreateHostBuilder(string[] args) => Host.CreateDefaultBuilder(args) .ConfigureServices((hostContext, services) => { services.AddHostedService<Worker>(); services.AddApplicationInsightsTelemetryWorkerService(); });
Aşağıdaki örnekte olduğu gibi değiştirin
Worker.cs
: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ı dizesi ayarlayın.
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 olarak dağıtılan uygulamalar için bağlantı dizesi belirtir.
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.
Bu örnekte olduğu
ConfigureServices()
gibi yöntemine ekleyinservices.AddApplicationInsightsTelemetryWorkerService();
: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ı dizesi ayarlayın. Önceki .NET Çalışan Hizmeti örneğinde de aynısını
appsettings.json
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 hedeflediğinden netstandard2.0
, .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 örneklerden çalışanlar, bing.com için her saniye bir HTTP çağrısı yapar ve ayrıca kullanarak ILogger
birkaç günlük yayar. Bu satırlar, bir işlem oluşturmak için kullanılan çağrısının TelemetryClient
içinde StartOperation
sarmalanı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. Bir üst-alt ilişkisiyle bağıntılı RequestTelemetry
. Bağıntı, işlem/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
Üzerinden önem derecesi Uyarısı veya üzeri ile yayılan ILogger
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"
}
}
}
}
Aşağıdaki örneğin Application Insights sağlayıcısının günlükleri yakalamasına Information
neden olmadığını unutmayın. SDK yalnızca Warning
günlükleri ve daha ciddi günlükleri ApplicationInsights
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"
}
}
}
Daha fazla bilgi için, Application Insights tarafından hangi günlük düzeylerinin yakalandığını ö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
değer, ASP.NET veya ASP.NET Core uygulamasında kullanılan otomatik yapılandırmaya benzer ve telemetriyi zenginleştirmek için kullanılan telemetri başlatıcıları çıkarılır HttpContext
.
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 üzerinde IServiceCollection
uygun yöntemleri çağırarak bölümünde neredeyse tüm yapılandırma değişikliklerini ConfigureServices()
yapın.
Not
Bu SDK'yı kullandığınızda, değiştirerek TelemetryConfiguration.Active
yapılandırmayı değiştirmek desteklenmez ve değişiklikler yansıtılamaz.
ApplicationInsightsServiceOptions kullanma
Aşağıdaki örnekte olduğu gibi öğesine geçirerek ApplicationInsightsServiceOptions
AddApplicationInsightsTelemetryWorkerService
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);
}
ApplicationInsightsServiceOptions
Bu SDK'daki, ASP.NET Core SDK'sının aksine Microsoft.ApplicationInsights.AspNetCore.Extensions
ad alanındadırMicrosoft.ApplicationInsights.WorkerService
.
Aşağıdaki tabloda, içinde ApplicationInsightsServiceOptions
yaygın olarak kullanılan ayarlar listelenir.
Ayar | Açıklama | Varsayılan |
---|---|---|
EnableQuickPulseMetricStream | Canlı ölçümler özelliğini etkinleştirin/devre dışı bırakın. | True |
EnableAdaptiveSampling | Uyarlamalı Örneklemeyi Etkinleştirme/Devre Dışı Bırakma. | True |
EnableHeartbeat | Belirli aralıklarla (varsayılan olarak 15 dk) "HeartBeatState" adlı özel bir ölçüm gönderen Sinyaller özelliğini etkinleştirin/devre dışı bırakın; varsa çalışma zamanı hakkında .NET sürümü ve Azure ortamı gibi bilgiler gönderir. | True |
AddAutoCollectedMetricExtractor | Ö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. | True |
EnableDiagnosticsTelemetryModule | 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 . |
True |
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 hızlı örneklemeyi hem de uyarlamalı örneklemeyi destekler. Uyarlamalı örnekleme varsayılan olarak etkindir. Örnekleme, ApplicationInsightsServiceOptions seçeneği kullanılarak EnableAdaptiveSampling
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.AddApplicationInsightsTelemetry(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 yeni telemetri başlatıcısı DependencyInjection
eklediğinizde SDK bunları otomatik olarak öğesine TelemetryConfiguration
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ı AddApplicationInsightsTelemetryWorkerService()
yaptıktan sonra aşağıdaki örnek kodu 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
üzerinde IServiceCollection
uzantı yöntemini AddApplicationInsightsTelemetryProcessor
kullanarak özel TelemetryConfiguration
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 IServiceCollection
uzantı yöntemini ConfigureTelemetryModule<T>
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 olarak devre dışı bırakmak istiyorsanız, örneği kodunuzun TelemetryConfiguration
herhangi bir yerinde ASP.NET Core bağımlılık ekleme kapsayıcısıyla çözümleyebilir ve üzerinde bayrağını ayarlayabilirsiniz DisableTelemetry
.
public void ConfigureServices(IServiceCollection services)
{
services.AddApplicationInsightsTelemetryWorkerService();
}
public void Configure(IApplicationBuilder app, IHostingEnvironment env, TelemetryConfiguration configuration)
{
configuration.DisableTelemetry = true;
...
}
Sık sorulan sorular
Bu bölüm, sık sorulan soruların yanıtlarını sağlar.
Hangi paketi kullanmalıyım?
.NET Core uygulama senaryosu | Paket |
---|---|
HostedServices olmadan | WorkerService |
HostedServices ile | AspNetCore (WorkerService değil) |
HostedServices ile yalnızca HostedServices'i izleme | WorkerService (nadir senaryo) |
AspNetCore paketini kullanan bir .NET Core uygulaması içindeki HostedServices uygulamasına TelemetryClient eklenmiş olabilir mi?
Evet. Yapılandırma, web uygulamasının geri kalanıyla paylaşılır.
Otomatik olarak toplanmayan telemetri verilerini nasıl izleyebilirim?
Oluşturucu ekleme kullanarak bir örneğini TelemetryClient
alın ve gerekli yöntemi üzerinde çağırın TrackXXX()
. Yeni TelemetryClient
örnekler oluşturmanızı önermiyoruz. Tekil örneği TelemetryClient
, telemetrinin DependencyInjection
geri kalanıyla paylaşan TelemetryConfiguration
kapsayıcıda zaten kayıtlıdır. Yeni TelemetryClient
örnek oluşturma yalnızca telemetrinin geri kalanından ayrı bir yapılandırma gerekiyorsa önerilir.
Visual Studio IDE'yi kullanarak Application Insights'ı bir Çalışan Hizmeti projesine ekleyebilir miyim?
Visual Studio IDE ekleme şu anda yalnızca ASP.NET/ASP.NET Core uygulamaları için desteklenmektedir. Bu belge, Visual Studio Çalışan Hizmeti uygulamalarını ekleme desteği gönderdiğinizde güncelleştirilecektir.
Azure İzleyici Application Insights Aracısı (eski adıYla Durum İzleyicisi v2) gibi araçları kullanarak Application Insights izlemeyi etkinleştirebilir miyim?
Hayır Azure İzleyici Application Insights Aracısı şu anda yalnızca .NET'i desteklemektedir.
Uygulamamı Linux'ta çalıştırırsam tüm özellikler destekleniyor mu?
Evet. Bu SDK için özellik desteği, aşağıdaki özel durumlar dışında tüm platformlarda aynıdır:
Performans sayaçları, canlı ölçümlerde gösterilen İşlem CPU/Bellek dışında yalnızca Windows'ta desteklenir.
Varsayılan olarak etkin olsa
ServerTelemetryChannel
bile, uygulama Linux veya macOS'ta çalışıyorsa, ağ sorunları varsa kanal telemetriyi geçici olarak tutmak için otomatik olarak yerel bir depolama klasörü oluşturmaz. Bu sınırlama nedeniyle geçici ağ veya sunucu sorunları olduğunda telemetri kaybolur. Bu sorunu geçici olarak çözmek için kanal için yerel bir klasör yapılandırın:using Microsoft.ApplicationInsights.Channel; using Microsoft.ApplicationInsights.WindowsServer.TelemetryChannel; public void ConfigureServices(IServiceCollection services) { // The following will configure the channel to use the given folder to temporarily // store telemetry items during network or Application Insights server issues. // User should ensure that the given folder already exists // and that the application has read/write permissions. services.AddSingleton(typeof(ITelemetryChannel), new ServerTelemetryChannel () {StorageFolder = "/tmp/myfolder"}); services.AddApplicationInsightsTelemetryWorkerService(); }
Ö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.
HostedServices ile Temel arka plan görevlerini ASP.NET: ASP.NET Core'daysanız ve resmi yönergelere uygun olarak 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
- 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.