Supervisión de aplicaciones de Spring Boot con el agente de Java de AppDynamics

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 retirada de 3 años. Se recomienda realizar la transición a Azure Container Apps. Para más información, consulte el anuncio de retirada de Azure Spring Apps.

El plan Estándar por consumo 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 plan Estándar por consumo y dedicado de Azure Spring Apps a Azure Container Apps.

Este artículo se aplica a: ✔️ Consumo dedicado estándar (versión preliminar) ✔️ Básico/Estándar ✔️ ❌Enterprise

En este artículo se explica cómo usar el agente de Java de AppDynamics para supervisar aplicaciones Spring Boot en Azure Spring Apps.

Con el agente de Java de AppDynamics puede:

  • Supervisión de aplicaciones
  • Configurar el agente de Java de AppDynamics mediante variables de entorno
  • Comprobar todos los datos de supervisión del panel de AppDynamics

En el vídeo siguiente se presenta el agente In-Process de Java de AppDynamics.


Requisitos previos

Activación del agente In-Process de Java de AppDynamics

Para el flujo de trabajo completo, debe:

  • Activar el agente In-Process de Java de AppDynamics en Azure Spring Apps para generar datos de métricas de aplicación.
  • Conectar el agente de AppDynamics al controlador de AppDynamics para recopilar y visualizar los datos del controlador.

Diagrama que muestra AppDynamics Agent con una flecha bidireccional a Spring Boot Apps en Azure Spring Apps y una flecha que apunta a AppDynamics Agent.

Activación de una aplicación con el agente de AppDynamics mediante la CLI de Azure

Para activar una aplicación mediante la CLI de Azure, siga estos pasos.

  1. Cree un grupo de recursos.

  2. Cree una instancia de Azure Spring Apps.

  3. Cree una aplicación con el comando siguiente. Reemplace los marcadores de posición <...> por sus propios valores.

    az spring app create \
        --resource-group "<your-resource-group-name>" \
        --service "<your-Azure-Spring-Apps-instance-name>" \
        --name "<your-app-name>" \
        --is-public true
    
  4. Cree una implementación con el agente de AppDynamics mediante variables de entorno.

    az spring app deploy \
        --resource-group "<your-resource-group-name>" \
        --service "<your-Azure-Spring-Apps-instance-name>" \
        --name "<your-app-name>" \
        --artifact-path app.jar \
        --jvm-options="-javaagent:/opt/agents/appdynamics/java/javaagent.jar" \
        --env APPDYNAMICS_AGENT_APPLICATION_NAME=<your-app-name> \
              APPDYNAMICS_AGENT_ACCOUNT_ACCESS_KEY=<your-agent-access-key> \
              APPDYNAMICS_AGENT_ACCOUNT_NAME=<your-agent-account-name> \
              APPDYNAMICS_JAVA_AGENT_REUSE_NODE_NAME=true \
              APPDYNAMICS_JAVA_AGENT_REUSE_NODE_NAME_PREFIX=<your-agent-node-name> \
              APPDYNAMICS_AGENT_TIER_NAME=<your-agent-tier-name> \
              APPDYNAMICS_CONTROLLER_HOST_NAME=<your-AppDynamics-controller-host-name> \
              APPDYNAMICS_CONTROLLER_SSL_ENABLED=true \
              APPDYNAMICS_CONTROLLER_PORT=443
    

Azure Spring Apps preinstala el agente de Java de AppDynamics en la ruta de acceso /opt/agents/appdynamics/java/javaagent.jar. Puede activar el agente desde las opciones de JVM de las aplicaciones y luego configurarlo mediante variables de entorno. Puede encontrar valores para estas variables en Supervisión de Azure Spring Apps con el agente de Java. Para obtener más información sobre cómo ayudan estas variables a ver y organizar informes en la interfaz de usuario de AppDynamics, vea Niveles y nodos.

Activación de una aplicación con el agente de AppDynamics mediante Azure Portal

