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


Включение мониторинга приложений в службе приложение 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_ВЕРСИЯ_РАСШИРЕНИЯ Главное расширение, которое управляет мониторингом среды выполнения. ~2 для Windows или ~3 для Linux
XDT_MicrosoftApplicationInsights_Режим В режиме по умолчанию для обеспечения оптимальной производительности включены только основные функции. 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. На портале Azure создайте ресурс веб-приложения с нужными сведениями. Включите Application Insights на вкладке "Монитор и безопасность ".

  2. Перейдите к разделу "Просмотр и создание", а затем выберите "Скачать шаблон для автоматизации". Этот параметр создает последний шаблон Resource Manager со всеми необходимыми параметрами.

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

Примечание.

В следующем примере шаблона используется приложение .NET 8 (LTS), работающее в Windows. В нем используются заполнители my-monitored-web-app для имени приложения и aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e для идентификатора подписки.

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


Развернуть, чтобы посмотреть пример шаблона
{
    "$schema": "http://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
    "contentVersion": "1.0.0.0",
    "parameters": {
        "subscriptionId": {
            "type": "string"
        },
        "resourceGroupName": {
            "type": "string"
        },
        "name": {
            "type": "string"
        },
        "location": {
            "type": "string"
        },
        "hostingPlanName": {
            "type": "string"
        },
        "serverFarmResourceGroup": {
            "type": "string"
        },
        "alwaysOn": {
            "type": "bool"
        },
        "ftpsState": {
            "type": "string"
        },
        "autoGeneratedDomainNameLabelScope": {
            "type": "string"
        },
        "sku": {
            "type": "string"
        },
        "skuCode": {
            "type": "string"
        },
        "workerSize": {
            "type": "string"
        },
        "workerSizeId": {
            "type": "string"
        },
        "numberOfWorkers": {
            "type": "string"
        },
        "currentStack": {
            "type": "string"
        },
        "phpVersion": {
            "type": "string"
        },
        "netFrameworkVersion": {
            "type": "string"
        }
    },
    "variables": {},
    "resources": [
        {
            "apiVersion": "2022-03-01",
            "name": "[parameters('name')]",
            "type": "Microsoft.Web/sites",
            "location": "[parameters('location')]",
            "tags": null,
            "dependsOn": [
                "microsoft.insights/components/my-monitored-web-app",
                "[concat('Microsoft.Web/serverfarms/', parameters('hostingPlanName'))]"
            ],
            "properties": {
                "name": "[parameters('name')]",
                "siteConfig": {
                    "appSettings": [
                        {
                            "name": "APPLICATIONINSIGHTS_CONNECTION_STRING",
                            "value": "[reference('microsoft.insights/components/my-monitored-web-app', '2015-05-01').ConnectionString]"
                        },
                        {
                            "name": "ApplicationInsightsAgent_EXTENSION_VERSION",
                            "value": "~2"
                        },
                        {
                            "name": "XDT_MicrosoftApplicationInsights_Mode",
                            "value": "default"
                        }
                    ],
                    "metadata": [
                        {
                            "name": "CURRENT_STACK",
                            "value": "[parameters('currentStack')]"
                        }
                    ],
                    "phpVersion": "[parameters('phpVersion')]",
                    "netFrameworkVersion": "[parameters('netFrameworkVersion')]",
                    "alwaysOn": "[parameters('alwaysOn')]",
                    "ftpsState": "[parameters('ftpsState')]"
                },
                "serverFarmId": "[concat('/subscriptions/', parameters('subscriptionId'),'/resourcegroups/', parameters('serverFarmResourceGroup'), '/providers/Microsoft.Web/serverfarms/', parameters('hostingPlanName'))]",
                "clientAffinityEnabled": true,
                "virtualNetworkSubnetId": null,
                "httpsOnly": true,
                "publicNetworkAccess": "Enabled",
                "autoGeneratedDomainNameLabelScope": "[parameters('autoGeneratedDomainNameLabelScope')]"
            },
            "resources": [
                {
                    "type": "Microsoft.Web/sites/basicPublishingCredentialsPolicies",
                    "apiVersion": "2022-09-01",
                    "name": "[concat(parameters('name'), '/scm')]",
                    "properties": {
                        "allow": true
                    },
                    "dependsOn": [
                        "[resourceId('Microsoft.Web/Sites', parameters('name'))]"
                    ]
                },
                {
                    "type": "Microsoft.Web/sites/basicPublishingCredentialsPolicies",
                    "apiVersion": "2022-09-01",
                    "name": "[concat(parameters('name'), '/ftp')]",
                    "properties": {
                        "allow": true
                    },
                    "dependsOn": [
                        "[resourceId('Microsoft.Web/Sites', parameters('name'))]"
                    ]
                }
            ]
        },
        {
            "apiVersion": "2018-11-01",
            "name": "[parameters('hostingPlanName')]",
            "type": "Microsoft.Web/serverfarms",
            "location": "[parameters('location')]",
            "kind": "",
            "tags": null,
            "dependsOn": [],
            "properties": {
                "name": "[parameters('hostingPlanName')]",
                "workerSize": "[parameters('workerSize')]",
                "workerSizeId": "[parameters('workerSizeId')]",
                "numberOfWorkers": "[parameters('numberOfWorkers')]",
                "zoneRedundant": false
            },
            "sku": {
                "Tier": "[parameters('sku')]",
                "Name": "[parameters('skuCode')]"
            }
        },
        {
            "apiVersion": "2020-02-02-preview",
            "name": "my-monitored-web-app",
            "type": "microsoft.insights/components",
            "location": "centralus",
            "tags": null,
            "dependsOn": [
                "newWorkspaceTemplate"
            ],
            "properties": {
                "ApplicationId": "[parameters('name')]",
                "Request_Source": "IbizaWebAppExtensionCreate",
                "Flow_Type": "Redfield",
                "Application_Type": "web",
                "WorkspaceResourceId": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/DefaultResourceGroup-CUS/providers/Microsoft.OperationalInsights/workspaces/DefaultWorkspace-aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e-CUS"
            }
        },
        {
            "type": "Microsoft.Resources/deployments",
            "apiVersion": "2021-04-01",
            "name": "newWorkspaceTemplate",
            "resourceGroup": "DefaultResourceGroup-CUS",
            "subscriptionId": "[parameters('subscriptionId')]",
            "properties": {
                "mode": "Incremental",
                "template": {
                    "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
                    "contentVersion": "1.0.0.0",
                    "parameters": {},
                    "variables": {},
                    "resources": [
                        {
                            "apiVersion": "2020-08-01",
                            "name": "DefaultWorkspace-aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e-CUS",
                            "type": "Microsoft.OperationalInsights/workspaces",
                            "location": "centralus",
                            "properties": {}
                        }
                    ]
                }
            }
        }
    ]
}

