Azure Service Fabric, Cloud Services ve Sanal Makineler.NET uygulamaları için Snapshot Debugger'ı etkinleştirme
ASP.NET veya ASP.NET Core uygulamanız Azure Uygulaması Hizmeti'nde çalışıyorsa ve özelleştirilmiş bir Anlık Görüntü Hata Ayıklayıcısı yapılandırması veya .NET Core'un önizleme sürümü gerektiriyorsa, Azure Uygulaması Service'te .NET uygulamaları için Snapshot Debugger'ı etkinleştirme ile başlayın.
Uygulamanız Azure Service Fabric, Azure Cloud Services, Azure Sanal Makineler veya şirket içi makinelerde çalışıyorsa, App Service'te Snapshot Debugger'ı etkinleştirmeyi atlayabilir ve bu makaledeki yönergeleri izleyebilirsiniz.
Önkoşullar
- .NET kaynağınızda Application Insights'i etkinleştirin.
- Uygulamanıza Microsoft.ApplicationInsights.SnapshotCollector NuGet paketi sürüm 1.4.2 veya üzerini ekleyin.
- Bir özel durum tetiklendikten sonra anlık görüntülerin Application Insights örneğine gönderilmesinin 10-15 dakika sürebileceğini anlayın.
ASP.NET uygulamaları için anlık görüntü koleksiyonunu yapılandırma
Uygulamanıza Microsoft.ApplicationInsights.SnapshotCollector NuGet paketini eklediğinizde , SnapshotCollectorTelemetryProcessor
bölümüne ApplicationInsights.config
otomatik TelemetryProcessors
olarak eklenir.
içinde ApplicationInsights.config
görmüyorsanız SnapshotCollectorTelemetryProcessor
veya Snapshot Debugger yapılandırmasını özelleştirmek istiyorsanız, el ile düzenleyebilirsiniz.
Not
Microsoft.ApplicationInsights.SnapshotCollector NuGet paketinin daha yeni bir sürümüne yükseltirken tüm el ile yapılandırmaların üzerine yazılabilir.
Anlık Görüntü Toplayıcı'nın varsayılan yapılandırması aşağıdaki örneğe benzer:
<TelemetryProcessors>
<Add Type="Microsoft.ApplicationInsights.SnapshotCollector.SnapshotCollectorTelemetryProcessor, Microsoft.ApplicationInsights.SnapshotCollector">
<!-- The default is true, but you can disable Snapshot Debugging by setting it to false -->
<IsEnabled>true</IsEnabled>
<!-- Snapshot Debugging is usually disabled in developer mode, but you can enable it by setting this to true. -->
<!-- DeveloperMode is a property on the active TelemetryChannel. -->
<IsEnabledInDeveloperMode>false</IsEnabledInDeveloperMode>
<!-- How many times we need to see an exception before we ask for snapshots. -->
<ThresholdForSnapshotting>1</ThresholdForSnapshotting>
<!-- The maximum number of examples we create for a single problem. -->
<MaximumSnapshotsRequired>3</MaximumSnapshotsRequired>
<!-- The maximum number of problems that we can be tracking at any time. -->
<MaximumCollectionPlanSize>50</MaximumCollectionPlanSize>
<!-- How often we reconnect to the stamp. The default value is 15 minutes.-->
<ReconnectInterval>00:15:00</ReconnectInterval>
<!-- How often to reset problem counters. -->
<ProblemCounterResetInterval>1.00:00:00</ProblemCounterResetInterval>
<!-- The maximum number of snapshots allowed in ten minutes.The default value is 1. -->
<SnapshotsPerTenMinutesLimit>3</SnapshotsPerTenMinutesLimit>
<!-- The maximum number of snapshots allowed per day. -->
<SnapshotsPerDayLimit>30</SnapshotsPerDayLimit>
<!-- Whether or not to collect snapshot in low IO priority thread. The default value is true. -->
<SnapshotInLowPriorityThread>true</SnapshotInLowPriorityThread>
<!-- Agree to send anonymous data to Microsoft to make this product better. -->
<ProvideAnonymousTelemetry>true</ProvideAnonymousTelemetry>
<!-- The limit on the number of failed requests to request snapshots before the telemetry processor is disabled. -->
<FailedRequestLimit>3</FailedRequestLimit>
</Add>
</TelemetryProcessors>
Anlık görüntüler yalnızca Application Insights'a bildirilen özel durumlarda toplanır. Bazı durumlarda (örneğin, .NET platformunun eski sürümleri), portalda anlık görüntüler içeren özel durumları görmek için özel durum koleksiyonunu yapılandırmanız gerekebilir.
ASP.NET Core uygulamaları veya Çalışan Hizmetleri için anlık görüntü koleksiyonunu yapılandırma
Önkoşullar
Uygulamanız zaten aşağıdaki Application Insights NuGet paketlerinden birine başvurmalıdır:
NuGet paketini ekleyin
Uygulamanıza Microsoft.ApplicationInsights.SnapshotCollector NuGet paketini ekleyin.
Hizmet koleksiyonunu güncelleştirme
Uygulamanızın hizmetlerin yapılandırıldığı başlangıç koduna uzantı yöntemine AddSnapshotCollector
bir çağrı ekleyin. Çağrısından AddApplicationInsightsTelemetry
hemen sonra bu satırı eklemenizi öneririz. Örneğin:
var builder = WebApplication.CreateBuilder(args);
// Add services to the container.
builder.Services.AddApplicationInsightsTelemetry();
builder.Services.AddSnapshotCollector();
Anlık Görüntü Toplayıcıyı Özelleştirme
Çoğu senaryoda, Anlık Görüntü Toplayıcı'nın varsayılan ayarları yeterlidir. Ancak, çağrısından AddSnapshotCollector()
önce aşağıdaki kodu ekleyerek ayarları özelleştirebilirsiniz:
using Microsoft.ApplicationInsights.SnapshotCollector;
...
builder.Services.Configure<SnapshotCollectorConfiguration>(builder.Configuration.GetSection("SnapshotCollector"));
Ardından, varsayılanları geçersiz kılabileceğiniz bir SnapshotCollector
bölüm appsettings.json
ekleyin.
Anlık Görüntü Toplayıcı'nın varsayılan appsettings.json
yapılandırması aşağıdaki örneğe benzer:
{
"SnapshotCollector": {
"IsEnabledInDeveloperMode": false,
"ThresholdForSnapshotting": 1,
"MaximumSnapshotsRequired": 3,
"MaximumCollectionPlanSize": 50,
"ReconnectInterval": "00:15:00",
"ProblemCounterResetInterval":"1.00:00:00",
"SnapshotsPerTenMinutesLimit": 1,
"SnapshotsPerDayLimit": 30,
"SnapshotInLowPriorityThread": true,
"ProvideAnonymousTelemetry": true,
"FailedRequestLimit": 3
}
}
Appsettings.json kullanmadan Anlık Görüntü Toplayıcısı'nın davranışını el ile özelleştirmeniz gerekiyorsa, bunun bir temsilciyi alan aşırı yüklemesini AddSnapshotCollector
kullanın. Örneğin:
builder.Services.AddSnapshotCollector(config => config.IsEnabledInDeveloperMode = true);
Diğer .NET uygulamaları için anlık görüntü koleksiyonunu yapılandırma
Anlık görüntüler yalnızca Application Insights'a bildirilen özel durumlarda toplanır.
ASP.NET ve ASP.NET Core uygulamaları için Application Insights SDK'sı, bir denetleyici yönteminden veya uç nokta yol işleyiciden kaçan işlenmemiş özel durumları otomatik olarak raporlar.
Diğer uygulamalarda, kodunuzu rapor etmek için değiştirmeniz gerekebilir. Özel durum işleme kodu uygulamanızın yapısına bağlıdır. Örneğin:
using Microsoft.ApplicationInsights;
using Microsoft.ApplicationInsights.DataContracts;
using Microsoft.ApplicationInsights.Extensibility;
internal class ExampleService
{
private readonly TelemetryClient _telemetryClient;
public ExampleService(TelemetryClient telemetryClient)
{
// Obtain the TelemetryClient via dependency injection.
_telemetryClient = telemetryClient;
}
public void HandleExampleRequest()
{
using IOperationHolder<RequestTelemetry> operation =
_telemetryClient.StartOperation<RequestTelemetry>("Example");
try
{
// TODO: Handle the request.
operation.Telemetry.Success = true;
}
catch (Exception ex)
{
// Report the exception to Application Insights.
operation.Telemetry.Success = false;
_telemetryClient.TrackException(ex);
// TODO: Rethrow the exception if desired.
}
}
}
Aşağıdaki örnekte yerine TelemetryClient
kullanılırILogger
. Bu örnekte Application Insights Günlükçü Sağlayıcısı'nı kullandığınız varsayılır. Örnekte gösterildiği gibi, bir özel durum işlenirken, özel durumu ilk parametre olarak 'a geçirmeyi LogError
unutmayın.
using Microsoft.Extensions.Logging;
internal class LoggerExample
{
private readonly ILogger _logger;
public LoggerExample(ILogger<LoggerExample> logger)
{
_logger = logger;
}
public void HandleExampleRequest()
{
using IDisposable scope = _logger.BeginScope("Example");
try
{
// TODO: Handle the request
}
catch (Exception ex)
{
// Use the LogError overload with an Exception as the first parameter.
_logger.LogError(ex, "An error occurred.");
}
}
}
Varsayılan olarak, Application Insights Günlükçü (ApplicationInsightsLoggerProvider
) aracılığıyla özel durumları Snapshot Debugger'a iletir TelemetryClient.TrackException
. Bu davranış, sınıfındaki TrackExceptionsAsExceptionTelemetry
özelliği aracılığıyla denetlenmektedir ApplicationInsightsLoggerOptions
.
Application Insights Günlükçü'sini yapılandırırken olarak ayarlarsanız TrackExceptionsAsExceptionTelemetry
false
, yukarıdaki örnek Snapshot Debugger'ı tetiklemez. Bu durumda, kodunuzu el ile çağıracak TrackException
şekilde değiştirin.
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ş.
Sonraki adımlar
- Azure portalında anlık görüntüleri görüntüleyin.
- Anlık Görüntü Hata Ayıklayıcısı sorunlarını giderme.