Elastic Beanstalk 環境の Amazon EC2インスタンスからのログの表示 - AWS Elastic Beanstalk

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

Elastic Beanstalk 環境の Amazon EC2インスタンスからのログの表示

このトピックでは、Elastic Beanstalk が提供するインスタンスログのタイプについて説明します。また、それらを取得および管理するための詳細な手順も示します。

Elastic Beanstalk 環境の Amazon EC2インスタンスは、アプリケーションまたは設定ファイルに関する問題のトラブルシューティングに使用できるログを生成します。ウェブサーバー、アプリケーションサーバー、Elastic Beanstalk プラットフォームスクリプトによって作成されたログ AWS CloudFormation は、個々のインスタンスにローカルに保存されます。環境マネジメントコンソールまたは EB を使用して簡単に取得できますCLI。ログを Amazon CloudWatch Logs にリアルタイムでストリーミングするように環境を設定することもできます。

テールログは、最も一般的に使用されるログファイル (Elastic Beanstalk 運用ログ、ウェブサーバーやアプリケーションサーバーのログ) の最後の 100 行です。環境マネジメントコンソールまたは eb logs を使用してテールログをリクエストすると、環境のインスタンスにより、最新のログエントリを単一のテキストファイルに連結したものが Amazon S3 にアップロードされます。

バンドルログは、yum および cron のログおよび AWS CloudFormationの複数のログを含むさまざまなログファイルのフルログです。バンドルログをリクエストすると、環境内のインスタンスは完全なログファイルをZIPアーカイブにパッケージ化し、Amazon S3 にアップロードします。

注記

Elastic Beanstalk Windows Server プラットフォームでは、バンドルログがサポートされていません。

ローテーションされたログを Amazon S3 にアップロードするには、環境内のインスタンスの インスタンスプロファイルに、Elastic Beanstalk Amazon S3 バケットに書き込むためのアクセス許可が必要になります。これらのアクセス許可は、デフォルトのインスタンスプロファイルに含まれています。このプロファイルは、Elastic Beanstalk コンソールで初めて環境を起動する際に、作成するよう Elastic Beanstalk から求められるものです。

インスタンスログを取得するには
  1. Elastic Beanstalk コンソール を開き、リージョンリストで を選択します AWS リージョン。

  2. ナビゲーションペインで、[環境] を選択し、リストから環境の名前を選択します。

    注記

    環境が多数ある場合は、検索バーを使用して環境リストをフィルタリングします。

  3. ナビゲーションペインで [ログ] を選択します。

  4. [ログのリクエスト] を選択し、取得するログの種類を選択します。ログ末尾を取得するには、[Last 100 Lines] を選択します。バンドルログを取得するには、[Full Logs] を選択します。

  5. Elastic Beanstalk でログの取得が完了したら、[ダウンロード] を選択します。

Elastic Beanstalk はテールログとバンドルログを Amazon S3 バケットに保存し、ログへのアクセスURLに使用できる署名付き Amazon S3 を生成します。Elastic Beanstalk は、15 分の持続時間が経過すると、Amazon S3 からファイルを削除します。

警告

署名付き Amazon S3 を所有しているユーザーはURL、削除する前にファイルにアクセスできます。を信頼された関係者のみがURL利用できるようにします。

注記

ユーザーポリシーには、s3:DeleteObject アクセス許可が必要です。Elastic Beanstalk は、ユーザーのアクセス許可を使用して Amazon S3 からログを削除します。

ログを保持するためには、ログのローテーション後、自動的に Amazon S3 に発行されるように環境を設定できます。Amazon S3 へのログのローテーションを有効にするには、「インスタンスログ表示の設定」の手順に従ってください。環境のインスタンスは 1 時間に一度ローテーションされるログをアップロードしようと試みます。

アプリケーションが、環境のプラットフォームのデフォルトの設定の一部ではない場所にあるログを生成する場合、設定ファイル (.ebextensions) を使用してデフォルトの設定を拡張できます。アプリケーションのログファイルをログ末尾、バンドルログ、またはログローテーションに追加できます。

リアルタイムログストリーミングと長期ストレージの場合は、ログを Amazon CloudWatch Logs にストリーミングするように環境を設定します。

Amazon EC2インスタンスのログの場所

ログは、環境内の Amazon EC2インスタンスの標準場所に保存されます。Elastic Beanstalk では、以下のログが生成されます。

Amazon Linux 2

  • /var/log/eb-engine.log

Amazon Linux AMI (AL1)

注記

2022 年 7 月 18 日、Elastic Beanstalk は Amazon Linux AMI (AL1) に基づくすべてのプラットフォームブランチのステータスを廃止 に設定します。現在および完全にサポートされている Amazon Linux 2023 プラットフォームブランチへの移行の詳細については、「Elastic Beanstalk Linux アプリケーションを Amazon Linux 2023 または Amazon Linux 2 に移行する」を参照してください。

  • /var/log/eb-activity.log

  • /var/log/eb-commandprocessor.log

