CloudWatchのカスタムメトリクスについて、料金計算が分かりづらかったので確認した
AWSで特にEC2を使用している場合、なにかとCloudWatchを使うことはあるのではないでしょうか?
そして、少し前に新しいCloudWatch Agentもリリースされ、今まで以上にカスタムメトリクスを使用する機会も増えました。
そこで、様々なカスタムメトリクスの使い方を考慮して、その見積りをするべく料金を確認したところ、分かりにくい点があったため、調査をしました。
まずは結論から
CloudWatch へのメトリクスの送信 (PutMetricData API) が行われていた時間の割合で計算され、1時間の間に1度以上の送信があった時間が課金対象となります。
例えば、1つのカスタムメトリクスを 1週間 (168 時間)、1時間毎に送信した後に送信を止めた場合、1か月は 720時間(30日の場合)となりますので、$0.3 * 168/720 = 0.069999 と、約 $0.07 が課金の対象となります。
調査の背景
カスタムメトリクスについての料金ですが、料金のページに下記のような記載があります。
Amazon CloudWatch のカスタムメトリクス
$0.30 メトリクスあたり/月 (最初の 10,000 メトリクス)
$0.10 メトリクスあたり/月 (次の 240,000 メトリクス)
$0.05 メトリクスあたり/月 (次の 750,000 メトリクス)
$0.02 メトリクスあたり/月 (1,000,000 メトリクス以上)
こちらの記事によると、10,000メトリクスまではメトリクスあたり月$0.3とのことです。
一見とても分かりやすい料金体系です。
本当にそうでしょうか?
私のAWS環境の12月度の請求書(既に1ヶ月丸々使用済みの環境)の 「$0.30 per metric-month for the first 10,000 metrics - Asia Pacific (Tokyo)」の項目のメトリクス数は、小数点以下が3桁まで表示されていました。
仮に、保有メトリクスの数が対象となるのであれば、このメトリクス数は整数値になるはずです。
AWSサポートに確認しました。
本件、たまたま担当された方が知識不足だったのか分かりませんが、最初の回答として、「保有メトリクス数x$0.3」であり、月の途中から使用した場合、時間数により按分されるため、保有メトリクス数が小数点以下になることがあるという説明でした。
しかしこの説明が正しい場合、メトリクスを削除できない ことから、一度でもメトリクスデータを送信したらその後ずっと$0.3が課金されることになります。
その点について、指摘し再度確認を行ったところ、冒頭の結論に記載したとおりの料金である旨、訂正した説明が送られてきました。
CloudWatch カスタムメトリクスのコストパフォーマンスのよい使い分け
これらの調査結果から、カスタムメトリクスは3600秒毎に課金が発生することが分かりましたので、
1分に1回データを送信するのも1時間に1回送信するのもカスタムメトリクスの料金としては同じです。 1
メモリ使用率などのメトリクスデータを監視する目的で使う場合は、数時間単位で確認するよりも数分単位で確認するほうが現実的だと思いますので、質の高いデータにするためには60秒間隔などで送るのがよいでしょう。
SSL証明書の監視 を行うような場合、1日1回確認することでよいため、1ドメインの料金は、30 / 720 * 0.3 ≒ $0.013 となります。
つまり、1カスタムメトリクスの月額料金分で24ドメインが監視対象として監視できます。
CloudWatchメトリクスにSSL証明書の残日数を送るとこんな感じでダッシュボードに並べられてとても管理しやすいです。
これが、とても安価に使えるのは良いと思います。
同様に、少し応用的な使い方として、1日毎のデータでよいメトリクス情報(売上データ、アクセス数、会員登録数のようなもの)は、使い方を考えて時間毎ではなく日毎にデータを送るようにするととても安く効果的に使用できます。
-
別途Amazon CloudWatch API リクエストを行うための料金(1000件のリクエストあたり$0.01)は発生します。 ↩