Elastic BeanstalkのCloudWatch Logs のストリーミングを試してみた

はじめに

AWSチームのすずきです。

AWS Elastic Beanstalk (以下EB)、2016年12月にリリースされたバージョン2.3.0のプラットフォームより、 ログ管理機能が強化され、CloudWatch Logs へのログ出力が簡単に設定、利用する事が可能になりました。

今回、EBの管理画面(Webコンソール)を利用して、アクセスログなどをCloudWatchログに出力する設定を行う機会がありましたので、紹介させて頂きます。

参考リンク

設定

新規環境

  • EB環境を新規に作成する場合、「オプションを設定」、「ソフトウェアの設定」で設定が可能です。

新しい環境の作成

eb-cwlogs-01

ソフトウェアの設定

eb-cwlogs-02

CloudWatch Logs設定

  • ログのストリーミング「有効」をチェックします。
  • CloudWatch Logs 上に保存するログの保存期間設定について指定する事が可能です。

eb-cwlogs-03

既存環境

  • バージョン2.3.0 以降のEBプラットフォームであれば、CloudWatch Logsを利用したログのストリーミング設定が可能です。

プラットフォームバージョン確認

eb-cwlogs-04

ソフトウェア設定

  • 「ソフトウェア設定」より、「CloudWatch ログ設定」が可能です

eb-cwlogs-05

CloudWatch Logs設定

  • インスタンスプロファイル、必要最小限のIAM権限に制限されていて「logs」(CloudWatch Logs)の許可が無い場合、追加が必要です。

eb-cwlogs-06

参考

確認

ロググループ指定

  • CloudwatchのAWSコンソールのロググループ「/aws/elasticbeanstalk/<EB環境名>/<対象ログ>」を指定します。

eb-cwlogs-07

ログストリーム指定

  • ログストリームとして「インスタンスID」を指定すると、Cloudwatch Logsに保存されたログが確認できました。

eb-cwlogs-08

まとめ

バージョン2.3.0のプラットフォームのEB環境、アクセスログやEBの動作ログ(eb-activity.log)の CloudWatch Logs に保存、簡単に設定して、利用する事が可能になりました。

また、ログを長期保持する必要の無い開発環境などでは、EBでのログ設定時、保持期間は短期、EB環境の終了時にログを削除とする事で、 ログの散乱や保存費用の抑制が可能です。

「.ebextensions」の利用が障壁となりCloudWatch Logs利用ができず、オートスケールの縮退時などにアクセスログが失われていた環境では、 今回紹介させて頂いたEBのログストリームの有効化、是非お試しください。

尚、EB標準で対応しないOSログや、アプリケーションログなどの退避が必要な場合には、 従来通り「.ebextensions」を利用したCloudwatchLogs設定の併用も可能です。

[Elastic Beanstalk] CloudwatchLogsでsyslog、eb関連ログを集約管理してみた

また、大量のログが発生する環境で、CloudwatchLogsのデータ転送費用(1GBあたり0.76$:東京、0.5$:US)や検索性が問題となる場合、 fluentd(td-agent)経由で Kinesis Firehose(1GBあたり0.029$:US)などの利用もお試し頂ければと思います。

fluent-plugin-kinesis-firehoseでAmazon Kinesis Firehoseにログを転送する

fluent-plugin-kinesisでKinesis Streamsにログを送信する