Azure Monitor / Application Insights не показывает трассировку стека для ошибок - PullRequest
0 голосов
/ 14 октября 2019

У меня есть веб-API ASP .Net Core 3.0, размещенный в службе приложений Azure. Я пытаюсь выяснить, почему он вызывает 500 внутренних ошибок сервера в одном из методов действия контроллера. У меня настроены Application Insights, и на странице «Сбои» на портале Azure я вижу, что существует 500 исключений. Тем не менее, я не вижу трассировки стека для них. Есть ли что-то, что мне нужно сделать, чтобы включить отчеты трассировки стека в Application Insights или Azure Monitor. PS Даже когда мой API был на .Net Core 2.2, он также не отображал трассировки стека, поэтому это не вещь .Net Core 3.0.

Вот несколько скриншотов:

enter image description here

enter image description here

Ответы [ 2 ]

1 голос
/ 14 октября 2019

Если вы не видите трассировку стека, вы должны убедиться, что ваш код регистрирует исключения одним из способов, описанных здесь:

https://docs.microsoft.com/en-us/azure/azure-monitor/app/asp-net-exceptions#exceptions

в MVC, вы должныиспользуйте это:

public override void OnException(ExceptionContext filterContext)
        {
            if (filterContext != null && filterContext.HttpContext != null && filterContext.Exception != null)
            {
                //If customError is Off, then AI HTTPModule will report the exception
                if (filterContext.HttpContext.IsCustomErrorEnabled)
                {   //or reuse instance (recommended!). see note above
                    var ai = new TelemetryClient();
                    ai.TrackException(filterContext.Exception);
                }
            }
            base.OnException(filterContext);
        }

в ядре .net это делается на уровне configureservice:

public void ConfigureServices(IServiceCollection services)
{
    Microsoft.ApplicationInsights.AspNetCore.Extensions.ApplicationInsightsServiceOptions aiOptions
                = new Microsoft.ApplicationInsights.AspNetCore.Extensions.ApplicationInsightsServiceOptions();
    // Disables adaptive sampling.
    aiOptions.EnableAdaptiveSampling = false;

    // Disables QuickPulse (Live Metrics stream).
    aiOptions.EnableQuickPulseMetricStream = false;
    services.AddApplicationInsightsTelemetry(aiOptions);
}

, как описано здесь:

https://docs.microsoft.com/en-us/azure/azure-monitor/app/asp-net-core

0 голосов
/ 14 октября 2019

Я понял, что при просмотре «Сбой запросов» на вкладке «Операции» на странице «Сбои» в Application Insights не отображается трассировка стека. Я предполагаю, что это потому, что этот раздел имеет отношение к HTTP-запросам и ничего более. Но если я вместо этого переключусь на вкладку Исключения, я смогу увидеть трассировку стека там. Я предполагаю, что это раздел, который относится к выполнению кода, и поэтому он имеет трассировку стека.

...