echo("備忘録");

IT技術やプログラミング関連など、技術系の事を備忘録的にまとめています。

【AWS】CloudWatchの料金体系を調べてみた

今回の内容

今まで何度もAWSのCloudWatchを仕事&プライベートで触っていますが、CloudWatchって「なんかお金かかるなあ...」と思うことが多かったので、CloudWatchの料金について調べることにしました。

なお、自分の認識が誤っている可能性もあるので、必ず詳細は自分で確認をお願いします。

参考

扱うサービス

CloudWatchにはいろいろサービスがありますが、今回は以下のサービスのみ対象にします

  • メトリクス
  • ダッシュボード
  • アラーム
  • ログ
  • イベント

前提

  • 金額は全て月額です。
  • 1ドル140円として計算してます。(2022/11/20現在のレート)

メトリクス

料金体系はこんな感じ

  • 基本メトリクス(初めから用意されてるもの)
    • 基本モニタリング(5分間隔)は無料
    • 詳細モニタリング(1分間隔)は10個まで無料
  • カスタムメトリクス(自分で作成するもの)
    • 10,000メトリクスまで:0.3ドル/個
    • 次の240,000メトリクス:0.1ドル/個
    • 次の750,000メトリクス:0.05ドル/個
    • 1,000,000を超えるメトリクス:0.02ドル/個
  • 詳細モニタリングも11個目からは上記の料金が適用されるっぽい?

確かに、こんなものではないかな...という感じです。
仮に20個モニタリングして、840円くらいです。(為替次第でもっと安くなる)
ただし、決して手放しに安いわけではないので、カスタムメトリックの作りすぎは注意が必要ですね。

また「Amazon CloudWatchの料金」の「料金の例:例2-カスタムメトリック」にあるように、EC2のある項目(CPU使用率など)をカスタムメトリック化して送信...などをやろうとすると、API使用料の分も料金が追加で必要なので、そこは注意です。

ちなみに、メトリクスフィルタ自体には料金はかかりませんが、メトリクスフィルタの作成時には最終的にカスタムメトリクスを作成するので、結果的にカスタムメトリクス1個分の料金がかかります。

ダッシュボード

  • 3個まで無料(最大50メトリクスまで表示)
  • 4個目以上からは、3ドル/個

これもそんな感じかな...という感じ。
今まで、無料枠で十分間に合っていたので、かもしれません。
1アカウントでたくさんEC2インスタンスを立てたり複数アプリを動かしていると、そうでもないのかも。

ただ単価はちょっと高めですね。(その分便利だけど)

アラーム

  • 標準解像度アラーム10個まで無料
    • 11個目以上は0.1ドル/個
  • 高解像度アラームは0.3ドル/個
  • 複合アラームは0.5ドル/個

これもそんな感じかな..と。(そればっか)
標準解像度のアラームならばコストが安めなので、そこまで負担に感じることはなかったです。

これもカスタムメトリクス同様、作りすぎに注意する感じです。(事前に精査しておくなど)

ログ

  • 5GBまで無料
  • 収集:0.76ドル/GB
  • 保存(アーカイブ):0.033ドル/GB
  • 分析(Logs Insightsクエリ発行):0.0076ドル/GB(スキャンデータ量)

「CloudWatchの料金高くね?」と感じる場合、だいだいこれのせいです。

「収集」の単価が他の単価に比べてちょっとお高めな感じがあります。

また「収集」とありますが、実際にはCloudWatch Logs上で閲覧できるログは全て課金対象なので、例えば「毎月10GBのログを収集する」場合、

  • 初月:10GB - 5GB(無料枠) = 5GB * 0.76 ≒ 532円
  • 2か月目:10GB(初月分) + 10GB(当月分) - 5GB(無料枠) = 15GB * 0.76 ≒ 1,596円
  • 3か月目:10GB(初月分) + 10GB(2か月目分) + 10GB(当月分) - 5GB(無料枠) = 25GB * 0.76 ≒ 2,660円

と、どんどん増えていきます。

※2022/11/21追記:
上記ですが、AWSサポートから「『収集』は新規に収集(=ログに書き出し)した場合のみが対象で、一度書き出したログがずっと残っていても『収集』枠で課金されることはない」との情報を頂いたため、取り消させて頂きます。失礼いたしました。
(もちろん、「保存(アーカイブ)」枠での課金はあります)

また、Logs Insightsクエリ発行もスキャン対象データが課金対象なので、累積データが増えていけば、当然課金額も増えていってしまいます。

対策ですが、とにかく不要なデータは削除するなりアーカイブするなりする事だと思います。
(アーカイブしても課金はされますが、単価はだいぶ安いです)

また「保持」のデフォルトが「失効しない(=ずっと残っている)」状態なので、必ず保持期間を設定しておくのをお勧めします。(CloudFormationならProperties.RetentionInDaysで設定できます)

それ以外には、CloudWatch Logsに書き出す内容を見直すのも大事かなと思います。

イベント

  • カスタムイベント以外は無料
  • カスタムイベントはイベント100万件当たり1ドル
  • クロスアカウントイベントもイベント100万件当たり1ドル

これは、そんな感じかなと思います。(個人的には良心的値段だと思う)
実際、今までCloudWatchイベントで負担に感じたことはあまりなかったです。

なお、これもカスタムメトリクスやアラーム同様、事前に内容を精査する...が大事だと思います。

まとめ(=コストを抑えるには?)

  • CloudWatchに設定する項目は定期的に精査、見直しする。(不要な項目は削除する)
  • 特にCloudWatch Logsはこまめに削除・アーカイブする。(不要にずっと残さない)
    • 面倒でも保持期間を設定する

だと思います。

では、今回はこの辺で。