Solución de problemas comunes de Azure Spring Apps

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.

La información de este artículo puede ponerse en práctica en: ✔️ Básico o Estándar ✔️ Enterprise

En este artículo se proporcionan instrucciones para solucionar problemas de desarrollo de Azure Spring Apps. Para más información, consulte Preguntas más frecuentes sobre Azure Spring Apps.

Incidencias relacionadas con la disponibilidad, el rendimiento y las aplicaciones

Mi aplicación no se puede iniciar

Cuando la aplicación no se puede iniciar, es posible que encuentre que su punto de conexión no se puede conectar o devuelve el error 502 después de algunos reintentos.

Para solucionar problemas, exporte los registros a Azure Log Analytics. La tabla de los registros de aplicaciones de Spring se denomina AppPlatformLogsforSpring. Para obtener más información, consulte Análisis de registros y métricas con la configuración de diagnóstico.

Puede aparecer el siguiente mensaje de error en los registros: org.springframework.context.ApplicationContextException: Unable to start web server

El mensaje indica uno de dos problemas probables:

  • Falta uno de los beans o una de sus dependencias.
  • Falta una de las propiedades de bean o no es válida. En este caso, se muestra "java.lang.IllegalArgumentException".

Es posible que los enlaces de servicios también provoquen errores de inicio de la aplicación. Para consultar los registros, use palabras clave relacionadas con los servicios enlazados. Por ejemplo, supongamos que la aplicación tiene un enlace a una instancia de MySQL establecida en la hora del sistema local. Si la aplicación no se inicia, puede aparecer el siguiente error en el registro:

"java.sql.SQLException: el valor de zona horaria del servidor "Hora universal coordinada" no se reconoce o representa más de una zona horaria."

Para solucionar este error, vaya a server parameters en la instancia de MySQL y cambie el valor time_zone de SYSTEM a +0:00.

La aplicación se bloquea o genera un error inesperado

Al depurar los bloqueos de la aplicación, empiece por comprobar el estado de la ejecución y de detección de la aplicación. Para ello, vaya a Apps en Azure Portal para asegurarse de que los estados de todas las aplicaciones sean En ejecución y ACTIVO.

  • Si el estado es En ejecución, pero el estado de detección no es ACTIVO, vaya a la sección "Mi aplicación no se puede registrar".

  • Si el estado de detección es ACTIVO, vaya a Métricas para comprobar el estado de la aplicación. Compruebe las siguientes métricas:

    • tomcat.global.error:

      Aquí se cuentan todas las excepciones de la aplicación Spring. Si el número es grande, vaya a Azure Log Analytics para comprobar los registros de aplicaciones.

    • jvm.memory.max:

      La cantidad máxima de memoria disponible para la aplicación. Es posible que la cantidad no esté definida o que cambie con el tiempo si se define. Si está definida, la cantidad de memoria usada y asignada siempre es menor o igual al valor máximo. Sin embargo, se puede producir un error de asignación de memoria con un mensaje OutOfMemoryError si la asignación intenta aumentar la memoria usada, de modo que la memoria usada > memoria asignada, incluso si la memoria usada <= valor máximo sigue siendo true. En tal caso, intente aumentar el tamaño máximo del montón mediante el parámetro -Xmx.

    • jvm.memory.used:

      La cantidad de memoria, en bytes, que usa actualmente la aplicación. En el caso de una aplicación Java de carga normal, esta serie de métricas forma un patrón de sierra, donde el uso de memoria aumenta y disminuye continuamente en pequeños incrementos y caídas repentinas y, a continuación, este patrón se repite. Esta serie de métricas se debe a la recolección de elementos no utilizados dentro de la máquina virtual Java, donde las acciones de recolección representan caídas en el patrón de sierra.

      Esta métrica es importante para ayudar a identificar problemas de memoria, por ejemplo:

      • Una explosión de memoria al principio mismo.
      • La asignación de memoria de sobrecarga para una ruta de acceso lógica específica.
      • Fugas de memoria graduales.

    Para obtener más información, consulte Métricas.

    Nota:

    Estas métricas solo están disponibles para las aplicaciones de Spring Boot. Para habilitar estas métricas, agregue la spring-boot-starter-actuator dependencia. Para obtener más información, consulte la sección Agregar dependencia del accionador de Administrar y supervisar la aplicación con el accionador de Spring Boot.

  • Si la aplicación no se inicia, compruebe que la aplicación tiene parámetros de jvm válidos. Si la memoria de jvm está establecida en un valor demasiado alto, puede aparecer el siguiente mensaje de error en los registros:

    "required memory 2728741K is greater than 2000M available for allocation" (la memoria requerida, 2728741 kB, es mayor que los 2000 MB disponibles para la asignación)

