Amazon Elastic Container Service (Amazon ECS) 環境のトラブルシューティングや AWS サポートに問い合わせる際に、コンテナインスタンスからさまざまなログを収集する必要があります。
簡単な説明
Amazon ECS ログ収集ツールは、コンテナインスタンスからログを自動的に収集するスクリプトです。このスクリプトは、一般的なオペレーティングシステムのログ、Docker ログ、および Amazon ECSコンテナエージェントのログを収集します。次に、スクリプトはログを圧縮し、1 つのファイルにアーカイブします。これにより、問題のトラブルシューティング時に共有できます。
また、AWS Systems Manager Automation の AWSSupport-CollectECSInstanceLogs ランブックを使用して、ECS インスタンスからログを収集することもできます。このランブックでは、ログを作成した S3 バケットにアップロードすることができます。S3 バケットの場所を LogDestination の入力パラメータで指定する必要があります。
注: AWSSupport-CollectECSInstanceLogs はデバッグモードに対応していません。詳細については、「オートメーションの実行」を参照してください。
解決策
Linux 向けの Amazon ECS ログ収集ツールをダウンロードして実行します
1. コンテナインスタンスに接続します。
2. curl がインストールされていることを確認するために、次のコマンドを実行します。
curl --version
コマンドの出力は次のようになります。
curl 7.47.0 (x86_64-pc-linux-gnu) libcurl/7.47.0 GnuTLS/3.4.10 zlib/1.2.8 libidn/1.32 librtmp/2.3
**注:**コマンドが期待通りの結果を返さない場合は、curl パッケージをインストールしてください。
3. Amazon ECS ログ収集スクリプトをダウンロードするには、次のコマンドを実行します。
curl -O https://raw.githubusercontent.com/awslabs/ecs-logs-collector/master/ecs-logs-collector.sh
4. スクリプトを使用してログを収集し、アーカイブを作成するには、次のコマンドを実行します。
[ec2-user ~]$ sudo bash ./ecs-logs-collector.sh
スクリプトを実行した後、スクリプトによって作成された collect フォルダ内の収集されたログを確認できます。フォルダ内には、すべてのログの圧縮アーカイブである collect.tgz ファイルが含まれています。
Linux で Amazon ECS ログ収集ツールをデバッグモードで実行
ログに必要な情報がすべて提供されていない場合、--mode=enable-debug オプションを使用して Docker デーモンおよび Amazon ECS コンテナエージェントのデバッグログを有効にすることができます。このオプションにより、デバッグモードを有効にする前にログを収集することができます。スクリプトは Docker デーモンと Amazon ECS エージェントを再起動し、インスタンス上で実行されているすべてのコンテナを終了します。次のコマンドを実行する前に、コンテナインスタンスをドレインし、重要なタスクを他のコンテナインスタンスに移動することを検討してください。詳細については、「コンテナインスタンスのドレイン」を参照してください。
スクリプトを実行する際にデバッグモードを有効にするには、次のコマンドを実行してください:
[ec2-user ~]$ sudo bash ./ecs-logs-collector.sh --mode=enable-debug
Windows 向けの Amazon ECS ログ収集ツールをダウンロードして実行する
1. コンテナインスタンスに接続します。
2. スクリプトをダウンロードするには、管理者特権で Windows PowerShell を開き、次のコマンドを実行してください。
Invoke-WebRequest -OutFile ecs-logs-collector.ps1 https://raw.githubusercontent.com/awslabs/aws-ecs-logs-collector-for-windows/master/ecs-logs-collector.ps1
3. 同じウィンドウで、ログを収集し、アーカイブを作成するために次のスクリプトを実行してください。
.\ecs-logs-collector.ps1
スクリプトを実行した後、スクリプトによって作成された collect フォルダ内の収集されたログを確認できます。フォルダ内には、すべてのログの圧縮アーカイブである collect.tgz ファイルが含まれています。
Windows で Amazon ECS ログ収集ツールをデバッグモードで実行
ログに必要な情報がすべて提供されていない場合、-RunMode debug オプションを使用して Docker デーモンおよび Amazon ECS コンテナエージェントのデバッグログを有効にすることができます。このオプションにより、デバッグモードを有効にする前にログを収集することができます。スクリプトは Docker デーモンと Amazon ECS エージェントを再起動し、インスタンス上で実行されているすべてのコンテナを終了します。次のコマンドを実行する前に、コンテナインスタンスをドレインし、重要なタスクを他のコンテナインスタンスに移動することを検討してください。詳細については、「コンテナインスタンスのドレイン」を参照してください。
スクリプトを実行する際にデバッグモードを有効にするには、管理者特権で Windows PowerShell を使用して、次のコマンドを実行してください。
.\ecs-logs-collector.ps1 -RunMode debug