Мониторинг приложений для Службы приложений Azure и ASP.NET

Включение мониторинга на ASP. Веб-приложения на основе NET, работающие в службе приложение Azure, теперь проще, чем когда-либо. Ранее необходимо вручную инструментировать приложение. Теперь последняя версия расширения или агента встроена в образ Служба приложений по умолчанию. В этой статье описано, как включить мониторинг приложений Azure Monitor Аналитика и предоставить предварительные рекомендации по автоматизации процесса для крупномасштабных развертываний.

Примечание.

Не рекомендуется добавлять расширение сайта Application Insights вручную через меню Инструменты разработки>Расширения. Этот метод установки расширения зависел от ручных обновлений для каждой новой версии. Последний стабильный выпуск расширения теперь предустановлен в образе Службы приложений. Файлы находятся в d:\Program Files (x86)\SiteExtensions\Application Аналитика Agent и автоматически обновляются с каждым стабильным выпуском. Если вы следуйте инструкциям по автоматическому контролю для включения мониторинга, оно автоматически удаляет устаревшее расширение для вас.

Если обнаружены мониторинг автоинструментации и инструментирование на основе ручного пакета SDK, будут учитываться только параметры ручного инструментирования. Это соглашение предотвращает отправку повторяющихся данных. Дополнительные сведения см. в разделе "Устранение неполадок".

Примечание.

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

Включение мониторинга автоинструментации

Полный список поддерживаемых сценариев автоинструментации см. в статье "Поддерживаемые среды", "Языки" и поставщики ресурсов.

Примечание.

APPINSIGHTS_JAVASCRIPT_ENABLED Сочетание и urlCompression не поддерживается. Дополнительные сведения см. в разделе "Устранение неполадок".

  1. На панели управления Azure выберите Application Insights для своей службы приложений. Нажмите кнопку Включить.

    Снимок экрана: вкладка

  2. Создайте новый или выберите существующий ресурс Application Insights для этого приложения.

    Примечание.

    При нажатии кнопки "ОК ", чтобы создать новый ресурс, вам будет предложено выбрать "Применить параметры мониторинга". При нажатии кнопки "Продолжить" вы можете связать новый ресурс приложения Аналитика со службой приложений. Это также активирует перезапуск службы приложений.

    Снимок экрана: раскрывающийся список

  3. После указания используемого ресурса можно выбрать способ сбора данных для каждой платформы приложения Аналитика. ASP.NET мониторинг приложений включен по умолчанию с двумя разными уровнями коллекции.

    Снимок экрана: страница расширений сайта Аналитика приложения с выбранным параметром

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

    Data базовая коллекция ASP.NET рекомендуемая коллекция ASP.NET
    Добавляет тенденции использования ЦП, памяти и операций ввода-вывода. No Да
    Собирает тенденции использования и обеспечивает сопоставление от результатов доступности до транзакций. Да Да
    Собирает исключения, необработанные хост-процессом. Да Да
    Улучшает точность метрик APM под нагрузкой при использовании выборки. Да Да
    Сопоставляет микрослужбы в пределах границ запросов или зависимостей. Нет (только возможности APM с одним экземпляром) Да
  4. Чтобы настроить выборку, которую можно было управлять ранее с помощью файла конфигурации applicationinsights.config, теперь вы можете взаимодействовать с ним с помощью параметров приложения с соответствующим префиксомMicrosoftAppInsights_AdaptiveSamplingTelemetryProcessor.

    • Например, чтобы изменить начальный процент выборки, можно создать параметр MicrosoftAppInsights_AdaptiveSamplingTelemetryProcessor_InitialSamplingPercentage приложения и значение 100.

    • Чтобы отключить выборку, задайте для параметра MicrosoftAppInsights_AdaptiveSamplingTelemetryProcessor_MinSamplingPercentage значение 100.

    • Поддерживаются следующие параметры.

      • MicrosoftAppInsights_AdaptiveSamplingTelemetryProcessor_InitialSamplingPercentage
      • MicrosoftAppInsights_AdaptiveSamplingTelemetryProcessor_MinSamplingPercentage
      • MicrosoftAppInsights_AdaptiveSamplingTelemetryProcessor_EvaluationInterval
      • MicrosoftAppInsights_AdaptiveSamplingTelemetryProcessor_MaxTelemetryItemsPerSecond
    • Список поддерживаемых параметров и определений обработчика телеметрии адаптивной выборки см. в документации по коду и выборке.

