Мониторинг приложений для Службы приложений Azure и Java

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

Включить Application Insights

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

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

Вы можете включить мониторинг приложений Java, работающих в службе приложение Azure только с одним выбором, без изменения кода. Интеграция добавляет приложение Аналитика Java 3.x и автоматически собирает данные телеметрии.

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

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

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

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

    Примечание.

    После выбора OK для создания нового ресурса вам будет предложено выбрать вариант Применить параметры мониторинга. Нажав кнопку Продолжить, вы свяжете новый ресурс Application Insights со службой приложений, а также активируете перезапуск самой службы приложений.

    Снимок экрана: раскрывающийся раздел

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

    Доступен полный набор конфигураций: достаточно просто вставить содержимое соответствующего JSON-файла. Исключите строка подключения и все конфигурации, которые находятся в предварительной версии, можно добавить элементы, которые в настоящее время находятся в предварительной версии, так как они становятся общедоступными.

    После изменения конфигураций с помощью портал Azure APPLICATIONINSIGHTS_CONFIGURATION_FILE переменная среды автоматически заполняется и отображается на панели параметров Служба приложений. Эта переменная содержит полное содержимое JSON, которое вы вставили в текстовое поле конфигурации портал Azure для приложения Java.

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

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

Чтобы включить мониторинг на стороне клиента для приложения Java, необходимо вручную добавить в приложение клиентский пакет SDK JavaScript.

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

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

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

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

Имя параметра приложения Определение Значение
ApplicationInsightsAgent_EXTENSION_VERSION Главное расширение, которое управляет мониторингом среды выполнения. ~2 в Windows или ~3 в Linux.
XDT_MicrosoftApplicationInsights_Java Флаг, определяющий, включен ли агент Java. 0 или 1 (применимо только в Windows).

Примечание.

Профилировщик и отладчик моментальных снимков недоступны для приложений Java

Служба приложений параметры приложения с помощью 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

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

Используйте пошаговое руководство по устранению неполадок приложений на основе Java, работающих в службах приложение Azure.

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

  2. Изучите файл журнала, чтобы удостовериться в успешном запуске агента: перейдите по адресу https://yoursitename.scm.azurewebsites.net/, в разделе SSH перейдите к корневому каталогу, чтобы найти файл журнала в папке LogFiles/ApplicationInsights.

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

  3. После включения мониторинга приложений для приложения Java вы можете проверить, работает ли агент, просматривая динамические метрики, даже перед развертыванием и приложением в Служба приложений вы увидите некоторые запросы из среды. Помните, что полный набор данных телеметрии доступен только при развертывании и запуске приложения.

  4. Задайте для переменной среды APPLICATIONINSIGHTS_SELF_DIAGNOSTICS_LEVEL значение debug, если не отображается никаких ошибок и нет телеметрии

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

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

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

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

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

Развертывание последней версии приложения Аналитика Java вручную

Версия Приложения Аналитика Java обновляется автоматически в рамках обновлений Служба приложений.

Если возникла проблема, исправленная в последней версии Приложения Аналитика Java, ее можно обновить вручную.

Чтобы вручную обновить, выполните следующие действия.

  1. Отправьте JAR-файл агента Java в Службу приложений.

    a. Сначала получите последнюю версию Azure CLI, следуя инструкциям здесь.

    b. Затем получите последнюю версию агента Java для приложения Аналитика, следуя инструкциям ниже.

    c. Затем разверните JAR-файл агента Java, чтобы Служба приложений с помощью следующей команды: az webapp deploy --src-path applicationinsights-agent-{VERSION_NUMBER}.jar --target-path java/applicationinsights-agent-{VERSION_NUMBER}.jar --type static --resource-group {YOUR_RESOURCE_GROUP} --name {YOUR_APP_SVC_NAME} Кроме того, вы можете использовать это руководство для развертывания агента с помощью подключаемого модуля Maven.

  2. Отключите Аналитика приложения с помощью вкладки "Приложение Аналитика" в портал Azure.

  3. После отправки jar-файла агента перейдите к Служба приложений конфигурациям. Если вам нужно использовать команду запуска для Linux, включите аргументы jvm:

    Снимок экрана: команда запуска.

    Команда запуска не учитывает JAVA_OPTS JavaSE или CATALINA_OPTS Tomcat.

    Если команда запуска не используется, создайте новую переменную JAVA_OPTS среды для JavaSE или CATALINA_OPTS tomcat со значением-javaagent:{PATH_TO_THE_AGENT_JAR}/applicationinsights-agent-{VERSION_NUMBER}.jar.

  4. Перезапустите приложение, чтобы применить изменения.

Примечание.

Если задать JAVA_OPTS переменную среды JavaSE или CATALINA_OPTS tomcat, необходимо отключить Аналитика приложения на портале. Кроме того, если вы предпочитаете включить Аналитика приложений на портале, убедитесь, что вы не настроили JAVA_OPTS переменную JavaSE или CATALINA_OPTS tomcat в параметрах конфигураций Служба приложений.

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

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

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