6
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

CloudWatch Logsのコストを90%削減した話

Posted at

前提

  • 先日、実務で運用しているRailsアプリケーションをEC2からECSへ移行しました
  • 移行自体は比較的スムーズに完了したものの、CloudWatch Logsのコストが爆増し、めっちゃ焦る
  • レアケースだとは思いますが、メモとして残します

急激なCloudWatch Logsコストの増加

具体的には記載できませんが、CloudWatch Logsの使用料金が想定を遥かに超えていました。Cost Explorerで調査すると、ほぼ全てが以下の操作によるものでした。

  • PutLogEvents

こちらの記事を参考に、出力したログの配分を確認したところ、
Railsからの大量のログ(特に本番環境)がCloudWatchへ送信されていることが原因でした。

原因:本番のRailsのログレベルがDEBUGになっていた

おそらく先人たちが本番環境でログの詳細調査を行った際?、RailsのログレベルをDEBUGに変更したままとなっていた模様。
そのため、膨大なログがCloudWatchに記録されていました。(お恥ずかしい話、今回の件まで、ログレベルそのものについてあまり考えたことがなく、全く違和感に気づきませんでした...)
本番環境では、通常infoまたはそれ以上のレベルが推奨される(Railsガイドより)ということも今回知りました。

対策:ログレベルをINFOへ変更

とりあえず、ログレベルを本来のINFOに修正してみました。

config/environments/production.rb

- config.log_level = :debug
+ config.log_level = :info

効果:CloudWatch Logsコストが90%削減

設定変更後の翌日、Billingダッシュボードを確認したところ、CloudWatch Logsのコストが劇的に低下しました。
結果として、約90%**のコスト削減に成功しました。

教訓

  • ECS移行時や運用変更時は、環境設定を必ず再確認するべきでした
  • 不要な詳細ログをCloudWatchに送信すると、予期せぬコストが発生します
  • 本番環境のログレベルはinfo以上を推奨
  • 同じような問題に遭遇した際は、ぜひログレベル設定を確認してみてください
6
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?