#.net #asp.net-core #azure-application-insights
#.net #asp.net-core #azure-application-insights
Вопрос:
В моем ASP.NET Основное приложение, телеметрия запроса автоматически регистрируется в Application Insights, что замечательно. Но было бы неплохо точно знать, как измеряется продолжительность. Предположительно, где-то есть «секундомер», но когда он запускается и когда останавливается? Что входит в продолжительность? Я хотел бы получить больше информации о том, как именно это делается.
Ответ №1:
В трассировке запроса есть две части asp.net ядро.
- asp.net само ядро имеет диагностическую трассировку, которая использует встроенную в систему .net Core.Диагностика трассировка. Проще говоря, он фиксирует действия / события на разных этапах конвейера HTTP-запросов, скажем, запрос-запуск, запрос-остановка и т.д. Итак, это первый шаг к тому, чтобы получить возможность фиксировать то, что нам нужно для отслеживания запросов.
- Теперь перейдем к Application Insights asp.net интеграция с ядром. Когда вы включаете Application Insights в своем asp.net основное приложение, оно инициализирует несколько встроенных модулей телеметрии. Одним из них является RequestTrackingTelemetryModule, который подключается к DiagnosticListener для захвата событий запуска / остановки запроса, о которых мы говорили в # 1 выше. Да, он использует секундомер для вычисления разницы между началом и остановкой запроса.
Кстати, app Insights sdk и asp.net ядро с открытым исходным кодом на случай, если вы хотите углубленно изучить.
Комментарии:
1. Да, я немного покопался в коде после того, как задал вопрос. Насколько я могу судить, временная метка для запуска запроса берется здесь: github.com/microsoft/ApplicationInsights-dotnet/blob/develop/… И временная метка для остановки запроса берется здесь: github.com/microsoft/ApplicationInsights-dotnet/blob/develop /…