CloudWatchメトリクスで31日分のデータを"ちゃんと"取得したい
はじめに
こんにちは、馬場です!
今回の記事ではCloudWatchのメトリクスで31日ある月の利用量をきちんと取得する方法について紹介していきます。
背景
例えば Aurora の IO最適化オプションを検討する時など、1か月分の利用量を正確に見て検討をしたいケースがたまにあると思います。
その際に、デフォルトで AWS が用意しているデフォルトの "30 日間" の集約期間では、31 日ある月のデータを正確に取得できないという問題があります。
具体的にはコスト配分タグをつけている Aurora クラスターで Cost Explorer と CloudWatch のメトリクスの利用量にずれが生じるようなケースです。
データテーブルで見てみるともっと「どっちが正しいんだ?」となりますね。
この数値について、もう少し性格な値を求めたいと考えていました。
解決策
1 日ごとの合計値を表示し、csvダウンロードした後に合算値を求めることでより正確なメトリクスを得ることができます。
ざっくりでいい場合の確認方法も最後のTipsで紹介します!
作業手順
ある月の総使用量を取得するための具体的な手順を紹介します。
- AWS マネジメントコンソールにログインし、CloudWatch のメトリクス画面に移動します。
- 「メトリクス」タブを開き、対象のメトリクスを検索します。
- 取得したいメトリクスを選択し、グラフ化したメトリクスを選択します。
- データを取得したい月を「絶対値」で選択する。
- 「統計:」オプションで「合計」を選択し、「期間:」オプションでは「1日」を選択する。
- CSV 形式でエクスポートし、SUM関数などで合計値を出す。
この方法により、各日の合計値を取得し、31 日ある月でも正確なデータを取得できます。
まとめ
AWS CloudWatch で 31 日間の正確な利用量を取得するには
- デフォルトの "30 日間" のオプションを使用しない
- 「統計:」が「合計」、「期間:」が「1日」でcsvを取得し合算する
というアプローチを取ることで、正確な利用量を取得することができる上に月内の利用の変化や一定期間ごとの集計なども行うことが可能です。
この手法を活用し、より精度の高いモニタリングを実現しましょう!
Tips
S3のAPI リクエストやAuroraのIO料金など、課金単位が1,000リクエストごとだったり100万リクエストごとだったりするものが多くあります。
そういった場合、あまり詳細に取る必要はなくどんぶりに近い計算ができればよいケースも多々あるかと思います。
その誤差が許されるのであれば、「統計:」が「合計」、「期間:」が「1日」を選択した後に表示形式を「データテーブル」とします。
それに合わせて、計測したい期間を設定することによって、ざっくりとではありますが
期間内の合計や平均利用量を取得することができます。
例として扱っているAuroraのIOは課金単位が100万(Million(ミリオン))なので、「単価×表示されている数値」という簡単な計算で料金を求めることができます!
一方で単位が表示されるものとずれる場合は単位を合わせてあげる必要があります。
実は
長々と書きましたがcsv出力せずとも、「データテーブル」で表示しマウスホバーすることで詳細な合算値を簡単に確認できます。
ただ、コピペができないので少しもどかしくなってしまうかもしれません。
Discussion