Устранение неполадок с включением отладчика моментальных снимков Application Insights или просмотром моментальных снимков

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

Существует множество различных причин, по которым моментальные снимки не создаются. Для начала можно запустить snapshot проверка работоспособности, чтобы определить некоторые из возможных распространенных причин.

Не поддерживаемые сценарии

Ниже приведены сценарии, в которых сборщик моментальных снимков не поддерживается:

Сценарий Побочные эффекты Рекомендация
Если вы используете пакет SDK сборщика моментальных снимков в приложении напрямую (CSPROJ) и включили параметр "Взаимодействие". Локальный пакет SDK Для Application Insights (включая данные телеметрии сборщика моментальных снимков) будет потерян; таким образом, моментальные снимки не будут доступны.
При запуске приложения может произойти сбой System.ArgumentException: telemetryProcessorTypedoes not implement ITelemetryProcessor
Дополнительные сведения о функции "Взаимодействие" в Application Insights см. в статье Мониторинг приложений для Служба приложений Azure и ASP.NET Core.
Если вы используете параметр "Взаимодействие", используйте внедрение сборщика моментальных снимков без кода (включено с помощью пользовательского интерфейса портал Azure).

Убедитесь, что вы используете соответствующую конечную точку отладчика моментальных снимков.

В настоящее время единственными регионами, в которых требуется изменение конечной точки, являются Azure для государственных организаций и Azure для Китая.

Для Служба приложений и приложений, использующих пакет SDK для Application Insights, необходимо обновить строка подключения с помощью поддерживаемых переопределений для отладчика моментальных снимков, как определено ниже.

Свойство строки подключения Облако для государственных организаций США Облако для Китая
SnapshotEndpoint https://snapshot.monitor.azure.us https://snapshot.monitor.azure.cn

Дополнительные сведения о других переопределениях подключений см. в документации по Application Insights.

Для приложения-функции необходимо обновить с помощью поддерживаемых переопределений host.json ниже:

Property Облако для государственных организаций США Облако для Китая
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"
      }
    }
  }
}

Использование проверка работоспособности snapshot

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

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

Снимок экрана: ввод проверка работоспособности snapshot.

Интерактивный интерфейс, похожий на чат, ищет распространенные проблемы и помогает устранить их.

Снимок экрана: интерактивное окно проверки работоспособности с описанием проблем и рекомендациями по их устранению.

Если это не решит проблему, ознакомьтесь со следующими инструкциями по устранению неполадок вручную.

Проверка ключа инструментирования

Убедитесь, что вы используете правильный ключ инструментирования в опубликованном приложении. Обычно ключ инструментирования считывается из файлаApplicationInsights.config . Убедитесь, что значение совпадает с ключом инструментирования для ресурса Application Insights, который отображается на портале.

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

Проверьте параметры клиента TLS/SSL (ASP.NET)

Если у вас есть приложение ASP.NET, размещенное в Служба приложений Azure или в IIS на виртуальной машине, приложение может не подключиться к службе отладчика моментальных снимков из-за отсутствия протокола безопасности SSL.

Для конечной точки отладчика моментальных снимков требуется TLS версии 1.2. Набор протоколов безопасности SSL является одним из причуд, включенных 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 в ОС.

Предварительные версии .NET Core

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

Проверьте страницу состояния расширения сайта диагностических служб.

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

Примечание.

Установка отладчика моментальных снимков Application Insights без кода соответствует политике поддержки .NET Core. Дополнительные сведения о поддерживаемых средах выполнения см . в разделе Политика поддержки .NET Core.

Вы можете проверка страницу состояния этого расширения, перейдя по следующему URL-адресу:https://{site-name}.scm.azurewebsites.net/DiagnosticServices

Примечание.

Домен ссылки "Страница состояния" зависит от облака. Этот домен будет таким же, как сайт управления Kudu для Служба приложений.

На этой странице состояния отображается состояние установки агентов Профилировщика и сборщика моментальных снимков. Если произошла непредвиденная ошибка, она отобразится и покажет, как ее исправить.

Вы можете использовать сайт управления Kudu для Служба приложений, чтобы получить базовый URL-адрес этой страницы состояния:

  1. Откройте приложение Служба приложений в портал Azure.
  2. Выберите Дополнительные инструменты или найдите Kudu.
  3. Выберите Выполнить.
  4. Когда вы перейдете на сайт управления Kudu, в URL-адрес добавьте /DiagnosticServices и нажмите клавишу ВВОД. Он закончится следующим образом: https://<kudu-url>/DiagnosticServices.