Включение наблюдения на стороне клиента

Мониторинг на стороне клиента — это согласие на ASP.NET. Чтобы включить мониторинг на стороне клиента, выполните следующие действия.

  1. Выберите Параметры>Конфигурация.

  2. В разделе "Параметры приложения" создайте новый параметр приложения.

    • Имя: введите APPINSIGHTS_JAVASCRIPT_ENABLED.
    • Значение: введите true.
  3. Сохраните параметры и перезапустите приложение.

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

Автоматизация мониторинга

Чтобы включить сбор данных телеметрии с помощью Application Аналитика, необходимо задать только параметры приложения.

Снимок экрана: параметры приложения Служба приложений с параметрами приложения Аналитика.

Определения параметров приложения

Имя параметра приложения Определение Значение
ApplicationInsightsAgent_EXTENSION_VERSION Главное расширение, которое управляет мониторингом среды выполнения. ~2
XDT_MicrosoftApplicationInsights_Mode В режиме по умолчанию для обеспечения оптимальной производительности включены только основные функции. default или recommended
InstrumentationEngine_EXTENSION_VERSION Определяет, будет ли включен двоичный модуль перезаписи InstrumentationEngine. Этот параметр влияет на производительность и влияет на время холодного запуска и запуска. ~1
XDT_MicrosoftApplicationInsights_BaseExtensions Определяет, будут ли записаны текст таблицы SQL и Azure вместе с вызовами зависимостей. Предупреждение о производительности: время холодного запуска приложения будет затронуто. Для этого параметра требуется InstrumentationEngine. ~1

Служба приложений параметры приложения с помощью Azure Resource Manager

Параметры приложения для службы приложение Azure можно управлять и настраивать с помощью шаблонов Azure Resource Manager. Этот метод можно использовать при развертывании новых Служба приложений ресурсов с помощью автоматизации Resource Manager или изменения параметров существующих ресурсов.

Базовая структура параметров приложения JSON для ресурса Служба приложений:

      "resources": [
        {
          "name": "appsettings",
          "type": "config",
          "apiVersion": "2015-08-01",
          "dependsOn": [
            "[resourceId('Microsoft.Web/sites', variables('webSiteName'))]"
          ],
          "tags": {
            "displayName": "Application Insights Settings"
          },
          "properties": {
            "key1": "value1",
            "key2": "value2"
          }
        }
      ]

Пример шаблона Resource Manager с параметрами приложения, настроенными для приложения Аналитика, может оказаться полезным. В частности, см. раздел, начинающийся с строки 238.

Чтобы создать шаблон Resource Manager с параметрами Аналитика приложения по умолчанию, начните процесс, как если бы вы собирались создать веб-приложение с включенным приложением Аналитика.

  1. Создайте новый ресурс службы приложений с нужными сведениями о веб-приложении. Включите Аналитика приложения на вкладке "Мониторинг".

  2. Выберите Review + create (Просмотреть и создать). Затем выберите " Скачать шаблон для автоматизации".

    Снимок экрана: меню создания веб-приложения Служба приложений.

    Этот параметр создает последний шаблон Resource Manager со всеми необходимыми параметрами.

    Снимок экрана: шаблон веб-приложения Служба приложений.

В следующем примере замените все экземпляры AppMonitoredSite на имя сайта:

Примечание.

Если используется Windows, установите для нее значение ApplicationInsightsAgent_EXTENSION_VERSION~2. Если используется Linux, установите для нее значение ApplicationInsightsAgent_EXTENSION_VERSION~3.

