

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

# Amazon CloudWatch Logs で Elastic Beanstalk を使用する
<a name="AWSHowTo.cloudwatchlogs"></a>

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

CloudWatch Logs を実装すると、次のモニタリングアクティビティを実行できます。
+ 環境の Amazon EC2 インスタンスから Elastic Beanstalk アプリケーション、システム、およびカスタムのログファイルをモニタリングおよびアーカイブできます。
+ アラームを設定すると、メトリクスフィルタが抽出する特定のログストリームイベントに簡単に反応できるようになります。

環境内の各 Amazon EC2 インスタンスにインストールされた CloudWatch Logs エージェントは、設定した各ロググループの CloudWatch サービスに対してメトリクスのデータポイントを発行します。各ロググループは、独自のフィルターパターンを適用して、どのログストリームイベントをデータポイントとして CloudWatch に送信するかを決定します。同じロググループに属するログストリームは、保持、監視、アクセス制御について同じ設定を共有します。「[CloudWatch Logs へのインスタンスログのストリーミング](#AWSHowTo.cloudwatchlogs.streaming)」に示すように、CloudWatch サービスに自動的にログをストリーミングするよう Elastic Beanstalk を設定できます。用語や概念を含む CloudWatch Logs の詳細については、『[Amazon CloudWatch Logs ユーザーガイド](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/WhatIsCloudWatchLogs.html)』を参照してください。

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

**Topics**
+ [CloudWatch Logs へのインスタンスログストリーミングの前提条件](#AWSHowTo.cloudwatchlogs.prereqs)
+ [Elastic Beanstalk が CloudWatch Logs を設定する方法](#AWSHowTo.cloudwatchlogs.loggroups)
+ [CloudWatch Logs へのインスタンスログのストリーミング](#AWSHowTo.cloudwatchlogs.streaming)
+ [CloudWatch Logs 統合のトラブルシューティング](#AWSHowTo.cloudwatchlogs.troubleshoot)
+ [Amazon CloudWatch Logs への Elastic Beanstalk 環境ヘルス情報のストリーミング](AWSHowTo.cloudwatchlogs.envhealth.md)

## CloudWatch Logs へのインスタンスログストリーミングの前提条件
<a name="AWSHowTo.cloudwatchlogs.prereqs"></a>

Elastic Beanstalk インスタンスプロファイルに *AWSElasticBeanstalkWebTier* または *AWSElasticBeanstalkWorkerTier* Elastic Beanstalk 管理ポリシーがない場合は、プロファイルに次のアクセス許可を追加してこの機能を有効にする必要があります。 [Elastic Beanstalk インスタンスプロファイル](concepts-roles-instance.md)

------
#### [ JSON ]

****  

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

------

## Elastic Beanstalk が CloudWatch Logs を設定する方法
<a name="AWSHowTo.cloudwatchlogs.loggroups"></a>

Elastic Beanstalk は、作成する各インスタンスにデフォルト設定を使用して CloudWatch Logs エージェントをインストールします。詳細については、[CloudWatch エージェントドキュメント](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/Install-CloudWatch-Agent.html)を参照してください。

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


****  

|  プラットフォーム/プラットフォームブランチ  |  ログ  | 
| --- | --- | 
| Docker |  [See the AWS documentation website for more details](http://docs.aws.amazon.com/ja_jp/elasticbeanstalk/latest/dg/AWSHowTo.cloudwatchlogs.html)  | 
| Docker での ECS |  [See the AWS documentation website for more details](http://docs.aws.amazon.com/ja_jp/elasticbeanstalk/latest/dg/AWSHowTo.cloudwatchlogs.html)  | 
| Go<br />.NET Core on Linux<br />Java |  [See the AWS documentation website for more details](http://docs.aws.amazon.com/ja_jp/elasticbeanstalk/latest/dg/AWSHowTo.cloudwatchlogs.html)  | 
| Node.js<br />Python |  [See the AWS documentation website for more details](http://docs.aws.amazon.com/ja_jp/elasticbeanstalk/latest/dg/AWSHowTo.cloudwatchlogs.html)  | 
| Tomcat<br />PHP |  [See the AWS documentation website for more details](http://docs.aws.amazon.com/ja_jp/elasticbeanstalk/latest/dg/AWSHowTo.cloudwatchlogs.html)  | 
| Windows Server の .NET |  [See the AWS documentation website for more details](http://docs.aws.amazon.com/ja_jp/elasticbeanstalk/latest/dg/AWSHowTo.cloudwatchlogs.html)  | 
| Ruby |  [See the AWS documentation website for more details](http://docs.aws.amazon.com/ja_jp/elasticbeanstalk/latest/dg/AWSHowTo.cloudwatchlogs.html)  | 

### Amazon Linux AMI プラットフォーム上のログファイル
<a name="AWSHowTo.cloudwatchlogs.loggroups.alami"></a>

**注記**  
 [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)」を参照してください。

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


****  

|  プラットフォーム/プラットフォームブランチ  |  ログ  | 
| --- | --- | 
| Docker/ <br />プラットフォームブランチ: 64 ビット版 Amazon Linux 上で動作する Docker |  [See the AWS documentation website for more details](http://docs.aws.amazon.com/ja_jp/elasticbeanstalk/latest/dg/AWSHowTo.cloudwatchlogs.html)  | 
| Docker/ <br />プラットフォームブランチ: 64 ビット版 Amazon Linux で動作するマルチコンテナ Docker |  [See the AWS documentation website for more details](http://docs.aws.amazon.com/ja_jp/elasticbeanstalk/latest/dg/AWSHowTo.cloudwatchlogs.html)  | 
| Glassfish (Preconfigured Docker) |  [See the AWS documentation website for more details](http://docs.aws.amazon.com/ja_jp/elasticbeanstalk/latest/dg/AWSHowTo.cloudwatchlogs.html)  | 
| Go |  [See the AWS documentation website for more details](http://docs.aws.amazon.com/ja_jp/elasticbeanstalk/latest/dg/AWSHowTo.cloudwatchlogs.html)  | 
| Java/<br />プラットフォームブランチ: 64 ビット版 Amazon Linux 上で動作する Java 8<br />プラットフォームブランチ: 64 ビット版 Amazon Linux 上で動作する Java 7 |  [See the AWS documentation website for more details](http://docs.aws.amazon.com/ja_jp/elasticbeanstalk/latest/dg/AWSHowTo.cloudwatchlogs.html)  | 
| Tomcat |  [See the AWS documentation website for more details](http://docs.aws.amazon.com/ja_jp/elasticbeanstalk/latest/dg/AWSHowTo.cloudwatchlogs.html)  | 
| Node.js |  [See the AWS documentation website for more details](http://docs.aws.amazon.com/ja_jp/elasticbeanstalk/latest/dg/AWSHowTo.cloudwatchlogs.html)  | 
| PHP |  [See the AWS documentation website for more details](http://docs.aws.amazon.com/ja_jp/elasticbeanstalk/latest/dg/AWSHowTo.cloudwatchlogs.html)  | 
| Python |  [See the AWS documentation website for more details](http://docs.aws.amazon.com/ja_jp/elasticbeanstalk/latest/dg/AWSHowTo.cloudwatchlogs.html)  | 
| Ruby/<br />プラットフォームブランチ: 64 ビット版 Amazon Linux 上で動作する Puma with Ruby |  [See the AWS documentation website for more details](http://docs.aws.amazon.com/ja_jp/elasticbeanstalk/latest/dg/AWSHowTo.cloudwatchlogs.html)  | 
| Ruby/ プラットフォームブランチ: 64 ビット版 Amazon Linux 上で動作する Passenger with Ruby |  [See the AWS documentation website for more details](http://docs.aws.amazon.com/ja_jp/elasticbeanstalk/latest/dg/AWSHowTo.cloudwatchlogs.html)  | 

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 へのインスタンスログのストリーミング
<a name="AWSHowTo.cloudwatchlogs.streaming"></a>

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

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

------
#### [ JSON ]

****  

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

------

### Elastic Beanstalk コンソールを使用したインスタンスログストリーミング
<a name="AWSHowTo.cloudwatchlogs.streaming.console"></a>

**CloudWatch Logs にインスタンスログをストリーミングするには**

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

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

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

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

1. [**Instance log streaming to CloudWatch Logs**]:
   + [**Log streaming**] を有効にします。
   + [**Retention**] でログを保存する日数を指定します。
   + 環境が終了した後にログを保存するかどうかを決定する [**Lifecycle**] 設定を選択します。

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

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

### EB CLI を使用したインスタンスログのストリーミング
<a name="AWSHowTo.cloudwatchlogs.streaming.ebcli"></a>

EB CLI を使用してインスタンスログストリーミングを CloudWatch Logs に有効にするには、[**eb logs**](eb3-logs.md) コマンドを使用します。

```
$ eb logs --cloudwatch-logs enable
```

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

```
$ eb logs --all
```

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

### 設定ファイルを使用したインスタンスログのストリーミング
<a name="AWSHowTo.cloudwatchlogs.files"></a>

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

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

### カスタムログファイルのストリーミング
<a name="AWSHowTo.cloudwatchlogs.streaming.custom"></a>

CloudWatch Logs と Elastic Beanstalk の統合では、アプリケーションが生成するカスタムログファイルのストリーミングは直接サポートされません。カスタムログをストリーミングするには、設定ファイルを使用して直接 CloudWatch エージェントをインストールし、ファイルがプッシュされるよう設定します。設定ファイルの例については、「[https://github.com/awsdocs/elastic-beanstalk-samples/tree/main/configuration-files/aws-provided/instance-configuration/logs-streamtocloudwatch-linux.config](https://github.com/awsdocs/elastic-beanstalk-samples/tree/main/configuration-files/aws-provided/instance-configuration/logs-streamtocloudwatch-linux.config)」を参照してください。

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

CloudWatch Logs の設定の詳細については、「*Amazon CloudWatch ユーザーガイド*」の「[CloudWatch エージェント設定ファイルリファレンス](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch-Agent-Configuration-File-Details.html)」を参照してください。

## CloudWatch Logs 統合のトラブルシューティング
<a name="AWSHowTo.cloudwatchlogs.troubleshoot"></a>

**AI アシストによるトラブルシューティングのために Amazon Q Developer CLI を試す**  
 Amazon Q Developer CLI は、環境の問題を迅速にトラブルシューティングするのに役立ちます。Q CLI は、環境ステータスのチェック、イベントの確認、ログの分析、および明確化のための質問を行うことでソリューションを提供します。詳細と詳細なチュートリアルについては、 AWS ブログの[「Amazon Q Developer CLI を使用した Elastic Beanstalk 環境のトラブルシューティング](https://aws.amazon.com/blogs/devops/troubleshooting-elastic-beanstalk-environments-with-amazon-q-developer-cli/)」を参照してください。

**環境インスタンスログが見つかりません**  
CloudWatch Logs で予想される環境のインスタンスログの一部が見つからない場合は、次の一般的な問題を調査します。
+ IAM ロールが必要な IAM アクセス許可を持っていません。
+ CloudWatch Logs をサポート AWS リージョン していない で環境を起動しました。
+ カスタムログファイルの 1 つが、指定されたパスに存在しません。

**アプリケーションログが欠落または断続的**  
Elastic Beanstalk アプリケーションログ (`/var/log/web.stdout.log`) が欠落しているか断続的であるように見える場合は、rsyslog と journald のデフォルトのレート制限設定が原因である可能性があります。レート制限を完全に無効にするとこの問題を解決できますが、それによりディスクの過剰な使用、サービス拒否の可能性、または予期しないログバースト時のシステムパフォーマンスの低下につながる可能性があるため、お勧めしません。代わりに、次の [https://github.com/awsdocs/elastic-beanstalk-samples/tree/main/configuration-files/aws-provided/instance-configuration/logs-ratelimitcloudwatchlogs-linux.config](https://github.com/awsdocs/elastic-beanstalk-samples/tree/main/configuration-files/aws-provided/instance-configuration/logs-ratelimitcloudwatchlogs-linux.config) を使用してレート制限を調整できます。この設定では、レート制限間隔を 600 秒に引き上げ、バースト制限を大きくして、適切なログ記録とシステム保護のバランスを取ります。

**スロットリングの問題**  
多数のインスタンスを同時に起動する Elastic Beanstalk オペレーションが `Error: fail to create log stream: ThrottlingException: Rate exceeded` のようなメッセージを返す場合、CloudWatch API への呼び出しが多すぎるとスロットリングされます。

スロットリングの問題を解決するには、次のいずれかのアクションを実行します。
+ ローリングデプロイでより小さなバッチサイズを使用して、同時更新を減らします。
+ *CreateLogStream* の AWS アカウントのトランザクション/秒 (TPS) 制限サービスクォータの引き上げをリクエストします。詳細については、「*Amazon CloudWatch Logs ユーザーガイド*」の「[CloudWatch Logs クォータ](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/cloudwatch_limits_cwl.html)」と「[CloudWatch Logs サービスクォータの監視](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/cloudwatch_limits_cwl.html#service-quotas-manage)」を参照してください。