AWS Elastic Beanstalk
開発者ガイド

Amazon CloudWatch Logs への Elastic Beanstalk 環境ヘルス情報のストリーミング

環境の拡張ヘルスレポートを有効にすると、CloudWatch Logs にヘルス情報をストリーミングするように環境を設定できます。このストリーミングは、Amazon EC2 インスタンスログのストリーミングとは独立しています。このトピックでは、環境ヘルス情報のストリーミングについて説明します。インスタンスログのストリーミングの詳細については、「Amazon CloudWatch Logs で Elastic Beanstalk を使用する」を参照してください。

環境のヘルスステータスのストリーミングを設定すると、Elastic Beanstalk は環境ヘルスの CloudWatch Logs ロググループを作成します。ロググループの名前名は /aws/elasticbeanstalk/environment-name/environment-health.log と呼ばれます。このロググループ内で、Elastic Beanstalk は YYYY-MM-DD#<hash-suffix> という名前のログストリームを作成します (日付ごとに複数のログストリームが存在する可能性があります)。

環境の状態が変化すると、Elastic Beanstalk はヘルスログストリームにレコードを追加します。このレコードは、ヘルス状態の変化、つまり新しい状態と変化の原因の説明を表します。たとえば、ロードバランサに障害が発生しているため、環境のステータスが Severe (重大) に変わることがあります。拡張ヘルスステータスの説明については、「状態の色とステータス」を参照してください。

CloudWatch Logs への環境ヘルスストリーミングの前提条件

CloudWatch Logs への環境ヘルスストリーミングを有効にするには、次の条件を満たす必要があります。

  • プラットフォーム - 拡張ヘルスレポートをサポートするプラットフォーム構成を使用している必要があります。

  • アクセス権限 - お使いの環境のヘルス情報をストリーミングするには、特定のログ記録に関連するアクセス許可を Elastic Beanstalk に付与する必要があります。aws-elasticbeanstalk-service-role、またはアカウントのサービスにリンクされたロール AWSServiceRoleForElasticBeanstalk を使用している環境では、カスタムサービスロールに次のアクセス権限を必ず追加してください。

    { "Effect": "Allow", "Action": [ "logs:DescribeLogStreams", "logs:CreateLogStream", "logs:PutLogEvents" ], "Resource": "arn:aws:logs:*:*:log-group:/aws/elasticbeanstalk/*:log-stream:*" }

CloudWatch Logs への環境ヘルスログのストリーミング

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

Elastic Beanstalk コンソールを使用した環境ヘルスログのストリーミング

CloudWatch Logs に環境ヘルスログをストリーミングするには

  1. Elastic Beanstalk コンソール を開きます。

  2. お客様の環境の管理ページに移動します。

  3. [Configuration] を選択します。

  4. [モニタリング] 設定カードで、[変更] を選択します。

  5. [ヘルスレポート] で、[システム] が [拡張] に設定されていることを確認してください。

  6. [CloudWatch Logs へのヘルスイベントのストリーミング]

    • [ログのストリーミング] を有効にします。

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

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

  7. [Apply] を選択します。

次の図の例では、ログを 7 日間保存し、環境を終了した後にログを保持しています。

ログストリーミングが有効になったら、[モニタリング] カードまたはページに戻り、[Log Groups (ロググループ)] のリンクを検索します。CloudWatch コンソールで環境ヘルスログを表示するには、このリンクをクリックします。

EB CLI を使用した環境ヘルスログのストリーミング

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

$ eb logs --cloudwatch-logs enable --cloudwatch-log-source environment-health

また、eb logs を使用して、CloudWatch Logs からログを取得することもできます。たとえば、次のコマンドは、環境のすべてのヘルスログを取得し、.elasticbeanstalk/logs ディレクトリに保存します。

$ eb logs --all --cloudwatch-log-source environment-health

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

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

ヘルスストリーミング設定ファイル

############################################################################ ## Sets up Elastic Beanstalk to stream environment health information ## to Amazon CloudWatch Logs. ## Works only for environments that have enhanced health reporting enabled. ############################################################################ option_settings: aws:elasticbeanstalk:cloudwatch:logs:health: HealthStreamingEnabled: true ### Settings below this line are optional. # DeleteOnTerminate: Delete the log group when the environment is # terminated. Default is false. If false, the health data is kept # RetentionInDays days. DeleteOnTerminate: false # RetentionInDays: The number of days to keep the archived health data # before it expires, if DeleteOnTerminate isn't set. Default is 7 days. RetentionInDays: 30

オプションのデフォルト値と有効な値については、「aws:elasticbeanstalk:cloudwatch:logs:health」を参照してください。