Cómo supervisar aplicaciones Spring Boot con el agente de Java de Elastic APM

Nota:

Azure Spring Apps es el nuevo nombre del servicio Azure Spring Cloud. Aunque el servicio tiene un nuevo nombre, verá el nombre antiguo en algunos lugares durante un tiempo mientras trabajamos para actualizar recursos, como capturas de pantalla, vídeos y diagramas.

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:

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:

  1. 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.

  2. 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:

  1. Siga los pasos descritos en Cómo habilitar su propio almacenamiento persistente en Azure Spring Apps.

  2. 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:

  1. 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.

    Captura de pantalla de la página Elasticsearch (Elastic Cloud) de Azure Portal.

  2. 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.

    Captura de pantalla de la página Elastic APM y Fleet con el punto de conexión de copia y el token secreto del servidor APM resaltados.

  3. Descargue el agente de Java de Elastic APM desde Maven Central.

    Captura de pantalla de Maven Central con la descarga de jar resaltada.

  4. 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.

    Captura de pantalla de Azure Portal que muestra el panel Cargar archivos de la página Compartir archivos.

  5. 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:

  1. En el Azure Portal, vaya a la página Información general de su implementación de Elastic y seleccione el vínculo Kibana.

    Captura de pantalla de Azure Portal en la que se muestra la página Elasticsearch con el vínculo de la dirección URL de implementación de Kibana resaltado.

  2. Una vez que Kibana esté abierto, busque APM en la barra de búsqueda y seleccione APM.

    Captura de pantalla de Elastic/Kibana que muestra los resultados de búsqueda de 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.

Captura de pantalla de Elastic /Kibana que muestra la página de información general de los servicios de APM.

Puede explorar en profundidad una transacción concreta para reconocer los detalles específicos de la transacción, como, por ejemplo, el seguimiento distribuido.

Captura de pantalla de Elastic/Kibana que muestra la página Transacciones de servicios de APM.

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.

Captura de pantalla de Elastic/Kibana que muestra la página JVM de servicios de APM.

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.

Captura de pantalla de Elastic/Kibana que muestra la página Servicios de APM con el panel Crear regla que muestra y Acciones resaltadas.

Pasos siguientes