Para obtener más información sobre Azure Log Analytics, consulte Introducción a los análisis de registros de Azure Monitor.

Mi aplicación experimenta un uso elevado de la CPU o la memoria

Si la aplicación experimenta un uso elevado de la CPU o de la memoria, sucede una de estas dos cosas:

  • Todas las instancias de la aplicación experimentan un uso elevado de la CPU o de la memoria.
  • Algunas de las instancias de la aplicación experimentan un uso elevado de la CPU o de la memoria.

Para averiguar qué situación se aplica, siga estos pasos:

  1. Vaya a Métricas y seleccione Service CPU Usage Percentage (Porcentaje de uso de CPU del servicio) o Service Memory Used (Memoria de servicio usada).
  2. Agregue un filtro App= para especificar qué aplicación quiere supervisar.
  3. Divida las métricas por Instancia.

Si todas las instancias experimentan un uso elevado de la CPU o memoria, debe escalar horizontalmente la aplicación o escalar verticalmente e uso de CPU o memoria. Para más información, consulte el Tutorial: Escalado de una aplicación en Azure Spring Apps.

Si solo algunas instancias experimentan un uso elevado de la CPU o de la memoria, compruebe el estado de las instancias y su estado de detección.

Para obtener más información, consulte Métricas en Azure Spring Apps.

Si todas las instancias están en funcionamiento, vaya a Azure Log Analytics para consultar los registros de la aplicación y examine la lógica del código. Esta revisión le ayuda a ver si alguno de ellos podría afectar a la creación de particiones de escalado. Para obtener más información, consulte Análisis de registros y métricas con la configuración de diagnóstico.

Para obtener más información sobre Azure Log Analytics, consulte Introducción a los análisis de registros de Azure Monitor. Consulte los registros con el lenguaje de consulta Kusto.

Lista de comprobación para la implementación de la aplicación Spring en Azure Spring Apps

Antes de incorporar la aplicación, asegúrese de que cumple los siguientes criterios:

  • La aplicación se puede ejecutar localmente con la versión del runtime de Java especificada.
  • La configuración del entorno (CPU/RAM/instancias) cumple los requisitos mínimos que establece el proveedor de aplicaciones.
  • Los elementos de configuración tienen los valores esperados. Para más información, consulte Configuración de una instancia de Config Server en Spring Cloud para su servicio. Para el plan Enterprise, consulte Uso del servicio de configuración de aplicaciones.
  • Las variables de entorno tienen los valores esperados.
  • Los parámetros de JVM tienen los valores esperados.
  • Se recomienda deshabilitar o quitar los servicios Config Server y Spring Service Registry insertados del paquete de aplicación.
  • Si algún recurso de Azure se debe enlazar mediante Enlaces de servicio, asegúrese de que los recursos de destino estén en funcionamiento.

Configuración y administración

Ha aparecido un problema al crear una instancia de servicio de Azure Spring Apps.

Al configurar una instancia de servicio de Azure Spring Apps desde Azure Portal, Azure Spring Apps realiza la validación automáticamente.

Pero si intenta configurar la instancia de servicio de Azure Spring Apps mediante laCLI de Azure o la plantilla de Azure Resource Manager , compruebe que cumple las condiciones siguientes:

  • Que la suscripción está activa.
  • Azure Spring Apps está disponible en la región que usa. Para más información, consulte las preguntas frecuentes de Azure Spring Apps.
  • Que se ha creado el grupo de recursos de la instancia.
  • Que el nombre del recurso se ajusta a la regla de nomenclatura El nombre solo debe contener letras minúsculas, números y guiones. El primer carácter debe ser una letra. El último carácter debe ser una letra o un número. El valor tiene que contener entre 2 y 32 caracteres.

Si desea configurar la instancia de servicio de Azure Spring Apps mediante la plantilla de Resource Manager, consulte primero Nociones sobre la estructura y la sintaxis de las plantillas de Azure Resource Manager.

El nombre de la instancia de servicio de Azure Spring Apps se usa para solicitar un nombre de subdominio en azuremicroservices.io, por lo que se produce un error en la instalación si el nombre entra en conflicto con uno existente. Puede encontrar más detalles en los registros de actividad.

No puedo implementar una aplicación de .NET Core

No se puede cargar un archivo .zip para una aplicación de Steeltoe de .NET Core mediante Azure Portal o la plantilla de Resource Manager.

Al implementar el paquete de aplicación mediante la CLI de Azure, esta sondea periódicamente el progreso de la implementación y, al final, muestra el resultado de la implementación.

Asegúrese de que la aplicación esté empaquetada en el formato de archivo .zip correcto. Si no está correctamente empaquetado, el proceso dejará de responder o se mostrará un mensaje de error.

