Solución de problemas de servicios de Amazon ECS Express Mode - Amazon Elastic Container Service

Solución de problemas de servicios de Amazon ECS Express Mode

Esta sección le es útil para identificar y resolver los problemas comunes al implementar y administrar los servicios de Express Mode.

Problemas de implementación

El servicio está bloqueado en estado ACTIVO o VACIANDO

Síntomas: DescribeServiceRevisions muestra que los recursos se siguen aprovisionando o desaprovisionando. DescribeServices muestra que la implementación no está estabilizada

Posibles causas y soluciones:

  • Permisos de IAM insuficientes: compruebe que el rol de ejecución de tareas y el rol de infraestructura tengan los permisos necesarios, tal como se indica en sus respectivas políticas administradas.

    # Check if the role has the required managed policy aws iam list-attached-role-policies --role-name ecsTaskExecutionRole
  • Errores en la extracción de imágenes: asegúrese de que la imagen del contenedor existe y de que se puede acceder a esta.

    # Test image pull manually docker pull 123456789012.dkr.ecr.us-west-2.amazonaws.com/my-app:latest
  • Problemas de conectividad de red: compruebe que las subredes tengan acceso a Internet o puntos de conexión de Amazon VPC para los servicios de AWS.

  • Límites de recursos: compruebe que su cuenta tiene capacidad suficiente de Fargate y que no ha alcanzado las cuotas de servicio.

Pasos de diagnóstico:

  1. Utilice DescribeExpressGatewayService para obtener la revisión del servicio actual, seguida de DescribeServiceRevisions de ServiceRevision para ver el estado del aprovisionamiento o desaprovisionamiento

  2. Compruebe los eventos de servicio en la consola de Amazon ECS para consultar los mensajes de error detallados.

  3. Compruebe que el puerto del contenedor esté configurado correctamente.

  4. Consulte las cuotas de servicio de AWS para Amazon ECS y Fargate.

Errores de inicio de tareas

Síntomas: las tareas no se inician ni se detienen de inmediato después de iniciarlas.

Causas habituales:

  • Errores de aplicación: la aplicación contenedora se cierra debido a errores de configuración o tiempo de ejecución.

  • Errores en las comprobaciones de estado: la aplicación no responde a las comprobaciones de estado en el puerto o la ruta esperados.

  • Restricciones de recursos: asignación insuficiente de CPU o memoria para la aplicación.

  • Faltan variables de entorno o secretos: la aplicación no dispone de la configuración necesaria.

Pasos de resolución:

  1. Compruebe los registros de las aplicaciones en Registros de CloudWatch y obtenga el nombre del grupo de registros en DescribeServiceRevisions:

    aws logs describe-log-streams --log-group-name /ecs/express-service-my-app aws logs get-log-events --log-group-name /ecs/express-service-my-app --log-stream-name stream-name
  2. Compruebe que la ruta de comprobación de estado devuelva el estado HTTP 200.

  3. Pruebe la imagen del contenedor de manera local para asegurarse de que se inicia correctamente.

  4. Revise y ajuste las asignaciones de CPU y memoria si es necesario.

Problemas de conectividad

No se puede acceder a la aplicación mediante el equilibrador de carga

Síntomas: la URL de la aplicación devuelve tiempos de espera o errores de conexión.

Pasos para la solución de problemas:

  1. Valide que los recursos hayan terminado de aprovisionarse

  2. Compruebe que las tareas estén en marcha y estén en buen estado:

    aws ecs describe-services --cluster my-cluster --services my-express-service
  3. Compruebe el estado del grupo de destinos del equilibrador de carga de aplicaciones:

    aws elbv2 describe-target-health --target-group-arn arn:aws:elasticloadbalancing:region:account:targetgroup/name/id
  4. Asegúrese de que la aplicación esté escuchando en el puerto correcto dentro del contenedor.

Problemas de rendimiento

Tiempos de respuesta lentos

Síntomas: las respuestas de las aplicaciones son más lentas de lo esperado.

Enfoque diagnóstico:

  1. Supervisión del uso de CPU y memoria:

    # Check CloudWatch metrics for the service aws cloudwatch get-metric-statistics \ --namespace AWS/ECS \ --metric-name CPUUtilization \ --dimensions Name=ServiceName,Value=my-express-service Name=ClusterName,Value=my-cluster \ --start-time 2024-01-01T00:00:00Z \ --end-time 2024-01-01T01:00:00Z \ --period 300 \ --statistics Average
  2. Revise los registros de la aplicación para ver si hay errores o advertencias de rendimiento.

  3. Compruebe si el escalado automático responde de manera adecuada a la carga.

  4. Analiza las métricas del equilibrador de carga para la distribución de las solicitudes.

Estrategias de optimización:

  • Aumente la asignación de CPU o memoria si los recursos son limitados.

  • Ajuste los umbrales de escalado automático para escalarlos antes.

  • Optimice el código de la aplicación y las consultas de bases de datos.

El escalado automático no funciona según lo esperado

Síntomas: el servicio no se escala verticalmente cuando hay mucha carga ni se reduce verticalmente cuando hay poca carga.

Pasos para la solución de problemas:

  1. Compruebe las políticas de escalado automático y su configuración:

    aws application-autoscaling describe-scaling-policies \ --service-namespace ecs \ --resource-id service/my-cluster/my-express-service
  2. Revise las métricas de CloudWatch para asegurarse de que se cumplen los factores desencadenantes de escalado.

  3. Compruebe que el servicio tenga permiso para escalar (compruebe los roles de IAM).

  4. Compruebe las actividades de escalado y sus resultados.

Herramientas de supervisión y depuración

Uso de Información de contenedores de CloudWatch

Habilite Información de contenedores para una supervisión integral:

aws ecs put-account-setting --name containerInsights --value enabled

Información de contenedores ofrece lo siguiente:

  • Métricas de CPU, memoria, disco y red

  • Panel supervisión de rendimiento

  • Correlación y análisis de registros

  • Detección de anomalías