Para activar una aplicación mediante Azure Portal, siga estos pasos.

  1. Vaya a la instancia de Azure Spring Apps en Azure Portal.

  2. Seleccione Aplicaciones en la sección Configuración del panel de navegación.

    Captura de pantalla de Azure Portal que muestra la página Aplicaciones de una instancia de Azure Spring Apps.

  3. Seleccione la aplicación y a continuación, seleccione Configuración en el panel de navegación.

  4. Use la pestaña Configuración general para actualizar valores como las opciones de JVM.

    Captura de pantalla de Azure Portal que muestra la página Configuración de una aplicación en una instancia de Azure Spring Apps, con la pestaña Configuración general seleccionada.

  5. Seleccione Variables de entorno para agregar o actualizar las variables que usa la aplicación.

    Captura de pantalla de Azure Portal que muestra la página Configuración con la pestaña Variables de entorno seleccionada.

Aprovisionamiento automatizado

También puede ejecutar una canalización de automatización de aprovisionamiento mediante Terraform, Bicep o 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:/opt/agents/appdynamics/java/javaagent.jar"
  ...
    environment_variables = {
      "APPDYNAMICS_AGENT_APPLICATION_NAME" : "<your-app-name>",
      "APPDYNAMICS_AGENT_ACCOUNT_ACCESS_KEY" : "<your-agent-access-key>",
      "APPDYNAMICS_AGENT_ACCOUNT_NAME" : "<your-agent-account-name>",
      "APPDYNAMICS_JAVA_AGENT_REUSE_NODE_NAME" : "true",
      "APPDYNAMICS_JAVA_AGENT_REUSE_NODE_NAME_PREFIX" : "<your-agent-node-name>",
      "APPDYNAMICS_AGENT_TIER_NAME" : "<your-agent-tier-name>",
      "APPDYNAMICS_CONTROLLER_HOST_NAME" : "<your-AppDynamics-controller-host-name>",
      "APPDYNAMICS_CONTROLLER_SSL_ENABLED" : "true",
      "APPDYNAMICS_CONTROLLER_PORT" : "443"
  }
}

Aprovisionamiento automatizado mediante 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: {
    APPDYNAMICS_AGENT_APPLICATION_NAME : '<your-app-name>'
    APPDYNAMICS_AGENT_ACCOUNT_ACCESS_KEY : '<your-agent-access-key>'
    APPDYNAMICS_AGENT_ACCOUNT_NAME : '<your-agent-account-name>'
    APPDYNAMICS_JAVA_AGENT_REUSE_NODE_NAME : 'true'
    APPDYNAMICS_JAVA_AGENT_REUSE_NODE_NAME_PREFIX : '<your-agent-node-name>'
    APPDYNAMICS_AGENT_TIER_NAME : '<your-agent-tier-name>'
    APPDYNAMICS_CONTROLLER_HOST_NAME : '<your-AppDynamics-controller-host-name>'
    APPDYNAMICS_CONTROLLER_SSL_ENABLED : 'true'
    APPDYNAMICS_CONTROLLER_PORT : '443'
  }
  jvmOptions: '-javaagent:/opt/agents/appdynamics/java/javaagent.jar'
}

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": {
    "APPDYNAMICS_AGENT_APPLICATION_NAME" : "<your-app-name>",
    "APPDYNAMICS_AGENT_ACCOUNT_ACCESS_KEY" : "<your-agent-access-key>",
    "APPDYNAMICS_AGENT_ACCOUNT_NAME" : "<your-agent-account-name>",
    "APPDYNAMICS_JAVA_AGENT_REUSE_NODE_NAME" : "true",
    "APPDYNAMICS_JAVA_AGENT_REUSE_NODE_NAME_PREFIX" : "<your-agent-node-name>",
    "APPDYNAMICS_AGENT_TIER_NAME" : "<your-agent-tier-name>",
    "APPDYNAMICS_CONTROLLER_HOST_NAME" : "<your-AppDynamics-controller-host-name>",
    "APPDYNAMICS_CONTROLLER_SSL_ENABLED" : "true",
    "APPDYNAMICS_CONTROLLER_PORT" : "443"
  },
  "jvmOptions": "-javaagent:/opt/agents/appdynamics/java/javaagent.jar",
  ...
}