No puedo implementar un paquete JAR

No puede cargar el archivo de Java Archive (JAR) o el paquete de origen mediante Azure Portal o la plantilla de Resource Manager.

Al implementar el paquete de aplicación mediante la CLI de Azure, esta sondea periódicamente el progreso de la implementación y, al final, muestra el resultado de la implementación.

Si se interrumpe el sondeo, se puede seguir usando el siguiente comando para capturar los registros de implementación:

az spring app show-deploy-log --name <app-name>

Asegúrese de que la aplicación esté empaquetada en el formato jar ejecutable correcto. Si no se empaqueta correctamente, recibirá un mensaje de error similar al ejemplo siguiente: Error: Invalid or corrupt jarfile /jar/38bc8ea1-a6bb-4736-8e93-e8f3b52c8714

No puedo implementar un paquete de origen

No puede cargar el paquete de origen o JAR mediante Azure Portal o la plantilla de Resource Manager.

Al implementar el paquete de aplicación mediante la CLI de Azure, esta sondea periódicamente el progreso de la implementación y, al final, muestra el resultado de la implementación.

Si se interrumpe el sondeo, se puede seguir usando el siguiente comando para capturar los registros de creación e implementación:

az spring app show-deploy-log --name <app-name>

Sin embargo, una instancia de servicio de Azure Spring Apps solo puede desencadenar un trabajo de compilación para un paquete de origen a la vez. Para obtener más información, vea Implementación de una aplicación y Configuración de un entorno de ensayo en Azure Spring Apps.

No se puede registrar mi aplicación

En la mayoría de los casos, esta situación se produce cuando Dependencias requeridas y Detección de servicios no están configuradas correctamente en el archivo de Project Object Model (POM). Una vez configuradas, el punto de conexión del servidor de Service Registry integrado se inserta como variable de entorno con la aplicación. Las aplicaciones se registran por sí solas en el servidor de Service Registry y detectar otras aplicaciones dependientes.

Espere al menos dos minutos para que una instancia recién registrada empiece a recibir tráfico.

Si va a migrar una solución existente basada en Spring Cloud a Azure, asegúrese de quitar o deshabilitar de Service Registry y Config Server para evitar conflictos con las instancias administradas proporcionadas por Azure Spring Apps.

También puede consultar los registros de cliente de Service Registry en Azure Log Analytics. Para obtener más información, consulte Análisis de registros y métricas con la configuración de diagnóstico.

Para obtener más información sobre Azure Log Analytics, consulte Introducción a los análisis de registros de Azure Monitor. Consulte los registros con el lenguaje de consulta Kusto.

Deseo inspeccionar las variables de entorno de mi aplicación

Las variables de entorno informan al marco de Azure Spring Apps, lo que garantiza que Azure sabe dónde y cómo configurar los servicios que componen la aplicación. Asegurarse de que las variables de entorno son correctas es un primer paso necesario para solucionar los posibles problemas. Puede usar el punto de conexión de Spring Boot Actuator para examinar las variables de entorno.

Advertencia

Este procedimiento expone las variables de entorno mediante un punto de conexión de prueba. No continúe si se puede acceder de forma pública al punto de conexión de prueba o si ha asignado un nombre de dominio a la aplicación.

  1. Ir a https://<your-application-test-endpoint>/actuator/health.

    Una respuesta similar a {"status":"UP"} indica que se ha habilitado el punto de conexión. Si la respuesta es negativa, incluya la siguiente dependencia en el archivo POM.xml:

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-actuator</artifactId>
    </dependency>
    
  2. Con el punto de conexión de Spring Boot Actuator habilitado, vaya a Azure Portal y busque la página de configuración de la aplicación. Agregue una variable de entorno con el nombre MANAGEMENT_ENDPOINTS_WEB_EXPOSURE_INCLUDE y el valor *.

  3. Reinicie la aplicación.

  4. Vaya a https://<your-application-test-endpoint>/actuator/env e inspeccione la respuesta. Debería ser parecido a este:

    {
        "activeProfiles": [],
        "propertySources": {,
            "name": "server.ports",
            "properties": {
                "local.server.port": {
                    "value": 1025
                }
            }
        }
    }
    

Busque el nodo secundario denominado systemEnvironment. Este nodo contiene las variables de entorno de la aplicación.

Importante

No olvide invertir la exposición de las variables de entorno antes de que la aplicación esté disponible para el público. Vaya a Azure Portal, busque la página de configuración de la aplicación y elimine esta variable de entorno: MANAGEMENT_ENDPOINTS_WEB_EXPOSURE_INCLUDE.

No encuentro las métricas ni los registros de la aplicación