Включите через PowerShell.

Чтобы включить мониторинг приложений с помощью PowerShell, необходимо изменить только базовые параметры приложения. Следующий пример обеспечивает мониторинг приложений для веб-сайта под названием my-monitored-web-app в группе ресурсов my-resource-group. Он настраивает отправку данных в InstrumentationKey=012345678-abcd-ef01-2345-6789abcd строку подключения.

Примечание.

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

Примечание.

Для Windows установите значение ~2 для ApplicationInsightsAgent_EXTENSION_VERSION.

Для Linux задайте для ApplicationInsightsAgent_EXTENSION_VERSION значение ~3.

$app = Get-AzWebApp -ResourceGroupName "my-resource-group" -Name "my-monitored-web-app" -ErrorAction Stop
$newAppSettings = @{} # Case-insensitive hash map
$app.SiteConfig.AppSettings | %{$newAppSettings[$_.Name] = $_.Value} # Preserve non-Application-Insights application settings.
$newAppSettings["APPLICATIONINSIGHTS_CONNECTION_STRING"] = "InstrumentationKey=aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e"; # Set the Application Insights connection string
$newAppSettings["ApplicationInsightsAgent_EXTENSION_VERSION"] = "~3"; # Enable the ApplicationInsightsAgent.
$app = Set-AzWebApp -AppSettings $newAppSettings -ResourceGroupName $app.ResourceGroup -Name $app.Name -ErrorAction Stop

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

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

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

Примечание.

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

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

Виндоус

  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*() методы) и пользовательские настройки (например, выборка) будут отключены.

Линукс

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

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