Résolution des problèmes liés aux instances gérées Amazon ECS - Amazon Elastic Container Service

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Résolution des problèmes liés aux instances gérées Amazon ECS

Utilisez les procédures suivantes pour résoudre les problèmes liés aux instances gérées Amazon ECS, notamment les problèmes courants, les techniques de diagnostic et les étapes de résolution.

Conditions préalables

Avant de dépanner les instances gérées Amazon ECS, assurez-vous de respecter les exigences suivantes.

Scénarios courants de résolution des problèmes

Afficher les journaux des agents de conteneur Amazon ECS Managed Instances

Vous pouvez consulter ces fichiers journaux Amazon ECS dans les instances gérées Amazon ECS en vous connectant à un conteneur privilégié exécuté dans l'instance.

Étapes de diagnostic

Déployez un conteneur de débogage doté de privilèges et de fonctionnalités Linux en tant que tâche Amazon ECS :

Définissez les variables d'environnement suivantes.

Remplacez le user-input par vos valeurs.

export ECS_CLUSTER_NAME="your-cluster-name" export AWS_REGION="your-region" export ACCOUNT_ID="your-account-id"

Créez une définition de tâche à l'aide d'un fichier JSON CLI appelénode-debugger.json.

cat << EOF > node-debugger.json { "family": "node-debugger", "taskRoleArn": "arn:aws:iam::${ACCOUNT_ID}:role/ecsTaskExecutionRole", "executionRoleArn": "arn:aws:iam::${ACCOUNT_ID}:role/ecsTaskExecutionRole", "cpu": "256", "memory": "1024", "networkMode": "host", "pidMode": "host", "requiresCompatibilities": ["MANAGED_INSTANCES", "EC2"], "containerDefinitions": [ { "name": "node-debugger", "image": "public.ecr.aws/amazonlinux/amazonlinux:2023", "essential": true, "privileged": true, "command": ["sleep", "infinity"], "healthCheck": { "command": ["CMD-SHELL", "echo debugger || exit 1"], "interval": 30, "retries": 3, "timeout": 5 }, "linuxParameters": { "initProcessEnabled": true }, "mountPoints": [ { "sourceVolume": "host-root", "containerPath": "/host", "readOnly": false } ], "logConfiguration": { "logDriver": "awslogs", "options": { "awslogs-group": "/aws/ecs/node-debugger", "awslogs-create-group": "true", "awslogs-region": "${AWS_REGION}", "awslogs-stream-prefix": "ecs" } } } ], "volumes": [ { "name": "host-root", "host": { "sourcePath": "/" } } ] } EOF

Enregistrez-vous, puis exécutez la tâche. Exécutez les commandes suivantes.

aws ecs register-task-definition --cli-input-json file://node-debugger.json TASK_ARN=$(aws ecs run-task \ --cluster $ECS_CLUSTER_NAME \ --task-definition node-debugger \ --enable-execute-command \ --capacity-provider-strategy capacityProvider=managed-instances-default,weight=1 \ --query 'tasks[0].taskArn' --output text) # Wait for task to be running aws ecs wait tasks-running --cluster $ECS_CLUSTER_NAME --tasks $TASK_ARN

Connect au conteneur. Exécutez la commande suivante.

aws ecs execute-command \ --cluster $ECS_CLUSTER_NAME \ --task $TASK_ARN \ --container node-debugger \ --interactive \ --command "/bin/sh"

Consultez les journaux de l'agent Amazon ECS :

Dans la session interactive du conteneur, exécutez les commandes suivantes :

# Install required tools yum install -y util-linux-core # View ECS agent logs nsenter -t 1 -m -p cat /var/log/ecs/ecs-agent.log | tail -50 # Check agent registration nsenter -t 1 -m -p grep "Registered container instance" /var/log/ecs/ecs-agent.log Example Output: {"level":"info","time":"2025-10-16T12:39:37.665","msg":"Registered container instance with cluster!"} # Verify capabilities nsenter -t 1 -m -p grep "Response contained expected value for attribute" /var/log/ecs/ecs-agent.log

Vérifiez les statistiques des agents :

Exécutez la commande suivante pour afficher les journaux.

# View metrics logs nsenter -t 1 -m -p cat /var/log/ecs/metrics.log | tail -20

Problèmes liés au placement des tâches

Les symptômes des problèmes de placement des tâches sont les suivants :

  • Tâches bloquées dans l'état EN ATTENTE

  • Les tâches ne démarrent pas sur les instances gérées Amazon ECS

  • Erreurs liées à l'insuffisance des ressources

Étapes de diagnostic

Exécutez les commandes suivantes pour diagnostiquer les problèmes de placement des tâches et recueillir des informations sur la capacité du cluster, les instances de conteneur et les services système :

# Check cluster capacity aws ecs describe-clusters --clusters cluster-name --include STATISTICS # Check cluster capacity providers aws ecs describe-clusters --clusters cluster-name --include STATISTICS --query 'clusters[].capacityProviders' # List container instances aws ecs list-container-instances --cluster cluster-name # Check container instance details aws ecs describe-container-instances --cluster cluster-name --container-instances container-instance-arn # Check container instance remaining resources CPU/Mem aws ecs describe-container-instances --cluster $ECS_CLUSTER_NAME --container-instances container-instance-arn --query 'containerInstances[].remainingResources' # Check container instance Security Group aws ecs describe-container-instances --cluster $ECS_CLUSTER_NAME --container-instances container-instance-arn --query 'containerInstances[].ec2InstanceId' --output text aws ec2 describe-instances --instance-ids instance-id --query 'Reservations[0].Instances[0].SecurityGroups' aws ec2 describe-security-groups --group-ids security-group-id