Windows Server

  • C:\Program Files\Amazon\ElasticBeanstalk\logs\

  • C:\cfn\log\cfn-init.log

これらのログには、設定ファイルに関するメッセージなど、デプロイメントアクティビティに関するメッセージが含まれます (.ebextensions)。

各アプリケーションとウェブサーバーは、固有フォルダにログを保存します。

  • Apache/var/log/httpd/

  • IISC:\inetpub\wwwroot\

  • Node.js/var/log/nodejs/

  • nginx/var/log/nginx/

  • Passenger/var/app/support/logs/

  • Puma/var/log/puma/

  • Python/opt/python/log/

  • Tomcat/var/log/tomcat/

Amazon S3 のログの場所

環境のテールログまたはバンドルログをリクエストした場合や、ローテーションされたログをインスタンスがアップロードした場合、ログは Amazon S3 の Elastic Beanstalk バケットに格納されます。Elastic Beanstalk は、環境を作成する AWS リージョンelasticbeanstalk-region-account-idごとに という名前のバケットを作成します。このバケット内では、ログはパス resources/environments/logs/logtype/environment-id/instance-id 内に保存されます。

例えば、 AWS us-west-2アカウント のリージョン i-0a1fd158の Elastic Beanstalk 環境e-mpcwnwhekyのインスタンス からのログは123456789012、次の場所に保存されます。

  • テールログ

    s3://elasticbeanstalk-us-west-2-123456789012/resources/environments/logs/tail/e-mpcwnwheky/i-0a1fd158

  • バンドルログ

    s3://elasticbeanstalk-us-west-2-123456789012/resources/environments/logs/bundle/e-mpcwnwheky/i-0a1fd158

  • ローテーションされたログ

    s3://elasticbeanstalk-us-west-2-123456789012/resources/environments/logs/publish/e-mpcwnwheky/i-0a1fd158

注記

環境 ID は、環境管理コンソールに表示されます。

Elastic Beanstalk は、テールログとバンドルログを作成から 15 分後に Amazon S3 から自動的に削除します。ローテーションされたログは、削除するか S3 Glacier に移動するまで保持されます。

Linux でのログのローテーション設定

Linux プラットフォームでは、Elastic Beanstalk は logrotate を使用して定期的にログのローテーションを行います。設定されている場合、ログがローカルでローテーションされると、そのログはローテーションタスクにより Amazon S3 にアップロードされます。ローカルにローテーションされたログは、ログの末尾またはバンドルログにはデフォルトで表示されません。

logrotate 用の Elastic Beanstalk 設定ファイルは /etc/logrotate.elasticbeanstalk.hourly/ にあります。これらのローテーション設定はプラットフォームに固有で、今後のプラットフォームのバージョンで変更される場合があります。使用できる設定の設定と例の詳細については、man logrotate を実行してください。

設定ファイルは、/etc/cron.hourly/ の cron ジョブで呼び出されます。cron の詳細については、「man cron」を実行してください。

デフォルトのログタスク設定の拡張

Elastic Beanstalk は、Amazon EC2インスタンスの /opt/elasticbeanstalk/tasks (Linux) または C:\Program Files\Amazon\ElasticBeanstalk\config (Windows Server) のサブフォルダにあるファイルを使用して、テールログ、バンドルログ、およびログローテーションのタスクを設定します。

Amazon Linux で

  • テールログ

    /opt/elasticbeanstalk/tasks/taillogs.d/

  • バンドルログ

    /opt/elasticbeanstalk/tasks/bundlelogs.d/

  • ローテーションされたログ

    /opt/elasticbeanstalk/tasks/publishlogs.d/

Windows Server の場合:

  • テールログ

    c:\Program Files\Amazon\ElasticBeanstalk\config\taillogs.d\

  • ローテーションされたログ

    c:\Program Files\Amazon\ElasticBeanstalk\config\publogs.d\

たとえば、Linux のファイル eb-activity.conf が 2 つのログファイルを末尾ログのタスクに追加します。

/opt/elasticbeanstalk/tasks/taillogs.d/eb-activity.conf

/var/log/eb-commandprocessor.log /var/log/eb-activity.log

環境設定ファイル (.ebextensions) を使用して、独自の .conf ファイルをこれらのフォルダに追加できます。.conf ファイルでは、お客様のアプリケーションに固有のログファイルが表示されます。これは Elastic Beanstalk によってログファイルタスクに追加されます。

files セクションを使用して、変更するタスクに設定ファイルを追加します。たとえば、次の設定テキストは、ログ設定ファイルを環境の各インスタンスに追加します。このログ設定ファイル cloud-init.conf は、ログ末尾に /var/log/cloud-init.log を追加します。

files: "/opt/elasticbeanstalk/tasks/taillogs.d/cloud-init.conf" : mode: "000755" owner: root group: root content: | /var/log/cloud-init.log

このテキストを .config ファイル名拡張子をもつファイルに追加して .ebextensions という名前のフォルダ内のソースバンドルに追加します。

