В этой статье представлены общие рекомендации и конкретные рекомендации по устранению неполадок с мониторингом приложений в Службе приложений Azure.
Замечание
Некоторые действия по устранению неполадок на этой странице применимы только к определенным языкам или платформам, как указано на доступных вкладках.
Отсутствуют данные телеметрии
Замечание
При создании веб-приложения со средами выполнения ASP.NET в Службе приложений развертывается статическая HTML-страница в качестве стартового веб-сайта.
Мы не рекомендуем пытаться устранить проблему с шаблоном по умолчанию. Разверните приложение перед устранением неполадок.
Убедитесь, что параметр приложения ApplicationInsightsAgent_EXTENSION_VERSION имеет значение ~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 Core в Службе приложений развертывается статическая HTML-страница в качестве стартового веб-сайта. Мы не рекомендуем устранять проблему с шаблоном по умолчанию. Разверните приложение перед устранением неполадок.
Виндоус
Убедитесь, что параметр приложения ApplicationInsightsAgent_EXTENSION_VERSION имеет значение ~2.
Перейдите по ссылке https://yoursitename.scm.azurewebsites.net/ApplicationInsights.
Убедитесь, что состояние расширения Application InsightsPre-Installed Site Extension, version 2.8.x.xxxx, is running.
Если приложение не запущено, следуйте инструкциям в разделе Включить мониторинг Application Insights.
Убедитесь, что источник состояния существует и выглядит как Status source D:\home\LogFiles\ApplicationInsights\status\status_RD0003FF0317B6_4248_1.json.
Если подобное значение отсутствует, это означает, что приложение в данный момент не выполняется или не поддерживается. Чтобы убедиться, что приложение запущено, попробуйте вручную посетить конечные точки приложения или URL-адреса приложения, что позволяет получить сведения о среде выполнения.
Убедитесь, что IKeyExists имеет значение True. Если этот параметр имеет значение False, добавьте APPINSIGHTS_INSTRUMENTATIONKEY и APPLICATIONINSIGHTS_CONNECTION_STRING вместе с идентификатором GUID ikey в параметры приложения.
Если ваше приложение ссылается на любые пакеты Application Insights, включение интеграции Службы приложений может не оказать влияния, и эти данные могут не отображаться в Application Insights. Например, если вы ранее инструментировали или пытались инструментировать ваше приложение, используя SDK для ASP.NET Core. Чтобы устранить проблему, в портале Azure включите взаимодействие с SDK Application Insights.
Это важно
Эта функция доступна в режиме предварительной версии.
Данные отправляются с использованием безкодового подхода, даже если изначально использовался SDK Application Insights.
Это важно
Если приложение использовало пакет SDK Application Insights для отправки любой телеметрии, данные телеметрии будут отключены. Другими словами, пользовательская телеметрия (например, любые Track*() методы) и пользовательские настройки (например, выборка) будут отключены.
Линукс
Убедитесь, что параметр приложения ApplicationInsightsAgent_EXTENSION_VERSION имеет значение ~3.
Перейдите по ссылке https://your site name.scm.azurewebsites.net/ApplicationInsights.
На этом сайте убедитесь в следующем:
- Источник состояния существует и выглядит следующим образом
Status source /var/log/applicationinsights/status_abcde1234567_89_0.json.
- Отображается значение
Auto-Instrumentation enabled successfully . Если подобное значение отсутствует, это означает, что приложение не выполняется или не поддерживается. Чтобы убедиться, что приложение запущено, попробуйте вручную посетить конечные точки приложения или URL-адреса приложения, что позволяет получить сведения о среде выполнения.
-
IKeyExists — это
True. Если этот параметр имеет значение False, добавьте APPINSIGHTS_INSTRUMENTATIONKEY и APPLICATIONINSIGHTS_CONNECTION_STRING вместе с идентификатором GUID ikey в параметры приложения.
Убедитесь, что ApplicationInsightsAgent_EXTENSION_VERSION для параметра приложения задано значение ~2 в Windows, ~3 в Linux
Проверьте файл журнала, чтобы убедиться, что агент успешно запущен: перейдите к https://yoursitename.scm.azurewebsites.net/, затем, используя SSH, перейдите в корневой каталог; файл журнала находится в каталоге LogFiles/ApplicationInsights.
После включения мониторинга приложений для приложения Java вы можете проверить, работает ли агент, просматривая динамические метрики, даже перед развертыванием и приложением в Служба приложений вы увидите некоторые запросы из среды. Помните, что полный набор данных телеметрии доступен только при развертывании и запуске приложения.
Задайте APPLICATIONINSIGHTS_SELF_DIAGNOSTICS_LEVEL для переменной среды значение debug , если вы не видите никаких ошибок, и данные телеметрии отсутствуют.
Виндоус
Убедитесь, что для параметра приложения ApplicationInsightsAgent_EXTENSION_VERSION установлено значение ~2.
Перейдите по ссылке https://yoursitename.scm.azurewebsites.net/ApplicationInsights.
Убедитесь, что Application Insights Extension Status имеет значение Pre-Installed Site Extension, version 2.8.x.xxxx, is running..
Если мониторинг не запущен, следуйте инструкциям по включению мониторинга Application Insights.
Перейдите к файлу D:\local\Temp\status.json и откройте файл status.json.
Удостоверьтесь, что параметр SDKPresent имеет значение false, AgentInitializedSuccessfully — значение true, а для IKey указан действительный ключ инструментирования.
Пример JSON-файла:
"AppType":"node.js",
"MachineName":"c89d3a6d0357",
"PID":"47",
"AgentInitializedSuccessfully":true,
"SDKPresent":false,
"IKey":"00000000-0000-0000-0000-000000000000",
"SdkVersion":"1.8.10"
Если SDKPresent задано значение true, это означает, что расширение обнаружило, что некоторые аспекты пакета SDK уже присутствуют в приложении и будут отключаться.
Линукс
Убедитесь, что для параметра приложения ApplicationInsightsAgent_EXTENSION_VERSION установлено значение ~3.
Перейдите к файлу /var/log/applicationinsights/ и откройте файл status.json.
Удостоверьтесь, что параметр SDKPresent имеет значение false, AgentInitializedSuccessfully — значение true, а для IKey указан действительный ключ инструментирования.
Пример JSON-файла:
"AppType":"node.js",
"MachineName":"c89d3a6d0357",
"PID":"47",
"AgentInitializedSuccessfully":true,
"SDKPresent":false,
"IKey":"00000000-0000-0000-0000-000000000000",
"SdkVersion":"1.8.10"
Если SDKPresent задано значение true, это означает, что расширение обнаружило, что некоторые аспекты пакета SDK уже присутствуют в приложении и будут отключаться.
Если нет телеметрии, выполните следующие действия, чтобы убедиться, что автоинструментация включена правильно.
Убедитесь, что автоматическая инструментализация включена в интерфейсе Application Insights для вашего ресурса App Service.
Убедитесь, что ApplicationInsightsAgent_EXTENSION_VERSION параметр приложения имеет значение ~3 и APPLICATIONINSIGHTS_CONNECTION_STRING указывает на соответствующий ресурс Application Insights.
Проверьте автоинструментарий, диагностику и логи состояния.
a. Перейдите к /var/log/applicationinsights/ и откройте status_*.json.
б. Убедитесь, что AgentInitializedSuccessfully задано значение true и IKey имеется допустимый iKey.
Пример JSON-файла:
"AgentInitializedSuccessfully":true,
"AppType":"python",
"MachineName":"c89d3a6d0357",
"PID":"47",
"IKey":"00000000-0000-0000-0000-000000000000",
"SdkVersion":"1.0.0"
Файл applicationinsights-extension.log в той же папке может отображать другие полезные диагностики.
Веб-сайт по умолчанию, развернутый с помощью веб-приложений, не поддерживает автоматический мониторинг на стороне клиента.
При создании веб-приложения со средами выполнения ASP.NET в App Service разворачивается одна статическая HTML-страница в качестве начального веб-сайта. Статическая веб-страница также загружает веб-часть, управляемую ASP.NET, в IIS. Эта страница позволяет тестировать мониторинг на стороне сервера без кода, но не поддерживает автоматический клиентский мониторинг.
Если вы хотите протестировать безкодовое серверное и клиентское мониторинг для ASP.NET в веб-приложении в службе приложений, рекомендуется следовать официальным руководствам по созданию веб-приложения ASP.NET Framework. Затем используйте инструкции, описанные в текущей статье, чтобы включить мониторинг.
При создании веб-приложения со средами выполнения ASP.NET Core в службе App Service он развертывает одну статическую HTML-страницу в качестве стартового веб-сайта. Статическая веб-страница также загружает веб-часть, управляемую ASP.NET, в IIS. Это поведение позволяет тестировать мониторинг на стороне сервера без кода, но не поддерживает автоматическое мониторинг на стороне клиента.
Если вы хотите протестировать бессерверный сервер и мониторинг на стороне клиента для ASP.NET Core в веб-приложении Служба приложений, рекомендуется следовать официальным руководствам по созданию веб-приложения ASP.NET Core. Затем используйте инструкции, описанные в текущей статье, чтобы включить мониторинг.
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 не поддерживаются. В настоящее время отсутствует официально поддерживаемый пакет SDK или агент для серверного мониторинга этих рабочих нагрузок. Чтобы отслеживать клиентские транзакции на сайте PHP или WordPress, добавьте клиентский JavaScript на веб-страницы с помощью пакета SDK JavaScript.
В следующей таблице приведено объяснение того, что эти значения означают, их основные причины и рекомендуемые исправления.
| Значение проблемы |
Explanation |
Исправить |
AppAlreadyInstrumented:true |
Это значение указывает, что расширение обнаружило некоторый аспект SDK, уже присутствующий в приложении, и прекращает выполнение. Ссылка на Microsoft.ApplicationInsights.AspNetCore или Microsoft.ApplicationInsights может вызвать это значение. |
Удалите ссылки. Некоторые из этих ссылок добавляются по умолчанию из определенных шаблонов Visual Studio. Более ранние версии Visual Studio ссылаются на Microsoft.ApplicationInsights. |
AppAlreadyInstrumented:true |
Наличие Microsoft.ApplicationsInsights библиотеки DLL в папке приложения из предыдущего развертывания также может привести к этому значению. |
Очистите папку приложения, чтобы убедиться, что эти библиотеки DLL удалены. Проверьте каталог bin вашего локального приложения и каталог wwwroot в Службе приложений. (Чтобы проверить каталог wwwroot вашего веб-приложения Службы приложений, выберите Расширенные средства (Kudu) >Консоль отладки>CMD>home\site\wwwroot). |
IKeyExists:false |
Это значение указывает, что ключ инструментирования отсутствует в параметре APPINSIGHTS_INSTRUMENTATIONKEYприложения. Возможные причины включают случайное удаление значений или забыли задать значения в скрипте автоматизации. |
Убедитесь, что этот параметр присутствует в настройках приложения службы приложений. |
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приложения. Возможные причины могут быть в том, что значения были случайно удалены или вы забыли задать значения в скрипте автоматизации. |
Убедитесь, что этот параметр присутствует в настройках приложения службы приложений. |
Сайты PHP и WordPress не поддерживаются. В настоящее время отсутствует официально поддерживаемый пакет SDK или агент для серверного мониторинга этих рабочих нагрузок. Чтобы отслеживать клиентские транзакции на сайте PHP или WordPress, добавьте клиентский JavaScript на веб-страницы с помощью пакета SDK JavaScript.
В следующей таблице приведено объяснение того, что эти значения означают, их основные причины и рекомендуемые исправления.
| Значение проблемы |
Explanation |
Исправить |
AppAlreadyInstrumented:true |
Это значение указывает, что расширение обнаружило некоторый аспект SDK, уже присутствующий в приложении, и прекращает выполнение. Ссылка на Microsoft.ApplicationInsights.AspNetCore или Microsoft.ApplicationInsights может вызвать это значение. |
Удалите ссылки. Некоторые из этих ссылок добавляются по умолчанию из определенных шаблонов Visual Studio. Более ранние версии Visual Studio ссылаются на Microsoft.ApplicationInsights. |
AppAlreadyInstrumented:true |
Наличие Microsoft.ApplicationsInsights библиотеки DLL в папке приложения из предыдущего развертывания также может привести к этому значению. |
Очистите папку приложения, чтобы убедиться, что эти библиотеки DLL удалены. Проверьте каталог bin вашего локального приложения и каталог wwwroot в Службе приложений. (Чтобы проверить каталог wwwroot вашего веб-приложения Службы приложений, выберите Расширенные средства (Kudu) >Консоль отладки>CMD>home\site\wwwroot). |
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.