Cómo supervisar aplicaciones Spring Boot con el agente de Java de Elastic APM
Nota:
Los planes Básico, Estándar y Enterprise quedarán en desuso a partir de mediados de marzo de 2025, con un período de jubilación de 3 años. Se recomienda realizar la transición a Azure Container Apps. Para obtener más información, consulte el anuncio de retirada de Azure Spring Apps.
El plan de consumo estándar y dedicado quedará obsoleto a partir del 30 de septiembre de 2024, con un cierre completo al cabo de seis meses. Se recomienda realizar la transición a Azure Container Apps. Para más información, consulte Migrar el consumo estándar y el plan dedicado de Azure Spring Apps a Azure Container Apps.
Este artículo se aplica a: ✔️ Nivel Básico o Estándar ❌ Nivel Enterprise
En este artículo se explica cómo usar el agente de Elastic APM para supervisar aplicaciones de Spring Boot que se ejecutan en Azure Spring Apps.
Con la solución de observabilidad elástica, puede lograr una observabilidad unificada para:
- Supervisar las aplicaciones mediante el agente de Java de Elastic APM y el uso del almacenamiento persistente con Azure Spring Apps.
- Usar la configuración de diagnóstico para enviar registros de Azure Spring Apps a Elastic. Para obtener más información, consulte Análisis de registros con Elastic (ELK) mediante la configuración de diagnóstico.
En el vídeo siguiente se presenta la observabilidad unificada para las aplicaciones Spring Boot que usan Elastic.
Requisitos previos
Implementación de la aplicación Spring Petclinic
En este artículo se usa el ejemplo Spring Petclinic para recorrer los pasos necesarios. Siga estos pasos para implementar la aplicación de ejemplo:
Siga los pasos descritos en Implementación de aplicaciones Spring Boot mediante Azure Spring Apps y MySQL hasta llegar a la sección Implementación de aplicaciones Spring Boot y configuración de variables de entorno.
Use la extensión Azure Spring Apps para CLI de Azure con el siguiente comando para crear una aplicación que se ejecute en 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
Habilitación del almacenamiento persistente personalizado para Azure Spring Apps
Siga estos pasos para habilitar el almacenamiento persistente personalizado:
Siga los pasos descritos en Cómo habilitar su propio almacenamiento persistente en Azure Spring Apps.
Use el siguiente comando de la CLI de Azure para agregar almacenamiento persistente para sus aplicaciones 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>
Active el agente de Java de Elastic APM
Antes de continuar, necesita la información de conectividad del servidor Elastic APM a mano, que supone que ha implementado Elastic en Azure. Para más información, consulteComo implementar y administrar Elastic en Microsoft Azure. Para obtener esta información, siga estos pasos:
En el Azure Portal, vaya a la página Información general de su implementación de Elastic y seleccione Administrar implementación de Elastic Cloud.
En la implementación en Elastic Cloud Console, seleccione la sección APM & Fleet para obtener el punto de conexión y el token secreto de Elastic APM Server.
Descargue el agente de Java de Elastic APM desde Maven Central.
Cargue el agente de Elastic APM al almacenamiento persistente personalizado que ha habilitado anteriormente. Vaya a Azure Fileshare y seleccione Cargar para agregar el archivo JAR del agente.
Una vez que tenga el punto de conexión de Elastic APM y el token secreto, use el siguiente comando para activar el agente de Java de Elastic APM al implementar aplicaciones. El marcador de posición
<agent-location>
hace referencia a la ubicación de almacenamiento montado del agente de Java de Elastic APM.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>'
Aprovisionamiento automatizado
También puede ejecutar una canalización de automatización de aprovisionamiento mediante Terraform, Bicep o una plantilla de Azure Resource Manager (plantilla de ARM). Esta canalización puede proporcionar una experiencia práctica completa para instrumentar y supervisar las nuevas aplicaciones que cree e implemente.
Aprovisionamiento automatizado mediante Terraform
Para configurar las variables de entorno en una plantilla de Terraform, agregue el código que se muestra a continuación a la plantilla y reemplace los marcadores de posición <...> por sus propios valores. Para más información, consulte Administración de una implementación activa de 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>"
}
}
Automatización del aprovisionamiento mediante un archivo de Bicep
Para configurar las variables de entorno en un archivo de Bicep, agregue el código siguiente al archivo y reemplace los marcadores de posición <…> por sus propios valores. Para obtener más información, consulte 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>',
...
}
Aprovisionamiento automatizado mediante una plantilla de ARM
Para configurar las variables de entorno en una plantilla de ARM, agregue el código a la plantilla que se muestra a continuación y reemplace los marcadores de posición <...> por sus propios valores. Para obtener más información, consulte 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>",
...
}
Actualice el agente de Java de Elastic APM
Para planear la actualización, consulte Actualizar versiones de Elastic Cloud en Azure, y Cambios importantes en APM. Después de actualizar el servidor APM, cargue el archivo JAR del agente de Java de Elastic APM en el almacenamiento persistente personalizado. A continuación, reinicie las aplicaciones con las opciones de JVM actualizadas que apuntan al archivo JAR del agente de Java de Elastic APM actualizado.
Supervisión de aplicaciones y métricas con Elastic APM
Siga estos pasos para supervisar las aplicaciones y las métricas:
En el Azure Portal, vaya a la página Información general de su implementación de Elastic y seleccione el vínculo Kibana.
Una vez que Kibana esté abierto, busque APM en la barra de búsqueda y seleccione APM.
Kibana APM es la aplicación mantenida para admitir flujos de trabajo de supervisión de aplicaciones. Aquí puede ver detalles de alto nivel, como los tiempos de solicitud y respuesta, el rendimiento y las transacciones de un servicio con el mayor impacto en la duración.
Puede explorar en profundidad una transacción concreta para reconocer los detalles específicos de la transacción, como, por ejemplo, el seguimiento distribuido.
El agente de Java de Elastic APM también registra las métricas de JVM de las aplicaciones Azure Spring Apps que están disponibles con la aplicación Kibana para que los usuarios puedan solucionar problemas.
Con el motor de IA integrado en la solución de Elastic, también puede habilitar la detección de anomalías en los servicios de Azure Spring Apps y elegir una acción adecuada, como una notificación de Teams, la creación de una incidencia en JIRA, una llamada API basada en webhooks, etc.