Обновление до последней версии пакета NuGet

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

  • Если отладчик моментальных снимков был включен в области Application Insights на портале, в приложении уже должен быть запущен последний пакет NuGet.

  • Если отладчик моментальных снимков был включен путем включения пакета NuGet Microsoft.ApplicationInsights.SnapshotCollector , используйте диспетчер пакетов NuGet Visual Studio, чтобы убедиться, что используется последняя версия Microsoft.ApplicationInsights.SnapshotCollector.

Последние обновления и исправления ошибок см. в заметках о выпуске.

Проверка журналов средства отправки

После создания snapshot на диске создается файл minidump (.dmp). Отдельный процесс отправки создает этот файл minidump и передает его вместе со связанными PDB-файлами в хранилище отладчика моментальных снимков Application Insights. После успешной отправки минидамп удаляется с диска. Файлы журнала для процесса отправки хранятся на диске. В среде Служба приложений эти журналы можно найти в D:\Home\LogFiles. Используйте сайт управления Kudu для Служба приложений, чтобы найти эти файлы журнала.

  1. Откройте приложение Служба приложений в портал Azure.
  2. Выберите Дополнительные инструменты или найдите Kudu.
  3. Выберите Выполнить.
  4. В раскрывающемся списке Консоль отладки выберите CMD.
  5. Выберите LogFiles.

Вы должны увидеть по крайней мере один файл с именем, начинающимся с Uploader_ или SnapshotUploader_ , и расширением .log . Щелкните соответствующий значок, чтобы скачать файлы журнала или открыть их в браузере. Имя файла содержит уникальный суффикс, определяющий экземпляр Служба приложений. Если экземпляр Служба приложений размещен на нескольких компьютерах, для каждого компьютера имеются отдельные файлы журнала. Когда средство отправки обнаруживает новый файл minidump, он записывается в файл журнала. Ниже приведен пример успешного snapshot и отправки:

SnapshotUploader.exe Information: 0 : Received Fork request ID 139e411a23934dc0b9ea08a626db16c5 from process 6368 (Low pri)
    DateTime=2018-03-09T01:42:41.8571711Z
SnapshotUploader.exe Information: 0 : Creating minidump from Fork request ID 139e411a23934dc0b9ea08a626db16c5 from process 6368 (Low pri)
    DateTime=2018-03-09T01:42:41.8571711Z
SnapshotUploader.exe Information: 0 : Dump placeholder file created: 139e411a23934dc0b9ea08a626db16c5.dm_
    DateTime=2018-03-09T01:42:41.8728496Z
SnapshotUploader.exe Information: 0 : Dump available 139e411a23934dc0b9ea08a626db16c5.dmp
    DateTime=2018-03-09T01:42:45.7525022Z
SnapshotUploader.exe Information: 0 : Successfully wrote minidump to D:\local\Temp\Dumps\c12a605e73c44346a984e00000000000\139e411a23934dc0b9ea08a626db16c5.dmp
    DateTime=2018-03-09T01:42:45.7681360Z
SnapshotUploader.exe Information: 0 : Uploading D:\local\Temp\Dumps\c12a605e73c44346a984e00000000000\139e411a23934dc0b9ea08a626db16c5.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\c12a605e73c44346a984e00000000000\139e411a23934dc0b9ea08a626db16c5.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\c12a605e73c44346a984e00000000000\139e411a23934dc0b9ea08a626db16c5.dmp
    DateTime=2018-03-09T01:42:59.8530649Z

Примечание.

Приведенный выше пример относится к версии 1.2.0 Microsoft.ApplicationInsights.SnapshotCollector пакета NuGet. В более ранних версиях вызывается MinidumpUploader.exe процесс отправки, а журнал менее подробный.

В предыдущем примере ключ инструментирования имеет значение c12a605e73c44346a984e00000000000. Это значение должно соответствовать ключу инструментирования для приложения. Minidump связан с snapshot с идентификатором 139e411a23934dc0b9ea08a626db16c5. Этот идентификатор можно использовать позже, чтобы найти связанную запись об исключении в Application Insights Analytics.

Средство отправки сканирует новые 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\c12a605e73c44346a984e00000000000\6368.pdbscan
    DateTime=2018-03-09T01:47:19.4614027Z

