Amazon ECS マネージドインスタンスのトラブルシューティング
次の手順を使用して、一般的な問題、診断手法、解決手順など、Amazon ECS マネージドインスタンスのトラブルシューティングを行います。
前提条件
Amazon ECS マネージドインスタンスのトラブルシューティングを行う前に、次の要件を満たしていることを確認してください。
-
AWS CLI が適切なアクセス許可でインストールおよび設定されている
詳細については、「AWS Command Line Interfaceユーザーガイド」の「AWS Command Line Interfaceの最新バージョンのインストールまたは更新」を参照してください。
Amazon ECS マネージドインスタンスキャパシティプロバイダーによるクラスターへのアクセス 詳細については、「Amazon ECS マネージドインスタンスのクラスターを作成する」を参照してください。
一般的なトラブルシューティングのシナリオ
Amazon ECS マネージドインスタンスコンテナエージェントログの表示
これらの Amazon ECS ログファイルは、インスタンスで実行されている特権コンテナに接続することで、Amazon ECS マネージドインスタンスで表示できます。
診断手順
Amazon ECS タスクとして権限と Linux 機能を備えたデバッグコンテナをデプロイします。
次の環境変数を設定します。
user-input を独自の値に置き換えます。
export ECS_CLUSTER_NAME="your-cluster-name" export AWS_REGION="your-region" export ACCOUNT_ID="your-account-id"
node-debugger.json という CLI 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
タスクを登録して実行します。以下のコマンドを実行します。
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
コンテナに接続します。以下のコマンドを実行してください。
aws ecs execute-command \ --cluster $ECS_CLUSTER_NAME \ --task $TASK_ARN \ --container node-debugger \ --interactive \ --command "/bin/sh"
Amazon ECS エージェントログを確認します。
コンテナのインタラクティブセッションで、次のコマンドを実行します。
# 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
エージェントメトリクスを確認します。
次のコマンドを実行して、ログを表示します。
# View metrics logs nsenter -t 1 -m -p cat /var/log/ecs/metrics.log | tail -20
タスク配置の問題
以下は、タスク配置の問題で見られる症状です。
タスクが保留中状態でスタックする
Amazon ECS マネージドインスタンスでタスク開始に失敗する
リソース不足のエラーが発生する
診断手順
次のコマンドを実行して、タスク配置の問題を診断し、クラスター容量、コンテナインスタンス、システムサービスに関する情報を収集します。
# Check cluster capacity aws ecs describe-clusters --clusterscluster-name--include STATISTICS # Check cluster capacity providers aws ecs describe-clusters --clusterscluster-name--include STATISTICS --query 'clusters[].capacityProviders' # List container instances aws ecs list-container-instances --clustercluster-name# Check container instance details aws ecs describe-container-instances --clustercluster-name--container-instancescontainer-instance-arn# Check container instance remaining resources CPU/Mem aws ecs describe-container-instances --cluster $ECS_CLUSTER_NAME --container-instancescontainer-instance-arn--query 'containerInstances[].remainingResources' # Check container instance Security Group aws ecs describe-container-instances --cluster $ECS_CLUSTER_NAME --container-instancescontainer-instance-arn--query 'containerInstances[].ec2InstanceId' --output text aws ec2 describe-instances --instance-idsinstance-id--query 'Reservations[0].Instances[0].SecurityGroups' aws ec2 describe-security-groups --group-ids security-group-id
システムサービスのモニタリング:
# 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
解決策
タスク配置の問題を解決するには、以下の手順に従って、適切な設定と容量であることを確認してください。
タスクリソースの要件と使用可能な容量を検証する
配置の制約と戦略を確認する
Amazon ECS マネージドインスタンスのキャパシティプロバイダーが設定されていることを確認する
タスクとコンテナインスタンスのセキュリティグループに、Amazon ECS エージェント管理エンドポイントのトラフィックを許可するアウトバウンドルールがあることを確認する
ネットワーキングの問題
ネットワークの問題では、次のような症状が見られます。
タスクが外部サービスに到達できない
DNS 解決に問題がある
診断手順
ネットワーク接続のテスト:
デバッグコンテナで次のコマンドを実行します。
注記
キャパシティプロバイダーまたは Amazon ECS タスクにアタッチされたセキュリティグループがトラフィックを許可していることを確認します。
# Install DNS Utility yum install bind-utils -y # Test DNS resolution nslookup amazon.com # Test external connectivity curl -I https://amazon.com
リソースの制約
ネットワークの問題では、次のような症状が見られます。
タスクがメモリ制限により強制終了される
CPU スロットリングが発生する
ディスク容量に問題がある
診断手順
コマンドを実行して、リソースとコンテナの制限をモニタリングします。
リソースのモニタリング:
# 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
コンテナの制限:
# Check OOM kills nsenter -t 1 -m -p dmesg | grep -i "killed process"
コンテナインスタンスエージェントが切断される問題
コンテナインスタンスエージェントの切断の問題には、次のような症状が見られます。
Amazon ECS コンソールで、コンテナインスタンスが切断されたと表示される
特定のインスタンスにタスクを配置できない
ログでエージェント登録が失敗している
診断手順
ECS Exec がアクセス可能なホストで既存の権限タスクが実行中の場合は、次のコマンドを実行してエージェント接続の問題を診断します。
# 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
それ以外の場合は、Amazon ECS マネージドインスタンスを強制的に登録解除します。次のコマンドを実行します。
# 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
解決策
エージェントの切断の問題を解決するには、次の手順に従います。
コンテナインスタンスの IAM ロールのアクセス許可を検証する
セキュリティグループルールが、ECS エンドポイントへのアウトバウンド HTTPS トラフィックを許可していることを確認する
AWS サービスへのネットワーク接続を確認する
必要に応じて、
nsenter -t 1 -m -p systemctl restart ecsで ECS エージェントサービスを再起動する/etc/ecs/ecs.config の ECS_CLUSTER 設定がクラスター名と一致することを確認する
Amazon ECS マネージドインスタンスのログ分析
システムログ
次のコマンドを使用して、システムログを確認し、マネージドインスタンスの潜在的な問題を特定します。
# 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"
EC2 AWS CLI を使用して Amazon ECS マネージドインスタンスからコンソール出力を取得する
Amazon EC2 インスタンス ID を使用してコンソール出力を取得します。
user-input を独自の値に置き換えます。
aws ec2 get-console-output --instance-idinstance-id--latest --output text
クリーンアップ
以下を実行して、デバッグタスクを停止し、タスク定義を登録解除します。
# 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
その他のリソース
Amazon ECS マネージドインスタンスのトラブルシューティングの詳細については、次のリソースを参照してください。