Мониторинг приложений Spring Boot с помощью агента Java APM Elastic
Примечание.
Планы "Базовый", "Стандартный" и "Корпоративный" будут устарели начиная с середины марта 2025 г. с 3-летнего периода выхода на пенсию. Рекомендуется перейти в приложения контейнеров Azure. Дополнительные сведения см. в объявлении о выходе на пенсию в Azure Spring Apps.
Стандартный план потребления и выделенного плана будет устарел с 30 сентября 2024 г. с полным завершением работы после шести месяцев. Рекомендуется перейти в приложения контейнеров Azure. Дополнительные сведения см. в статье "Миграция потребления Azure Spring Apps Standard" и выделенного плана в приложения контейнеров Azure.
Эта статья относится к: ✔️ Basic/Standard ❌ Enterprise
В этой статье описывается использование агента APM Elastic для мониторинга приложений Spring Boot, запущенных в Azure Spring Apps.
Благодаря решению наблюдаемости Elastic можно достичь комплексной наблюдаемости, которая позволяет выполнять следующие действия:
- Отслеживать приложения с помощью агента Java APM Elastic и постоянного хранилища с Azure Spring Apps.
- Использовать параметры диагностики для отправки журналов Azure Spring Apps в Elastic. Дополнительные сведения см. в статье Анализ журналов с помощью параметров диагностики Elastic (ELK).
В следующем видео описывается комплексная наблюдаемость для приложений Spring Boot с Elastic.
Необходимые компоненты
Развертывание приложения Spring Petclinic
В этой статье для выполнения необходимых действий в качестве примера используется приложение Spring Petclinic. Для развертывания примера приложения выполните следующие действия:
Выполните инструкции, описанные в статье Развертывание приложений Spring Boot с помощью Azure Spring Apps и MySQL, до раздела Развертывание приложений Spring Boot и задание переменных среды.
Используйте расширение 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
Чтобы включить пользовательское постоянное хранилище, выполните следующие действия:
Выполните инструкции, описанные в статье Как настроить собственное хранилище для Azure Spring Apps.
Используйте приведенную ниже команду 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 и управление им. Чтобы получить эти сведения, выполните следующие действия:
На портале Azure откройте страницу Обзор своего развертывания Elastic и выберите Управление развертыванием Elastic Cloud.
В разделе развертывания в Elastic Cloud Console выберите раздел APM и Fleet , чтобы получить конечную точку сервера Elastic APM и секретный маркер.
Скачайте агент Java APM Elastic из Maven Central.
Отправьте агент APM Elastic в ранее включенное пользовательское постоянное хранилище. Перейдите в Общую папку Azure и нажмите Отправить, чтобы добавить JAR-файл агента.
Получив конечную точку и маркер секрета 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
Чтобы отслеживать приложения и метрики, выполните следующие действия:
На портале Azure откройте страницу Обзор своего развертывания Elastic и щелкните ссылку на Kibana.
Открыв Kibana, введите APM в строку поиска и выберите APM.
APM Kibana — это курируемое приложение для поддержки рабочих процессов мониторинга приложений. Здесь можно просмотреть высокоуровневые сведения, такие как время запроса и ответа, пропускная способность и транзакции в службе с наибольшим воздействием на длительность.
Можно детализировать конкретную транзакцию, чтобы просмотреть подробные сведения о ней, например распределенную трассировку.
Агент Java APM Elastic также собирает метрики виртуальной машины Java из приложений Azure Spring Apps, доступные пользователям в приложении Kibana для устранения неполадок.
С помощью встроенной подсистемы искусственного интеллекта в решении Elastic можно также включить обнаружение аномалий в службах Azure Spring Apps и выбрать необходимое действие, например уведомление в Teams, создание задачи в JIRA, вызов API на основе веб-перехватчика и т. д.