Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Если вы включили отладчик моментальных снимков Application Insights для приложения, но не видите моментальные снимки для исключений, используйте эти инструкции для устранения неполадок.
Создание моментальных снимков завершается ошибкой из-за разных причин. Для начала выполните проверку состояния моментальных снимков, чтобы определить некоторые из возможных общих причин.
Неподдерживаемые сценарии
Сценарии, в которых сборщик моментальных снимков не поддерживается:
| Сценарий | Побочные эффекты | Рекомендация |
|---|---|---|
| При непосредственном использовании SDK сборщика снапшотов в вашем приложении (.csproj) и включении расширенного параметра Диспетчер взаимодействия. | Локальный пакет SDK Application Insights, включая данные телеметрии сборщика моментальных снимков, теряется. Поэтому моментальные снимки недоступны. Ваше приложение может завершиться сбоем при запуске с System.ArgumentException: telemetryProcessorTypedoes not implement ITelemetryProcessor.Для получения дополнительной информации о функции Application Insights, подробности см. в разделе "Устранение неполадок интеграции Application Insights". |
Если вы используете расширенную функцию Interop, используйте внедрение коллектора моментальных снимков без использования кода с помощью портала Azure. |
Убедитесь, что используете правильную конечную точку для отладчика Snapshot Debugger.
В настоящее время единственными регионами, которым требуются изменения конечных точек, являются Azure для государственных организаций и Microsoft Azure, управляемые 21Vianet.
Для службы приложений и приложений, использующих пакет SDK Application Insights, необходимо обновить строку подключения с помощью поддерживаемых переопределений для отладчика моментальных снимков:
| Свойство строки подключения | Облако для государственных организаций США | облако для Китая. |
|---|---|---|
| СнэпшотЭндпоинт | https://snapshot.monitor.azure.us |
https://snapshot.monitor.azure.cn |
Дополнительные сведения см. в статье "Строка подключения с явными переопределениями конечной точки".
Для функционального приложения необходимо обновить host.json с помощью поддерживаемых переопределений.
| Свойство | Облако для государственных организаций США | облако для Китая. |
|---|---|---|
| AgentEndpoint | https://snapshot.monitor.azure.us |
https://snapshot.monitor.azure.cn |
Пример обновленного host.json с конечной точкой агента облака для правительства США:
{
"version": "2.0",
"logging": {
"applicationInsights": {
"samplingExcludedTypes": "Request",
"samplingSettings": {
"isEnabled": true
},
"snapshotConfiguration": {
"isEnabled": true,
"agentEndpoint": "https://snapshot.monitor.azure.us"
}
}
}
}
Используйте проверку состояния моментальных снимков
Некоторые распространенные проблемы приводят к тому, что кнопка "Открыть отладочный моментальный снимок " не отображается. Например:
- Использование устаревшего средства сбора моментальных снимков.
- Достигнут дневной лимит загрузки.
- Процесс загрузки моментального снимка занимает много времени.
Проверка состояния моментальных снимков для устранения распространенных проблем доступна через ссылку в панели исключений сквозного просмотра трассировки.
Интерактивный интерфейс, подобный чату, ищет распространенные проблемы и приводит инструкции по их устранению.
Если этот подход не решает проблему, ознакомьтесь со следующими инструкциями по устранению неполадок вручную.
Проверка параметров клиента TLS/SSL (ASP.NET)
Если у вас есть ASP.NET приложение, размещенное в службе приложений Azure или службах IIS на виртуальной машине, приложение может не подключиться к службе отладчика моментальных снимков из-за отсутствия протокола безопасности TLS.
Конечная точка Snapshot Debugger требует использования TLS версии 1.2. Набор протоколов безопасности является одним из причудок, включенных httpRuntime targetFramework значением в system.web разделе web.config.
Если httpRuntime targetFramework имеет значение 4.5.2 или ниже, по умолчанию протокол TLS 1.2 не применяется.
Примечание.
Значение httpRuntime targetFramework не зависит от целевой платформы, используемой при сборке приложения.
Чтобы проверить этот параметр, откройте файл web.config и найдите раздел system.web. Убедитесь, что targetFramework для httpRuntime установлено значение 4.6 или выше.
<system.web>
...
<httpRuntime targetFramework="4.7.2" />
...
</system.web>
Примечание.
Изменение значения httpRuntime targetFramework изменяет характеристики среды выполнения для приложения и может привести к другим незначительным изменениям в его работе. После внесения этого изменения обязательно тщательно протестируйте свое приложение. Сведения об изменениях совместимости см. в разделе "Перенацеливание изменений".
Примечание.
Если значение targetFramework равно 4.7 или выше, Windows определяет доступные протоколы. В Службе приложений Azure доступен протокол TLS 1.2. Однако если вы используете собственную виртуальную машину, может потребоваться включить TLS 1.2 в операционной системе.
Сценарии нагрузки отладчика моментальных снимков
Отладчик моментальных снимков предназначен для использования в рабочих средах. Параметры по умолчанию включают ограничения скорости, чтобы свести к минимуму влияние на приложения.
Вы можете столкнуться с небольшими нагрузками на ЦП, память и операций ввода-вывода, связанные с отладчиком моментальных снимков, например в следующих сценариях.
При возникновении исключения в приложении:
Создание подписи для типа проблемы и выбор необходимости создания моментального снимка добавляет небольшую нагрузку на ЦП и память.
Если включена деоптимизация, это влечет накладные расходы для повторной JIT-компиляции метода, который вызвал исключение. Эта нагрузка взимается при следующем запуске метода. В зависимости от размера метода, время центрального процессора может составлять от 1 мс до 100 мс.
Если обработчик исключений решит создать моментальный снимок:
Создание моментального снимка процесса занимает около половины секунды (P50 = 0,3 с, P90 = 1,2 с, P95 = 1,9 с); в это время поток, вызвавший исключение, приостановлен. Другие потоки не блокируются.
Преобразование моментального снимка процесса в мини-dump и отправка его в Application Insights занимает несколько минут.
- Преобразование: P50 = 63 s, P90 = 187 s, P95 = 275 с.
- Отправка: P50 = 31 s, P90 = 75 с, P95 = 98 с.
Преобразование выполняется в Snapshot Uploader, который работает в отдельном процессе. Процесс отправки моментальных снимков выполняется ниже обычного приоритета ЦП и использует низкоприоритетный ввод-вывод.
Дамп памяти записывается сначала на диск. Объем места на диске примерно совпадает с рабочим набором исходного процесса. Напечатание минидампа может вызвать страничные ошибки, так как память считывается.
Минидамп сжимается во время отправки, что потребляет как центральный процессор, так и память в процессе загрузки моментальных снимков. Затраты на ЦП, память и диск пропорциональны размеру моментального снимка процесса. Средство загрузки моментальных снимков обрабатывает их поочерёдно.
При TrackException вызове:
Отладчик моментальных снимков проверяет, является ли это исключение новым или уже был создан моментальный снимок для него. Эта проверка добавляет небольшую нагрузку на ЦП.
Предварительные версии .NET Core
Если вы используете предварительную версию .NET Core или приложение ссылается на пакет SDK Application Insights напрямую или косвенно с помощью зависимой сборки, следуйте инструкциям по включению отладчика моментальных снимков для других сред.
Проверьте страницу состояния расширения сайта Служб диагностики
Если отладчик моментальных снимков был включен через панель Application Insights на портале Azure, он был включен расширением сайта служб диагностики.
Примечание.
Установка отладчика моментальных снимков Application Insights без кода выполняется в соответствии с политикой поддержки .NET Core. Дополнительные сведения о поддерживаемых средах выполнения см. в политике поддержки .NET Core.
Чтобы проверить страницу состояния этого расширения, перейдите по следующему URL-адресу: https://<kudu-url>/DiagnosticServices
Примечание.
Домен ссылки на страницу состояния зависит от облака.
Этот домен совпадает с сайтом управления Kudu для службы приложений. На странице состояния отображается состояние установки агентов .NET Profiler и сборщика моментальных снимков. Если произошла непредвиденная ошибка, на странице показано, как его исправить.
Чтобы получить базовый URL-адрес этой страницы состояния, воспользуйтесь сайтом управления KUDU для Службы приложений.
- На портале Azure откройте приложение Службы приложений.
- В меню слева выберите Средства разработки>Дополнительные средства.
- Выберите Перейти.
- Когда вы находитесь на сайте управления Kudu, в URL-адресе добавьте следующую
/DiagnosticServicesкоманду и нажмите клавишу ВВОД. Заканчивается следующим образом:https://<kudu-url>/DiagnosticServices
Обновление пакета NuGet до последней версии
В зависимости от того, как была включена служба Snapshot Debugger, см. следующие варианты:
Если отладчик моментальных снимков был включен через панель Application Insights на портале Azure, приложение уже должно работать с последним пакетом NuGet.
Если служба Snapshot Debugger была включена путем включения пакета NuGet Microsoft.ApplicationInsights.SnapshotCollector, с помощью диспетчера пакетов NuGet для Visual Studio убедитесь, что вы используете последнюю версию
Microsoft.ApplicationInsights.SnapshotCollector.
Последние обновления и исправления ошибок см. в заметках о выпуске.
Проверьте журналы отправителя
После создания моментального снимка на диске создается файл минидампа (.dmp). Отдельный процесс загрузки создает файл минидампа и загружает его, вместе с связанными PDB-файлами, в хранилище отладчика со снимком Application Insights. После успешной загрузки дампа памяти на диск, он удаляется. Файлы журнала для процесса загрузки сохраняются на диске. В среде службы приложений эти журналы можно найти в D:\Home\LogFiles. Используйте веб-сайт управления Kudu для службы приложений, чтобы найти эти файлы журнала.
- На портале Azure откройте приложение Службы приложений.
- В меню слева выберите Средства разработки>Дополнительные средства.
- Выберите Перейти.
- В консоли отладки выберите CMD.
- Щелкните LogFiles.
Вы увидите хотя бы один файл с именем, начинающимся с Uploader_ или SnapshotUploader_, и расширением .log. Выберите соответствующую пиктограмму, чтобы скачать все файлы журналов, или открыть их в браузере.
Имя файла содержит уникальный суффикс, который идентифицирует экземпляр службы приложений. Если экземпляр службы приложений размещен на нескольких компьютерах, для каждого компьютера существуют отдельные файлы журналов. Когда отправитель обнаруживает новый файл минидампа, он записывается в файл журнала. Вот пример успешного создания моментального снимка и загрузки:
SnapshotUploader.exe Information: 0 : Received Fork request ID <request-ID> from process <ID> (Low pri)
DateTime=2018-03-09T01:42:41.8571711Z
SnapshotUploader.exe Information: 0 : Creating minidump from Fork request ID <request-ID> from process 6368 (Low pri)
DateTime=2018-03-09T01:42:41.8571711Z
SnapshotUploader.exe Information: 0 : Dump placeholder file created: <request-ID>.dm_
DateTime=2018-03-09T01:42:41.8728496Z
SnapshotUploader.exe Information: 0 : Dump available <request-ID>.dmp
DateTime=2018-03-09T01:42:45.7525022Z
SnapshotUploader.exe Information: 0 : Successfully wrote minidump to D:\local\Temp\Dumps\<connection-string>\<request-ID>.dmp
DateTime=2018-03-09T01:42:45.7681360Z
SnapshotUploader.exe Information: 0 : Uploading D:\local\Temp\Dumps\<connection-string>\<request-ID>.dmp, 214.42 MB (uncompressed)
DateTime=2018-03-09T01:42:45.7681360Z
SnapshotUploader.exe Information: 0 : Upload successful. Compressed size 86.56 MB
DateTime=2018-03-09T01:42:59.6184651Z
SnapshotUploader.exe Information: 0 : Extracting PDB info from D:\local\Temp\Dumps\<connection-string>\<request-ID>.dmp.
DateTime=2018-03-09T01:42:59.6184651Z
SnapshotUploader.exe Information: 0 : Matched 2 PDB(s) with local files.
DateTime=2018-03-09T01:42:59.6809606Z
SnapshotUploader.exe Information: 0 : Stamp does not want any of our matched PDBs.
DateTime=2018-03-09T01:42:59.8059929Z
SnapshotUploader.exe Information: 0 : Deleted D:\local\Temp\Dumps\<connection-string>\<request-ID>.dmp
DateTime=2018-03-09T01:42:59.8530649Z
Примечание.
В предыдущем примере используется версия 1.2.0 Microsoft.ApplicationInsights.SnapshotCollector пакета NuGet. В более ранних версиях процесс загрузки называется MinidumpUploader.exe, а журнал менее детализированный.
В предыдущем примере строка подключения должна соответствовать строке подключения для приложения.
Мини-dump связан с моментальным снимком с идентификатором запроса. Позже этот идентификатор можно использовать для поиска связанной записи исключений в аналитике Application Insights.
Отправитель проверяет наличие новых PDB-файлов примерно один раз каждые 15 минут. Приведем пример:
SnapshotUploader.exe Information: 0 : PDB rescan requested.
DateTime=2018-03-09T01:47:19.4457768Z
SnapshotUploader.exe Information: 0 : Scanning D:\home\site\wwwroot for local PDBs.
DateTime=2018-03-09T01:47:19.4457768Z
SnapshotUploader.exe Information: 0 : Local PDB scan complete. Found 2 PDB(s).
DateTime=2018-03-09T01:47:19.4614027Z
SnapshotUploader.exe Information: 0 : Deleted PDB scan marker : D:\local\Temp\Dumps\<connection-string>\<process-ID>.pdbscan
DateTime=2018-03-09T01:47:19.4614027Z
Для приложений не размещенных в службе приложений, журналы отправителя находятся в той же папке, что и минидампы: %TEMP%\Dumps\<string>, где <string> находится строка подключения.
Устранение неполадок с облачными службами
В облачных службах размер временной папки по умолчанию может быть слишком мал для хранения файлов минидампов. Это приводит к потере моментальных снимков. Необходимый размер зависит от общего рабочего набора приложения и количества одновременных моментальных снимков.
Как правило, рабочий набор веб-роли 32-разрядного приложения ASP.NET может занимать от 200 МБ до 500 МБ. Предусмотрите место хотя бы для двух одновременных снимков. Например, если ваше приложение использует 1 ГБ общего рабочего набора, следует убедиться, что для хранения моментальных снимков есть не менее 2 ГБ дискового пространства.
Настройте роль облачной службы с выделенным локальным ресурсом для моментальных снимков:
Добавьте новый локальный ресурс в облачную службу, изменив файл определения облачной службы (CSDEF). В следующем примере определяется ресурс с именем
SnapshotStoreи размером 5 ГБ.<LocalResources> <LocalStorage name="SnapshotStore" cleanOnRoleRecycle="false" sizeInMB="5120" /> </LocalResources>Измените код запуска роли, чтобы добавить переменную среды, указывающую на локальный ресурс
SnapshotStore. Для рабочих ролей код необходимо добавить в методOnStartнужной роли:public override bool OnStart() { Environment.SetEnvironmentVariable("SNAPSHOTSTORE", RoleEnvironment.GetLocalResource("SnapshotStore").RootPath); return base.OnStart(); }Для веб-ролей (ASP.NET) код необходимо добавить в метод
Application_Startвеб-приложения:using Microsoft.WindowsAzure.ServiceRuntime; using System; namespace MyWebRoleApp { public class MyMvcApplication : System.Web.HttpApplication { protected void Application_Start() { Environment.SetEnvironmentVariable("SNAPSHOTSTORE", RoleEnvironment.GetLocalResource("SnapshotStore").RootPath); // TODO: The rest of your application startup code } } }Обновите файл ApplicationInsights.config вашей роли, чтобы переопределить расположение временной папки, используемой
SnapshotCollector.<TelemetryProcessors> <Add Type="Microsoft.ApplicationInsights.SnapshotCollector.SnapshotCollectorTelemetryProcessor, Microsoft.ApplicationInsights.SnapshotCollector"> <!-- Use the SnapshotStore local resource for snapshots --> <TempFolder>%SNAPSHOTSTORE%</TempFolder> <!-- Other SnapshotCollector configuration options --> </Add> </TelemetryProcessors>
Переопределение папки теневого копирования
При запуске Сборщика Моментальных Снимков он пытается найти на диске папку, которая подходит для запуска процесса Загрузчика Моментальных Снимков. Выбранная папка называется папкой теневого копирования.
Сборщик моментальных снимков проверяет несколько известных местоположений, гарантируя наличие прав на копирование бинарных файлов программы отправки моментальных снимков. Используются следующие переменные среды:
Fabric_Folder_App_TempLOCALAPPDATAAPPDATATEMP
Если не удается найти подходящую папку, сборщик моментальных снимков сообщает об ошибке с сообщением "Не удалось найти подходящую папку теневого копирования".
Если не удается сделать копию, сборщик моментальных снимков сообщает об ошибке ShadowCopyFailed.
Если средство отправки невозможно запустить, Snapshot Collector сообщает об ошибке UploaderCannotStartFromShadowCopy . Текст сообщения часто содержит System.UnauthorizedAccessException. Эта ошибка обычно возникает из-за того, что приложение работает от имени учетной записи с ограниченными разрешениями. У учетной записи есть разрешение на запись в папку теневого копирования, но у нее нет разрешения на запуск кода.
Так как эти ошибки обычно возникают во время запуска, за ними часто следует ошибка ExceptionDuringConnect, указывающая, что загрузчик не удалось запустить.
Чтобы обойти эти ошибки, можно вручную указать папку теневого копирования с помощью ShadowCopyFolder параметра конфигурации. Например, в файле ApplicationInsights.config:
<TelemetryProcessors>
<Add Type="Microsoft.ApplicationInsights.SnapshotCollector.SnapshotCollectorTelemetryProcessor, Microsoft.ApplicationInsights.SnapshotCollector">
<!-- Override the default shadow copy folder. -->
<ShadowCopyFolder>D:\SnapshotUploader</ShadowCopyFolder>
<!-- Other SnapshotCollector configuration options -->
</Add>
</TelemetryProcessors>
Или же в файле appsettings.json, если вы используете его с приложением .NET Core:
{
"ApplicationInsights": {
"ConnectionString": "<your connection string>"
},
"SnapshotCollectorConfiguration": {
"ShadowCopyFolder": "D:\\SnapshotUploader"
}
}
Используйте поиск Application Insights, чтобы найти исключения с моментальными снимками
При создании моментального снимка вызванное исключение обозначается идентификатором моментального снимка. При передаче сведений об исключении в Application Insights этот snapshot ID добавляется в качестве пользовательского свойства. Используя поиск в Application Insights, вы можете найти все записи с пользовательским свойством ai.snapshot.id.
- Перейдите к ресурсу Application Insights на портале Azure.
- Выберите Исследовать>Поиск.
- Введите
ai.snapshot.id, в текстовое поле поиска и нажмите Enter.
Если этот поиск не дает результатов, снимки состояния не были зафиксированы в Application Insights в выбранном диапазоне времени.
Чтобы найти в журналах Uploader определенный идентификатор моментального снимка, введите этот идентификатор в поле поиска. Если не удается найти записи для снимка, который, как вам известно, был загружен, выполните следующие действия:
Дважды убедитесь, что вы просматриваете нужный ресурс Application Insights, проверяя строку подключения.
С помощью метки времени из журнала отправителя, настройте фильтр диапазона времени поиска так, чтобы охватить этот диапазон времени.
Если исключение с таким идентификатором снимка по-прежнему не отображается, значит, запись об этом исключении не была зарегистрирована в Application Insights. Это происходит в случае сбоя приложения после снятия снимка, но до того, как оно передало запись исключения. В этом случае проверьте журналы службы приложений в Diagnose and solve problems, чтобы проверить, были ли неожиданные перезагрузки или необработанные исключения.
Изменение правил прокси-сервера сети или брандмауэра
Если приложение подключается к Интернету через прокси-сервер или брандмауэр, может потребоваться обновить правила для взаимодействия со службой отладчика моментальных снимков.
IP-адреса, используемые службой Application Insights Snapshot Debugger, включены в тег службы Azure Monitor. Дополнительные сведения см. в обзоре тегов служб Azure для обеспечения безопасности виртуальной сети.
Существуют ли затраты на выставление счетов при использовании моментальных снимков?
Плата за подписку на Snapshot Debugger не взимается. Собранные файлы моментальных снимков хранятся отдельно от телеметрии, собранной пакетами SDK Application Insights, и плата за получение или хранение моментальных снимков не взимается.
Диагностика "Bring Your Own Storage" (BYOS)
Устранение распространенных проблем при настройке BYOS.
Сценарий: Template schema '{schema_uri}' isn't supported
Вы получили ошибку, аналогичную следующему примеру:
New-AzResourceGroupDeployment : 11:53:49 AM - Error: Code=InvalidTemplate; Message=Deployment template validation failed: 'Template schema
'https://schema.management.azure.com/schemas/2020-01-01/deploymentTemplate.json#' is not supported. Supported versions are
'2014-04-01-preview,2015-01-01,2018-05-01,2019-04-01,2019-08-01'. Please see https://aka.ms/arm-template for usage details.'.
Решения
Убедитесь, что свойство шаблона
$schemaявляется допустимым. Он должен соответствовать следующему шаблону:https://schema.management.azure.com/schemas/{schema_version}/deploymentTemplate.json#Убедитесь, что значение параметра
schema_versionшаблона находится в допустимых пределах:2014-04-01-preview, 2015-01-01, 2018-05-01, 2019-04-01, 2019-08-01.
Сценарий: No registered resource provider found for location '{location}'
Вы получили ошибку, аналогичную следующему примеру:
New-AzResourceGroupDeployment : 6:18:03 PM - Resource microsoft.insights/components 'byos-test-westus2-ai' failed with message '{
"error": {
"code": "NoRegisteredProviderFound",
"message": "No registered resource provider found for location 'westus2' and API version '2020-03-01-preview' for type 'components'. The supported api-versions are '2014-04-01,
2014-08-01, 2014-12-01-preview, 2015-05-01, 2018-05-01-preview'. The supported locations are ', eastus, southcentralus, northeurope, westeurope, southeastasia, westus2, uksouth,
canadacentral, centralindia, japaneast, australiaeast, koreacentral, francecentral, centralus, eastus2, eastasia, westus, southafricanorth, northcentralus, brazilsouth, switzerlandnorth,
australiasoutheast'."
}
}'
Решения
- Убедитесь, что параметр
apiVersionресурсаmicrosoft.insights/componentsимеет значение2015-05-01. - Убедитесь, что параметр
apiVersionресурсаlinkedStorageAccountимеет значение2020-03-01-preview.
Сценарий: Storage account location should match Application Insights component location
Вы получили ошибку, аналогичную следующему примеру:
New-AzResourceGroupDeployment : 1:01:12 PM - Resource microsoft.insights/components/linkedStorageAccounts 'byos-test-centralus-ai/serviceprofiler' failed with message '{
"error": {
"code": "BadRequest",
"message": "Storage account location should match AI component location",
"innererror": {
"trace": [
"System.ArgumentException"
]
}
}
}'
Решение
Убедитесь, что расположение ресурса Application Insights совпадает с учетной записью хранения.