Amazon CloudWatch Logs での Elastic Beanstalk の使用 - AWS Elastic Beanstalk

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

Amazon CloudWatch Logs での Elastic Beanstalk の使用

このトピックでは、Amazon CloudWatch Logs サービスが Elastic Beanstalk に提供できるモニタリング機能について説明します。また、設定設定を順を追って説明し、各 Elastic Beanstalk プラットフォームのログの場所を一覧表示します。

CloudWatch ログを実装すると、次のモニタリングアクティビティを実行できます。

  • 環境の Amazon EC2インスタンスから Elastic Beanstalk アプリケーション、システム、カスタムログファイルをモニタリングおよびアーカイブします。

  • メトリクスフィルターが抽出する特定のログストリームイベントに簡単に対応できるようにアラームを設定します。

環境内の各 Amazon EC2インスタンスにインストールされた CloudWatch Logs エージェントは、設定した各ロググループの CloudWatch サービスにメトリクスデータポイントを公開します。各ロググループは、独自のフィルターパターンを適用して、データポイント CloudWatch として送信するログストリームイベントを決定します。同じロググループに属するログストリームは、保持、監視、アクセス制御について同じ設定を共有します。「」で説明されているように CloudWatch 、サービスにログを自動的にストリーミングするように Elastic Beanstalk を設定できますインスタンスログの CloudWatch Logs へのストリーミング。用語や概念を含む CloudWatch ログの詳細については、「Amazon CloudWatch Logs ユーザーガイド」を参照してください。

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

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

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

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

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

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

Elastic Beanstalk で CloudWatch ログを設定する方法

Elastic Beanstalk は、作成する各インスタンスにデフォルトの構成設定で CloudWatch ログエージェントをインストールします。詳細については、CloudWatch 「 ログエージェントリファレンス」を参照してください

インスタンスログの 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 Linux の Core

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 ログへのインスタンスログストリーミングを有効にできます。

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

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

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

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

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

    注記

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

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

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

  5. 「 ログへのインスタンス CloudWatch ログストリーミング」:

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

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

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

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

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

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

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

$ eb logs --cloudwatch-logs enable

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

$ eb logs --all

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

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

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

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

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

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

注記

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

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

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

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

  • IAM ロールに必要なIAMアクセス許可がありません。

  • CloudWatch ログをサポート AWS リージョン していない で環境を起動しました。

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