{
    "resources": [
        {
            "name": "[parameters('name')]",
            "type": "Microsoft.Web/sites",
            "properties": {
                "siteConfig": {
                    "appSettings": [
                        {
                            "name": "APPINSIGHTS_INSTRUMENTATIONKEY",
                            "value": "[reference('microsoft.insights/components/AppMonitoredSite', '2015-05-01').InstrumentationKey]"
                        },
                        {
                            "name": "APPLICATIONINSIGHTS_CONNECTION_STRING",
                            "value": "[reference('microsoft.insights/components/AppMonitoredSite', '2015-05-01').ConnectionString]"
                        },
                        {
                            "name": "ApplicationInsightsAgent_EXTENSION_VERSION",
                            "value": "~2"
                        }
                    ]
                },
                "name": "[parameters('name')]",
                "serverFarmId": "[concat('/subscriptions/', parameters('subscriptionId'),'/resourcegroups/', parameters('serverFarmResourceGroup'), '/providers/Microsoft.Web/serverfarms/', parameters('hostingPlanName'))]",
                "hostingEnvironment": "[parameters('hostingEnvironment')]"
            },
            "dependsOn": [
                "[concat('Microsoft.Web/serverfarms/', parameters('hostingPlanName'))]",
                "microsoft.insights/components/AppMonitoredSite"
            ],
            "apiVersion": "2016-03-01",
            "location": "[parameters('location')]"
        },
        {
            "apiVersion": "2016-09-01",
            "name": "[parameters('hostingPlanName')]",
            "type": "Microsoft.Web/serverfarms",
            "location": "[parameters('location')]",
            "properties": {
                "name": "[parameters('hostingPlanName')]",
                "workerSizeId": "[parameters('workerSize')]",
                "numberOfWorkers": "1",
                "hostingEnvironment": "[parameters('hostingEnvironment')]"
            },
            "sku": {
                "Tier": "[parameters('sku')]",
                "Name": "[parameters('skuCode')]"
            }
        },
        {
            "apiVersion": "2015-05-01",
            "name": "AppMonitoredSite",
            "type": "microsoft.insights/components",
            "location": "West US 2",
            "properties": {
                "ApplicationId": "[parameters('name')]",
                "Request_Source": "IbizaWebAppExtensionCreate"
            }
        }
    ],
    "parameters": {
        "name": {
            "type": "string"
        },
        "hostingPlanName": {
            "type": "string"
        },
        "hostingEnvironment": {
            "type": "string"
        },
        "location": {
            "type": "string"
        },
        "sku": {
            "type": "string"
        },
        "skuCode": {
            "type": "string"
        },
        "workerSize": {
            "type": "string"
        },
        "serverFarmResourceGroup": {
            "type": "string"
        },
        "subscriptionId": {
            "type": "string"
        }
    },
    "$schema": "https://schema.management.azure.com/schemas/2014-04-01-preview/deploymentTemplate.json#",
    "contentVersion": "1.0.0.0"
}

С помощью PowerShell.

Чтобы включить мониторинг приложений с помощью PowerShell, необходимо изменить только базовые параметры приложения. Следующий пример включает мониторинг приложений для веб-сайта, вызываемого AppMonitoredSite в группе AppMonitoredRGресурсов. Он настраивает отправку данных в 012345678-abcd-ef01-2345-6789abcd ключ инструментирования.

Примечание.

Мы рекомендуем использовать модуль Azure Az PowerShell для взаимодействия с Azure. Чтобы начать работу, см. статью Установка Azure PowerShell. Дополнительные сведения см. в статье Перенос Azure PowerShell с AzureRM на Az.

Примечание.

Если используется Windows, задайте для приложения Аналитика Agent_EXTENSION_VERSION значение ~2. При использовании Linux задайте для приложения Аналитика Agent_EXTENSION_VERSION значение ~3.

$app = Get-AzWebApp -ResourceGroupName "AppMonitoredRG" -Name "AppMonitoredSite" -ErrorAction Stop
$newAppSettings = @{} # case-insensitive hash map
$app.SiteConfig.AppSettings | %{$newAppSettings[$_.Name] = $_.Value} # preserve non Application Insights application settings.
$newAppSettings["APPINSIGHTS_INSTRUMENTATIONKEY"] = "012345678-abcd-ef01-2345-6789abcd"; # set the Application Insights instrumentation key
$newAppSettings["APPLICATIONINSIGHTS_CONNECTION_STRING"] = "InstrumentationKey=012345678-abcd-ef01-2345-6789abcd"; # set the Application Insights connection string
$newAppSettings["ApplicationInsightsAgent_EXTENSION_VERSION"] = "~2"; # enable the ApplicationInsightsAgent
$app = Set-AzWebApp -AppSettings $newAppSettings -ResourceGroupName $app.ResourceGroup -Name $app.Name -ErrorAction Stop

Обновление расширения мониторинга или агента: .NET

