ASP.NET Core uygulamaları için uygulama Analizler
Bu makalede, ASP.NET Core uygulaması için Uygulama Analizler'nin nasıl etkinleştirileceği ve yapılandırıldığı açıklanır.
Not
Aşağıdaki belgeler, Uygulama Analizler klasik API'sine dayanır. Uygulama Analizler 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.
Uygulama Analizler 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 Uygulama Analizler'ndeki 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 Uygulama Analizler 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. .NET Core'un desteklendiği her yerde uygulama Analizler izleme 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 Analizler NuGet paketinin desteklenen bir sürümüne başvuru.
- Geçerli bir Uygulama Analizler bağlantı dizesi. Bu dize, Application Analizler'e herhangi bir telemetri göndermek için gereklidir. bağlantı dizesi almak için yeni bir Application Analizler kaynağı oluşturmanız gerekiyorsa bkz. Uygulama Analizler kaynağı oluşturma.
Uygulama Analizler 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>Uygulama Analizler Telemetrisi Ekle'ye gidin.
Azure Uygulaması lication Analizler> İleri'yi seçin.
Aboneliğinizi ve Uygulama Analizler örneğinizi seçin. Veya Yeni oluştur ile yeni bir örnek oluşturabilirsiniz. İleri'yi seçin.
Uygulama Analizler bağlantı dizesi ekleyin veya onaylayın. Önceki adımda seçiminize göre önceden doldurulmalıdır. Bitir'i seçin.
Uygulama Analizler projenize ekledikten sonra SDK'nın en son kararlı sürümünü kullandığınızı onaylayın. Project>Manage NuGet Packages>Microsoft.Application Analizler bölümüne gidin. AspNetCore. Gerekirse Güncelleştir'i seçin.
Uygulama Analizler sunucu tarafı telemetrisini etkinleştirme (Visual Studio yok)
ASP.NET Core için Application Analizler 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 Uygulama Analizler akmalıdır. Uygulama Analizler SDK'sı aşağıdaki telemetri verilerinin yanı sıra uygulamanıza gelen web isteklerini otomatik olarak toplar.
Canlı Ölçümler
Canlı Ölçümler, Uygulama Analizler izlemenin doğru yapılandırılıp yapılandırılmadığını hızla doğrulamak için kullanılabilir. Telemetrinin portalda ve analizde görünmesi birkaç dakika sürebilir, ancak Canlı Ölçümler çalışan işlemin CPU kullanımını neredeyse gerçek zamanlı olarak gösterir. Ayrıca istekler, bağımlılıklar ve izlemeler gibi diğer telemetri verilerini de gösterebilir.
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 Analizler'da 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 Analizler SDK'dan başlayarak 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.
Uygulama Analizler SDK'sını yapılandırma
Varsayılan yapılandırmayı değiştirmek için ASP.NET Core için Application Analizler SDK'sını özelleştirebilirsiniz. Uygulama Analizler 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.
Application Analizler ServiceOptions 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 QuickPulse (Live Metrics stream).
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.Application Analizler için yapılandırma önerisi. AspNetCore SDK 2.15.0 ve üzeri
Microsoft.Application'da Analizler. AspNetCore SDK'sı sürüm 2.15.0 ve üzeri, dahil olmak üzere ConnectionString
içinde ApplicationInsightsServiceOptions
kullanılabilir olan tüm ayarları 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 Analizler 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
Uygulama Analizler, 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 portalında gösterilecek telemetri verilerini 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, Telemetrinin Uygulama Analizler 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.
Uygulama Analizler 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 Uygulama Analizler 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 Analizler'da özel veri raporlama hakkında daha fazla bilgi için bkz. Application Analizler özel ölçümler API başvurusu. Benzer bir yaklaşım, GetMetric API'sini kullanarak Application Analizler'a özel ölçümler göndermek için 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 Uygulama Analizler faturalama) ö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??
Uygulama Analizler için varsayılan ayar yalnızca Uyarı ve daha ciddi günlükleri yakalamaktır.
Uygulama Analizler 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 Uygulama Analizler 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. Uygulama Analizler açık bir geçersiz kılma gerektirir.
{
"Logging": {
"LogLevel": {
"Default": "Information"
}
}
}
Daha fazla bilgi için bkz . ILogger yapılandırması.
Bazı Visual Studio şablonları, Uygulama Analizler etkinleştirmek için IWebHostBuilder'da UseApplication Analizler() uzantı yöntemini kullandı. Bu kullanım hala geçerli mi?
Uzantı yöntemi UseApplicationInsights()
hala desteklenmektedir, ancak Application Analizler 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. Uygulama Analizler telemetrisini etkinleştirmek için, bazı yapılandırmaları denetlemek için aşırı yüklemeler sağladığından kullanınAddApplicationInsightsTelemetry()
. Ayrıca, ASP.NET Core 3.X uygulamalarında services.AddApplicationInsightsTelemetry()
Uygulama Analizler etkinleştirmenin tek yoludur.
ASP.NET Core uygulamamı Web Apps'e dağıtıyorum. Web Apps'ten Uygulama Analizler uzantısını etkinleştirmem gerekir mi?
SDK bu makalede gösterildiği gibi derleme zamanında yüklüyse App Service portalından Uygulama Analizler uzantısını etkinleştirmeniz gerekmez. Uzantı yüklüyse, SDK'nın zaten eklendiğini algıladığında geri döner. Uygulama Analizler uzantısından etkinleştirirseniz SDK'yı yüklemeniz ve güncelleştirmeniz gerekmez. Ancak bu makaledeki yönergeleri izleyerek Uygulama Analizler'yi etkinleştirirseniz daha fazla esneklik elde edebilirsiniz çünkü:
- Uygulama Analizler 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 Uygulama Analizler Aracısı (eski adıYla Durum İzleyicisi v2) gibi araçları kullanarak Uygulama Analizler izlemeyi etkinleştirebilir miyim?
Evet. Application Analizler 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 Çalışan hizmetleri için Çalışan Hizmeti uygulamaları (HTTP olmayan uygulamalar) için Uygulama Analizler kullanın.
SDK'yi nasıl kaldırabilirim?
Uygulama Analizler 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?.
- Microsoft.Application Analizler'yi kaldırın. NuGet Paket Yöneticisi kullanarak AspNetCore paketi.
- Uygulama Analizler 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. Uygulama Analizler SDK'sını eklediğinizde ne oluşturulur?.
Uygulama Analizler SDK'sını eklediğinizde ne oluşturulur?
Uygulama Analizler projenize 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. Uygulama Analizler 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 Analizler 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"
Bağlan edService.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 }
Sorun giderme
Uygulama konağınızla alma hizmeti arasındaki bağlantıyı test etme
Uygulama Analizler 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 Uygulama Analizler eksik uygulama telemetri 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ştirmeler ayrıca önemli Uygulama Analizler iyileştirmelerini ö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.