Поделиться через


Устранение неполадок интеграции Application Insights с Службой приложений Azure

В этой статье представлены общие рекомендации и конкретные рекомендации по устранению неполадок с мониторингом приложений в Службе приложений Azure.

Замечание

Некоторые действия по устранению неполадок на этой странице применимы только к определенным языкам или платформам, как указано на доступных вкладках.

Отсутствуют данные телеметрии

Замечание

При создании веб-приложения со средами выполнения ASP.NET в Службе приложений развертывается статическая HTML-страница в качестве стартового веб-сайта. Мы не рекомендуем пытаться устранить проблему с шаблоном по умолчанию. Разверните приложение перед устранением неполадок.

  1. Убедитесь, что параметр приложения ApplicationInsightsAgent_EXTENSION_VERSION имеет значение ~2.

  2. Перейдите по ссылке https://yoursitename.scm.azurewebsites.net/ApplicationInsights.

    Снимок экрана: страница результатов предыдущей ссылки. lightbox="media/troubleshoot-app-service/app-insights-sdk-status.png"::

    • Подтвердите, что Application Insights Extension Status это Pre-Installed Site Extension, version 2.8.x.xxxx и что оно работает.

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

    • Убедитесь, что источник состояния существует и выглядит как Status source D:\home\LogFiles\ApplicationInsights\status\status_RD0003FF0317B6_4248_1.json.

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

    • Убедитесь, что параметр IKeyExists имеет значение true. Если это не так, добавьте APPINSIGHTS_INSTRUMENTATIONKEY и APPLICATIONINSIGHTS_CONNECTION_STRING вместе с GUID ключа инструментирования в настройки вашего приложения.

    • Убедитесь, что не существует записей для AppAlreadyInstrumented, AppContainsDiagnosticSourceAssembly и AppContainsAspNetTelemetryCorrelationAssembly.

      Если какая-либо из этих записей существует, удалите из приложения следующие пакеты: Microsoft.ApplicationInsights, System.Diagnostics.DiagnosticSource и Microsoft.AspNet.TelemetryCorrelation.

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

При создании веб-приложения со средами выполнения ASP.NET в App Service разворачивается одна статическая HTML-страница в качестве начального веб-сайта. Статическая веб-страница также загружает веб-часть, управляемую ASP.NET, в IIS. Эта страница позволяет тестировать мониторинг на стороне сервера без кода, но не поддерживает автоматический клиентский мониторинг.

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

APPINSIGHTS_JAVASCRIPT_ENABLED и urlCompression не поддерживаются

При использовании APPINSIGHTS_JAVASCRIPT_ENABLED=true в случаях, когда содержимое закодировано, могут возникнуть такие ошибки:

  • Ошибка переопределения URL-адреса 500.
  • Ошибка модуля перезаписи URL-адреса 500.53 с сообщением "Правила перезаписи исходящего трафика нельзя применить, если содержимое HTTP-ответа закодировано ("gzip").

Ошибка возникает из-за того, что параметр приложения APPINSIGHTS_JAVASCRIPT_ENABLED установлен на true и одновременно присутствует кодировка содержимого. Этот сценарий пока не поддерживается. Обходной путь — удалить APPINSIGHTS_JAVASCRIPT_ENABLED из параметров приложения. К сожалению, если инструментирование JavaScript на стороне клиента или браузера по-прежнему требуется, необходимо вручную указать ссылки на пакет SDK для ваших веб-страниц. Следуйте инструкциям по ручному инструментированию с помощью пакета SDK для JavaScript.

Самая свежая информация об агенте и расширении Application Insights доступна в заметках о выпуске.

PHP и WordPress не поддерживаются

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

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