~/workspace/my-app |-- .ebextensions | `-- tail-logs.config |-- index.php `-- styles.css

Linux プラットフォームでは、ログのタスク設定でワイルドカード文字を使用することもできます。この設定ファイルは .log ファイル名拡張子をもつすべてのファイルをアプリケーションのルートにある log フォルダからバンドルログに追加します。

files: "/opt/elasticbeanstalk/tasks/bundlelogs.d/applogs.conf" : mode: "000755" owner: root group: root content: | /var/app/current/log/*.log

ログタスク設定では、Windows プラットフォームでワイルドカード文字はサポートされません。

注記

ログのカスタマイズ手順に慣れるために、EB CLIを使用してサンプルアプリケーションをデプロイできます。このため、EB CLIは、サンプル設定を持つ .ebextentionsサブディレクトリを含むローカルアプリケーションディレクトリを作成します。サンプルアプリケーションのログファイルを使用して、このトピックで説明されているログ取得機能をさまざまに試すこともできます。EB を使用してサンプルアプリケーションを作成する方法の詳細についてはCLI、「EB CLIの基本」を参照してください。

設定ファイルの使用方法の詳細については、「設定ファイル (.ebextensions) による高度な環境のカスタマイズ」を参照してください。

ログ末尾やバンドルログを拡張するのと同様に、設定ファイルを使用してログのローテーションを拡張できます。Elastic Beanstalk で、独自のログのローテーションと Amazon S3 へのアップロードが行われる際には、追加のログもローテーションおよびアップロードされます。ログのローテーション拡張は、プラットフォームのオペレーティングシステムによって動作が異なります。以下のセクションでは、2 つのケースについて説明します。

Linux でのログのローテーション拡張

Linux でのログのローテーション設定」で説明したように、Linux プラットフォームでは Elastic Beanstalk が logrotate を使用してログをローテーションします。ログのローテーションについてアプリケーションのログファイルを設定すると、アプリケーションはログファイルのコピーを作成する必要はありません。Elastic Beanstalk は logrotate を設定し、ローテーションごとにアプリケーションのログファイルのコピーを作成します。したがって、アプリケーションはログファイルにアクティブに書き込んでいないときは、ログファイルをロック解除した状態を維持する必要があります。

Windows サーバーでのログのローテーション拡張

Windows Server では、アプリケーションのログファイルでログのローテーションを設定する場合、アプリケーションはログファイルを定期的にローテーションする必要があります。Elastic Beanstalk は、設定されたパターンで始まる名前を持つファイルを探し、Amazon S3 へのアップロードのためにそれらのファイルを選択します。さらに、ファイル名のピリオドは無視され、Elastic Beanstalk は、名前のピリオドまでがログファイルのベース名であると見なします。

Elastic Beanstalk は、最新のものを除くすべてのバージョンのベースログファイルをアップロードします。これは、最新のファイルがアクティブなアプリケーションログファイルであり、ロックされる可能性があると見なされるためです。したがって、アプリケーションはローテーション間でアクティブなログファイルのロックを維持できます。

たとえば、アプリケーションが my_log.log というログファイルに書き込み、この名前を .conf ファイルで指定するとします。アプリケーションは定期的にファイルをローテーションします。アプリケーションは Elastic Beanstalk のローテーションサイクル中に、ログファイルのフォルダーで my_log.logmy_log.0800.logmy_log.0830.log の各ファイルを検索します。Elastic Beanstalk は、すべてがベース名 my_log のバージョンであると見なします。ファイル my_log.log の変更時刻が最新であるため、Elastic Beanstalk は他の 2 つのファイル my_log.0800.log および my_log.0830.log のみをアップロードします。

Amazon CloudWatch Logs へのログファイルのストリーミング

Elastic Beanstalk コンソールで、または設定オプション を使用して、ログを Amazon CloudWatch Logs にストリーミングするように環境を設定できます。 CloudWatch Logs を使用すると、環境内の各インスタンスはログをロググループにストリーミングし、環境が終了した後も数週間または数年間保持するように設定できます。

ストリーミングされるログのセットは環境によって異なりますが、アプリケーションの前面で実行される nginx または Apache プロキシサーバーからの eb-engine.log とアクセスログが常に含まれます。

Elastic Beanstalk コンソールでは、環境の作成時または既存の環境のいずれかに、ログのストリーミングを設定できます。コンソールから次のオプションを設定できます。 CloudWatch ログへのログストリーミングの有効化/無効化、保持日数の設定、ライフサイクルオプションからの選択。次の例では、環境が終了した場合でもログは最大 7 日間保存されます。

Elastic Beanstalk コンソールの CloudWatch ログ設定の画面イメージ。

次の設定ファイルでは、環境が終了した場合でも 180 日間はログストリーミングが可能になります。

例 .ebextensions/log-streaming.config
option_settings: aws:elasticbeanstalk:cloudwatch:logs: StreamLogs: true DeleteOnTerminate: false RetentionInDays: 180