CDP:Log Aggregation パターン

提供:AWS-CloudDesignPattern
移動: 案内, 検索

ログの集約

目次

解決したい課題

 APサーバーの台数が多いシステムでは、アクセスログなどが各サーバーに分散している場合、ログの集計や分析、トラブルシュートの際、分散したログを収集する必要があり、手間がかかる。また、オートスケーリングする環境では、スケールインでサーバーが自動的にシャットダウンされてしまうため、サーバー上のログが消去されてしまう。

 ログを一定期間保存しておく必要がある場合、大容量のディスクが必要となる。しかし、成長しているシステムやピークが読めないようなシステムでは、保存するファイルサイズを見積もる(キャパシティープランニング)のは難しい。 各サーバーのログを共有ストレージにアーカイブして短期間でローテーションすれば、各サーバーでディスク拡張のメンテナンスを無くせる。ただ、いずれにせよ共有ストレージのキャパシティープランニングは必要で、共有ストレージ自体の運用も必要となる。

クラウドでの解決/パターンの説明

 ログの集約先としてインターネットストレージを使うことで、大量のログを安価かつ高い耐久性で保存可能となる。APサーバーなどにログ収集エージェントなどを常駐させ、集約対象のログをインターネットストレージに集めるようにする。

実装

  • ログ保存用のS3バケットを用意する。
  • 各サーバーにログ収集エージェントを常駐させ、定期的にS3バケットにログを転送する。

構造

ytmxmAAlDNow0uxQ-17D23.png

利点

  • S3に集約し、ログ保存用に別途サーバーを立てる必要がなく、収集したログの堅牢性についても意識する必要がなくなる。
  • S3と親和性の高いEMRやRedshiftを使って、容易にログ解析を実行できる。

注意点

  • Auto Scalingによりインスタンスがterminateする際に、収集タイミングによってはS3に転送されないログが出てくる。terminate 時に最後の収集を実行する場合は、Auto Scalingのライフサイクルフックを利用する。[関連ブログ 1]

その他

  • 収集したログの内容を確認し、通知を送りたい場合(例えばERRORという文字が合った場合にメールを送るなど)、CloudWatch Logsを利用することもできる。CloudWatch Logsを利用する場合も同様に、CloudWatch Logs のエージェントを各サーバーに常駐させ、ログをCloudWatch Logsに転送する。[関連ブログ 2]

関連ブログ

  1. AWS Documentation の「AutoScalingのライフサイクルフックの使用方法の例」( http://docs.aws.amazon.com/ja_jp/AutoScaling/latest/DeveloperGuide/lifecycle-hook-examples.html )
  2. AWS Documentation の「Amazon CloudWatch Logs」( http://docs.aws.amazon.com/ja_jp/AmazonCloudWatch/latest/DeveloperGuide/WhatIsCloudWatchLogs.html )
個人用ツール
名前空間
変種
操作
CDPメニュー
ツールボックス