Мониторинг приложений Spring Boot с помощью агента Java APM Elastic

Примечание.

Azure Spring Apps — это новое название службы Azure Spring Cloud. Старое название будет еще некоторое время встречаться в наших материалах, пока мы не обновим ресурсы, такие как снимки экрана, видео и схемы.

Эта статья относится к: ✔️ Basic/Standard ❌ Enterprise

В этой статье описывается использование агента APM Elastic для мониторинга приложений Spring Boot, запущенных в Azure Spring Apps.

Благодаря решению наблюдаемости Elastic можно достичь комплексной наблюдаемости, которая позволяет выполнять следующие действия:

В следующем видео описывается комплексная наблюдаемость для приложений Spring Boot с Elastic.


Необходимые компоненты

Развертывание приложения Spring Petclinic

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

  1. Выполните инструкции, описанные в статье Развертывание приложений Spring Boot с помощью Azure Spring Apps и MySQL, до раздела Развертывание приложений Spring Boot и задание переменных среды.

  2. Используйте расширение Azure Spring Apps для Azure CLI с приведенной ниже командой, чтобы создать приложение и запустить его в Azure Spring Apps:

    az spring app create \
       --resource-group <your-resource-group-name> \
       --service <your-Azure-Spring-Apps-instance-name> \
       --name <your-app-name> \
       --is-public true
    

Включение пользовательского постоянного хранилища для Azure Spring Apps

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

  1. Выполните инструкции, описанные в статье Как настроить собственное хранилище для Azure Spring Apps.

  2. Используйте приведенную ниже команду Azure CLI, чтобы добавить постоянное хранилище для приложений Azure Spring Apps.

    az spring app append-persistent-storage \
       --resource-group <your-resource-group-name> \
       --service <your-Azure-Spring-Apps-instance-name> \
       --name <your-app-name> \
       --persistent-storage-type AzureFileVolume \
       --share-name <your-Azure-file-share-name> \
       --mount-path <unique-mount-path> \
       --storage-name <your-mounted-storage-name>
    

Активация агента Java APM Elastic

Прежде чем продолжить, вам нужна информация о подключении сервера Elastic APM, которая предполагает, что вы развернули Elastic в Azure. Дополнительные сведения см. в статье Развертывание Elastic в Microsoft Azure и управление им. Чтобы получить эти сведения, выполните следующие действия:

  1. На портале Azure откройте страницу Обзор своего развертывания Elastic и выберите Управление развертыванием Elastic Cloud.

    Снимок экрана: страница портал Azure Elasticsearch (Elastic Cloud).

  2. В разделе развертывания в Elastic Cloud Console выберите раздел APM и Fleet , чтобы получить конечную точку сервера Elastic APM и секретный маркер.

    Снимок экрана: страница Elastic APM и Fleet с выделенным маркером копирования конечной точки и секрета сервера APM.

  3. Скачайте агент Java APM Elastic из Maven Central.

    Снимок экрана: Maven Central с выделенным скачиванием jar-файла.

  4. Отправьте агент APM Elastic в ранее включенное пользовательское постоянное хранилище. Перейдите в Общую папку Azure и нажмите Отправить, чтобы добавить JAR-файл агента.

    Снимок экрана: портал Azure, на котором показана панель

  5. Получив конечную точку и маркер секрета APM Elastic, воспользуйтесь приведенной ниже командой, чтобы активировать агент Java APM Elastic во время развертывания приложений. Заполнитель <agent-location> обозначает расположение подключенного хранилища агента Java APM Elastic.

    az spring app deploy \
        --name <your-app-name> \
        --artifact-path <unique-path-to-your-app-jar-on-custom-storage> \
        --jvm-options='-javaagent:<elastic-agent-location>' \
        --env ELASTIC_APM_SERVICE_NAME=<your-app-name> \
              ELASTIC_APM_APPLICATION_PACKAGES='<your-app-package-name>' \
              ELASTIC_APM_SERVER_URL='<your-Elastic-APM-server-URL>' \
              ELASTIC_APM_SECRET_TOKEN='<your-Elastic-APM-secret-token>'
    

Автоматизация подготовки

Вы также можете запустить конвейер автоматизации подготовки с помощью Terraform, Bicep или шаблона Azure Resource Manager (шаблон ARM). Этот конвейер может предоставить полный практический опыт для инструментирования и отслеживания новых создаваемых и развертываемых приложений.

Автоматизация подготовки с помощью Terraform

