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


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

Если обновление выполняется с версии до 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 для ресурса Служба приложений:

      "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. Выберите 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

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

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

Что 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 метрики службы?

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 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. Чтобы устранить проблему, в портал 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 в Служба приложений она развертывает одну статическую HTML-страницу в качестве начального веб-сайта. Статическую веб-страницу также загружает ASP. Веб-часть, управляемая NET, в IIS. Это поведение позволяет тестировать бессерверный мониторинг на стороне сервера, но не поддерживает автоматический клиентский мониторинг.

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

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