Для приложений, которые не размещены в Служба приложений, журналы загрузчика находятся в той же папке, что и минидампы: %TEMP%\Dumps\<ikey> (где <ikey> — ключ инструментирования).

Устранение неполадок Облачные службы

В Облачные службы временная папка по умолчанию может быть слишком маленькой для хранения файлов minidump, что приводит к потере моментальных снимков.

Требуемое пространство зависит от общего рабочего набора приложения и количества одновременных моментальных снимков.

Рабочий набор 32-разрядной веб-роли ASP.NET обычно составляет от 200 ДО 500 МБ. Разрешить по крайней мере два одновременных моментальных снимка.

Например, если приложение использует 1 ГБ общего рабочего набора, убедитесь, что для хранения моментальных снимков требуется не менее 2 ГБ места на диске.

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

  1. Добавьте новый локальный ресурс в облачную службу, изменив csdef-файл определения облачной службы. В следующем примере определяется ресурс SnapshotStore размером 5 ГБ.

    <LocalResources>
      <LocalStorage name="SnapshotStore" cleanOnRoleRecycle="false" sizeInMB="5120" />
    </LocalResources>
    
  2. Измените код запуска роли, чтобы добавить переменную среды, указывающую на локальный 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
           }
        }
    }
    
  3. Обновите файл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_Temp
  • LOCALAPPDATA
  • APPDATA
  • TEMP

Если подходящую папку не удается найти, сборщик моментальных снимков сообщает об ошибке "Не удалось найти подходящую папку теневого копирования".

В случае сбоя копирования сборщик моментальных снимков сообщает об ошибке ShadowCopyFailed .

Если средство отправки не удается запустить, сборщик моментальных снимков сообщает об ошибке UploaderCannotStartFromShadowCopy . Текст сообщения часто содержит System.UnauthorizedAccessException. Эта ошибка обычно возникает из-за того, что приложение выполняется под учетной записью с ограниченными разрешениями. У учетной записи есть разрешение на запись в папку теневого копирования, но она не имеет разрешения на выполнение кода.

Так как эти ошибки обычно возникают во время запуска, за ними обычно ExceptionDuringConnect следует сообщение об ошибке "Uploader не удалось запустить".

Чтобы обойти эти ошибки, можно указать папку теневого копирования вручную с помощью параметра конфигурации 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": {
    "InstrumentationKey": "<your instrumentation key>"
  },
  "SnapshotCollectorConfiguration": {
    "ShadowCopyFolder": "D:\\SnapshotUploader"
  }
}

Использование поиска Application Insights для поиска исключений с моментальными снимками

При создании snapshot вызывающее исключение помечается идентификатором snapshot. Этот snapshot идентификатор включается в качестве настраиваемого свойства при сообщении об исключении в Application Insights. С помощью Поиск в Application Insights можно найти все записи с пользовательским свойствомai.snapshot.id.

  1. Перейдите к ресурсу Application Insights в портал Azure.
  2. Выберите Поиск.
  3. Введите ai.snapshot.id в текстовое поле Поиск и нажмите клавишу ВВОД.

Снимок экрана: поиск данных телеметрии с идентификатором snapshot на портале.

Если этот поиск не возвращает результатов, то в Application Insights в выбранном диапазоне времени не было сообщено ни о каких моментальных снимках.

Чтобы найти определенный идентификатор snapshot из журналов загрузчика, введите этот идентификатор в поле Поиск. Если не удается найти записи для snapshot, который, как вы знаете, был отправлен, выполните следующие действия.

  1. Дважды проверка, что вы ищете правильный ресурс Application Insights, проверив ключ инструментирования.

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

Если вы по-прежнему не видите исключение с этим идентификатором snapshot, запись об исключении не была сообщена в Application Insights. Такая ситуация может произойти, если ваше приложение произошло сбоем после того, как оно приняло snapshot но до того, как оно сообщило о записи исключения. В этом случае проверка журналы Служба приложений в разделеDiagnose and solve problems, чтобы узнать, были ли непредвиденные перезапуски или необработанных исключений.

Изменение правил сетевого прокси-сервера или брандмауэра

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

IP-адреса, используемые отладчиком моментальных снимков Application Insights, включаются в тег службы Azure Monitor. Дополнительные сведения см. в документации по тегам служб.

Свяжитесь с нами для получения помощи

Если у вас есть вопросы или вам нужна помощь, создайте запрос в службу поддержки или обратитесь за поддержкой сообщества Azure. Вы также можете отправить отзыв о продукте в сообщество отзывов Azure.