Чтобы настроить переменные среды в шаблоне Terraform, добавьте в него приведенный ниже код, заменив заполнители <…> собственными значениями. Дополнительные сведения см.на странице Manages an Active Azure Spring Apps Deployment (Управление развертыванием Active Azure Spring Apps).

resource "azurerm_spring_cloud_java_deployment" "example" {
  ...
  jvm_options = "-javaagent:<elastic-agent-location>"
  ...
    environment_variables = {
      "ELASTIC_APM_SERVICE_NAME"="<your-app-name>",
      "ELASTIC_APM_APPLICATION_PACKAGES"="<your-app-package>",
      "ELASTIC_APM_SERVER_URL"="<your-Elastic-APM-server-URL>",
      "ELASTIC_APM_SECRET_TOKEN"="<your-Elastic-APM-secret-token>"
  }
}

Автоматизация подготовки с помощью файла Bicep

Чтобы настроить переменные среды в файле Bicep, добавьте следующий код в файл, заменив <заполнители ...> собственными значениями. Дополнительные сведения см. в разделе Microsoft.AppPlatform Spring/apps/deployments.

deploymentSettings: {
  environmentVariables: {
    ELASTIC_APM_SERVICE_NAME='<your-app-name>',
    ELASTIC_APM_APPLICATION_PACKAGES='<your-app-package>',
    ELASTIC_APM_SERVER_URL='<your-Elastic-APM-server-URL>',
    ELASTIC_APM_SECRET_TOKEN='<your-Elastic-APM-secret-token>'
  },
  jvmOptions: '-javaagent:<elastic-agent-location>',
  ...
}

Автоматизация подготовки с помощью шаблона ARM

Чтобы настроить переменные среды в шаблоне ARM, добавьте в него приведенный ниже код, заменив заполнители <…> собственными значениями. Дополнительные сведения см. в разделе Microsoft.AppPlatform Spring/apps/deployments.

"deploymentSettings": {
  "environmentVariables": {
    "ELASTIC_APM_SERVICE_NAME"="<your-app-name>",
    "ELASTIC_APM_APPLICATION_PACKAGES"="<your-app-package>",
    "ELASTIC_APM_SERVER_URL"="<your-Elastic-APM-server-URL>",
    "ELASTIC_APM_SECRET_TOKEN"="<your-Elastic-APM-secret-token>"
  },
  "jvmOptions": "-javaagent:<elastic-agent-location>",
  ...
}

Обновление агента Java APM Elastic

Чтобы запланировать обновление, изучите страницы Версии обновлений для Elastic Cloud в Azure и Критические изменения для APM. После обновления сервера APM отправьте JAR-файл агента Java Elastic APM в пользовательское постоянное хранилище. Затем перезапустите приложения с обновленными параметрами JVM, указывающими на обновленный JAR-файл агента Elastic APM Java.

Мониторинг приложений и метрик с помощью APM Elastic

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

  1. На портале Azure откройте страницу Обзор своего развертывания Elastic и щелкните ссылку на Kibana.

    Снимок экрана: портал Azure, на котором показана страница Elasticsearch со ссылкой

  2. Открыв Kibana, введите APM в строку поиска и выберите APM.

    Снимок экрана: Elastic / Kibana, в котором показаны результаты поиска APM.

APM Kibana — это курируемое приложение для поддержки рабочих процессов мониторинга приложений. Здесь можно просмотреть высокоуровневые сведения, такие как время запроса и ответа, пропускная способность и транзакции в службе с наибольшим воздействием на длительность.

Снимок экрана: Elastic / Kibana, на котором показана страница обзора служб APM.

Можно детализировать конкретную транзакцию, чтобы просмотреть подробные сведения о ней, например распределенную трассировку.

Снимок экрана: Elastic / Kibana, на котором показана страница транзакций служб APM.

Агент Java APM Elastic также собирает метрики виртуальной машины Java из приложений Azure Spring Apps, доступные пользователям в приложении Kibana для устранения неполадок.

Снимок экрана: Elastic / Kibana, на котором показана страница JVM служб APM.

С помощью встроенной подсистемы искусственного интеллекта в решении Elastic можно также включить обнаружение аномалий в службах Azure Spring Apps и выбрать необходимое действие, например уведомление в Teams, создание задачи в JIRA, вызов API на основе веб-перехватчика и т. д.

Снимок экрана: Elastic / Kibana, на котором показана страница

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