Значение проблемы Explanation Исправить
AppAlreadyInstrumented:true Это значение указывает, что расширение обнаружило некоторый аспект SDK, уже присутствующий в приложении, и прекращает выполнение. Ссылка на System.Diagnostics.DiagnosticSource, Microsoft.AspNet.TelemetryCorrelationили Microsoft.ApplicationInsights может вызвать это значение. Удалите ссылки. Некоторые из этих ссылок добавляются по умолчанию из определенных шаблонов Visual Studio. В более ранние версии Visual Studio могут добавляться ссылки Microsoft.ApplicationInsights.
AppAlreadyInstrumented:true Наличие предыдущих библиотек DLL в папке приложения из предыдущего развертывания также может привести к этому значению. Очистите папку приложения, чтобы убедиться, что эти библиотеки DLL удалены. Проверьте каталог корзины локального приложения и каталог wwwroot в ресурсе Служба приложений. Чтобы проверить каталог wwwroot веб-приложения службы приложений, выберите Дополнительные инструменты (Kudu)>Консоль отладки>CMD>home\site\wwwroot.
AppContainsAspNetTelemetryCorrelationAssembly: true Это значение указывает, что расширение обнаружило ссылки на Microsoft.AspNet.TelemetryCorrelation в приложении и отступает. Удаление ссылки.
AppContainsDiagnosticSourceAssembly**:true Это значение указывает, что расширение обнаружило ссылки на System.Diagnostics.DiagnosticSource в приложении и отступает. Для ASP.NET удалите ссылку.
IKeyExists:false Это значение указывает, что ключ инструментирования отсутствует в параметре APPINSIGHTS_INSTRUMENTATIONKEYприложения. Возможные причины могут быть в том, что значения были случайно удалены или вы забыли задать значения в скрипте автоматизации. Убедитесь, что этот параметр присутствует в настройках приложения службы приложений.

System.IO.FileNotFoundException после обновления 2.8.44

Версия 2.8.44 автоинструментирования обновляет SDK Application Insights до версии 2.20.0. Пакет SDK Application Insights имеет непрямую ссылку на System.Runtime.CompilerServices.Unsafe.dll через System.Diagnostics.DiagnosticSource.dll. Если у приложения есть перенаправление привязки для System.Runtime.CompilerServices.Unsafe.dll, и если эта библиотека отсутствует в папке приложения, это может вызвать System.IO.FileNotFoundException.

Чтобы устранить эту проблему, удалите запись перенаправления привязки для System.Runtime.CompilerServices.Unsafe.dll из файла web.config. Если приложение хотело использовать System.Runtime.CompilerServices.Unsafe.dll, задайте перенаправление привязки, как показано ниже:

<dependentAssembly>
    <assemblyIdentity name="System.Runtime.CompilerServices.Unsafe" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
    <bindingRedirect oldVersion="0.0.0.0-4.0.4.1" newVersion="4.0.4.1" />
</dependentAssembly>

В качестве временного обходного решения можно задать для параметра ApplicationInsightsAgent_EXTENSION_VERSION приложения значение 2.8.37. Этот параметр активирует Службу приложений для использования старого расширения Application Insights. Временные меры по устранению рисков следует использовать только в качестве промежуточного.

Повторяющаяся телеметрия

Используйте автоинструментацию только в Службе приложений, если вы не используете ручное инструментирование OpenTelemetry в коде, например дистрибутив OpenTelemetry в Azure Monitor или экспортер OpenTelemetry в Azure Monitor.

Использование автоматической инструментализации поверх ручной инструментализации может привести к дублированию телеметрии и увеличению затрат. Чтобы использовать автоинструментирование OpenTelemetry в Службе приложений, сначала удалите все настройки ручного инструментирования OpenTelemetry из вашего кода.

Если вы видите непредвиденные расходы или высокие затраты в Application Insights, это руководство может помочь. В ней рассматриваются распространенные причины, такие как высокий объем телеметрии, пики приема данных и неправильно настроенная выборка. Особенно полезно, если вы устраняете проблемы, связанные с резким увеличением затрат, объемом телеметрии, неисправной выборкой, ограничениями данных, высокой нагрузкой на прием данных или неожиданными счетами. Чтобы начать, ознакомьтесь с материалом по устранению неполадок в случае высокого объёма поступающих данных в Application Insights.

Приложения Django

Если приложение использует Django и не запускается или использует неверные параметры, обязательно установите DJANGO_SETTINGS_MODULE переменную среды. См. раздел инструментария Django для получения подробностей.

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

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

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