Surveillance des services du système :

# Check Containerd status nsenter -t 1 -m -p systemctl status containerd.service # Check Amazon ECS container agent status nsenter -t 1 -m -p systemctl status ecs

Résolution

Pour résoudre les problèmes de placement des tâches, procédez comme suit afin de garantir une configuration et une capacité appropriées :

  • Vérifier les besoins en ressources des tâches par rapport à la capacité disponible

  • Vérifiez les contraintes et les stratégies de placement

  • Assurez-vous que le fournisseur de capacité des instances gérées Amazon ECS est configuré

  • Assurez-vous que le groupe de sécurité de la tâche et de l'instance de conteneur dispose d'une règle sortante qui autorise le trafic vers les points de terminaison de gestion des agents Amazon ECS

Problèmes de mise en réseau

Les symptômes des problèmes de réseau sont les suivants :

  • Les tâches ne peuvent pas atteindre les services externes

  • Problèmes de résolution DNS

Étapes de diagnostic

Tests de connectivité réseau :

À partir du conteneur de débogage, exécutez les commandes suivantes :

Note

Vérifiez que le groupe de sécurité attaché à votre fournisseur de capacité ou à votre tâche Amazon ECS autorise le trafic.

# Install DNS Utility yum install bind-utils -y # Test DNS resolution nslookup amazon.com # Test external connectivity curl -I https://amazon.com

Contraintes liées aux ressources

Les symptômes des problèmes de réseau sont les suivants :

  • Tâches supprimées en raison de limites de mémoire

  • Régulation du processeur

  • Problèmes d'espace disque

Étapes de diagnostic

Exécutez des commandes pour surveiller les ressources et les limites des conteneurs.

Surveillance des ressources :

# Check memory usage nsenter -t 1 -m -p free -h # Check disk usage nsenter -t 1 -m -p lsblk # Check disk usage nsenter -t 1 -m -p df -h

Limites de conteneurs :

# Check OOM kills nsenter -t 1 -m -p dmesg | grep -i "killed process"

Problème de déconnexion de l'agent d'instance de conteneur

Les symptômes des problèmes de déconnexion de l'agent d'instance de conteneur sont les suivants :

  • Instances de conteneur affichées comme étant déconnectées dans la console Amazon ECS

  • Tâches ne pouvant pas être attribuées à des instances spécifiques

  • Défaillances d'enregistrement de l'agent dans les journaux

Étapes de diagnostic

Si une tâche de privilège est en cours d'exécution sur l'hôte auquel ECS Exec peut accéder, exécutez les commandes suivantes pour diagnostiquer les problèmes de connectivité de l'agent :

# check service status nsenter -t 1 -m -p systemctl restart ecs nsenter -t 1 -m -p systemctl restart containerd # restart stopped services nsenter -t 1 -m -p systemctl restart ecs nsenter -t 1 -m -p systemctl restart containerd

Sinon, désenregistrez de force les instances gérées Amazon ECS. Exécutez la commande suivante :

# list ECS Managed Instance container aws ecs list-container-instances --cluster managed-instances-cluster --query 'containerInstanceArns' --output text # deregister the specific container instance aws ecs deregister-container-instance \ --cluster $ECS_CLUSTER_NAME \ --container-instance container-instance-arn \ --force

Résolution

Pour résoudre les problèmes de déconnexion de l'agent, procédez comme suit :

  • Vérifier les autorisations du rôle IAM pour l'instance de conteneur

  • Vérifiez que les règles du groupe de sécurité autorisent le trafic HTTPS sortant vers les points de terminaison ECS

  • Garantir la connectivité réseau aux AWS services

  • Redémarrez le service de l'agent ECS si nécessaire : nsenter -t 1 -m -p systemctl restart ecs

  • Vérifiez que la configuration ECS_CLUSTER dans/etc/ecs/ecs.config correspond au nom de votre cluster

Analyse des journaux dans les instances gérées Amazon ECS

Journaux du système

Utilisez les commandes suivantes pour examiner les journaux système et identifier les problèmes potentiels liés à l'instance gérée :

# Check system messages nsenter -t 1 -m -p journalctl --no-pager -n 50 # Check kernel logs nsenter -t 1 -m -p dmesg | tail -20 # Check for disk space errors nsenter -t 1 -m -p journalctl --no-pager | grep -i "no space\|disk full\|enospc"

Utilisez le EC2 AWS CLI pour obtenir la sortie de console depuis une instance gérée Amazon ECS

Utilisez l'ID d' EC2 instance Amazon pour récupérer la sortie de la console.

Remplacez le user-input par vos valeurs.

aws ec2 get-console-output --instance-id instance-id --latest --output text

Nettoyage

Exécutez ce qui suit pour arrêter la tâche de débogage et annuler l'enregistrement de la définition de tâche.

# Stop debug task aws ecs stop-task --cluster $ECS_CLUSTER_NAME --task $TASK_ARN # Deregister task definition (optional) aws ecs deregister-task-definition --task-definition node-debugger

Ressources supplémentaires

Pour plus d'informations sur le dépannage des instances gérées Amazon ECS, consultez les ressources suivantes :