Amazon CloudWatch Logs で Elastic Beanstalk を使用する - AWS Elastic Beanstalk

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

Amazon CloudWatch Logs で Elastic Beanstalk を使用する

CloudWatch Logs を使用すると、お使いの環境の Amazon EC2 インスタンスから Elastic Beanstalk アプリケーション、システム、およびカスタムログファイルを監視およびアーカイブできます。また、アラームを設定することで、メトリックスフィルタが抽出する特定のログストリームイベントに反応してアクションを簡単に実行できるようになります。環境内の各 Amazon EC2 インスタンスにインストールされた CloudWatch Logs エージェントは、設定した各ロググループの CloudWatch サービスに対してメトリクスのデータポイントを発行します。各ロググループは、独自のフィルターパターンを適用して、どのログストリームイベントをデータポイントとして CloudWatch に送信するかを決定します。同じロググループに属するログストリームは、保持、監視、アクセス制御について同じ設定を共有します。「CloudWatch Logs へのインスタンスログのストリーミング」に示すように、CloudWatch サービスに自動的にログをストリーミングするよう Elastic Beanstalk を設定できます。用語や概念を含む CloudWatch Logs の詳細については、『Amazon CloudWatch Logs ユーザーガイド』を参照してください。

インスタンスログに加えて、環境の拡張ヘルスを有効にすると、CloudWatch Logs にヘルス情報をストリーミングするように環境を設定できます。「Amazon CloudWatch Logs への Elastic Beanstalk 環境ヘルス情報のストリーミング」を参照してください。

次の図は、CloudWatch Logs を統合して設定された環境で [モニタリング] ページに表示されるグラフを示しています。この環境のサンプルメトリクスには、[CWLHttp4xx] および [CWLHttp5xx] という名前が付けられています。画像の 1 つでは、[CWLHttp4xx] メトリクスが、設定ファイルで指定された条件に基づいてアラームをトリガーしています。

次の図は、それぞれ CWLHttp4xx および CWLHttp5xx メトリクスに対応する、AWSEBCWLHttp4xxPercentAlarm および AWSEBCWLHttp5xxCountAlarm というサンプルアラームについて [Alarms] (アラーム) ページおよび図に表示されるグラフを示しています。

CloudWatch Logs へのログストリーミングの前提条件

環境の Amazon EC2 インスタンスから CloudWatch Logs へのログのストリーミングを有効にするには、以下の条件を満たす必要があります。

  • プラットフォーム – この機能はこのリリース以降にリリースされたプラットフォームのバージョンでのみ使用可能であるため、以前のプラットフォームバージョンを使用している場合は、現在の環境に更新してください。

  • Elastic Beanstalk インスタンスプロファイルAWSElasticBeanstalkWebTier またはr AWSElasticBeanstalkWorkerTier Elastic Beanstalk マネージドポリシーがない場合は、プロファイルに以下を追加して、この機能を有効にする必要があります。

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "logs:PutLogEvents", "logs:CreateLogStream" ], "Resource": [ "*" ] } ] }

Elastic Beanstalk が CloudWatch Logs を設定する方法

Elastic Beanstalk は、作成する各インスタンスにデフォルト設定を使用して CloudWatch Logs エージェントをインストールします。詳細については、『CloudWatch Logs エージェントリファレンス』を参照してください。

インスタンスログストリーミングを CloudWatch Logs に使用可能にすると、Elastic Beanstalk は環境のインスタンスからのログファイルを CloudWatch Logs に送信します。プラットフォームによって、ストリーミングされるログが異なります。次の表に、プラットフォーム別のログを示します。

プラットフォーム/プラットフォームブランチ

ログ

Docker/

プラットフォームブランチ: 64 ビット版 Amazon Linux 2 上で動作する Docker

  • /var/log/eb-engine.log

  • /var/log/eb-hooks.log

  • /var/log/docker

  • /var/log/docker-events.log

  • /var/log/eb-docker/containers/eb-current-app/stdouterr.log

  • /var/log/nginx/access.log

  • /var/log/nginx/error.log

Docker/

プラットフォームブランチ: 64 ビット版 Amazon Linux 2 上で動作する ECS

  • /var/log/docker-events.log

  • /var/log/eb-ecs-mgr.log

  • /var/log/eb-engine.log

  • /var/log/eb-hooks.log

  • /var/log/ecs/ecs-agent.log

  • /var/log/ecs/ecs-init.log

Go

.NET Core on Linux

Java/プラットフォームブランチ: 64 ビット版 Amazon Linux 2 上で動作する Corretto

  • /var/log/eb-engine.log

  • /var/log/eb-hooks.log

  • /var/log/web.stdout.log

  • /var/log/nginx/access.log

  • /var/log/nginx/error.log

