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


Устранение неполадок Application Insights Profiler для .NET

В этой статье представлены действия по устранению неполадок и сведения, позволяющие использовать 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 не поддерживается. См. Функции Azure приложения для профиля с помощью Application Insights.

Вы ищете данные профилировщика .NET в течение правильного интервала времени?

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

Знаете ли вы о частоте выборки и накладной нагрузке профилировщика .NET?

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

Примечание.

При активном запуске и сборе трассировок профилировщик обычно добавляется от 5% до 15% ресурсов ЦП и памяти на сервер.

Нет дополнительных затрат на хранение данных, захваченных Профилировщиком. Данные автоматически удаляются через 15 дней.

Вы можете получить доступ к шлюзу?

Убедитесь, что брандмауэр или прокси-серверы не блокируют доступ к этой веб-странице.

Отображается ли время ожидания или необходимо проверить, запущен ли профилировщик .NET?

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

Профилировщик записывает сообщения трассировки и пользовательские события в ресурс Application Insights. Эти события можно использовать для просмотра запуска профилировщика.

Найдите сообщения трассировки и пользовательские события, отправленные профилировщиком .NET в ресурс Application Insights.

  1. В ресурсе Application Insights выберите "Поиск " в верхнем меню.

    Снимок экрана: выбор кнопки

  2. Используйте следующую строку поиска для поиска необходимых данных:

    stopprofiler OR startprofiler OR upload OR ServiceProfilerSample
    

    Снимок экрана: результаты поиска из приведенной выше строки поиска.

    Предыдущие результаты поиска включают два примера поиска из двух ресурсов ИИ:

    • Если приложение не получает запросы во время работы средства Profiler, в сообщении объясняется, что отправка была отменена из-за отсутствия активности.

    • Средство Profiler запущено и отправило пользовательские события при обнаружении запросов, которые появились во время его работы. Если отображается настраиваемое событие ServiceProfilerSample, это означает, что профиль был записан и доступен на панели Производительность Application Insights.

    Если записи не отображаются, профилировщик не работает или занимает слишком много времени для ответа. Убедитесь, что профилировщик включен в службе Azure.

Профилировщик .NET включен, но не записываются трассировки.

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

  1. Нет входящих запросов к приложению:
    Вы можете вручную вызвать приложение или создать тест доступности или нагрузочный тест.

  2. Входящие данные телеметрии не подтверждены Application Insights:

    • Если в приложение поступает трафик: проверьте наличие входящих запросов, отображаемых в Application Insights Live Metrics.
    • Incoming Requests Если диаграммы пусты (данные не отображаются или отображаются ноль): устранение неполадок Application Insights.
    • Если вы размещаете приложение .NET в службе приложение Azure, попробуйте выполнить действия по устранению неполадок Служба приложений .NET.
  3. Параметр профилировщика для выборки отключен:
    Если трассировки профилировщика по-прежнему недоступны, проверьте параметр выборки профилировщика.

    1. Откройте колонку "Производительность Application Insights>".
    2. Щелкните Профилировщик.
    3. Нажмите кнопку "Триггеры ".
    4. В параметрах триггера убедитесь, что переключатель выборки включен.
  4. По-прежнему нет трассировок, отправленных?
    Создайте запрос на поддержку или попросите службу поддержки сообщества Azure. Вы также можете отправить отзыв о продукте в сообщество отзывов Azure.

Двойной подсчет в параллельных потоках

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

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

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

Устранение неполадок с .NET Profiler в конкретной службе Azure

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

Служба приложений Azure

