Compartir vía


Registro y métricas en Azure Container Apps

Nota:

Los planes de Básico, Estándar y Enterprise quedarán en desuso a partir de mediados de marzo de 2025, con un período de retiro 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 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 obtener más información, consulte Migrar el plan de consumo y dedicado Azure Spring Apps Standard a Azure Container Apps.

Este artículo se aplica a: Enterprise ✅ Básico/Estándar ✅

Al realizar la transición de Azure Spring Apps a Azure Container Apps, encontrará características de observabilidad similares, pero con algunas diferencias clave. En este artículo, se resaltan estas diferencias y se explica cómo supervisar las aplicaciones en Azure Container Apps.

Requisitos previos

Registros

Configuración de opciones de registro

Azure Container Apps permite administrar el registro en el entorno de Azure Container Apps.

Puede almacenar registros tanto en Azure Log Analytics como en Azure Monitor. Si elige Azure Monitor, encontrará un menú de configuración de diagnóstico en la configuración del entorno, similar al de Azure Spring Apps.

Al crear un entorno con la CLI de Azure, como se muestra en el ejemplo siguiente, se aprovisiona un área de trabajo de Log Analytics generada de manera automática.

az containerapp env create \
    --resource-group MyResourceGroup \
    --name MyContainerappEnvironment \
    --location eastus2

También puede usar el siguiente comando para crear un entorno con un área de trabajo de Log Analytics existente:

az containerapp env create \
    --resource-group MyResourceGroup \
    --name MyContainerappEnvironment \
    --logs-workspace-id myLogsWorkspaceID \
    --logs-workspace-key myLogsWorkspaceKey \
    --location eastus2

Análisis de registros

Azure Container Apps permite transmitir registros desde la consola de contenedor. En la lista siguiente, se describen las principales diferencias en el registro:

  • Registros de consola: para los registros de consola, consulte la tabla ContainerAppConsoleLogs_CL en Azure Container Apps en lugar de la tabla ApplicationConsole usada en Azure Spring Apps.

  • Registros del sistema: Azure Spring Apps proporciona SystemLogs para Config Server, Registro de servicios, Portal de API, Servicio de configuración de aplicaciones y Spring Cloud Gateway. En Azure Container Apps, debe aprovisionar estos componentes como aplicaciones independientes y consultar sus registros en la tabla ContainerAppConsoleLogs_CL, para lo cual debe especificar el nombre de cada aplicación en la consulta.

  • Registros de compilación: los registros de compilación de compilaciones locales con Paketo Buildpacks no están disponibles en Azure Container Apps, lo que difiere de Azure Spring Apps.

Ver registros

De forma predeterminada, Azure Container Apps envía registros directamente a Azure Log Analytics. Sin embargo, si decide almacenar registros en Azure Monitor, los nombres de tabla y columna pueden diferir. En Azure Monitor, los nombres de tabla y columna no incluyen sufijos. Por ejemplo, use ContainerAppConsoleLogs en lugar de ContainerAppConsoleLogs_CL y Log en lugar de Log_s al crear consultas para registros almacenados en Azure Monitor.

Para ver los registros de consola en Azure Container Apps, use la consulta siguiente como ejemplo:

ContainerAppConsoleLogs_CL
| limit 50

Azure Log Analytics se ejecuta con un motor Kusto para que pueda consultar los registros para el análisis. Para obtener una introducción a la consulta de registros mediante Kusto, consulte tutorial de Log Analytics.

Mostrar registros de aplicaciones

Para revisar una lista de registros de aplicaciones, ordenados por hora con los registros más recientes mostrados en primer lugar, use esta consulta:

ContainerAppConsoleLogs_CL
| project TimeGenerated, EnvironmentName_s, ContainerAppName_s, RevisionName_s, Log_s
| sort by TimeGenerated desc

Visualización de las entradas de registro con errores o excepciones

Para revisar las entradas de registro sin ordenar que mencionan un error o una excepción, ejecute esta consulta:

ContainerAppConsoleLogs_CL
| project TimeGenerated, EnvironmentName_s, ContainerAppName_s, RevisionName_s, Log_s
| where Log_s contains "error" or Log_s contains "exception"

Use esta consulta para buscar errores o modificar los términos de la consulta para encontrar códigos de error específicos o excepciones.

Visualización del número de errores y excepciones que ha notificado la aplicación durante la última hora

Para crear un gráfico circular que muestre el número de errores y excepciones registrados por la aplicación en la última hora, use esta consulta:

ContainerAppConsoleLogs_CL
| where TimeGenerated > ago(1h)
| where Log_s contains "error" or Log_s contains "exception"
| summarize count_per_app = count() by ContainerAppName_s
| sort by count_per_app desc
| render piechart

Mostrar registros de Spring Cloud Gateway

Para revisar las entradas de registro de los registros de Spring Cloud Gateway, use esta consulta:

ContainerAppSystemLogs_CL
| where ComponentType_s == "SpringCloudGateway"
| project TimeGenerated, ComponentType_s, EnvironmentName_s, ComponentName_s, Log_s
| limit 100

Mostrar registros del Servidor Eureka

Para revisar las entradas de registro de los registros del Servidor Eureka, use esta consulta:

ContainerAppSystemLogs_CL
| where ComponentType_s == "SpringCloudEureka"
| project TimeGenerated, ComponentType_s, EnvironmentName_s, ComponentName_s, Log_s
| limit 100

Métricas

En las tablas siguientes, se asignan métricas entre Azure Spring Apps y Azure Container Apps:

Comunes

Nombre de métrica de Azure Spring Apps Nombre de métrica de Azure Container Apps
Uso de CPU de la aplicación N/D
Uso de memoria de la aplicación N/D
Red de aplicaciones en N/D
Salida de red de la aplicación N/D

Métricas de errores

Nombre de métrica de Azure Spring Apps Nombre de métrica de Azure Container Apps
tomcat.global.error N/D

Métricas de rendimiento

Nombre de métrica de Azure Spring Apps Nombre de métrica de Azure Container Apps
system.cpu.usage Porcentaje de uso de CPU (vista previa)
process.cpu.usage N/D
Uso de memoria de la aplicación N/D
jvm.memory.committed jvm.memory.committed
jvm.memory.used jvm.memory.used
jvm.memory.max N/D
Métricas adicionales de JVM N/D

Métricas de rendimiento de .NET

Nombre de métrica de Azure Spring Apps Nombre de métrica de Azure Container Apps
Uso de CPU Porcentaje de uso de CPU (vista previa)
Espacio de trabajo Bytes de memoria del conjunto de trabajo
Tamaño del montón de GC N/D
Recuento de GC de generación 0 N/D
Métricas adicionales de GC N/D

Solicitud de métricas

Nombre de métrica de Azure Spring Apps Nombre de métrica de Azure Container Apps
tomcat.global.sent N/D
tomcat.global.request.total.count Solicitudes

Métricas de solicitud de .NET

Nombre de métrica de Azure Spring Apps Nombre de métrica de Azure Container Apps
Solicitudes por segundo N/D
Total de solicitudes Solicitudes

Métricas de sesión

Nombre de métrica de Azure Spring Apps Nombre de métrica de Azure Container Apps
tomcat.sessions.active.max N/D
tomcat.sessions.alive.max N/D

Métricas de Java para aplicaciones Java en Azure Container Apps

Si elige Java como pila de desarrollo para Azure Container Apps, la supervisión de métricas de máquina virtual Java (JVM) es esencial para garantizar el estado y el rendimiento de las aplicaciones. Para obtener más información, consulte Métricas de Java para aplicaciones Java en Azure Container Apps.

Componentes administrados

Para ver los datos de supervisión de componentes administrados, consulte los artículos siguientes:

Integración