Node.js

Python

  • /var/log/eb-engine.log

  • /var/log/eb-hooks.log

  • /var/log/web.stdout.log

  • /var/log/httpd/access_log

  • /var/log/httpd/error_log

  • /var/log/nginx/access.log

  • /var/log/nginx/error.log

Tomcat

PHP

  • /var/log/eb-engine.log

  • /var/log/eb-hooks.log

  • /var/log/httpd/access_log

  • /var/log/httpd/error_log

  • /var/log/nginx/access.log

  • /var/log/nginx/error.log

Windows Server の .NET

  • C:\inetpub\logs\LogFiles\W3SVC1\u_ex*.log

  • C:\Program Files\Amazon\ElasticBeanstalk\logs\AWSDeployment.log

  • C:\Program Files\Amazon\ElasticBeanstalk\logs\Hooks.log

Ruby

  • /var/log/eb-engine.log

  • /var/log/eb-hooks.log

  • /var/log/puma/puma.log

  • /var/log/web.stdout.log

  • /var/log/nginx/access.log

  • /var/log/nginx/error.log

注記

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

次の表に、Amazon Linux AMI (Amazon Linux 2 以前) に基づいて、プラットフォームブランチ上のインスタンスからストリーミングされるログファイルをプラットフォーム別に示します。

プラットフォーム/プラットフォームブランチ

ログ

Docker/

プラットフォームブランチ: 64 ビット版 Amazon Linux 上で動作する Docker

  • /var/log/eb-activity.log

  • /var/log/nginx/error.log

  • /var/log/docker-events.log

  • /var/log/docker

  • /var/log/nginx/access.log

  • /var/log/eb-docker/containers/eb-current-app/stdouterr.log

Docker/

プラットフォームブランチ: 64 ビット版 Amazon Linux で動作するマルチコンテナ Docker

  • /var/log/eb-activity.log

  • /var/log/ecs/ecs-init.log

  • /var/log/eb-ecs-mgr.log

  • /var/log/ecs/ecs-agent.log

  • /var/log/docker-events.log

Glassfish (Preconfigured Docker)

  • /var/log/eb-activity.log

  • /var/log/nginx/error.log

  • /var/log/docker-events.log

  • /var/log/docker

  • /var/log/nginx/access.log

Go

  • /var/log/eb-activity.log

  • /var/log/nginx/error.log

  • /var/log/nginx/access.log

Java/

プラットフォームブランチ: 64 ビット版 Amazon Linux 上で動作する Java 8

プラットフォームブランチ: 64 ビット版 Amazon Linux 上で動作する Java 7

  • /var/log/eb-activity.log

  • /var/log/nginx/access.log

  • /var/log/nginx/error.log

  • /var/log/web-1.error.log

  • /var/log/web-1.log

Tomcat

  • /var/log/eb-activity.log

  • /var/log/httpd/error_log

  • /var/log/httpd/access_log

  • /var/log/nginx/error_log

  • /var/log/nginx/access_log

Node.js

  • /var/log/eb-activity.log

  • /var/log/nodejs/nodejs.log

  • /var/log/nginx/error.log

  • /var/log/nginx/access.log

  • /var/log/httpd/error.log

  • /var/log/httpd/access.log

PHP

  • /var/log/eb-activity.log

  • /var/log/httpd/error_log

  • /var/log/httpd/access_log

Python

  • /var/log/eb-activity.log

  • /var/log/httpd/error_log

  • /var/log/httpd/access_log

  • /opt/python/log/supervisord.log

Ruby/

プラットフォームブランチ: 64 ビット版 Amazon Linux 上で動作する Puma with Ruby

  • /var/log/eb-activity.log

  • /var/log/nginx/error.log

  • /var/log/puma/puma.log

  • /var/log/nginx/access.log

Ruby/

プラットフォームブランチ: 64 ビット版 Amazon Linux 上で動作する Passenger with Ruby

  • /var/log/eb-activity.log

  • /var/app/support/logs/passenger.log

  • /var/app/support/logs/access.log

  • /var/app/support/logs/error.log

Elastic Beanstalk は、ストリームするさまざまなログファイルに対して、CloudWatch Logs 内のロググループを構成します。CloudWatch Logs から特定のログファイルを検索するには、対応するロググループの名前を知る必要があります。ロググループの命名方式は、プラットフォームのオペレーティングシステムによって異なります。

Linux プラットフォームの場合は、インスタンス上のログファイルの場所に /aws/elasticbeanstalk/environment_name というプレフィックスを付けてロググループ名を取得します。たとえば、ファイル /var/log/nginx/error.log を取得するには、ロググループ /aws/elasticbeanstalk/environment_name/var/log/nginx/error.log を指定します

