Единый интерфейс диагностики транзакций между компонентами

Единый интерфейс диагностики автоматически сопоставляет серверные данные телеметрии со всех отслеживаемых службой Application Insights компонентов в одном представлении. Количество ресурсов не имеет значения. Application Insights определяет базовые связи и позволяет легко диагностировать компоненты приложения, зависимости или исключения, вызвавшие замедление или сбой выполнения транзакции.

Что такое компонент?

Компоненты —это независимо развертываемые части распределенного приложения или приложения для микрослужб. Разработчики и операционные команды могут просматривать данные телеметрии, созданные компонентами приложения, на уровне кода.

  • Компоненты отличаются от "наблюдаемых" внешних зависимостей, таких как SQL, Центры событий и т. д., к которым у вашей команды или организации может не быть доступа (к коду или данным телеметрии).
  • Компоненты выполняются на любом количестве экземпляров серверов, ролей или контейнеров.
  • К компонентам могут относиться отдельные ключи инструментирования Application Insights (даже из разных подписок) или разные роли, относящиеся к одному такому ключу. В новом интерфейсе отображаются сведения обо всех компонентах, независимо от способа их настройки.

Примечание

  • Отсутствуют связи со связанным элементом? Все связанные данные телеметрии находятся в верхних и нижних разделах слева.

Интерфейс диагностики транзакций

Это представление состоит из четырех основных частей: список результатов, диаграмма транзакций между компонентами, последовательный список данных телеметрии, связанных с этой операцией, и область сведений, в которой слева отображается любой выбранный элемент телеметрии.

Key parts

Диаграмма транзакций между компонентами

Эта диаграмма содержит временную шкалу с горизонтальными линиями длительности запросов и зависимостей между компонентами. На ней также помечены все собранные исключения.

  • Верхняя строка этой диаграммы представляет точку входа (входящий запрос к первому компоненту, вызванному в этой транзакции). Длительность —это общее время, необходимое, чтобы завершить транзакцию.
  • Все вызовы к внешним зависимостям —это простые несворачиваемые строки со значками, представляющими тип зависимости.
  • Сворачиваемые строки представляют вызовы к другим компонентам. Каждая строка соответствует определенной операции, вызванной в компоненте.
  • По умолчанию справа отображается выбранный запрос, зависимость или исключение.
  • Щелкните любую строку, чтобы просмотреть сведения из нее в области справа.

Примечание

Вызовы к другим компонентам отображаются в виде двух строк: одна представляет исходящий вызов (зависимость) из компонента вызывающей стороны, а другая —входящий запрос в вызываемом компоненте. Разницу между ними можно определить по значку и стилю линий длительности.

Все данные телеметрии с идентификатором этой операции

В этом разделе показано представление неструктурированного списка во временной последовательности всех данных телеметрии, связанных с этой транзакцией. Здесь также показаны пользовательские события и трассировки, которые не отображаются на диаграмме транзакций. Вы можете отфильтровать этот список, чтобы отображались данные телеметрии, созданные с помощью определенного компонента или вызова. Выберите любой элемент телеметрии, чтобы просмотреть соответствующие сведения в области справа.

Time sequence of all telemetry

Подробные сведения о выбранном элементе телеметрии

В этой свертываемой области отображаются сведения о любом выбранном элементе в виде диаграммы транзакций или списка. Если щелкнуть "Показать все", отобразятся все собранные стандартные атрибуты. Все настраиваемые атрибуты отдельно перечислены под стандартным набором. Выберите "..." ниже в окне трассировки стека, чтобы получить возможность скопировать трассировку. Щелкните Open profiler traces (Открыть трассировки профилировщика) или Open debug snapshot (Открыть моментальный снимок отладки), чтобы просмотреть данные диагностики на уровне кода в соответствующих областях.

Exception detail

Результаты поиска

В этой свертываемой области отображаются другие результаты, которые соответствуют условиям фильтра. Выберите любой результат, чтобы обновить соответствующие сведения в трех перечисленных выше разделах. Мы пытаемся найти образцы, в которых вероятнее всего содержатся сведения, доступные из всех компонентов даже в том случае, если выборка действует в одном из них. Они отображаются в виде "предложенных" примеров.

