

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

# Elastic Beanstalk 環境の Amazon EC2 インスタンスからのログの表示
<a name="using-features.logging"></a>

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

Elastic Beanstalk 環境の Amazon EC2 インスタンスでは、アプリケーションまたは設定ファイルに関する問題を解決する際に確認するためのログが生成されます。ウェブサーバー、アプリケーションサーバー、Elastic Beanstalk プラットフォームスクリプトによって作成されたログ CloudFormation は、個々のインスタンスにローカルに保存されます。それらは、[環境管理コンソール](environments-console.md)または EB CLI を使用して簡単に検索できます。また、Amazon CloudWatch Logs にリアルタイムでログがストリーミングされるように環境を設定することもできます。

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

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

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

**インスタンスログを取得するには**

1. [Elastic Beanstalk コンソール](https://console.aws.amazon.com/elasticbeanstalk)を開き、**リージョン**リストで を選択します AWS リージョン。

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

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

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

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

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

**警告**  
このファイルには、署名済み Amazon S3 URL を所有していれば誰でも、削除前にアクセスできます。URL を使用できるように指定するのは、信頼されたパーティに対してのみにしてください。

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

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

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

ログのリアルタイムストリーミングや長期保存を行う場合は、[Amazon CloudWatch Logs にログがストリーミング](#health-logs-cloudwatchlogs)されるよう環境を設定します。

環境ログ、イベント、インスタンスの状態を AI で分析して、ヘルス問題の根本原因と解決策を特定するには、「」を参照してください[AI を活用した環境分析](health-ai-analysis.md)。

**Topics**
+ [Amazon EC2 インスタンス上のログの場所](#health-logs-instancelocation)
+ [Amazon S3 のログの場所](#health-logs-s3location)
+ [Linux でのログのローテーション設定](#health-logs-logrotate)
+ [デフォルトのログタスク設定の拡張](#health-logs-extend)
+ [Amazon CloudWatch Logs へのログファイルのストリーミング](#health-logs-cloudwatchlogs)

## Amazon EC2 インスタンス上のログの場所
<a name="health-logs-instancelocation"></a>

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

**Amazon Linux 2**
+ `/var/log/eb-engine.log`

**Amazon Linux AMI (AL1)**

**注記**  
 [2022 年 7 月 18 日](https://docs.aws.amazon.com/elasticbeanstalk/latest/relnotes/release-2022-07-18-linux-al1-retire.html)に、Elastic Beanstalk では Amazon Linux AMI (AL1) に基づくプラットフォームブランチのステータスがすべて**廃止**に設定されました。現在および完全にサポートされている Amazon Linux 2023 プラットフォームブランチへの移行の詳細については、「[Elastic Beanstalk Linux アプリケーションを Amazon Linux 2023 または Amazon Linux 2 に移行する](using-features.migration-al.md)」を参照してください。
+ `/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`](ebextensions.md))。

各アプリケーションとウェブサーバーは、固有フォルダにログを保存します。
+ **Apache** – `/var/log/httpd/`
+ **IIS** – `C:\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 のログの場所
<a name="health-logs-s3location"></a>

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

たとえば、アカウント の`e-mpcwnwheky` AWS リージョン `i-0a1fd158`の Elastic Beanstalk 環境`us-west-2`のインスタンス からのログは`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 から自動的に削除します。ローテーションされたログは、削除するか Amazon Glacier に移動するまで保持されます。

## Linux でのログのローテーション設定
<a name="health-logs-logrotate"></a>

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

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

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

## デフォルトのログタスク設定の拡張
<a name="health-logs-extend"></a>

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\bundlelogs.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](ebextensions.md)`) を使用して、独自の `.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-cli3.md) を使用してサンプルアプリケーションをデプロイできます。このために、EB CLI によって、サンプル設定の `.ebextentions` サブディレクトリを含むローカルアプリケーションディレクトリが作成されます。サンプルアプリケーションのログファイルを使用して、このトピックで説明されているログ取得機能をさまざまに試すこともできます。

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

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

### Linux でのログのローテーション拡張
<a name="health-logs-extend-rotation-linux"></a>

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

### Windows サーバーでのログのローテーション拡張
<a name="health-logs-extend-rotation-windows"></a>

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

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

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

## Amazon CloudWatch Logs へのログファイルのストリーミング
<a name="health-logs-cloudwatchlogs"></a>

Amazon CloudWatch Logs にログがストリーミングされるように環境を設定するには、Elastic Beanstalk コンソールまたは[設定オプション](command-options.md)を使用します。CloudWatch Logs では、環境の各インスタンスがロググループにログをストリーミングします。ロググループは、環境の終了後も数週間または数年間保持するよう設定できます。

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

Elastic Beanstalk コンソールでは、[環境の作成時](environments-create-wizard.md#environments-create-wizard-software)または[既存の環境](environments-cfg-logging.md#environments-cfg-logging-console)のいずれかに､ログのストリーミングを設定できます。コンソールから次のオプションを設定できます。CloudWatch Logs へのログストリーミングの有効化/無効化、保持日数の設定、Lifecyle オプションからの選択。次の例では、環境が終了した場合でもログは最大 7 日間保存されます。

![\[Elastic Beanstalk コンソールの CloudWatch Logs 設定の画面イメージ。\]](http://docs.aws.amazon.com/ja_jp/elasticbeanstalk/latest/dg/images/log-streaming-screen.png)


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

**Example .ebextensions/log-streaming.config**  

```
option_settings:
  aws:elasticbeanstalk:cloudwatch:logs:
    StreamLogs: true
    DeleteOnTerminate: false
    RetentionInDays: 180
```