Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
В этой статье представлены действия по устранению неполадок и сведения, позволяющие использовать Application Insights Profiler для .NET.
Используется ли соответствующая конечная точка профилировщика .NET?
В настоящее время единственными регионами, для которых требуются изменения конечных точек, являются Azure для государственных организаций и Microsoft Azure, управляемые 21Vianet.
Параметр приложения | Облако для государственных организаций США | облако для Китая. |
---|---|---|
ApplicationInsightsProfilerEndpoint | https://profiler.monitor.azure.us |
https://profiler.monitor.azure.cn |
ApplicationInsightsEndpoint | https://dc.applicationinsights.us |
https://dc.applicationinsights.azure.cn |
Работает ли ваше приложение в правильной версии?
Профилировщик поддерживается в версиях .NET Framework позже 4.6.2.
Если ваше веб-приложение является приложением ASP.NET Core, оно должно работать под управлением последней поддерживаемой версии среды выполнения ASP.NET Core.
Вы используете правильный план обслуживания Azure?
Профилировщик для .NET в настоящее время не поддерживается в планах бесплатной или общей службы приложений. Перейдите на один из базовых планов Profiler, чтобы начать работу.
Примечание.
Вариант потребления для Azure Functions не поддерживается. См. профилирование работающего приложения на Azure Functions с помощью Application Insights.
Вы ищете данные профилировщика .NET в нужном временном интервале?
Если данные, которые вы пытаетесь просмотреть, старше двух недель, попробуйте ограничить фильтр времени и повторите попытку. Следы удаляются через семь дней.
Знаете ли вы о частоте выборки и накладной нагрузке профилировщика .NET?
Профилировщик .NET рандомно запускается на две минуты каждый час на каждой виртуальной машине, где размещены приложения с включённым профилировщиком.
Примечание.
При активной работе и сборе трассировок, Application Insights Profiler для .NET обычно увеличивает загрузку ЦП и памяти на сервере от 5% до 15%.
Дополнительные затраты на хранение данных, захваченных .NET Profiler, отсутствуют. Данные автоматически удаляются через 15 дней.
Вы можете получить доступ к шлюзу?
Убедитесь, что брандмауэр или прокси-серверы не блокируют доступ к этой веб-странице.
Видите ли вы тайм-ауты или вам нужно проверить, запущен ли профилировщик .NET?
Данные профилирования отправляются только тогда, когда их можно связать с запросом, созданным во время работы средства Profiler. Профилировщик .NET собирает данные в течение двух минут каждый час. Вы также можете активировать Profiler, запустив сеанс профилирования.
Профилировщик записывает сообщения трассировки и пользовательские события в ресурс Application Insights. Эти события можно использовать, чтобы увидеть, как работает профилировщик.
Найдите сообщения трассировки и пользовательские события, отправленные профилировщиком .NET в ресурс Application Insights.
В ресурсе Application Insights выберите "Поиск " в верхнем меню.
Используйте следующую строку поиска для поиска необходимых данных:
stopprofiler OR startprofiler OR upload OR ServiceProfilerSample
Предыдущие результаты поиска включают два примера поиска из двух ресурсов ИИ:
Если приложение не получает запросы во время работы средства Profiler, в сообщении объясняется, что отправка была отменена из-за отсутствия активности.
Средство Profiler запустилось и отправило пользовательские события при обнаружении запросов, произошедших во время его работы. Если настраиваемое событие
ServiceProfilerSample
отображается, это означает, что профиль был захвачен и доступен в панели производительности службы Application Insights.
Если записи не отображаются, профилировщик не работает или занимает слишком много времени для ответа. Убедитесь, что профилировщик включен в службе Azure.
Профилировщик .NET включен, но трассировки не фиксируются.
Даже когда профилировщик активирован, он может не записывать или отправлять трассировки, особенно в следующих ситуациях:
Нет входящих запросов к приложению:
Вы можете вручную вызвать приложение или создать тест доступности или нагрузочный тест.Входящая телеметрия не подтверждена Application Insights:
- Если в приложение поступает трафик: проверьте наличие входящих запросов, отображаемых в Application Insights Live Metrics.
-
Incoming Requests
Если диаграммы пусты (данные не отображаются или показывают ноль), устраните неполадки в Application Insights. - Если вы размещаете приложение .NET в службе приложений Azure App Service, попробуйте выполнить действия по устранению неполадок в службе приложений .NET.
Параметр профилировщика для выборки отключен:
Если трассировки профилировщика всё ещё недоступны, проверьте настройку выборки профилировщика.- Откройте панель Application Insights>Производительность.
- Нажмите на Профилировщик.
- Нажмите кнопку "Триггеры ".
- В параметрах триггера убедитесь, что тумблер Выборка включен.
Все еще не загружены следы?
Создайте запрос на поддержку или попросите службу поддержки сообщества Azure. Вы также можете отправить отзыв о продукте в сообщество отзывов Azure.
Двойной подсчет в параллельных потоках
Если два или более параллельных потока связаны с запросом, общая метрика времени в средстве просмотра стека может превышать длительность запроса. В таком случае общее время потока будет больше фактического затраченного времени.
Например, один поток может ожидать завершения другого. Зритель пытается обнаружить эту ситуацию и исключить неинтересное ожидание. При этом он склонен показывать слишком много информации, а не упускать то, что может быть критически важной информацией.
Обнаружив параллельные потоки в трассировках, укажите, какие потоки находятся в состоянии ожидания, чтобы можно было определить критический путь к запросу. Обычно поток, который быстро переходит в состояние ожидания, ожидает других потоков. Сосредоточьтесь на других потоках и игнорируйте время потоков, находящихся в ожидании.
Устранение неполадок с .NET Profiler в конкретной службе Azure
В следующих разделах описаны действия по устранению неполадок с помощью Профилировщика в службе приложений Azure.
Служба приложений Azure
Чтобы профилировщик .NET работал правильно, убедитесь, что:
Веб-приложение имеет включенный Application Insights с правильными параметрами.
Веб-задание ApplicationInsightsProfiler3 запущено. Чтобы проверить веб-задание:
Перейдите к Kudu. На портале Azure выполните следующие действия:
- В экземпляре службы приложений выберите Дополнительные инструменты на панели слева.
- Выберите Перейти.
В верхнем меню выберите Инструменты>панель мониторинга WebJobs. Откроется область WebJobs (Веб-задания).
Если ApplicationInsightsProfiler3 не отображается, перезапустите приложение Служба приложений.
Чтобы просмотреть сведения о веб-задании, включая журнал, выберите ссылку ApplicationInsightsProfiler3 . Откроется область Continuous WebJob Details (Сведения о непрерывных веб-заданиях).
Если профилировщик .NET по-прежнему не работает, скачайте журнал и подайте запрос в поддержку Azure.
Страница состояния расширения сайта служб диагностики
Если вы включили профилировщик .NET через панель Application Insights в портале, он управляется расширением сайта служб диагностики. Вы можете проверить страницу состояния этого расширения, перейдя на страницу https://{site-name}.scm.azurewebsites.net/DiagnosticServices
.
Примечание.
Домен ссылки на страницу состояния зависит от облака. Этот домен совпадает с сайтом управления Kudu для Службы приложений.
На странице состояния отображается состояние установки агентов профилировщика .NET и отладчика моментальных снимков. Если произошла непредвиденная ошибка, она отображается вместе с инструкциями по ее устранению.
Вы можете использовать сайт управления Kudu для службы приложений, чтобы получить базовый URL-адрес страницы состояния.
- Откройте службу приложений на портале Azure.
- Выберите Дополнительные инструменты.
- Выберите Перейти.
- На сайте управления Kudu:
- Добавьте
/DiagnosticServices
к URL-адресу. - Выберите Enter.
- Добавьте
Это заканчивается, как https://<kudu-url>/DiagnosticServices
.
Откроется страница состояния, аналогичная следующему примеру.
Примечание.
Установка без написания кода Application Insights Profiler для .NET осуществляется в соответствии с политикой поддержки .NET Core. Дополнительные сведения о поддерживаемых средах выполнения см. в политике поддержки .NET Core.
Установка вручную
При настройке профилировщика .NET обновления вносятся в параметры веб-приложения. При необходимости можно применить обновления вручную.
Слишком много активных сеансов профилирования
В службе приложений Azure можно запускать только один сеанс профилирования одновременно. Это ограничение применяется на уровне виртуальной машины для всех приложений и слотов развертывания, работающих в плане службы приложений. Это ограничение применяется одинаково к сеансам профилирования, запущенным с помощью диагностики и решения проблем, Kudu и Application Insights Profiler для .NET.
Если профилировщик .NET пытается запустить сеанс при выполнении другого, ошибка регистрируется в журнале приложений, а также в журнале непрерывных веб-заданий.ApplicationInsightsProfiler3
В журналах может отображаться одно из следующих сообщений:
Microsoft.ServiceProfiler.Exceptions.TooManyETWSessionException
Error: StartProfiler failed. Details: System.Runtime.InteropServices.COMException (0xE111005E): Exception from HRESULT: 0xE111005E
Код 0xE111005E
ошибки указывает, что сеанс профилирования не удалось запустить, так как другой сеанс уже запущен.
Чтобы избежать ошибки, переместите некоторые веб-приложения в другой план службы приложений или отключите профилировщик для некоторых приложений. Если вы используете слоты для развертывания, убедитесь, что остановили те слоты, которые в данный момент не используются.
Ошибка развертывания: каталог не пустой "D:\home\site\wwwroot\App_Data\jobs"
Если вы повторно развертываете веб-приложение на ресурс Web Apps, где включён профилировщик .NET, вы можете увидеть следующее сообщение:
Каталог не пуст "D:\home\site\wwwroot\App_Data\jobs"
Эта ошибка возникает при запуске веб-развертывания из скриптов или из Azure Pipelines. Устраните его, добавив следующие параметры развертывания в задачу веб-развертывания:
-skip:Directory='.*\\App_Data\\jobs\\continuous\\ApplicationInsightsProfiler.*' -skip:skipAction=Delete,objectname='dirPath',absolutepath='.*\\App_Data\\jobs\\continuous$' -skip:skipAction=Delete,objectname='dirPath',absolutepath='.*\\App_Data\\jobs$' -skip:skipAction=Delete,objectname='dirPath',absolutepath='.*\\App_Data$'
Эти параметры удаляют папку, используемую Application Insights Profiler для .NET, и разблокируют процесс повторного развертывания. Они не влияют на экземпляр профилировщика, который в данный момент запущен.
Работает ли Профилировщик Application Insights для .NET?
Профилировщик выполняется в качестве непрерывного веб-задания в веб-приложении. Вы можете открыть ресурс веб-приложения на портале Azure. Проверьте состояние ApplicationInsightsProfiler в области Веб-задания. Если он не работает, откройте Журналы, чтобы просмотреть дополнительные сведения.
Виртуальные машины
Чтобы узнать, правильно ли настроен профилировщик .NET с помощью диагностики Azure:
Убедитесь, что содержимое развернутой конфигурации Диагностики Azure соответствует вашим ожиданиям.
Убедитесь, что служба диагностики Azure передает правильный iKey в командной строке профилировщика.
Проверьте файл журнала Profiler, чтобы узнать, запущен ли профилировщик .NET, но вернул ошибку.
Чтобы проверить параметры, которые использовались для системы диагностики Azure:
Войдите в виртуальную машину.
Откройте файл журнала в этом местоположении. Версия подключаемого модуля может быть более новой на компьютере.
c:\WindowsAzure\logs\Plugins\Microsoft.Azure.Diagnostics.PaaSDiagnostics\1.11.3.12\DiagnosticsPlugin.log
В этом файле найдите строку
WadCfg
. В этой строке содержатся параметры, которые были переданы на виртуальную машину для настройки Диагностики Azure.Проверьте правильность ключа iKey, используемого приемником профилировщика .NET.
Проверьте командную строку для запуска Профилировщика. Аргументы командной строки находятся в следующем файле (диск может быть
c:
илиd:
каталог может быть скрыт):C:\ProgramData\ApplicationInsightsProfiler\config.json
Убедитесь, что iKey на командной строке Profiler указан правильно.
Используя путь, найденный в предыдущем config.json файле, проверьте файл журнала Profiler с именем
BootstrapN.log
. В нем отображается следующее:- Информация об отладке, включающая параметры, используемые Profiler.
- Сообщения о состоянии и сообщения об ошибках из Profiler.
Файл можно найти по следующему пути:
C:\WindowsAzure\Logs\Plugins\Microsoft.Azure.Diagnostics.IaaSDiagnostics\1.17.0.6\ApplicationInsightsProfiler
Если профилировщик .NET запущен во время получения вашим приложением запросов, появится следующее сообщение: "Обнаружена активность от iKey".
При отправке трассировки появится следующее сообщение: "Начать отправку трассировки".
Изменение правил прокси-сервера сети или брандмауэра
Если приложение подключается к Интернету через прокси-сервер или брандмауэр, может потребоваться обновить правила для взаимодействия с профилировщиком .NET.
IP-адреса, используемые Application Insights Profiler для .NET, включаются в тег службы Azure Monitor. Для получения дополнительной информации см. документацию по тегам службы.
Диагностика "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 совпадает с учетной записью хранения.
Поддержка
Если вам по-прежнему нужна помощь, отправьте запрос в службу поддержки, щелкнув значок вопросительного знака на портале Azure. Укажите идентификатор корреляции из сообщения об ошибке.