メニュー
AWS Elastic Beanstalk
開発者ガイド (API Version 2010-12-01)

Amazon CloudWatch Logs で Elastic Beanstalk を使用する

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

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

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

CloudWatch Logs エージェント用の IAM アクセス許可を付与する

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

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "logs:CreateLogGroup",
        "logs:CreateLogStream",
        "logs:GetLogEvents",
        "logs:PutLogEvents",
        "logs:DescribeLogGroups",
        "logs:DescribeLogStreams",
        "logs:PutRetentionPolicy"
      ],
      "Resource": [
        "arn:aws:logs:us-west-2:*:*"
      ]
    }
  ]
}

上記のポリシーのリージョンを、環境を起動するリージョンと置き換えます。

CloudWatch Logs のストリーミング

Elastic Beanstalk はオンデマンドで Amazon EC2 インスタンスを起動できるため (この機能を有効にしている場合)、Elastic Beanstalk には、それらの Amazon EC2 インスタンスから CloudWatch にログエントリをストリーミングすることができる別のオプションがあります。この機能を有効にするには、[Log streaming] で [Enabled] を選択し、[Retention] をログを保存する日数に設定します。さらに、次の図に示すように、インスタンスの削除後にログを保存するかどうかを [Lifecycle] 設定で選択します。この図では、ログは 7 日間保存され、インスタンスの削除後もログが保持されます。また、eb logs コマンドを使ってこれらの設定を有効にすることもできます。この機能は、このリリース以降にコンテナでのみ利用可能です。

CloudWatch ログを有効にすると、[View in CloudWatch Console] リンクが表示されることにも注意してください。CloudWatch コンソールで CloudWatch ログを表示するには、このリンクをクリックします。

注記

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

{
  "Version": "2012-10-17",
  "Statement": [
  {
    "Effect": "Allow",
    "Action": [
      "logs:PutLogEvents",
      "logs:CreateLogStream"
    ],
    "Resource": [
    "arn:aws:logs:*:*:log-group:/aws/elasticbeanstalk*"
    ]
  }
  ]
}

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

コンテナによって、ストリーミングされるログが異なります。次の表に、コンテナ別のログを示します。

コンテナ

ログ

Java

  • /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

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 (Puma)

  • /var/log/eb-activity.log

  • /var/log/nginx/error.log

  • /var/log/puma/puma.log

  • /var/log/nginx/access.log

Ruby (passenger)

  • /var/log/eb-activity.log

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

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

  • /var/app/support/logs/error.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

Go

  • /var/log/eb-activity.log

  • /var/log/nginx/error.log

  • /var/log/nginx/access.log

Docker

  • /var/log/eb-activity.log

  • /var/log/nginx/error.log

  • /var/log/docker-events.log

  • /var/log/docker

  • /var/log/nginx/access.log

Multi-Docker(generic)

  • /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

Glass fish (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 (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

Python (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

eb logs --cloudwatch enable コマンドを使用して CloudWatch ログを有効にすることもできます。

設定ファイルを使って CloudWatch Logs 統合をセットアップする

環境を作成または更新するときに、以下のリストにあるサンプル設定ファイルを使用して、CloudWatch Logs との統合をセットアップし設定することができます。以下の設定ファイルを含む .zip ファイルまたは抽出した設定ファイルを、アプリケーションソースバンドルの最上位レベルにある .ebextensions ディレクトリに含めることができます。コンテナタイプのウェブサーバーに適したファイルを使用します。各コンテナタイプで使用するウェブサーバーの詳細については、「Elastic Beanstalk でサポートされているプラットフォーム」を参照してください。

注記

.NET コンテナで作成された Elastic Beanstalk アプリケーションと CloudWatch Logs との統合は設定できません。

設定ファイルは次の場所でダウンロードできます。

.zip ファイルは以下の設定ファイルを含みます。

  • cwl-setup.config - このファイルは、環境の各 Amazon EC2 インスタンスに CloudWatch Logs エージェントをインストールして、エージェントを設定します。また、このファイルは、Elastic Beanstalk がインスタンスを起動するときに general.conf ファイルを作成します。cwl-setup.config ファイルは変更しなくても使用できます。

    必要に応じて、『Amazon CloudWatch 開発者ガイド』の「クイックスタート: 新しい EC2 インスタンスでの CloudWatch Logs エージェントのインストールと設定」(新規インスタンスの場合)または「クイックスタート: 既存の EC2 インスタンスでの CloudWatch Logs エージェントのインストールと設定」(既存インスタンスの場合)で説明されているように、CloudWatch Logs エージェントを手動でセットアップすることもできます。

  • cwl-webrequest-metrics.config - このファイルは、CloudWatch Logs エージェントがどのログを監視するかを指定します。また、エージェントで監視する各ログに CloudWatch Logs エージェントが適用するメトリクスフィルタも指定します。メトリクスフィルタは、ログファイルの空白区切りのエントリに対応したフィルタパターンを含みます(カスタムログがある場合は、このサンプル設定ファイルのサンプルフィルタパターンを必要に応じて更新または置換します)。

    メトリクスフィルタは、CloudWatch Logs エージェントが CloudWatch サービスにメトリクスのデータポイントを送信するときに使用するメトリクス名と値を指定するメトリクス変換も含みます。CloudWatch Logs エージェントは、ウェブサーバーのアクセスログファイルのエントリーがフィルタパターンと一致するかどうかに基づいて、メトリクスのデータポイントを送信します。

    最後に、設定ファイルは、環境に Amazon Simple Notification Service トピックが作成されている場合、cwl-setup.config ファイルで指定されたアラーム条件が満たされたときに、トピックにメッセージを送信するアラームアクションも含みます。フィルタパターンの詳細については、『Amazon CloudWatch 開発者ガイド』の「フィルタとパターンの構文」を参照してください。Amazon SNS の詳細については、『Amazon Simple Notification Service 開発者ガイド』を参照してください。Elastic Beanstalk 管理コンソールからアラームを管理する方法の詳細については、「アラームの管理」を参照してください。

    注記

    CloudWatch コストは、使用するアラームについて AWS アカウントに適用されます。

  • eb-logs.config - このファイルは、CloudWatch Logs エージェントの CloudWatch Logs ログファイルをセットアップします。また、この設定ファイルは、ログのローテーションの一環として、ログファイルが Amazon S3 にコピーされるようにもします。このファイルは変更しなくても使用できます。

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

Elastic Beanstalk を CloudWatch Logs と統合しようとしたときに、Elastic Beanstalk が環境を起動できない場合は、次の一般的な問題を調査します。

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

  • CloudWatch Logs がサポートされていないリージョンで環境を起動しようとしました。

  • アクセスログが cwl-webrequest-metrics.config ファイル(/var/log/httpd/elasticbeanstalk-access_log)で指定されたパスに存在していません。