Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Если приложение ASP.NET или ASP.NET Core выполняется в службе приложение Azure и требует настройки настраиваемого отладчика моментальных снимков или предварительной версии .NET Core, начните с включения отладчика моментальных снимков для приложений .NET в службе приложение Azure.
Если ваше приложение работает в Azure Service Fabric, Azure Cloud Services, Azure Virtual Machines или на локальных машинах, вы можете пропустить включение отладчика моментальных снимков в службе приложений Azure и следовать инструкциям в этой статье.
Предварительные условия
- Включите Application Insights в вашем ресурсе .NET.
- Включите пакет NuGet Microsoft.ApplicationInsights.SnapshotCollector версии 1.4.2 или выше в приложение.
- Понимайте, что снимки могут отправляться в экземпляр Application Insights через 10–15 минут после активации исключения.
Настройка сбора моментальных снимков для приложений ASP.NET
При добавлении пакета NuGet Microsoft.ApplicationInsights.SnapshotCollector в ваше приложение, SnapshotCollectorTelemetryProcessor автоматически добавляется в раздел TelemetryProcessorsApplicationInsights.config.
Если вы не видите SnapshotCollectorTelemetryProcessor в ApplicationInsights.config, или если вы хотите настроить конфигурацию отладчика моментальных снимков, вы можете изменить её вручную.
Примечание.
При обновлении до более новой версии пакета NuGet Microsoft.ApplicationInsights.SnapshotCollector любые внесенные вручную конфигурации могут быть перезаписаны.
Конфигурация сборщика моментальных снимков по умолчанию выглядит примерно так:
<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>
Моментальные снимки собираются только при исключениях, о которых сообщается в Application Insights. В некоторых случаях (например, в старых версиях платформы .NET) может потребоваться настроить коллекцию исключений для просмотра исключений с моментальными снимками на портале.
Настройка коллекции моментальных снимков для ASP.NET основных приложений или рабочих служб
Предварительные условия
Приложение уже должно ссылаться на один из следующих пакетов NuGet Application Insights:
Добавьте пакет NuGet
Microsoft.ApplicationInsights.SnapshotCollector Добавьте пакет NuGet в приложение.
Обновите коллекцию служб
В коде запуска приложения, где настроены службы, добавьте вызов AddSnapshotCollector метода расширения. Мы рекомендуем добавить эту строку сразу после вызова AddApplicationInsightsTelemetry. Например:
var builder = WebApplication.CreateBuilder(args);
// Add services to the container.
builder.Services.AddApplicationInsightsTelemetry();
builder.Services.AddSnapshotCollector();
Настройка сборщика моментальных снимков
Для большинства сценариев параметры сборщика моментальных снимков по умолчанию достаточны. Однако можно настроить параметры, добавив следующий код перед вызовом AddSnapshotCollector():
using Microsoft.ApplicationInsights.SnapshotCollector;
...
builder.Services.Configure<SnapshotCollectorConfiguration>(builder.Configuration.GetSection("SnapshotCollector"));
Затем добавьте раздел SnapshotCollector в appsettings.json, где вы можете переопределить значения по умолчанию.
Конфигурация сборщика моментальных снимков по умолчанию appsettings.json выглядит примерно так:
{
"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, используйте перегрузку AddSnapshotCollector , которая принимает делегат. Например:
builder.Services.AddSnapshotCollector(config => config.IsEnabledInDeveloperMode = true);
Настройка сбора моментальных снимков для других приложений .NET
Снимки состояния собираются только для исключений, которые сообщаются в Application Insights.
Для приложений ASP.NET и ASP.NET Core пакет SDK Application Insights автоматически сообщает о необработанных исключениях, которые выходят за пределы метода контроллера или обработчика маршрутов конечной точки.
Для других приложений может потребоваться изменить код, чтобы сообщить о них. Код обработки исключений зависит от структуры приложения. Например:
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.
}
}
}
В следующем примере используется ILogger вместо TelemetryClient. В этом примере предполагается, что вы используете поставщик средств журналирования Application Insights. Как показано в примере, при обработке исключения обязательно передайте исключение в качестве первого параметра 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.");
}
}
}
По умолчанию средство ведения журнала ApplicationInsightsLoggerProvider Application Insights перенаправляет исключения в отладчик моментальных снимков через TelemetryClient.TrackException. Это поведение управляется свойством TrackExceptionsAsExceptionTelemetry класса ApplicationInsightsLoggerOptions .
При настройке средства ведения журнала Application Insights, если вы установите TrackExceptionsAsExceptionTelemetry на false, предыдущий пример не активирует отладчик моментальных снимков. В этом случае измените код для вызова TrackException вручную.
Следующие шаги
- Просматривайте моментальные снимки в портале Azure.
- Устранение неполадок отладчика моментальных снимков.