Revisión de informes en el panel de AppDynamics

En esta sección se muestran varios informes en AppDynamics.

En la captura de pantalla siguiente se muestra información general de las aplicaciones en el panel de AppDynamics:

Captura de pantalla de AppDynamics que muestra el panel Aplicaciones.

La pestaña Aplicaciones muestra la información general de cada una de las aplicaciones, como se muestra en las capturas de pantalla siguientes mediante aplicaciones de ejemplo:

  • api-gateway

    Captura de pantalla de AppDynamics que muestra el Panel de la aplicación para la aplicación api-gateway de ejemplo.

  • customers-service

    Captura de pantalla de AppDynamics que muestra el Panel de la aplicación para la aplicación customers-service de ejemplo.

En la captura de pantalla siguiente se muestra cómo obtener información básica del panel Llamadas a base de datos.

Captura de pantalla de AppDynamics que muestra el panel de llamadas de base de datos.

También se puede obtener información sobre las llamadas a base de datos más lentas, como se muestra en estas capturas de pantalla:

Captura de pantalla de AppDynamics que muestra la página de llamadas de base de datos más lentas.

Captura de pantalla de AppDynamics que muestra la página de instantáneas correlacionadas a la que se accede desde la página de llamadas de base de datos más lentas.

En la captura de pantalla siguiente se muestra el análisis de uso de memoria en la sección Montón de la página Memoria:

Captura de pantalla de AppDynamics que muestra la sección Montón de la página Memoria.

También puede ver el proceso de recolección de elementos no utilizados, como se muestra en esta captura de pantalla:

Captura de pantalla de AppDynamics que muestra la sección Recolección de elementos no utilizados de la página Memoria.

En la captura de pantalla siguiente se muestra la página Transacciones lentas:

Captura de pantalla de AppDynamics que muestra la página de transacciones lentas.

Puede definir más métricas para JVM, como se muestra en esta captura de pantalla del explorador de métricas:

Captura de pantalla de AppDynamics que muestra el explorador de métricas.

Visualización de registros del agente de AppDynamics

De manera predeterminada, Azure Spring Apps imprime los registros de nivel de información del agente de AppDynamics en STDOUT. Los registros se mezclan con los registros de la aplicación. Puede encontrar la versión explícita del agente en los registros de aplicaciones.

También puede obtener los registros del agente de AppDynamics desde las siguientes ubicaciones:

  • Registros de Azure Spring Apps
  • Application Insights de Azure Spring Apps
  • LogStream de Azure Spring Apps

Más información sobre la actualización del agente de AppDynamics

El agente de AppDynamics se actualiza periódicamente con JDK (trimestralmente). La actualización del agente puede afectar a los escenarios siguientes:

  • Las aplicaciones existentes que usaban el agente de AppDynamics antes de la actualización no se modifican, pero necesitan reiniciarse o volver a implementarse para interactuar con la nueva versión del agente de AppDynamics.
  • Las aplicaciones creadas después de la actualización usan la nueva versión del agente de AppDynamics.

Configuración del tráfico de salida de la instancia de inyección de red virtual

En el caso de las instancias de inyección de red virtual de Azure Spring Apps, asegúrese de que el tráfico de salida esté configurado correctamente para el agente de AppDynamics. Para obtener detalles, consulte e Intervalos IP y dominios SaaS de Cisco AppDynamics y Responsabilidades del cliente para ejecutar Azure Spring Apps en una red virtual.

Descripción de las limitaciones

Para comprender las limitaciones del agente de AppDynamics, vea Supervisión de Azure Spring Apps con el agente de Java.

Pasos siguientes

Uso del agente In-Process de Java de Application Insights en Azure Spring Apps