Sesiones de contenedor personalizadas de Azure Container Apps

Además del intérprete de código integrado que proporcionan las sesiones dinámicas de Azure Container Apps, también puede usar contenedores personalizados para definir sus propios espacios aislados de sesión.

Nota:

Este artículo solo se aplica a grupos de sesiones de contenedor personalizados. A menos que se indique lo contrario, las características descritas aquí no están disponibles para los grupos de sesiones del intérprete de código.

Usos de sesiones de contenedor personalizadas

Los contenedores personalizados permiten crear soluciones adaptadas a sus necesidades. Permiten ejecutar código o aplicaciones en entornos rápidos y efímeros. Ofrecen espacios seguros y aislados con Hyper-V. Además, se pueden configurar con aislamiento de red opcional. Estos son algunos ejemplos:

  • Intérpretes de código: Utilice si ejecuta código que no es de confianza en sandboxes seguros mediante un lenguaje no soportado por el intérprete nativo, o si necesita tener un control total sobre el entorno del intérprete de código.

  • Ejecución aislada: use si ejecuta aplicaciones en escenarios hostiles y multiinquilino en los que cada inquilino o usuario tiene su propio entorno de espacio aislado. Estos entornos están aislados entre sí y de la aplicación host. Algunos ejemplos incluyen aplicaciones que ejecutan código proporcionado por el usuario, código que concede al usuario final acceso a un shell basado en la nube, agentes de IA y entornos de desarrollo.

Uso de sesiones de contenedor personalizadas

Para usar sesiones de contenedor personalizadas, cree un grupo de sesiones con una imagen de contenedor personalizada. Azure Container Apps inicia automáticamente contenedores en sus propios entornos aislados de Hyper-V utilizando la imagen proporcionada. Una vez que se inicia el contenedor, está disponible para el pool de sesiones.

Cuando la aplicación solicita una sesión, se asigna instantáneamente una instancia del grupo. La sesión permanece activa hasta que entra en un estado inactivo, que luego se detiene y destruye automáticamente.

Sondeos de contenedor para grupos de sesiones

Use sondeos de contenedor para configurar comprobaciones de estado para grupos de sesiones de contenedor personalizados y mantener instancias de sesión correctas.

Nota:

Las sondas de contenedor requieren una versión de API 2025-02-02-preview o posterior.

Los sondeos de contenedor permiten definir comprobaciones de estado para contenedores de sesión, similares a los sondeos de estado en Azure Container Apps. Una vez configurado, el grupo de sesiones supervisa cada instancia de sesión y elimina las instancias no saludables.

El grupo de sesiones:

  • Garantiza que las instancias de sesión preparadas estén en buen estado en función de los sondeos.
  • Elimina automáticamente las instancias de sesión no saludables.
  • Escala verticalmente para mantener el recuento de readySessionInstances configurado con sesiones correctas.

Los grupos de sesiones admiten los tipos de sondeo Liveness y Startup. Para obtener más información sobre cómo funcionan los sondeos, consulte Sondeos de estado en Azure Container Apps.

Configuración

Al crear o actualizar un grupo de sesiones, especifique sondeos en la sección properties.customContainerTemplate.containers de la carga de la solicitud.

Para obtener la especificación completa de la API, consulte SessionPools API.

Ejemplo

{
  "properties": {
    "customContainerTemplate": {
      "containers": [
        {
          "name": "my-session-container",
          "image": "myregistry.azurecr.io/my-session-image:latest",
          "probes": [
            {
              "type": "Liveness",
              "httpGet": {
                "path": "/health",
                "port": 8080
              },
              "periodSeconds": 10,
              "failureThreshold": 3
            },
            {
              "type": "Startup",
              "httpGet": {
                "path": "/ready",
                "port": 8080
              },
              "periodSeconds": 5,
              "failureThreshold": 30
            }
          ]
        }
      ]
    },
    "dynamicPoolConfiguration": {
      "readySessionInstances": 5
    }
  }
}

Solución de problemas

Si el grupo de sesiones no mantiene el número esperado de componentes en buen estado readySessionInstances, considere las siguientes soluciones:

  • Compruebe los registros de contenedor. Revise los registros de la sesión del contenedor para identificar problemas con los puntos de conexión de sondeo o el inicio del contenedor. Consulte Visualización de registros para grupos de sesiones de contenedor personalizados.
  • Compruebe la configuración del sondeo. Asegúrese de que las rutas de acceso, los puertos y los umbrales de sondeo están configurados correctamente para la aplicación.
  • Revise el estado del contenedor. Compruebe si hay problemas dentro de su contenedor que impiden que los endpoints de sondeo respondan correctamente.

Detener una sesión

Use la API Detener sesión para finalizar una sesión en un grupo de sesiones de contenedor personalizado.

Los grupos de sesiones admiten la administración automática de sesiones a través de lifecycleConfiguration, que controla el ciclo de vida de la sesión basado en tu configuración. Sin embargo, hay escenarios en los que es posible que necesite más control.

Después de asignar una sesión, puede llamar a esta API para finalizarla manualmente en cualquier momento. Este enfoque es útil cuando:

  • Debe limpiar los recursos antes de que una sesión alcance su período de vida.
  • El grupo de sesiones alcanza su límite máximo de sesiones simultáneas y necesita liberar capacidad para las nuevas sesiones.
  • Una sesión completa su trabajo y desea liberar recursos inmediatamente.

Referencia de las API

