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


Включение мониторинга приложений в службе приложение Azure для приложений .NET, Node.js, Python и Java

Автоинструментация, также называемая мониторингом среды выполнения, — это самый простой способ включить Application Insights для службы приложений Azure без изменения кода или необходимости в сложных настройках. На основе конкретного сценария оцените, требуется ли более расширенный мониторинг с помощью ручного инструментирования.

Примечание.

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

Включить Application Insights

Внимание

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

Примечание.

Автоинструментация в портале Azure

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

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

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

    Примечание.

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

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

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

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

Обновление расширения или агента мониторинга вручную

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

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

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

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

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

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

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

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

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

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

Настройка расширения или агента мониторинга

В настоящее время мы не предлагаем варианты настройки расширения мониторинга для 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 для ресурса App Service:

      "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 по умолчанию, начните процесс, как если бы вы собирались создать новое веб-приложение с включенным Application Insights.

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

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

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

    Этот параметр создает последний шаблон 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. Чтобы узнать, как перейти на модуль Az 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

Часто задаваемые вопросы

В этом разделы приводятся ответы на часто задаваемые вопросы.

Что Application Insights изменяет в моем проекте?

Подробности зависят от типа проекта. Ниже приведен пример веб-приложения.

  • Добавляет файлы в проект:

    • ApplicationInsights.config
    • ai.js
  • Устанавливает пакеты NuGet:

    • API для Application Insights: основной интерфейс API
    • API Application Insights для веб-приложений: используется для отправки данных телеметрии с сервера
    • API Application Insights для приложений JavaScript: используется для отправки данных телеметрии из клиента
  • Включает сборки в пакетах:

    • Microsoft.ApplicationInsights
    • Microsoft.ApplicationInsights.Platform
  • Вставляет элементы в:

    • Web.config
    • packages.config
  • Вставляет фрагменты кода в код клиента и сервера для их инициализации с идентификатором ресурса Application Insights. Например, в приложении MVC код вставляется в главную страницу Views/Shared/_Layout.cshtml. Только для новых проектов добавьте Application Insights в существующий проект вручную.

В чём разница между стандартными метриками Application Insights и метриками службы Azure App Service?

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.

Примечание.

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

Отсутствуют данные телеметрии

Windows

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

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

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

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

      Внимание

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

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

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

      Внимание

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

Linux

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

  2. Перейдите по адресу https://your site name.scm.azurewebsites.net/ApplicationInsights.

  3. На этом сайте убедитесь в следующем:

    • Источник состояния существует и выглядит следующим образом Status source /var/log/applicationinsights/status_abcde1234567_89_0.json.
    • Отображается значение Auto-Instrumentation enabled successfully . Если подобное значение отсутствует, это означает, что приложение не выполняется или не поддерживается. Чтобы убедиться, что приложение запущено, попробуйте вручную посетить конечные точки приложения или URL-адреса приложения, что позволяет получить сведения о среде выполнения.
    • IKeyExists — это True. Если этот параметр имеет значение False, добавьте APPINSIGHTS_INSTRUMENTATIONKEY и APPLICATIONINSIGHTS_CONNECTION_STRING вместе с идентификатором GUID ikey в параметры приложения.

    Снимок экрана: веб-страница состояния автоинструментации.

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

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

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

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

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

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

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