Amazon ECS コンテナインスタンスから自動的にログを収集するにはどうすればよいですか。

最終更新日: 2019 年 9 月 16 日

Amazon Elastic Container Service (Amazon ECS) 環境のトラブルシューティングや、AWS サポートへ問い合わせをしているのですが、コンテナインスタンスからさまざまなログを収集する必要があります。どうすればできますか?

簡単な説明

Amazon ECS ログコレクターは、コンテナインスタンスからログを自動的に収集するスクリプトです。このスクリプトは、一般的なオペレーティングシステムのログに加えて、Docker および Amazon ECS コンテナエージェントのログも収集します。その後、スクリプトはログを 1 つのファイルに圧縮してアーカイブし、問題をトラブルシューティングするときに簡単に共有できます。

Amazon ECS ログコレクターは次のオペレーティングシステムをサポートしています。

  • Amazon Linux
  • Red Hat Enterprise Linux 7
  • Debian 8
  • Ubuntu 14.04
  • Windows 2016

解決方法

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 エージェントを再起動してから、インスタンスで実行されているすべてのコンテナを終了します。次のコマンドを実行する前に、コンテナインスタンスを排出し、重要なタスクを他のコンテナインスタンスに移動することを検討してください。詳しくは、「Container Instance Draining」を参照してください。

スクリプトを実行したときにデバッグモードを有効にするには、次のコマンドを実行します。

[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 エージェントを再起動してから、インスタンスで実行されているすべてのコンテナを終了します。次のコマンドを実行する前に、コンテナインスタンスを排出し、重要なタスクを他のコンテナインスタンスに移動することを検討してください。詳しくは、「Container Instance Draining」を参照してください。

スクリプトを実行するときにデバッグモードを有効にするには、管理者権限で Windows PowerShell を使用して次のコマンドを実行します。

.\ecs-logs-collector.ps1 -RunMode debug

この記事はお役に立ちましたか?

改善できることはありますか?


さらにサポートが必要な場合