Search results

Profiler и Snapshot Debugger

Application Insights Profiler и Snapshot Debugger упрощают диагностику проблем производительности и ошибок на уровне кода. Эти средства позволяют легко просматривать трассировки профилировщика и моментальные снимки из любого компонента.

Если вам не удалось запустить профилировщик, свяжитесь с нами: serviceprofilerhelp@microsoft.com.

Если вам не удалось запустить Snapshot Debugger, свяжитесь с нами: snapshothelp@microsoft.com.

Profiler Integration

Вопросы и ответы

На диаграмме отображается один компонент, а остальные показаны как внешние зависимости без каких-либо сведений о том, что с ними случилось.

Возможные причины:

  • Эти другие компоненты не инструментированы с помощью Application Insights.
  • В них используется не последняя стабильная версия пакета SDK Application Insights.
  • Если эти компоненты являются отдельными ресурсами Application Insights, есть ли у вас необходимые права доступа? Если у вас имеется доступ и компоненты работают с последними версиями пакетов SDK Application Insights, сообщите нам о проблеме с помощью функции отзыва в правом верхнем углу страницы.

Строки зависимостей повторяются. Так и должно быть?

Сейчас исходящий вызов зависимости отображается отдельно от входящего запроса. Как правило, эти два вызова выглядят одинаково. Единственное различие заключается в значении длительности, которое зависит от кругового пути в сети. Разницу между ними можно определить по значку и стилю линий длительности. Если такое представление данных слишком трудное, отправьте нам свой отзыв!

Что происходит, если часы разных экземпляров компонентов рассинхронизированы?

Временные шкалы на диаграмме транзакций приводятся в соответствие. Вы можете просмотреть точные метки времени в области сведений или с помощью Analytics.

Почему в новом интерфейсе отсутствует большинство запросов связанных элементов?

Это сделано намеренно. Все связанные элементы компонентов уже доступны в левой части (верхние и нижние разделы). В левой части нового интерфейса отсутствуют два связанных элемента: все данные телеметрии, полученные в течение пяти минут до или после этого события, и временная шкала пользователя.

Я вижу больше событий, чем ожидалось, в процессе диагностики транзакций при использовании пакета SDK JavaScript для Application Insights. Существует ли способ просмотра меньшего количества событий на одну транзакцию?

Диагностика транзакций показывает всю телеметрию в рамках одной операции, которая имеет общий идентификатор операции. По умолчанию пакет SDK для JavaScript в Application Insights создает новую операцию для каждого уникального просмотра страницы. В одностраничном приложении (SPA) будет сгенерировано только одно событие просмотра страницы, и один идентификатор операции будет использоваться для всей сгенерированной телеметрии, что может привести к тому, что многие события будут коррелированы с одной и той же операцией. В этих сценариях можно использовать автоматическое отслеживание маршрута, чтобы автоматически создавать новые операции для навигации в вашем одностраничном приложении. Необходимо включить enableAutoRouteTracking, чтобы просмотр страницы создавался каждый раз при обновлении URL-маршрута (выполняется логический просмотр страницы). Если требуется вручную обновить идентификатор операции, можно сделать это, вызвав appInsights.properties.context.telemetryTrace.traceID = Microsoft.ApplicationInsights.Telemetry.Util.generateW3CId(). Запуск события PageView вручную также приведет к сбросу идентификатора операции.

Почему подробные длительности транзакции не добавляются к длительности верхнего запроса?

Время, необъясненное на диаграмме Ганта, — это время, которое не охватывается отслеживаемой зависимостью. Это может быть вызвано либо внешними вызовами, которые не были инструментированы (автоматически или вручную), либо временем, которое было затрачено на процесс, но не из-за внешнего вызова.

Если все вызовы были инструментированы, вероятной основной причиной затраченного времени является процесс. Полезным средством диагностики процесса является Application Insights Profiler.