Чтобы профилировщик .NET работал правильно, убедитесь, что:

  • Веб-приложение включает Application Insights с правильными параметрами.

  • Веб-задание ApplicationInsightsProfiler3 запущено. Чтобы проверить веб-задание:

    1. Перейдите к Kudu. На портале Azure выполните следующие действия:

      1. В Служба приложений экземпляре выберите "Дополнительные инструменты" на левой панели.
      2. Выберите Выполнить.
    2. В верхнем меню выберите панель мониторинга "Сервис>веб-задания". Откроется область WebJobs (Веб-задания).

      Если ApplicationInsightsProfiler3 не отображается, перезапустите приложение Служба приложений.

      Снимок экрана: панель веб-заданий, в которой отображается имя, состояние и последняя среда выполнения заданий.

    3. Чтобы просмотреть сведения о веб-задании, включая журнал, выберите ссылку ApplicationInsightsProfiler3 . Откроется область Continuous WebJob Details (Сведения о непрерывных веб-заданиях).

      Снимок экрана: панель сведений о непрерывном веб-задании.

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

Страница состояния расширения сайта служб диагностики

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

Примечание.

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

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

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

  1. Откройте службу приложений на портале Azure.
  2. Выберите Дополнительные инструменты.
  3. Выберите Выполнить.
  4. На сайте управления Kudu:
    1. Добавьте /DiagnosticServices к URL-адресу.
    2. Выберите ВВОД.

Это заканчивается, как 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"

Если вы развертываете веб-приложение в ресурс веб-приложения с включенным профилировщиком .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 в области Веб-задания. Если он не работает, откройте Журналы, чтобы просмотреть дополнительные сведения.

Виртуальные машины и Облачные службы Azure

Чтобы узнать, правильно ли настроен профилировщик .NET, Диагностика Azure:

  1. Убедитесь, что содержимое развернутой конфигурации Диагностики Azure соответствует вашим ожиданиям.

  2. Убедитесь, что Диагностика Azure передает правильный iKey в командной строке Профилировщика.

  3. Проверьте файл журнала Profiler, чтобы узнать, запущен ли профилировщик .NET, но вернул ошибку.

Чтобы проверить параметры, которые использовались для системы диагностики Azure:

  1. Войдите в виртуальную машину.

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

    Для виртуальных машин:

    c:\WindowsAzure\logs\Plugins\Microsoft.Azure.Diagnostics.PaaSDiagnostics\1.11.3.12\DiagnosticsPlugin.log
    

    Для Azure Облачные службы:

    c:\logs\Plugins\Microsoft.Azure.Diagnostics.PaaSDiagnostics\1.11.3.12\DiagnosticsPlugin.log
    
  3. В этом файле найдите строку WadCfg. В этой строке содержатся параметры, которые были переданы на виртуальную машину для настройки Диагностики Azure.

  4. Проверьте правильность ключа iKey, используемого приемником профилировщика .NET.

  5. Проверьте командную строку, которая запускает Профилировщик. Аргументы командной строки находятся в следующем файле (диск может быть c: или d: каталог может быть скрыт):

    Для виртуальных машин:

    C:\ProgramData\ApplicationInsightsProfiler\config.json
    

    Для Azure Облачные службы:

    D:\ProgramData\ApplicationInsightsProfiler\config.json
    
  6. Проверьте правильность ключа инструментирования ikey в командной строке Profiler.

  7. Используя путь, найденный в предыдущем config.json файле, проверьте файл журнала Profiler с именем BootstrapN.log. В нем отображается следующее:

    • Информация об отладке, включающая параметры, используемые Profiler.
    • Сообщения о состоянии и сообщения об ошибках из Profiler.

    Файл можно найти по следующему пути:

    Для виртуальных машин:

    C:\WindowsAzure\Logs\Plugins\Microsoft.Azure.Diagnostics.IaaSDiagnostics\1.17.0.6\ApplicationInsightsProfiler
    

    Для Azure Облачные службы:

    C:\Logs\Plugins\Microsoft.Azure.Diagnostics.IaaSDiagnostics\1.17.0.6\ApplicationInsightsProfiler
    
  8. Если в приложении выполняется профилировщик .NET во время получения запросов, появится следующее сообщение: "Действие, обнаруженное из iKey".

  9. При отправке трассировки появится следующее сообщение: "Начать отправку трассировки".

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

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

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

Поддержка

Если вам по-прежнему нужна помощь, отправьте запрос в службу поддержки в портал Azure. Укажите идентификатор корреляции из сообщения об ошибке.