çalışan hizmeti uygulamaları için Application Insights (HTTP olmayan uygulamalar)
çalışan hizmeti için Application Insights sdk , mesajlaşma, arka plan görevleri, konsol uygulamaları vb. gibi HTTP olmayan iş yükleri için en uygun olan yeni bir SDK 'dir. bu tür uygulamalar, bir gelen HTTP isteğinin geleneksel bir ASP.NET/ASP.NET Core Web uygulaması gibi kavramına sahip değildir ve bu nedenle ASP.NET veya ASP.NET Core uygulamaları için Application Insights paketlerinin kullanılması desteklenmez.
Yeni SDK hiçbir telemetri koleksiyonunu kendisi yapmaz. bunun yerine, dependencycollector, perfcountercollector, applicationınsightsloggingprovider vb. gibi diğer iyi bilinen Application Insights otomatik toplayıcılarda yer alır. Bu SDK IServiceCollection , telemetri toplamayı etkinleştirmek ve yapılandırmak için üzerinde uzantı yöntemleri sunar.
Desteklenen senaryolar
çalışan hizmeti için Application Insights SDK , her ne kadar veya nasıl çalıştırıldıklarından bağımsız olarak HTTP olmayan uygulamalar için idealdir. Uygulamanız çalışıyorsa ve Azure ile ağ bağlantısı varsa telemetri toplanabilir. Application Insights izleme .net Core 'un desteklendiği her yerde desteklenir. bu paket, yeni sunulan .net Core 3,0 Worker hizmetinde, ASP.NET Core 2.1/2.2, konsol uygulamalarında (.net Core/.NET Framework), vb. arka plan görevlerinde kullanılabilir.
Önkoşullar
geçerli bir Application Insights izleme anahtarı. bu anahtar, Application Insights telemetri göndermek için gereklidir. bir izleme anahtarı almak için yeni bir Application Insights kaynağı oluşturmanız gerekiyorsa, bkz. Application Insights kaynağı oluşturma.
çalışan hizmetleri için Application Insights SDK 'sını kullanma
- Microsoft. ApplicationInsights. WorkerService paketini uygulamaya yükler.
Aşağıdaki kod parçacığında, projenizin dosyasına eklenmesi gereken değişiklikler gösterilmektedir
.csproj.
<ItemGroup>
<PackageReference Include="Microsoft.ApplicationInsights.WorkerService" Version="2.13.1" />
</ItemGroup>
'
AddApplicationInsightsTelemetryWorkerService(string instrumentationKey)DeIServiceCollection, izleme anahtarını sağlayan genişletme yöntemini çağırın. Bu yöntem, uygulamanın başlangıcında çağrılmalıdır. Tam konum, uygulamanın türüne bağlıdır.ILoggerTelemetryClientOluşturucu ekleme işlemini çağırarak veya kullanarak bağımlılık ekleme (dı) kapsayıcısından bir örnek veya örnek alınserviceProvider.GetRequiredService<TelemetryClient>();. Bu adım,TelemetryConfigurationve otomatik toplama modülleri ayarlamayı tetikler.
Her uygulama türü için belirli yönergeler aşağıdaki bölümlerde açıklanmıştır.
.NET Core 3,0 çalışan hizmeti uygulaması
Tam örnek burada paylaşılır
.NET Core 3,0 indirin ve yükleyin
yeni Visual Studio proje şablonu veya komut satırı kullanarak yeni bir çalışan hizmeti projesi oluşturma
dotnet new workerMicrosoft. ApplicationInsights. WorkerService paketini uygulamaya yükler.
services.AddApplicationInsightsTelemetryWorkerService();CreateHostBuilder()Program.csAşağıdaki örnekte olduğu gibi sınıfınıza yöntemine ekleyin:
public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.ConfigureServices((hostContext, services) =>
{
services.AddHostedService<Worker>();
services.AddApplicationInsightsTelemetryWorkerService();
});
Worker.csAşağıdaki örnekteki gibi 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);
}
}
}
İzleme anahtarını ayarlayın.
İzleme anahtarını için bir bağımsız değişken olarak sağlayabilseniz de
AddApplicationInsightsTelemetryWorkerService, yapılandırmada izleme anahtarını belirtmenizi öneririz. Aşağıdaki kod örneği, içinde bir izleme anahtarının nasıl ekleneceğini gösterirappsettings.json.appsettings.jsonYayımlama sırasında uygulama kök klasörüne kopyalandığından emin olun.
{
"ApplicationInsights":
{
"InstrumentationKey": "putinstrumentationkeyhere"
},
"Logging":
{
"LogLevel":
{
"Default": "Warning"
}
}
}
Alternatif olarak, aşağıdaki ortam değişkenlerinden birinde izleme anahtarını belirtin.
APPINSIGHTS_INSTRUMENTATIONKEY veya ApplicationInsights:InstrumentationKey
Örnek: SET ApplicationInsights:InstrumentationKey=putinstrumentationkeyhere
VEYA SET APPINSIGHTS_INSTRUMENTATIONKEY=putinstrumentationkeyhere
Genellikle, APPINSIGHTS_INSTRUMENTATIONKEY Web işleri olarak Web Apps dağıtılan uygulamalar için izleme anahtarını belirler.
Not
Diğer seçenekler üzerinde WINS olan ortam değişkeni üzerinden WINS kodunda belirtilen bir izleme anahtarı APPINSIGHTS_INSTRUMENTATIONKEY .
barındırılan hizmetlerle arka plan görevlerini ASP.NET Core
bu belgede ASP.NET Core 2.1/2.2 uygulamasında arka plan görevlerinin nasıl oluşturulacağı açıklanmaktadır.
Tam örnek burada paylaşılır
- Microsoft. ApplicationInsights. WorkerService paketini uygulamaya yükler.
services.AddApplicationInsightsTelemetryWorkerService();ConfigureServices()Aşağıdaki örnekteki gibi 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>();
// instrumentation key 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();
}
}
TimedHostedServiceArka plan görevi mantığının bulunduğu kod aşağıda verilmiştir.
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");
}
}
}
- İzleme anahtarını ayarlayın.
appsettings.jsonYukarıdaki .NET Core 3,0 çalışan Hizmeti örneğinde aynısını kullanın.
.net Core/.NET Framework konsol uygulaması
bu makalenin başlangıcında bahsedildiği gibi, yeni paket, düzenli bir konsol uygulamasından bile Application Insights Telemetri sağlamak için kullanılabilir. bu paket NetStandard2.0 , .net Core 2,0 veya üzeri konsol uygulamaları için ve .NET Framework 4.7.2 veya üzeri için kullanılabilir.
Tam örnek burada paylaşılır
Microsoft. ApplicationInsights. WorkerService paketini uygulamaya yükler.
Program. cs ' i aşağıda gösterildiği gibi değiştirin.
using Microsoft.ApplicationInsights;
using Microsoft.ApplicationInsights.DataContracts;
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 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("instrumentationkeyhere");
// 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ı kullanır TelemetryConfiguration ve önceki bölümde örneklerle aynı şekilde özelleştirilebilir.
Uygulamanızı çalıştırma
Uygulamanızı çalıştırın. Yukarıdaki tüm Yukarıdaki örnek çalışanlar, bing.com ' ye her saniye bir http çağrısı yapar ve kullanarak birkaç günlük de yayar ILogger . Bu satırlar StartOperation TelemetryClient , bir işlem oluşturmak için kullanılan (Bu örnekte RequestTelemetry "işlem" adlı) çağrısı içinde sarmalanır. Application Insights, bu ılogger günlüklerini (varsayılan olarak uyarı veya üstü) ve bağımlılıkları toplayacak ve RequestTelemetry üst-alt ilişkisiyle bağıntılı olacak. Bağıntı Ayrıca çapraz işlem/ağ sınırını da işler. Örneğin, çağrı başka bir izlenen bileşene yapılmışsa, bu üst öğeyle da bağıntılı olur.
Bu özel işlemi, RequestTelemetry tipik bir Web uygulamasındaki gelen bir Web isteğinin eşdeğeri olarak düşünülebilir. bir işlemi kullanmak gerekli olmasa da, RequestTelemetry üst işlem olarak davrandığı ve çalışan yinelemede oluşturulan her telemetriyi aynı işleme göre mantıksal olarak kabul edilen Application Insights bağıntı veri modeliyle en iyi şekilde uyum sağlar. Bu yaklaşım ayrıca oluşturulan tüm Telemetriyi (otomatik ve el ile) aynı olacak şekilde sağlar operation_id . Örnekleme temel alınarak operation_id örnekleme algoritması, tek bir yinelemeden Telemetriyi korur ya da bırakır.
aşağıda, Application Insights tarafından otomatik olarak toplanan tüm telemetri listelenmektedir.
Canlı Ölçümler
canlı ölçümler , Application Insights izlemenin doğru yapılandırılıp yapılandırılmadığını hızlı bir şekilde doğrulamak için kullanılabilir. Telemetri portalda ve analizler üzerinde görünmesinin birkaç dakika sürebilirken, canlı ölçümler çalışan işlemin neredeyse gerçek zamanlı olarak CPU kullanımını gösterir. Ayrıca Istekler, bağımlılıklar, Izlemeler vb. gibi diğer telemetrileri de gösterebilir.
ILogger günlükleri
ILoggerÖnem derecesi Warning veya daha büyük aracılığıyla yayılan Günlükler otomatik olarak yakalanır. Application Insights tarafından yakalanan günlük düzeylerini özelleştirmek için ılogger belgelerini izleyin.
Bağımlılıklar
Bağımlılık koleksiyonu varsayılan olarak etkindir. Bu makalede otomatik olarak toplanan bağımlılıklar açıklanmakta ve ayrıca el ile izleme yapmak için adımlar yer verilmektedir.
EventCounter
EventCounterCollectionModule Varsayılan olarak etkindir ve .NET Core 3,0 uygulamalarından varsayılan sayaç kümesini toplar. EventCounter öğreticisi, toplanan varsayılan sayaç kümesini listeler. Ayrıca, listeyi özelleştirmeye yönelik yönergeler de vardır.
Ek Telemetriyi el ile izleme
SDK, yukarıda açıklandığı gibi telemetri otomatik olarak toplarken, çoğu durumda kullanıcının Application Insights hizmetine ek telemetri gönderebilmesi gerekir. Ek Telemetriyi izlemek için önerilen yol, TelemetryClient bağımlılık ekleme ve sonra desteklenen TrackXXX() API yöntemlerinden birini çağırma. Başka bir tipik kullanım örneği, işlemlerin özel izlemedir. Bu yaklaşım yukarıdaki çalışan örneklerde gösterilmiştir.
Application Insights SDK 'sını yapılandırma
TelemetryConfigurationçalışan hizmeti SDK 'sı tarafından kullanılan varsayılan değer, bir ASP.NET veya ASP.NET Core uygulamasında kullanılan otomatik yapılandırmaya benzerdir; bu da, telemetri zenginleştirmek için kullanılan TelemetryInitializers HttpContext .
çalışan hizmeti için Application Insights SDK 'sını, varsayılan yapılandırmayı değiştirecek şekilde özelleştirebilirsiniz. Application Insights ASP.NET Core SDK kullanıcıları ASP.NET Core yerleşik bağımlılık eklemekullanılarak yapılandırma değişikliği hakkında bilgi sahibi olabilir. WorkerService SDK 'Sı benzer ilkeleri de temel alır. ConfigureServices()Aşağıda açıklandığı gibi, üzerinde uygun yöntemleri çağırarak, bölümünde neredeyse tüm yapılandırma değişikliklerini yapın IServiceCollection .
Not
Bu SDK kullanılırken, değiştirilerek yapılandırmayı değiştirme TelemetryConfiguration.Active desteklenmiyor ve değişiklikler yansıtılmayacak.
Applicationınsightsserviceoptions kullanma
ApplicationInsightsServiceOptions AddApplicationInsightsTelemetryWorkerService Aşağıdaki örnekte olduğu gibi, ' a geçirerek birkaç ortak ayarı değiştirebilirsiniz:
using Microsoft.ApplicationInsights.WorkerService;
public void ConfigureServices(IServiceCollection services)
{
var aiOptions = new ApplicationInsightsServiceOptions();
// Disables adaptive sampling.
aiOptions.EnableAdaptiveSampling = false;
// Disables QuickPulse (Live Metrics stream).
aiOptions.EnableQuickPulseMetricStream = false;
services.AddApplicationInsightsTelemetryWorkerService(aiOptions);
}
ApplicationInsightsServiceOptionsbu sdk 'daki ASP.NET Core SDK 'nın aksine ad alanında olduğunu unutmayın Microsoft.ApplicationInsights.WorkerService Microsoft.ApplicationInsights.AspNetCore.Extensions .
İçinde yaygın olarak kullanılan ayarlar ApplicationInsightsServiceOptions
| Ayar | Açıklama | Varsayılan |
|---|---|---|
| EnableQuickPulseMetricStream | LiveMetrics özelliğini etkinleştirme/devre dışı bırakma | true |
| EnableAdaptiveSampling | Uyarlamalı Örneklemeyi Etkinleştirme/Devre Dışı Bırakma | true |
| EnableOidat | Belirli aralıklarla (varsayılan 15 dakika) çalışma zamanı hakkında .NET Sürümü, varsa Azure Ortamı bilgileri gibi bilgilerle 'HeartBeatState' adlı özel bir ölçüm gönderen Sinyaller özelliğini etkinleştirin/devre dışı bırakın. | true |
| AddAutoCollectedMetricExtractor | Örnekleme öncesinde İstekler/Bağımlılıklar hakkında önceden toplanmış ölçümler gönderen telemetriişlemci olan AutoCollectedMetrics ayıkıcısını etkinleştirin/devre dışı bırakın. | true |
| EnableDiagnosticsTelemetryModule | Etkinleştir/Devre Dışı DiagnosticsTelemetryModule Bırak. Bunun devre dışı bırakılması aşağıdaki ayarların yoksay bırakılmasına neden olur; EnableHeartbeat, EnableAzureInstanceMetadataTelemetryModule, EnableAppServicesHeartbeatTelemetryModule |
true |
En güncel liste ApplicationInsightsServiceOptions için içinde yapılandırılabilir ayarlara bakın.
Örnekleme
Çalışan Hizmeti Analizler Application Analizler SDK'sı hem sabit hız hem de uyarlamalı örneklemeyi destekler. Uyarlamalı örnekleme varsayılan olarak etkindir. Örnekleme, EnableAdaptiveSampling ApplicationInsightsServiceOptions seçeneği kullanılarak devre dışı bırakılabilir
Ek örnekleme ayarlarını yapılandırmak için aşağıdaki örnek kullanılabilir.
using Microsoft.ApplicationInsights.Extensibility;
using Microsoft.ApplicationInsights.WorkerService;
public void ConfigureServices(IServiceCollection services)
{
// ...
var aiOptions = new ApplicationInsightsServiceOptions();
// Disable adaptive sampling.
aiOptions.EnableAdaptiveSampling = false;
services.AddApplicationInsightsTelemetryWorkerService(aiOptions);
// Add Adaptive Sampling with custom settings.
// the following adds adaptive sampling with 15 items per sec.
services.Configure<TelemetryConfiguration>((telemetryConfig) =>
{
var builder = telemetryConfig.DefaultTelemetrySink.TelemetryProcessorChainBuilder;
builder.UseAdaptiveSampling(maxTelemetryItemsPerSecond: 15);
builder.Build();
});
//...
}
Örnekleme belgesinde daha fazla bilgi bulunabilir.
TelemetryInitializer'lar ekleme
Tüm telemetri verileriyle gönderilen özellikleri tanımlamak için telemetri başlatıcılarını kullanın.
Kapsayıcıya herhangi TelemetryInitializer bir DependencyInjection yenisi eklenir ve SDK bunları otomatik olarak 'ye TelemetryConfiguration ekler.
using Microsoft.ApplicationInsights.Extensibility;
public void ConfigureServices(IServiceCollection services)
{
services.AddSingleton<ITelemetryInitializer, MyCustomTelemetryInitializer>();
services.AddApplicationInsightsTelemetryWorkerService();
}
TelemetryInitializer'ları kaldırma
Telemetri başlatıcıları varsayılan olarak mevcuttur. Tüm veya belirli telemetri başlatıcılarını kaldırmak için çağrısında bulunduktan sonra aşağıdaki örnek kodu AddApplicationInsightsTelemetryWorkerService() 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 uzantı yöntemini kullanarak'a TelemetryConfiguration özel telemetri işlemcileri AddApplicationInsightsTelemetryProcessor IServiceCollection ebilirsiniz. Application Analizler hizmetine gönderirken telemetri işlemcilerini, dahil edilen veya dışlanan telemetri verileri üzerinde daha doğrudan denetime olanak vermek için gelişmiş filtreleme senaryolarında Analizler kullanırsiniz. Aşağıdaki örneği kullanın.
public void ConfigureServices(IServiceCollection services)
{
services.AddApplicationInsightsTelemetryWorkerService();
services.AddApplicationInsightsTelemetryProcessor<MyFirstCustomTelemetryProcessor>();
// If you have more processors:
services.AddApplicationInsightsTelemetryProcessor<MySecondCustomTelemetryProcessor>();
}
Varsayılan TelemetryModule'leri yapılandırma veya kaldırma
Uygulama Analizler, el ile izleme gerektirmeden belirli iş yükleri hakkında telemetri verileri otomatik olarak toplamak için telemetri modüllerini kullanır.
Aşağıdaki otomatik toplama modülleri varsayılan olarak etkindir. Bu modüller, telemetrilerin otomatik olarak toplanmasından sorumludur. Varsayılan davranışını değiştirmek için bunları devre dışı bırakabilirsiniz veya yapılandırabilirsiniz.
DependencyTrackingTelemetryModulePerformanceCollectorModuleQuickPulseTelemetryModuleAppServicesHeartbeatTelemetryModule- (Şu anda bu telemetri modülünü içeren bir sorun var. Geçici bir geçici çözüm için bkz. GitHub Sorun 1689.)AzureInstanceMetadataTelemetryModule
Herhangi bir TelemetryModule varsayılanı yapılandırmak için, aşağıdaki ConfigureTelemetryModule<T> örnekte gösterildiği gibi üzerinde 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 kanal: ServerTelemetryChannel . Aşağıdaki örnekte olduğu gibi bunu geçersiz kılarak geçersiz kılarak yapabilirsiniz.
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 için kodunuzun herhangi bir yerinde ASP.NET Core ekleme kapsayıcısını kullanarak örneği çözümleyebilirsiniz ve TelemetryConfiguration DisableTelemetry bayrağını buna göre ayarlayabilirsiniz.
public void ConfigureServices(IServiceCollection services)
{
services.AddApplicationInsightsTelemetryWorkerService();
}
public void Configure(IApplicationBuilder app, IHostingEnvironment env, TelemetryConfiguration configuration)
{
configuration.DisableTelemetry = true;
...
}
Sık sorulan sorular
Otomatik olarak toplanmaz telemetrisini nasıl izleyebilirim?
Oluşturucu ekleme kullanarak TelemetryClient bir örneğini elde eder ve bunun üzerinde gerekli yöntemi TrackXXX() çağırır. Yeni örnekler oluşturulması TelemetryClient önerilmez. tek bir örneği TelemetryClient zaten kapsayıcıya kaydedilmiştir DependencyInjection ve bu da TelemetryConfiguration telemetrinin geri kalanıyla paylaştırır. Yeni örnek TelemetryClient oluşturma, yalnızca telemetrinin geri kalanından ayrı bir yapılandırmaya ihtiyaç olması halinde önerilir.
Application Analizler'Visual Studio Bir Çalışan Hizmeti projesine Analizler IDE kullanabilir miyim?
Visual Studio IDE ekleme şu anda yalnızca ASP.NET/ASP.NET Core desteklemektedir. Çalışan hizmeti uygulamaları ekleme desteği Visual Studio bu belge güncelleştirilecek.
Azure İzleyici Application Analizler Agent (eski adı v2) gibi araçları kullanarak Uygulama Analizler izleme Durum İzleyicisi yi etkinleştirebilir miyim?
Hayır, Azure İzleyici Application Analizler Agent şu anda yalnızca ASP.NET 4.x'i desteklemektedir.
Uygulamamı Linux'ta çalıştıracak olursam tüm özellikler destek sunuyor 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ı yalnızca canlı Windows İşlem CPU'su/Belleği dışında tüm verilerde de kullanılabilir.
- Varsayılan olarak etkin olsa da, uygulama Linux veya macOS'ta çalışıyorsa, ağ sorunları olduğunda kanal telemetriyi geçici olarak tutmak için otomatik olarak bir yerel depolama
ServerTelemetryChannelklasörü oluşturmaz. Bu sınırlama nedeniyle, geçici ağ veya sunucu sorunları olduğunda telemetri kaybolur. Bu sorunu gidermek için kanal için yerel bir klasör yapılandırabilirsiniz:
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 daha yüksek) veya .NET Framework (4.7.2 veya daha yüksek) ile yazılmış bir Konsol Uygulaması kullanıyorsanız bu örneği kullanın
ASP.NET Core Barındırılan Hizmetler ile arka plan görevlerini gerçekleştirme 2.1/2.2 ASP.NET Core kullanıyorsanız ve buradaki resmi kılavuza göre arka plan görevleri oluşturuyorsanız bu örneği kullanın
.NET Core 3.0 Çalışan Hizmeti Buradaki resmi kılavuza göre bir .NET Core 3.0 Çalışan Hizmeti uygulama varsa bu örneği kullanın
Açık kaynak SDK
En son güncelleştirmeler ve hata düzeltmeleri için sürüm notlarına danışın.
Sonraki adımlar
- Api'yi kullanarak uygulama performansının ve kullanımının ayrıntılı bir görünümü için kendi olaylarınızı ve ölçümlerinizi gönderin.
- Otomatik olarak izlenimli diğer bağımlılıkları izleme.
- Otomatik olarak toplanan telemetrisini zenginleştirin veya filtrele.
- ASP.NET Core.