Бөлісу құралы:


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

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

Примечание.

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

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

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

Внимание

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

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

Примечание.

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

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

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

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

     Снимок экрана: вкладка Application Insights с выбранным параметром

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

    Примечание.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  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, задайте для ApplicationInsightsAgent_EXTENSION_VERSION значение ~2. Если используется Linux, задайте для ApplicationInsightsAgent_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 Insights для Служба приложений, пользовательский интерфейс отображает только кнопку "Включить". За кулисами будет удалено старое расширение частного сайта.

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

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

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

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

Примечание.

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

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

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

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

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

    • Убедитесь, что состояние расширения Application Insights имеет значениеPre-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. Чтобы устранить проблему, включите взаимодействие с пакетом SDK Application Insights. Вы начнете видеть данные в Application Insights.

      Внимание

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

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

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

      Внимание

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

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

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

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

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

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

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

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

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

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) >console>CMD>home\site\wwwroot.
IKeyExists:false Это значение указывает, что ключ инструментирования отсутствует в параметре APPINSIGHTS_INSTRUMENTATIONKEYприложения. Возможные причины включают случайное удаление значений или забыли задать значения в скрипте автоматизации. Убедитесь, что этот параметр присутствует в настройках приложения службы приложений.

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

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

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