Обновление с версии 2.8.9 и выше

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

Чтобы узнать, какую версию расширения вы используете, перейдите по адресу https://yoursitename.scm.azurewebsites.net/ApplicationInsights.

Снимок экрана: путь URL-адреса для проверка версии запущенного расширения.

Обновление с версий 1.0.0–2.6.5

Начиная с версии 2.8.9 используется предварительно установленное расширение сайта. Если вы используете более раннюю версию, вы можете обновить один из двух способов:

  • Обновите, включив на портале: даже если у вас есть расширение Application Аналитика для Служба приложений. В пользовательском интерфейсе отображается только кнопка "Включить ". За кулисами будет удалено старое расширение частного сайта.

  • Обновление с помощью PowerShell.

    1. Задайте параметры приложения, чтобы включить предварительно установленное расширение ApplicationInsightsAgentсайта. Дополнительные сведения см. в разделе "Включить с помощью PowerShell".
    2. Вручную удалите расширение частного сайта с именем Application Аналитика для Служба приложений.

Если обновление выполняется с версии до 2.5.1, проверка, что библиотеки DLL приложения Аналитика удаляются из папки корзины приложения. Дополнительные сведения см. в разделе "Устранение неполадок".

Устранение неполадок

Примечание.

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

Ниже приведено пошаговое руководство по устранению неполадок для мониторинга на основе расширений и агентов для ASP. Приложения на основе NET, работающие на Служба приложений.

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

  2. Перейдите в https://yoursitename.scm.azurewebsites.net/ApplicationInsights.

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

    • Убедитесь, что Application Insights Extension Status это и Pre-Installed Site Extension, version 2.8.x.xxxx запущено.

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

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

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

Какова разница между стандартными метриками от приложений Аналитика и метрик служб приложение Azure?

Приложение Аналитика собирает данные телеметрии для запросов, которые сделали его в приложение. Если сбой возникает в WebApps/WebServer, и запрос не достиг пользовательского приложения, приложение Аналитика не имеет никаких данных телеметрии.

Длительность вычисления serverresponsetime приложения Аналитика не обязательно соответствует времени отклика сервера, наблюдаемого веб-приложения. Это связано с тем, что приложение Аналитика учитывает только длительность, когда запрос фактически достигает пользовательского приложения. Если запрос зависает или помещается в очередь в webServer, время ожидания включается в метрики веб-приложения, но не в метрики приложения Аналитика.

Тестирование подключения между узлом приложения и службой приема

Пакеты SDK и агенты приложений Аналитика отправляют данные телеметрии для приема в качестве вызовов REST к конечным точкам приема. Вы можете проверить подключение с веб-сервера или хост-компьютера приложения к конечным точкам службы приема с помощью необработанных клиентов REST из Команд PowerShell или curl. См. раздел "Устранение неполадок с отсутствующими данными телеметрии приложения" в Аналитика приложения Azure Monitor.

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

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

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

Значение проблемы Описание Fix
AppAlreadyInstrumented:true Это значение указывает, что расширение обнаружило, что некоторый аспект пакета SDK уже присутствует в приложении и отключится. Это может быть связано со ссылкой на System.Diagnostics.DiagnosticSource, Microsoft.AspNet.TelemetryCorrelationили Microsoft.ApplicationInsights. Удалите ссылки. Некоторые из этих ссылок добавляются по умолчанию из определенных шаблонов Visual Studio. В более ранние версии Visual Studio могут добавляться ссылки Microsoft.ApplicationInsights.
AppAlreadyInstrumented:true Это значение также может быть вызвано наличием предыдущих БИБЛИОТЕК DLL в папке приложения из предыдущего развертывания. Очистите папку приложения, чтобы убедиться, что эти библиотеки DLL удалены. Проверьте каталог корзины локального приложения и каталог wwwroot в ресурсе Служба приложений. Чтобы проверка каталог wwwroot веб-приложения Служба приложений, выберите advanced Tools (Kudu)>Debug console>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 для приложений Аналитика до версии 2.20.0. Пакет SDK для приложений Аналитика содержит непрямую ссылку на System.Runtime.CompilerServices.Unsafe.dllSystem.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 Аналитика. Временные меры по устранению рисков следует использовать только в качестве промежуточного.

Заметки о выпуске

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

Следующие шаги