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

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

Примечание.

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

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

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

Внимание

Поддерживается только поддержка долгосрочной поддержки .NET Core для автоинструментации в Windows.

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

Примечание.

Автоинструментация используется для обозначения "безкодового подключения" до октября 2021 года.

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

Включение мониторинга

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

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

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

    Примечание.

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

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

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

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

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

Мониторинг на стороне клиента включен по умолчанию для приложений ASP.NET Core с рекомендуемой коллекцией независимо от того, присутствует ли параметр APPINSIGHTS_JAVASCRIPT_ENABLED приложения.

Если вы хотите отключить мониторинг на стороне клиента:

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

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

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

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

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

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

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

Имя параметра приложения Определение Значение
ApplicationInsightsAgent_EXTENSION_VERSION Главное расширение, которое управляет мониторингом среды выполнения. ~2 для Windows или ~3 для Linux
XDT_MicrosoftApplicationInsights_Mode В режиме по умолчанию для обеспечения оптимальной производительности включены только основные функции. disabled или recommended.
XDT_MicrosoftApplicationInsights_PreemptSdk Только для приложений ASP.NET Core. Включает взаимодействие (взаимодействие) с пакетом SDK для приложений Аналитика. Загружает расширение параллельно с пакетом SDK и использует его для отправки телеметрии. (Отключает пакет SDK для приложения Аналитика.) 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 Аналитика для службы приложение Azure.

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

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

Примечание.

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

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

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

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

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

    • Убедитесь, что состояние расширения Аналитика приложенияPre-Installed Site Extension, version 2.8.x.xxxx, is running.

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

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

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

    • Убедитесь, что IKeyExists имеет значение True. Если этот параметр имеет значение False, добавьте APPINSIGHTS_INSTRUMENTATIONKEY и APPLICATIONINSIGHTS_CONNECTION_STRING вместе с идентификатором GUID ikey в параметры приложения.

    • Если приложение ссылается на любые пакеты приложений Аналитика, включение интеграции Служба приложений может не входить в силу, а данные могут не отображаться в Аналитика приложения. Например, если вы ранее инструментировали или пытались инструментировать приложение с помощью пакета SDK для ASP.NET Core. Чтобы устранить проблему, включите взаимодействие с пакетом SDK для приложений Аналитика. Вы начнете видеть данные в приложении Аналитика.

      Внимание

      Эта функция доступна в режиме предварительной версии.

       Снимок экрана: параметр взаимодействия включен.

      Теперь данные будут отправляться с помощью безкодового подхода, даже если пакет SDK для приложения Аналитика использовался или был использован.

      Внимание

      Если приложение использовало пакет SDK для приложения Аналитика для отправки данных телеметрии, данные телеметрии будут отключены. Другими словами, пользовательские данные телеметрии (например, любые Track*() методы) и пользовательские параметры (например, выборка) будут отключены.

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

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

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

Какова разница между стандартными метриками от приложений Аналитика и метрик служб приложение 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 уже присутствует в приложении и отключится. Это может быть связано с ссылкой на Microsoft.ApplicationInsights.AspNetCore или Microsoft.ApplicationInsights. Удалите ссылки. Некоторые из этих ссылок добавляются по умолчанию из определенных шаблонов Visual Studio. Более ранние версии справочника Microsoft.ApplicationInsightsпо Visual Studio.
AppAlreadyInstrumented:true Это значение также может быть вызвано наличием Microsoft.ApplicationsInsights библиотеки DLL в папке приложения из предыдущего развертывания. Очистите папку приложения, чтобы убедиться, что эти библиотеки DLL удалены. Проверьте каталог корзины локального приложения и каталог wwwroot в Служба приложений. (Чтобы проверка каталог wwwroot веб-приложения Служба приложений, выберите "Дополнительные средства" (Kudu) >Debug console>CMD>home\site\wwwroot).
IKeyExists:false Это значение указывает, что ключ инструментирования отсутствует в параметре APPINSIGHTS_INSTRUMENTATIONKEYприложения. Возможные причины включают случайное удаление значений или забыли задать значения в скрипте автоматизации. Убедитесь, что этот параметр присутствует в настройках приложения службы приложений.

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

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

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