Pillanatkép-hibakereső engedélyezése .NET-alkalmazásokhoz az Azure Service Fabricben, a Cloud Servicesben és a virtuális gépeken
Ha a ASP.NET vagy ASP.NET Core-alkalmazás a Azure-alkalmazás Szolgáltatásban fut, és testre szabott Pillanatkép-hibakereső konfigurációt vagy a .NET Core előzetes verzióját igényli, kezdje a .NET-alkalmazások pillanatkép-hibakeresőjének engedélyezésével Azure-alkalmazás Szolgáltatásban.
Ha az alkalmazás az Azure Service Fabricben, az Azure Cloud Servicesben, az Azure Virtual Machinesben vagy a helyszíni gépeken fut, kihagyhatja a Snapshot Debugger engedélyezését az App Service-ben, és kövesse a jelen cikkben található útmutatást.
Előfeltételek
- Engedélyezze az Application Insightst a .NET-erőforrásban.
- Adja meg a Microsoft.ApplicationInsights.SnapshotCollector NuGet csomag 1.4.2-es vagy újabb verzióját az alkalmazásban.
- Ismerje meg, hogy a pillanatképek küldése 10–15 percet vehet igénybe az Application Insights-példánynak egy kivétel aktiválása után.
Pillanatkép-gyűjtemény konfigurálása ASP.NET alkalmazásokhoz
Amikor hozzáadja a Microsoft.ApplicationInsights.SnapshotCollector NuGet csomagot az alkalmazáshoz, a rendszer automatikusan hozzáadja azt SnapshotCollectorTelemetryProcessor
a TelemetryProcessors
szakaszhoz ApplicationInsights.config
.
Ha nem jelenik meg SnapshotCollectorTelemetryProcessor
, ApplicationInsights.config
vagy testre szeretné szabni a Pillanatkép-hibakereső konfigurációját, manuálisan is szerkesztheti.
Feljegyzés
A manuális konfigurációk felülíródnak a Microsoft.ApplicationInsights.SnapshotCollector NuGet csomag újabb verziójára való frissítéskor.
A Pillanatképgyűjtő alapértelmezett konfigurációja az alábbi példához hasonlóan néz ki:
<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>
A pillanatképeket csak az Application Insightsnak jelentett kivételek alapján gyűjtjük össze. Bizonyos esetekben (például a .NET-platform régebbi verzióiban) előfordulhat, hogy a kivételgyűjteményt úgy kell konfigurálnia, hogy láthassa a kivételeket pillanatképekkel a portálon.
Pillanatkép-gyűjtemény konfigurálása ASP.NET Core-alkalmazásokhoz vagy feldolgozói szolgáltatásokhoz
Előfeltételek
Az alkalmazásnak már hivatkoznia kell az alábbi Application Insights NuGet-csomagok egyikére:
A NuGet-csomag hozzáadása
Adja hozzá a Microsoft.ApplicationInsights.SnapshotCollector NuGet csomagot az alkalmazáshoz.
A szolgáltatásgyűjtemény frissítése
Az alkalmazás indítási kódjában, ahol a szolgáltatások konfigurálva vannak, adjon hozzá egy hívást a AddSnapshotCollector
bővítménymetódushoz. Javasoljuk, hogy közvetlenül a hívás AddApplicationInsightsTelemetry
után vegye fel ezt a sort. Példa:
var builder = WebApplication.CreateBuilder(args);
// Add services to the container.
builder.Services.AddApplicationInsightsTelemetry();
builder.Services.AddSnapshotCollector();
A pillanatkép-gyűjtő testreszabása
A legtöbb forgatókönyv esetében a Pillanatkép-gyűjtő alapértelmezett beállításai elegendőek. A beállítások testreszabásához azonban adja hozzá a következő kódot a hívás AddSnapshotCollector()
előtt:
using Microsoft.ApplicationInsights.SnapshotCollector;
...
builder.Services.Configure<SnapshotCollectorConfiguration>(builder.Configuration.GetSection("SnapshotCollector"));
Ezután adjon hozzá egy szakaszt SnapshotCollector
, appsettings.json
ahol felülbírálhatja az alapértelmezett értékeket.
A Pillanatképgyűjtő alapértelmezett appsettings.json
konfigurációja az alábbi példához hasonlóan néz ki:
{
"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
}
}
Ha manuálisan kell testre szabnia a Pillanatkép-gyűjtő viselkedését appsettings.json használata nélkül, használja a delegáltak túlterhelésétAddSnapshotCollector
. Példa:
builder.Services.AddSnapshotCollector(config => config.IsEnabledInDeveloperMode = true);
Pillanatkép-gyűjtemény konfigurálása más .NET-alkalmazásokhoz
A pillanatképek csak az Application Insightsnak jelentett kivételekre gyűjthetők.
Az ASP.NET és ASP.NET Core-alkalmazások esetében az Application Insights SDK automatikusan jelenti a kezeletlen kivételeket, amelyek kikerülnek egy vezérlőmetódus vagy végpontútvonal-kezelő elől.
Más alkalmazások esetében előfordulhat, hogy módosítania kell a kódot a jelentéskészítéshez. A kivételkezelési kód az alkalmazás szerkezetétől függ. Példa:
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 következő példa ahelyett használja ILogger
a következőt TelemetryClient
: Ez a példa feltételezi, hogy az Application Insights-naplószolgáltatót használja. Ahogy a példa is mutatja, a kivétel kezelésekor mindenképpen adja át a kivételt első paraméterként LogError
.
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.");
}
}
}
Alapértelmezés szerint az Application Insights-naplózó (ApplicationInsightsLoggerProvider
) továbbítja a kivételeket a Pillanatkép-hibakeresőnek a segítségével TelemetryClient.TrackException
. Ezt a viselkedést az TrackExceptionsAsExceptionTelemetry
osztály tulajdonsága ApplicationInsightsLoggerOptions
szabályozza.
Ha az Application Insights-naplózó konfigurálásakor be van állítva TrackExceptionsAsExceptionTelemetry
false
, az előző példa nem aktiválja a Pillanatkép-hibakeresőt. Ebben az esetben módosítsa a kódot a manuális híváshoz TrackException
.
Feljegyzés
2025. március 31-én megszűnik az eszközkulcsalapú betöltés támogatása. A rendszerállapot-kulcsok betöltése továbbra is működni fog, de a továbbiakban nem biztosítunk frissítéseket vagy támogatást a funkcióhoz. Váltás kapcsolati sztring az új képességek kihasználásához.
Következő lépések
- Pillanatképek megtekintése az Azure Portalon.
- Pillanatkép-hibakereső hibáinak elhárítása.