ASP.NET Core uygulamaları için Application Insights
Bu makalede, ASP.NET Core uygulaması için Application Insights'ın nasıl etkinleştirileceği ve yapılandırıldığı açıklanır.
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.
Application Insights, ASP.NET Core uygulamanızdan aşağıdaki telemetri verilerini toplayabilir:
- İstekler
- Bağımlılıklar
- Özel durumlar
- Performans sayaçları
- Sinyal
- Günlükler
MVC uygulama örneği kullanıyoruz. Çalışan Hizmeti'ni kullanıyorsanız, Çalışan Hizmeti uygulamaları için Application Insights'taki yönergeleri kullanın.
OpenTelemetry tabanlı .NET teklifi kullanılabilir. Daha fazla bilgi için bkz . OpenTelemetry'ye genel bakış.
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ş.
Not
Tek başına ILogger sağlayıcısını kullanmak istiyorsanız Microsoft.Extensions.Logging.ApplicationInsight kullanın.
Desteklenen senaryolar
ASP.NET Core için Application Insights SDK'sı nerede veya nasıl çalıştıkları fark etmez uygulamalarınızı izleyebilir. Uygulamanız çalışıyorsa ve Azure'a ağ bağlantısı varsa telemetri toplanabilir. Application Insights izlemesi .NET Core'un desteklendiği her yerde desteklenir ve aşağıdaki senaryoları kapsar:
- İşletim sistemi: Windows, Linux veya Mac
- Barındırma yöntemi: İşlemde veya işlem dışı
- Dağıtım yöntemi: Çerçeveye bağımlı veya bağımsız
- Web sunucusu: Internet Information Server (IIS) veya Kestrel
- Barındırma platformu: Azure Uygulaması Hizmeti, Azure Sanal Makineler, Docker ve Azure Kubernetes Service'in (AKS) Web Apps özelliği
- .NET sürümü: Önizlemede olmayan resmi olarak desteklenen tüm .NET sürümleri
- IDE: Visual Studio, Visual Studio Code veya komut satırı
Önkoşullar
Şunlara sahip olmanız gerekir:
- İşlevli bir ASP.NET Core uygulaması. bir ASP.NET Core uygulaması oluşturmanız gerekiyorsa bu ASP.NET Core öğreticisini izleyin.
- Application Insights NuGet paketinin desteklenen bir sürümüne başvuru.
- Geçerli bir Application Insights bağlantı dizesi. 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. Application Insights kaynağı oluşturma.
Application Insights sunucu tarafı telemetrisini etkinleştirme (Visual Studio)
Mac için Visual Studio için el ile kılavuzu kullanın. Bu yordamı yalnızca Visual Studio'nun Windows sürümü destekler.
Projenizi Visual Studio'da açın.
Project>Application Insights Telemetrisi Ekle'ye gidin.
Azure Uygulaması ication Insights>İleri'yi seçin.
Aboneliğinizi ve Application Insights örneğinizi seçin. Veya Yeni oluştur ile yeni bir örnek oluşturabilirsiniz. İleri'yi seçin.
Application Insights bağlantı dizesi ekleyin veya onaylayın. Önceki adımda seçiminize göre önceden doldurulmalıdır. Bitir'i seçin.
Application Insights'ı projenize ekledikten sonra SDK'nın en son kararlı sürümünü kullandığınızdan emin olun. Proje>NuGet Paketlerini>Yönet Microsoft.ApplicationInsights.AspNetCore'a gidin. Gerekirse Güncelleştir'i seçin.
Application Insights sunucu tarafı telemetrisini etkinleştirme (Visual Studio yok)
ASP.NET Core için Application Insights SDK NuGet paketini yükleyin.
Her zaman en son kararlı sürümü kullanmanızı öneririz. Açık kaynak GitHub deposunda SDK'nın tam sürüm notlarını bulun.
Aşağıdaki kod örneği, projenizin
.csproj
dosyasına eklenecek değişiklikleri gösterir:<ItemGroup> <PackageReference Include="Microsoft.ApplicationInsights.AspNetCore" Version="2.21.0" /> </ItemGroup>
veya
program.cs
sınıfınızastartup.cs
ekleyinAddApplicationInsightsTelemetry()
. Seçim ,NET Core sürümünüze bağlıdır.Aşağıdaki örnekte olduğu gibi sınıfınızdaki
Program
yönteminden sonraWebApplication.CreateBuilder()
ekleyinbuilder.Services.AddApplicationInsightsTelemetry();
:// 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();
bağlantı dizesi ayarlayın.
bağımsız değişkeninin
ApplicationInsightsServiceOptions
bir parçası olarak bir bağlantı dizesi sağlayabilmenizeAddApplicationInsightsTelemetry
rağmen, yapılandırmada bağlantı dizesi belirtmenizi öneririz. Aşağıdaki kod örneği, içindeappsettings.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.{ "Logging": { "LogLevel": { "Default": "Information", "Microsoft.AspNetCore": "Warning" } }, "AllowedHosts": "*", "ApplicationInsights": { "ConnectionString": "Copy connection string from Application Insights Resource Overview" } }
Alternatif olarak, ortam değişkeninde
APPLICATIONINSIGHTS_CONNECTION_STRING
veyaApplicationInsights:ConnectionString
JSON yapılandırma dosyasında bağlantı dizesi belirtin.Örneğin:
SET ApplicationInsights:ConnectionString = <Copy connection string from Application Insights Resource Overview>
SET APPLICATIONINSIGHTS_CONNECTION_STRING = <Copy connection string from Application Insights Resource Overview>
- Genellikle Web
APPLICATIONINSIGHTS_CONNECTION_STRING
Apps'te kullanılır. Ayrıca bu SDK'nın desteklendiği tüm yerlerde de kullanılabilir.
Not
Kodda belirtilen bir bağlantı dizesi, diğer seçeneklere göre kazanan ortam değişkenini
APPLICATIONINSIGHTS_CONNECTION_STRING
kazanır.
Kullanıcı gizli dizileri ve diğer yapılandırma sağlayıcıları
bağlantı dizesi ASP.NET Core kullanıcı gizli dizilerinde depolamak veya başka bir Microsoft.Extensions.Configuration.IConfiguration
yapılandırma sağlayıcısından almak istiyorsanız, bir parametreyle aşırı yüklemeyi kullanabilirsiniz. Örnek parametre: services.AddApplicationInsightsTelemetry(Configuration);
.
Microsoft.ApplicationInsights.AspNetCore
Sürüm 2.15.0 ve sonraki sürümlerde çağrıservices.AddApplicationInsightsTelemetry()
, uygulamanın bağlantı dizesi Microsoft.Extensions.Configuration.IConfiguration
otomatik olarak okur. açıkça sağlamanıza IConfiguration
gerek yoktur.
Birden çok sağlayıcıdan yapılandırma yüklemişse IConfiguration
, services.AddApplicationInsightsTelemetry
sağlayıcıların eklenme sırasına bakılmadan yapılandırmasına öncelik appsettings.json
tanır. services.AddApplicationInsightsTelemetry(IConfiguration)
için bu tercihli işlem olmadan'dan IConfiguration
yapılandırmayı okumak için appsettings.json
yöntemini kullanın.
Uygulamanızı çalıştırma
Uygulamanızı çalıştırın ve istekte bulunabilirsiniz. Telemetri artık Application Insights'a akmalıdır. Application Insights SDK'sı, aşağıdaki telemetri verilerinin yanı sıra uygulamanıza gelen web isteklerini otomatik olarak toplar.
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.
Herhangi bir .NET uygulaması için kod kullanarak canlı ölçümleri etkinleştirme
Not
Canlı ölçümler, .NET uygulamaları için önerilen yönergeleri kullanarak eklediğinizde varsayılan olarak etkinleştirilir.
Canlı ölçümleri el ile yapılandırmak için:
- Microsoft.ApplicationInsights.PerfCounterCollector NuGet paketini yükleyin.
- Aşağıdaki örnek konsol uygulaması kodu canlı ölçümleri ayarlamayı gösterir:
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();
}
Yukarıdaki örnek bir konsol uygulamasına yöneliktir, ancak aynı kod herhangi bir .NET uygulamasında kullanılabilir. Telemetriyi otomatik olarak almak için başka telemetri modülleri etkinleştirildiyse, bu modülleri başlatmak için kullanılan yapılandırmanın canlı ölçüm modülü için de kullanıldığından emin olmak önemlidir.
ILogger günlükleri
Varsayılan yapılandırma günlükleri ve daha ciddi günlükleri ILogger
Warning
toplar. Daha fazla bilgi için bkz. ILogger günlükleri koleksiyonunu özelleştirmek Nasıl yaparım??
Bağımlılıklar
Bağımlılık koleksiyonu varsayılan olarak etkindir. Application Insights'ta bağımlılık izleme, otomatik olarak toplanan bağımlılıkları açıklar ve ayrıca el ile izleme gerçekleştirme adımlarını içerir.
Performans sayaçları
ASP.NET Core'daki performans sayaçları desteği sınırlıdır:
- Sdk 2.4.1 ve sonraki sürümleri, uygulama Web Apps'te (Windows) çalışıyorsa performans sayaçlarını toplar.
- SDK 2.7.1 ve sonraki sürümleri, uygulama Windows'ta çalışıyorsa ve veya üzerini hedeflerse performans sayaçlarını
netstandard2.0
toplar. - .NET Framework'ünü hedefleyen uygulamalar için SDK'nın tüm sürümleri performans sayaçlarını destekler.
- SDK 2.8.0 ve sonraki sürümleri Linux'ta CPU/bellek sayacını destekler. Linux'ta başka bir sayaç desteklenmez. Linux'ta ve Diğer Windows dışı ortamlarda sistem sayaçlarını almak için EventCounters'ı kullanın.
EventCounter
Varsayılan olarak EventCounterCollectionModule
etkindir. Toplanacak sayaçların listesini yapılandırmayı öğrenmek için bkz . EventCounters'a giriş.
HTTP aracılığıyla verileri zenginleştirme
HttpContext.Features.Get<RequestTelemetry>().Properties["myProp"] = someData
Web uygulamaları için istemci tarafı telemetrisini etkinleştirme
Yukarıdaki adımlar, sunucu tarafı telemetrisini toplamaya başlamanıza yardımcı olmak için yeterlidir. Uygulamanızın istemci tarafı bileşenleri varsa, yapılandırmaya göre JavaScript (Web) SDK Yükleyici Betiği ekleme kullanarak kullanım telemetrisi toplamaya başlamak için sonraki adımları izleyin.
içinde
_ViewImports.cshtml
ekleme ekleyin:@inject Microsoft.ApplicationInsights.AspNetCore.JavaScriptSnippet JavaScriptSnippet
içinde
_Layout.cshtml
, bölümün<head>
sonuna ancak diğer betiklerden önce ekleyinHtmlHelper
. Sayfadan herhangi bir özel JavaScript telemetrisi bildirmek istiyorsanız, bu kod parçacığından sonra ekleyin:@Html.Raw(JavaScriptSnippet.FullScript) </head>
kullanmaya FullScript
alternatif olarak, ScriptBody
ASP.NET Core sürüm 2.14 için Application Insights SDK'dan itibaren kullanılabilir. İçerik Güvenliği İlkesi ayarlamak için etiketi denetlemeniz <script>
gerekiyorsa kullanınScriptBody
:
<script> // apply custom changes to this script tag.
@Html.Raw(JavaScriptSnippet.ScriptBody)
</script>
Daha .cshtml
önce başvurulan dosya adları varsayılan bir MVC uygulama şablonundan alınıyor. Sonuç olarak, uygulamanız için istemci tarafı izlemeyi düzgün bir şekilde etkinleştirmek istiyorsanız, JavaScript JavaScript (Web) SDK Yükleyici Betiği, uygulamanızın izlemek istediğiniz her sayfasının bölümünde görünmelidir <head>
. İstemci tarafı izlemeyi etkinleştirmek için bir uygulama şablonuna _Layout.cshtml
JavaScript JavaScript (Web) SDK Yükleyici Betiğini ekleyin.
Projeniz içermiyorsa_Layout.cshtml
, javascript JavaScript (Web) SDK Yükleyici Betiğini uygulamanızdaki tüm sayfaları denetleyen <head>
eşdeğer bir dosyaya ekleyerek istemci tarafı izleme ekleyebilirsiniz. Alternatif olarak, JavaScript (Web) SDK Yükleyici Betiğini birden çok sayfaya ekleyebilirsiniz, ancak bunu önermeyiz.
Not
JavaScript ekleme, varsayılan bir yapılandırma deneyimi sağlar. bağlantı dizesi ayarlama dışında bir yapılandırmaya ihtiyacınız varsa, açıklandığı gibi otomatik eklemeyi kaldırmanız ve JavaScript SDK'sını el ile eklemeniz gerekir.
Application Insights SDK'sını yapılandırma
Varsayılan yapılandırmayı değiştirmek için ASP.NET Core için Application Insights SDK'sını özelleştirebilirsiniz. Application Insights ASP.NET SDK'sı kullanıcıları, kullanarak ApplicationInsights.config
veya değiştirerek yapılandırmayı değiştirme TelemetryConfiguration.Active
konusunda bilgi sahibi olabilir. ASP.NET Core için, aksi yönde yönlendirilmedikçe sınıfınızın Startup.cs
yönteminde ConfigureServices()
neredeyse tüm yapılandırma değişikliklerini yapın. Aşağıdaki bölümlerde daha fazla bilgi sunulmaktadır.
Not
ASP.NET Core uygulamalarında yapılandırmayı değiştirerek TelemetryConfiguration.Active
değiştirmek desteklenmez.
ApplicationInsightsServiceOptions kullanma
Aşağıdaki örnekte olduğu gibi öğesine geçirerek ApplicationInsightsServiceOptions
AddApplicationInsightsTelemetry
birkaç yaygın ayarı değiştirebilirsiniz:
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();
Bu tabloda ayarların tam listesi vardır ApplicationInsightsServiceOptions
:
Ayar | Açıklama | Varsayılan |
---|---|---|
EnablePerformanceCounterCollectionModule | etkinleştirin/devre dışı bırakın PerformanceCounterCollectionModule . |
True |
EnableRequestTrackingTelemetryModule | etkinleştirin/devre dışı bırakın RequestTrackingTelemetryModule . |
True |
EnableEventCounterCollectionModule | etkinleştirin/devre dışı bırakın EventCounterCollectionModule . |
True |
EnableDependencyTrackingTelemetryModule | etkinleştirin/devre dışı bırakın DependencyTrackingTelemetryModule . |
True |
EnableAppServicesHeartbeatTelemetryModule | etkinleştirin/devre dışı bırakın AppServicesHeartbeatTelemetryModule . |
True |
EnableAzureInstanceMetadataTelemetryModule | etkinleştirin/devre dışı bırakın AzureInstanceMetadataTelemetryModule . |
True |
EnableQuickPulseMetricStream | LiveMetrics özelliğini etkinleştirin/devre dışı bırakın. | True |
EnableAdaptiveSampling | Uyarlamalı Örneklemeyi Etkinleştirme/Devre Dışı Bırakma. | True |
EnableHeartbeat | Sinyaller özelliğini etkinleştirin/devre dışı bırakın. Belirli aralıklarla (varsayılan olarak 15 dk) .NET sürümü ve varsa Azure ortam bilgileri gibi çalışma zamanı hakkında bilgiler içeren adlı HeartbeatState özel bir ölçüm gönderir. |
True |
AddAutoCollectedMetricExtractor | öğesini AutoCollectedMetrics extractor etkinleştirin/devre dışı bırakın. Bu telemetri işlemcisi, örnekleme gerçekleşmeden önce istekler/bağımlılıklar hakkında önceden toplanmış ölçümler gönderir. |
True |
RequestCollectionOptions.TrackExceptions | İstek toplama modülü tarafından işlenmeyen özel durum izleme raporlamasını etkinleştirin/devre dışı bırakın. | içinde netstandard2.0 false (özel durumlar ile ApplicationInsightsLoggerProvider izlendiği için). Aksi takdirde true. |
EnableDiagnosticsTelemetryModule | etkinleştirin/devre dışı bırakın DiagnosticsTelemetryModule . Devre dışı bırakmak, 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.
Microsoft.ApplicationInsights.AspNetCore SDK 2.15.0 ve üzeri için yapılandırma önerisi
Microsoft.ApplicationInsights.AspNetCore SDK'sı sürüm 2.15.0 ve sonraki sürümlerinde, içinde bulunan ApplicationInsightsServiceOptions
tüm ayarları (dahil) ConnectionString
yapılandırın. Uygulamanın IConfiguration
örneğini kullanın. Ayarlar, aşağıdaki örnekte gösterildiği gibi bölümünün ApplicationInsights
altında olmalıdır. appsettings.json'in aşağıdaki bölümünde bağlantı dizesi yapılandırılır ve uyarlamalı örnekleme ve performans sayacı koleksiyonu devre dışı bırakılır.
{
"ApplicationInsights": {
"ConnectionString": "Copy connection string from Application Insights Resource Overview",
"EnableAdaptiveSampling": false,
"EnablePerformanceCounterCollectionModule": false
}
}
ASP.NET Core 6.0 veya services.AddApplicationInsightsTelemetry(aiOptions)
ASP.NET Core 3.1 ve önceki sürümler için kullanılıyorsabuilder.Services.AddApplicationInsightsTelemetry(aiOptions)
, içinden Microsoft.Extensions.Configuration.IConfiguration
ayarları geçersiz kılar.
Örnekleme
ASP.NET Core için Application Insights SDK'sı hem sabit hızlı hem de uyarlamalı örneklemeyi destekler. Varsayılan olarak uyarlamalı örnekleme etkinleştirilir.
Daha fazla bilgi için bkz . ASP.NET Core uygulamaları için uyarlamalı örneklemeyi yapılandırma.
TelemetryInitializers ekleme
Telemetriyi daha fazla bilgiyle zenginleştirmek istediğinizde telemetri başlatıcılarını kullanın.
Aşağıdaki kodda DependencyInjection
gösterildiği gibi kapsayıcıya herhangi bir yeni TelemetryInitializer
ekleyin. SDK, kapsayıcıya DependencyInjection
eklenenleri otomatik olarak alırTelemetryInitializer
.
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddSingleton<ITelemetryInitializer, MyCustomTelemetryInitializer>();
var app = builder.Build();
Not
builder.Services.AddSingleton<ITelemetryInitializer, MyCustomTelemetryInitializer>();
basit başlatıcılar için çalışır. Diğerleri builder.Services.AddSingleton(new MyCustomTelemetryInitializer() { fieldName = "myfieldName" });
için gereklidir.
TelemetryInitializers'ı kaldırma
Varsayılan olarak telemetri başlatıcıları vardır. Telemetri başlatıcılarının tümünü veya belirli bir öğesini kaldırmak için çağrısı AddApplicationInsightsTelemetry()
yaptıktan sonra aşağıdaki örnek kodu kullanın.
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();
Telemetri işlemcileri ekleme
üzerinde IServiceCollection
uzantı yöntemini AddApplicationInsightsTelemetryProcessor
kullanarak özel TelemetryConfiguration
telemetri işlemcileri ekleyebilirsiniz. Gelişmiş filtreleme senaryolarında telemetri işlemcileri kullanırsınız. Şu örneği kullanın:
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();
Varsayılan Telemetri Modüllerini yapılandırma veya kaldırma
Application Insights, kullanıcı tarafından el ile izlemeye gerek kalmadan belirli iş yükleriyle ilgili telemetri verilerini otomatik olarak toplar.
Varsayılan olarak, aşağıdaki otomatik toplama modülleri etkinleştirilir. 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.
RequestTrackingTelemetryModule
: Gelen web isteklerinden RequestTelemetry toplar.DependencyTrackingTelemetryModule
: Giden HTTP çağrılarından ve SQL çağrılarından DependencyTelemetry toplar.PerformanceCollectorModule
: Windows PerformanceCounters'i toplar.QuickPulseTelemetryModule
: Canlı ölçümler bölmesinde gösterilecek telemetriyi toplar.AppServicesHeartbeatTelemetryModule
: Uygulamanın barındırıldığı App Service ortamı hakkında sinyalleri (özel ölçümler olarak gönderilir) toplar.AzureInstanceMetadataTelemetryModule
: Uygulamanın barındırıldığı Azure VM ortamı hakkında sinyalleri (özel ölçümler olarak gönderilir) toplar.EventCounterCollectionModule
: EventCounter'ları toplar. Bu modül yeni bir özelliktir ve SDK 2.8.0 ve sonraki sürümlerde kullanılabilir.
Herhangi bir varsayılan TelemetryModule
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.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();
2.12.2 ve sonraki sürümlerde, ApplicationInsightsServiceOptions
varsayılan modüllerden herhangi birini devre dışı bırakmak için kolay bir seçenek içerir.
Telemetri kanalını yapılandırma
Varsayılan telemetri kanalı şeklindedir ServerTelemetryChannel
. Aşağıdaki örnekte nasıl geçersiz kılınacak gösterilmektedir.
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();
Not
Arabelleği temizlemek istiyorsanız bkz . Verileri temizleme. Örneğin, SDK'yı kapatan bir uygulamada kullanıyorsanız arabelleği temizlemeniz gerekebilir.
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
.
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();
Yukarıdaki kod örneği, Application Insights'a telemetri gönderilmesini engeller. Hiçbir otomatik toplama modülünün telemetri toplamasını engellemez. Belirli bir otomatik toplama modülünü kaldırmak istiyorsanız bkz . Telemetri modülünü kaldırma.
Sık sorulan sorular
Bu bölüm, sık sorulan soruların yanıtlarını sağlar.
Application Insights ASP.NET Core 3.1'i destekliyor mu?
ASP.NET Core 3.1 artık Microsoft tarafından desteklenmiyor.
ASP.NET Core sürüm 2.8.0 ve Visual Studio 2019 veya üzeri için Application Insights SDK'sı, ASP.NET Core 3.1 uygulamalarıyla kullanılabilir.
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()
. ASP.NET Core uygulamasında yeni TelemetryClient
veya TelemetryConfiguration
örnek oluşturmanızı önermiyoruz. Tekil örneği TelemetryClient
, telemetrinin DependencyInjection
geri kalanıyla paylaşan TelemetryConfiguration
kapsayıcıda zaten kayıtlıdır. Yalnızca telemetrinin geri kalanından ayrı bir yapılandırma gerekiyorsa yeni TelemetryClient
bir örnek oluşturun.
Aşağıdaki örnekte bir denetleyiciden daha fazla telemetrinin nasıl izlenir gösterilmektedir.
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();
}
Application Insights'ta özel veri raporlama hakkında daha fazla bilgi için bkz . Application Insights özel ölçümler API başvurusu. Benzer bir yaklaşım, GetMetric API'sini kullanarak Application Insights'a özel ölçümler göndermek için de kullanılabilir.
telemetrimdeki İstek ve Yanıt gövdesini Nasıl yaparım? yakalama?
ASP.NET Core, aracılığıyla ILogger
HTTP İsteği/Yanıt bilgilerini (gövde dahil) günlüğe kaydetmeye yönelik yerleşik desteğe sahiptir. Bunu kullanmanız önerilir. Bu, telemetride kişisel olarak tanımlanabilir bilgileri (PII) ortaya çıkarabilir ve maliyetlerin (performans maliyetleri ve Application Insights faturalaması) önemli ölçüde artmasına neden olabilir, bu nedenle bunu kullanmadan önce riskleri dikkatlice değerlendirin.
ILogger günlükleri koleksiyonunu özelleştirmek Nasıl yaparım??
Application Insights için varsayılan ayar yalnızca Uyarı ve daha ciddi günlükleri yakalamaktır.
Application Insights sağlayıcısının günlük yapılandırmasını aşağıdaki gibi değiştirerek Bilgileri ve daha az ciddi günlükleri yakalayın.
{
"Logging": {
"LogLevel": {
"Default": "Information"
},
"ApplicationInsights": {
"LogLevel": {
"Default": "Information"
}
}
},
"ApplicationInsights": {
"ConnectionString": "InstrumentationKey=00000000-0000-0000-0000-000000000000"
}
}
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 bkz . ILogger yapılandırması.
Bazı Visual Studio şablonları, Application Insights'ı etkinleştirmek için IWebHostBuilder'da UseApplicationInsights() uzantısı yöntemini kullandı. Bu kullanım hala geçerli mi?
Uzantı yöntemi UseApplicationInsights()
hala desteklenmektedir, ancak Application Insights SDK sürüm 2.8.0 ve sonraki sürümlerde kullanım dışı olarak işaretlenmiştir. SDK'nın bir sonraki ana sürümünde kaldırılır. Application Insights telemetrisini etkinleştirmek için kullanın AddApplicationInsightsTelemetry()
çünkü bazı yapılandırmaları denetlemek için aşırı yüklemeler sağlar. Ayrıca ASP.NET Core 3.X uygulamalarında services.AddApplicationInsightsTelemetry()
Application Insights'ı etkinleştirmenin tek yoludur.
ASP.NET Core uygulamamı Web Apps'e dağıtıyorum. Web Apps'ten Application Insights uzantısını etkinleştirmem gerekir mi?
SDK bu makalede gösterildiği gibi derleme zamanında yüklüyse, App Service portalından Application Insights uzantısını etkinleştirmeniz gerekmez. Uzantı yüklüyse, SDK'nın zaten eklendiğini algıladığında geri döner. Uzantıdan Application Insights'ı etkinleştirirseniz SDK'yı yüklemeniz ve güncelleştirmeniz gerekmez. Ancak bu makaledeki yönergeleri izleyerek Application Insights'ı etkinleştirirseniz daha fazla esnekliğe sahip olursunuz çünkü:
- Application Insights telemetrisi şu durumlarda çalışmaya devam eder:
- Windows, Linux ve Mac dahil olmak üzere tüm işletim sistemleri.
- Bağımsız veya çerçeveye bağımlı da dahil olmak üzere tüm yayımlama modları.
- Tam .NET Framework dahil olmak üzere tüm hedef çerçeveler.
- Web Apps, VM'ler, Linux, kapsayıcılar, AKS ve Azure dışı barındırma dahil olmak üzere tüm barındırma seçenekleri.
- Önizleme sürümleri de dahil olmak üzere tüm .NET Core sürümleri.
- Visual Studio'dan hata ayıklarken telemetriyi yerel olarak görebilirsiniz.
- API'yi kullanarak
TrackXXX()
daha fazla özel telemetri izleyebilirsiniz. - Yapılandırma üzerinde tam denetime sahipsiniz.
Azure İzleyici Application Insights Aracısı (eski adıYla Durum İzleyicisi v2) gibi araçları kullanarak Application Insights izlemeyi etkinleştirebilir miyim?
Evet. Application Insights Agent 2.0.0-beta1 ve sonraki sürümlerinde IIS'de barındırılan ASP.NET Core uygulamaları desteklenir.
Uygulamamı Linux'ta çalıştırırsam tüm özellikler destekleniyor mu?
Evet. SDK için özellik desteği, aşağıdaki özel durumlar dışında tüm platformlarda aynıdır:
- Performans sayaçları yalnızca Windows'ta desteklendiği için SDK, Linux üzerinde olay sayaçlarını toplar. Ölçümlerin çoğu aynıdır.
Bu SDK Çalışan Hizmetleri için destekleniyor mu?
Hayır Lütfen çalışan hizmetleri için Çalışan Hizmeti uygulamaları (HTTP olmayan uygulamalar) için Application Insights'ı kullanın.
SDK'yi nasıl kaldırabilirim?
Application Insights'ı kaldırmak için Uygulamanızdaki API'den NuGet paketlerini ve başvurularını kaldırmanız gerekir. Visual Studio'daki NuGet Paket Yöneticisi kullanarak NuGet paketlerini kaldırabilirsiniz.
Not
Bu yönergeler ASP.NET Core SDK'sını kaldırmaya yöneliktir. ASP.NET SDK'sını kaldırmanız gerekiyorsa bkz . ASP.NET SDK'sını nasıl kaldırabilirim?.
- NuGet Paket Yöneticisi kullanarak Microsoft.ApplicationInsights.AspNetCore paketini kaldırın.
- Application Insights'ı tamamen kaldırmak için, eklenen kodu veya dosyaları ve projenize eklediğiniz API çağrılarını denetleyin ve el ile silin. Daha fazla bilgi için bkz. Application Insights SDK'sını eklediğinizde ne oluşturulur?
Application Insights SDK'sını eklediğinizde ne oluşturulur?
Projenize Application Insights eklediğinizde dosyalar oluşturulur ve bazı dosyalarınıza kod eklenir. NuGet Paketlerinin yalnızca kaldırılması her zaman dosyaları ve kodu atmaz. Application Insights'ı tamamen kaldırmak için, eklenen kodu veya dosyaları ve projenize eklediğiniz API çağrılarını el ile denetlemeniz ve silmeniz gerekir.
Visual Studio ASP.NET Core şablon projesine Application Insights Telemetrisi eklediğinizde aşağıdaki kodu ekler:
[Projenizin adı].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 }
Telemetri bağıntısını nasıl devre dışı bırakabilirim?
Kodda telemetri bağıntısını devre dışı bırakmak için bkz <ExcludeComponentCorrelationHttpHeadersOnDomains>
. Konsol uygulamaları için Application Insights.
Sorun giderme
Ayrılmış sorun giderme makalesine bakın.
Uygulama konağınızla alma hizmeti arasındaki bağlantıyı test etme
Application Insights SDK'ları ve aracıları, alma uç noktalarımıza REST çağrıları olarak alınabilmek için telemetri gönderir. PowerShell veya curl komutlarından ham REST istemcilerini kullanarak web sunucunuzdan veya uygulama konak makinenizden alma hizmeti uç noktalarına bağlantıyı test edebilirsiniz. Bkz . Azure İzleyici Application Insights'ta eksik uygulama telemetrisi sorunlarını giderme.
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ı bölümüne bakın.
Release Notes (Sürüm Notları)
Sürüm 2.12 ve daha yeni sürümler için: .NET SDK'ları (ASP.NET, ASP.NET Core ve Günlük Bağdaştırıcıları dahil)
Hizmet Güncelleştirmelerimiz büyük Application Insights geliştirmelerini de özetler.
Sonraki adımlar
- Kullanıcıların uygulamanızda nasıl gezineceklerini anlamak için kullanıcı akışlarını keşfedin.
- Bir özel durum oluştuğu anda kaynak kodun ve değişkenlerin durumunu görmek için bir anlık görüntü koleksiyonu yapılandırı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.
- Uygulamanızı dünyanın dört bir yanından sürekli denetlemek için kullanılabilirlik testlerini kullanın.
- ASP.NET Core'da bağımlılık ekleme hakkında bilgi edinin.