Vaya a Apps para asegurarse de que los estados de la aplicación sean En ejecución y ACTIVO.

Active esta opción para ver si JMX está habilitado en el paquete de aplicación. Esta característica se puede habilitar con la propiedad de configuración spring.jmx.enabled=true.

Compruebe si la dependencia de spring-boot-actuator está habilitada en el paquete de aplicación y si arranca correctamente.

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-actuator</artifactId>
</dependency>

Si los registros de la aplicación se pueden archivar en una cuenta de almacenamiento, pero no se envían a Azure Log Analytics, compruebe si configuró el área de trabajo correctamente. Para más información, consulte Creación de un área de trabajo de Log Analytics. Además, tenga en cuenta que el plan Básico no proporciona un acuerdo de nivel de servicio (SLA). Para obtener más información, consulte Acuerdos de nivel de servicio (SLA) para servicios en línea.

Plan Enterprise

Error 112039: No se pudo comprar en Azure Marketplace

Se produce un error al crear una instancia de plan enterprise de Azure Spring Apps con el código de error "112039". Para obtener más información, consulte el mensaje de error detallado en la lista siguiente:

  • "No se pudo comprar en Azure Marketplace porque el RP de Microsoft.SaaS no está registrado en la suscripción de Azure".: El plan Enterprise de Azure Spring Apps adquiere una oferta de SaaS de VMware.

    Debe registrar el proveedor de recursos de Microsoft.SaaS antes de crear una instancia de Azure Spring Apps Enterprise. Consulte cómo registrar un proveedor de recursos.

  • "No se pudo cargar el producto de catálogo vmware-inc.azure-spring-cloud-vmware-tanzu-2 en el mercado de suscripciones de Azure".: la dirección de la cuenta de facturación de su suscripción de Azure no está en la ubicación admitida.

    Para más información, consulte la sección No hay planes disponibles para el mercado "<Ubicación>"

  • "Failed to purchase on Azure Marketplace due to signature verification on Marketplace legal agreement. Compruebe que la suscripción de Azure acepta los términos vmware-inc.azure-spring-cloud-vmware-tanzu-2.asa-ent-hr-mtr": su suscripción de Azure no ha firmado los términos de la oferta y tiene previsto adquirirse.

    Vaya a su suscripción de Azure y ejecute el siguiente comando de la CLI de Azure para aceptar los términos y condiciones:

    az term accept \
        --publisher vmware-inc \
        --product azure-spring-cloud-vmware-tanzu-2 \
        --plan asa-ent-hr-mtr
    

    Si eso no ayuda, puede ponerse en contacto con el equipo de soporte técnico con la siguiente información.

    • AZURE_TENANT_ID: el identificador de inquilino de Azure que hospeda la suscripción de Azure.
    • AZURE_SUBSCRIPTION_ID: el identificador de suscripción de Azure que se usa para crear la instancia de Azure Spring Apps.
    • SPRING_CLOUD_NAME: el nombre de instancia con error.
    • ERROR_MESSAGE: el mensaje de error observado.

No hay planes disponibles para el mercado "<Location>".

Al visitar la oferta de SaaS Azure Spring Apps Enterprise en Azure Marketplace, puede decir "No hay planes disponibles para el mercado "<Ubicación>"" como se muestra en la imagen siguiente.

Captura de pantalla de Azure Portal que muestra que no hay planes disponibles para el mensaje de error de mercado.

El plan Enterprise de Azure Spring Apps necesita que los clientes paguen una licencia a los componentes de Tanzu a través de una oferta de Azure Marketplace. Para comprar en el Azure Marketplace, el país o la región de la cuenta de facturación de la suscripción de Azure debe estar en las ubicaciones geográficas admitidas de la oferta de SaaS.

Azure Spring Apps Enterprise ahora admite todas las ubicaciones geográficas que admite Azure Marketplace. Consulte ubicación geográfica compatible con Marketplace.

Puede ver la cuenta de facturación de su suscripción si tiene acceso de administrador. Consulte visualización de cuentas de facturación.

Necesito soporte técnico de VMware Spring Runtime (solo plan Enterprise)

El plan Enterprise tiene compatibilidad integrada con VMware Spring Runtime, por lo que puede abrir incidencias de soporte técnico para VMware si cree que el problema pertenece al ámbito de soporte técnico de VMware Spring Runtime. Para comprender mejor la compatibilidad con VMware Spring Runtime, consulte VMware Spring Runtime. Para obtener más información sobre el registro y el uso de este servicio de soporte técnico, consulte la sección Soporte técnico de las Preguntas más frecuentes de Enterprise de VMware. Para cualquier otro problema, abra una incidencia de soporte técnico con Microsoft.

Pasos siguientes