Azure Container Apps ofrece varias características de observabilidad integradas para ayudarle a supervisar y diagnosticar el estado de la aplicación. Sin embargo, si desea usar Application Insights de Azure Monitor u otros agentes de supervisión del rendimiento de aplicaciones (APM, por sus siglas en inglés), debe agregar instrumentación al código de la aplicación.

Integración con la supervisión del rendimiento de aplicaciones

Para la integración con Application Insights de Azure Monitor u otras API, consulte Integración de la supervisión del rendimiento de aplicaciones en imágenes de contenedor.

Agentes de OpenTelemetry (versión preliminar)

Puede enviar datos de observabilidad en un formato OpenTelemetry a destinos como Application Insights de Azure Monitor, Datadog o cualquier punto de conexión compatible con OTLP mediante un agente de datos OpenTelemetry con el entorno de Azure Container Apps. El agente administrado simplifica la configuración al permitirle cambiar los puntos de conexión de destino sin ejecutar ni volver a configurar manualmente el agente. Para configurarlo, configure el agente en el entorno de contenedor mediante plantillas de ARM, Bicep o la CLI de Azure y prepare la aplicación mediante la instalación del SDK de OpenTelemetry e instrumentación del código para métricas, registros o seguimientos. Asegúrese de configurar el servicio de destino de antemano, como Application Insights. Cada destino tiene requisitos específicos y el agente envía datos solo si está configurado e instrumentado de manera correcta. Para más información, consulte Recopilación y lectura de datos de OpenTelemetry en Azure Container Apps.

Paneles y alertas personalizados

Al implementar aplicaciones en Azure Container Apps, los paneles personalizados pueden basarse en dos enfoques de origen de datos diferentes:

  • Agentes de APM integrados en la aplicación: si integra agentes de APM de terceros en la aplicación durante el proceso de compilación, estos agentes envían métricas y registros directamente a la plataforma de APM. En este caso, siempre que el código de la aplicación permanezca sin cambios, no es necesario modificar los paneles.

  • Paneles basados en Azure Monitor: si los paneles usan métricas y registros de Azure Monitor (por ejemplo, a través de la API de Application Insights, Azure Event Hubs o Azure Storage), es posible que tenga que actualizarlos para reflejar nombres de métricas, espacios de nombres o estructuras de registro específicas de Azure Container Apps. Asegúrese de revisar y actualizar los paneles en función de las asignaciones de métricas y estructuras de datos específicas de Azure Container Apps.

Compruebe cuidadosamente las configuraciones del panel para asegurarse de que sigan siendo precisas después de la transición a Azure Container Apps.

Solución de problemas

Azure Container Apps no proporciona una API para generar un volcado de montón o volcado de subproceso para aplicaciones Java. Para crear estos volcados de memoria, debe conectarse a la aplicación contenedora a través de la consola. Después, debe usar el comando jmap o jstack para generar los archivos de volcado dentro del contenedor. Después, copie los archivos generados en la máquina local para su análisis posterior.

También puede usar el comando jcmd para realizar la misma operación e iniciar Java Flight Recorder (JFR) en una aplicación en ejecución. Para más información sobre cómo acceder a la aplicación contenedora a través de la consola, consulte Conexión a una consola de contenedor en Azure Container Apps.

Restricciones conocidas

  • Registros estructurados: Azure Container Apps no admite registros de aplicaciones estructurados. Si los registros de la aplicación siguen el esquema de Azure Spring Apps, la cadena JSON completa aparece en la columna Log_s de ContainerAppConsoleLogs_CL.
  • Registros de entrada: aunque Azure Spring Apps tiene registros de acceso de entrada integrados, Azure Container Apps no los tiene. Debe implementar el registro de acceso en el código de su aplicación para capturar estos datos.
  • Azure Container Apps no proporciona eventos de ciclo de vida de la aplicación.
  • Azure Container Apps no tiene compatibilidad integrada con las métricas de entrada. Debe implementar el seguimiento personalizado en las aplicaciones.