Solicitud

POST {PoolManagementEndpoint}/.management/stopSession?api-version=2025-10-02-preview&identifier={SessionIdentifier}

Parámetros

Parámetro Tipo Obligatorio Descripción
api-version cuerda / cadena La versión de LA API que se va a usar (por ejemplo, 2025-10-02-preview).
identifier cuerda / cadena Identificador único de la sesión que se va a detener.

Ejemplos

Solicitud

POST https://{PoolManagementEndpoint}/.management/stopSession?api-version=2025-10-02-preview&identifier=testSessionIdentifier

Respuesta

HTTP/1.1 200 OK
Content-Type: text/plain

Session testSessionIdentifier in session pool testSessionPool stopped.

Registro

Los grupos de sesiones de contenedor personalizados se integran con Azure Monitor y Log Analytics. Los registros de aplicación solo se capturan si el contenedor escribe la salida en stdout o stderr, por lo que debe asegurarse de que la aplicación emite registros a la consola.

Prerrequisitos

  • Un entorno de Azure Container Apps con un grupo de sesiones de contenedor personalizado
  • Un área de trabajo de Log Analytics o crear una durante la instalación

Configurar el registro

Habilitación del registro de Azure Monitor

  1. En Azure Portal, vaya al entorno de Container Apps.
  2. En Supervisión, seleccione Opciones de registro.
  3. Establezca Destino de registros en Azure Monitor.

Configuración de las opciones de diagnóstico

  1. En el entorno de Container Apps, en Supervisión, seleccione Configuración de diagnóstico.
  2. Seleccione + Agregar configuración de diagnóstico.
  3. Proporcione un nombre para la configuración de diagnóstico.
  4. En Registros, seleccione las categorías de registro relacionadas con la sesión que desea capturar.
  5. En Detalles del destino, seleccione Enviar a Log Analytics.
  6. Elija el área de trabajo de Log Analytics o cree una nueva.
  7. Haga clic en Guardar.

Tablas de Log Analytics

Categoría del registro Tabla de Log Analytics Descripción
Registros de aplicaciones AppEnvSessionConsoleLogs Salida estándar (stdout) y error estándar (stderr) emitido por la aplicación en contenedor.
Registros de plataforma AppEnvSessionLifecycleLogs, AppEnvSessionPoolEvents Eventos generados por la plataforma relacionados con la asignación, el ciclo de vida y el estado operativo del grupo de sesiones.

Si los registros se envían directamente a Log Analytics, las tablas usan el sufijo _CL, por ejemplo, AppEnvSessionConsoleLogs_CL. Cuando los registros se enrutan a través de la configuración de diagnóstico de Azure Monitor, los nombres de tabla no incluyen el sufijo _CL.

Visualización de registros de sesión

Una vez configurada la configuración de diagnóstico, los registros se envían al área de trabajo de Log Analytics.

Consulta de registros en Log Analytics

  1. En Azure Portal, vaya al área de trabajo de Log Analytics.
  2. En el menú de la izquierda, seleccione Registros.
  3. Si la consulta está en modo simple, seleccione Modo KQL.
  4. Use el lenguaje de consulta Kusto (KQL) para consultar los registros de sesión.

Consultas de ejemplo

Consulte los registros recientes de la consola de las sesiones:

AppEnvSessionConsoleLogs
| where TimeGenerated > ago(1h)
| order by TimeGenerated desc
| take 100

Ver eventos del ciclo de vida de la sesión:

AppEnvSessionLifecycleLogs
| where TimeGenerated > ago(1h)
| order by TimeGenerated desc

Ver eventos del grupo de sesiones:

AppEnvSessionPoolEvents
| where TimeGenerated > ago(1h)
| order by TimeGenerated desc

Métricas

Azure Container Apps emite métricas de Azure Monitor para grupos de sesiones de contenedor personalizados. Use estas métricas para realizar un seguimiento de la capacidad y la actividad del grupo a lo largo del tiempo.

Métricas compatibles

Para obtener la lista completa, consulte Métricas admitidas: Microsoft.App/sessionpools: Azure Monitor.

Métrica Nombre en la API de REST Unidad Aggregation Dimensiones Granulos de tiempo Exportación de DS
Recuento de sesiones en ejecución
Número de pods de sesión en ejecución en el grupo de sesiones
PoolExecutingPodCount Contar Total (Suma), Promedio, Máximo, Mínimo poolName PT1M
Crear recuento de sesiones
Número de pods de sesión en creación en el grupo de sesiones
PoolPendingPodCount Contar Total (Suma), Promedio, Máximo, Mínimo poolName PT1M
Recuento de sesiones listas
Número de pods de sesión listos en el grupo de sesiones
PoolReadyPodCount Contar Total (Suma), Promedio, Máximo, Mínimo poolName PT1M

Visualización de métricas de sesión

Puede usar las métricas del entorno de Azure Monitor o Container Apps para ver las métricas basadas en sesión.

métricas de Azure Monitor

  1. Abra la página Métricas de Azure Monitor.
  2. Use Ámbito para seleccionar su grupo de sesiones de contenedor personalizado.
  3. Elija una métrica y una agregación para ver.

Métricas del entorno de Container Apps

  1. En Azure Portal, abra el entorno de Container Apps.
  2. En Supervisión, seleccione Métricas.
  3. Use Ámbito para seleccionar su grupo de sesiones de contenedor personalizado.
  4. Elija una métrica y una agregación para ver.