Windows プラットフォームの場合は、各ログファイルに対応するロググループについて、次の表を参照してください。

インスタンス上のログ

ロググループ

C:\Program Files\Amazon\ElasticBeanstalk\logs\AWSDeployment.log

/aws/elasticbeanstalk/<environment-name>/EBDeploy-Log

C:\Program Files\Amazon\ElasticBeanstalk\logs\Hooks.log

/aws/elasticbeanstalk/<environment-name>/EBHooks-Log

C:\inetpub\logs\LogFiles (ディレクトリ全体)

/aws/elasticbeanstalk/<environment-name>/IIS-Log

CloudWatch Logs へのインスタンスログのストリーミング

Elastic Beanstalk コンソール、EB CLI、または設定オプションを使用して、CloudWatch Logs へのインスタンスログのストリーミングを使用可能にすることができます。

これを有効にする前に、CloudWatch Logs エージェントで使用するための IAM アクセス権限を設定します。環境に割り当てるインスタンスプロファイルに次のカスタムポリシーをアタッチできます。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "logs:CreateLogStream", "logs:PutLogEvents", "logs:DescribeLogGroups", "logs:DescribeLogStreams" ], "Resource": [ "*" ] } ] }

Elastic Beanstalk コンソールを使用したインスタンスログストリーミング

CloudWatch Logs にインスタンスログをストリーミングするには
  1. Elastic Beanstalk コンソールを開き、[Regions] (リージョン) リストで AWS リージョンを選択します。

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

    注記

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

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

  4. [更新、モニタリング、ログ] の設定カテゴリで、[編集] を選択します。

  5. [Instance log streaming to CloudWatch Logs]:

    • [Log streaming] を有効にします。

    • [Retention] でログを保存する日数を指定します。

    • 環境が終了した後にログを保存するかどうかを決定する [Lifecycle] 設定を選択します。

  6. ページの最下部で [適用] を選択し変更を保存します。

ログストリーミングが有効になったら、[ソフトウェア] カテゴリまたはページに戻り、[ロググループ] のリンクを検索します。CloudWatch コンソールでログを表示するには、このリンクをクリックします。

EB CLI を使用したインスタンスログのストリーミング

EB CLI を使用してインスタンスログストリーミングを CloudWatch Logs に有効にするには、eb logs コマンドを使用します。

$ eb logs --cloudwatch-logs enable

また、eb logs を使用して、CloudWatch Logs からログを取得することもできます。すべての環境のインスタンスログを取り出すことも、コマンドの多くのオプションを使用して検索するログのサブセットを指定することもできます。たとえば、次のコマンドは、環境の一連のインスタンスログを取得し、.elasticbeanstalk/logs ディレクトリに保存します。

$ eb logs --all

特に、--log-group オプションを使用すると、インスタンス上の特定のログファイルに対応する特定のロググループのインスタンスログを取得できます。そのためには、取得するログファイルに対応するロググループの名前を知る必要があります。この情報は、「Elastic Beanstalk が CloudWatch Logs を設定する方法」にあります。

設定ファイルを使用したインスタンスログのストリーミング

環境を作成または更新する場合は、設定ファイルを使用して、CloudWatch Logs にインスタンスログストリーミングをセットアップして設定することができます。次の設定ファイルの例では、デフォルトのインスタンスログのストリーミングを有効にしています。Elastic Beanstalk は、環境のプラットフォーム用のログファイルのデフォルトセットをストリーミングします。例を使用するには、アプリケーションソースバンドルの最上位にある .ebextensions ディレクトリで、.config 拡張子を持つファイルにテキストをコピーします。

option_settings: - namespace: aws:elasticbeanstalk:cloudwatch:logs option_name: StreamLogs value: true

カスタムログファイルのストリーミング

CloudWatch Logs と Elastic Beanstalk の統合では、アプリケーションが生成するカスタムログファイルのストリーミングは直接サポートされません。カスタムログをストリーミングするには、設定ファイルを使用して直接 CloudWatch Logs エージェントをインストールし、ファイルがプッシュされるよう設定します。設定ファイルの例については、「logs-streamtocloudwatch-linux.config」を参照してください。

注記

この例は、Windows プラットフォームでは動作しません。

CloudWatch Logs の設定の詳細については、「Amazon CloudWatch Logs ユーザーガイド」の「CloudWatch Logs エージェントリファレンス」を参照してください。

CloudWatch Logs 統合のトラブルシューティング

CloudWatch Logs で予想される環境のインスタンスログの一部が見つからない場合は、次の一般的な問題を調査できます。

  • IAM ロールが必要な IAM アクセス許可を持っていません。

  • CloudWatch Logs をサポートしていない AWS リージョン で環境を立ち上げました。

  • カスタムログファイルの 1 つが、指定されたパスに存在しません。