Savings Plans の利用率を確認及び通知する方法

記事タイトルとURLをコピーする

CS課佐竹です。

あけましておめでとうございます。今年1発目の私のブログは Savings Plans のお話です。

はじめに

Savings Plans に関するブログ第5弾です。過去4つのブログは以下のリストの通りです。

今回のブログでは前々回の記事にて購入した Savings Plans の利用率(適用率)を確認することが目的となります。2019年12月に購入された Savings Plans の利用率が実際にどうなっているのか確認されたい方も多くいらっしゃるのではないでしょうか。あわせてカバレッジも確認し、さらに Savings Plans の利用率の通知方法についてもご説明致します。

Utilization Report を確認する

購入済の Savings Plans の「Utilization report(利用率のレポート)」を確認するには、Cost Explorer ⇒ Savings Plans ⇒ Utilization report と開きます。実際の画面は以下になります。

Cost Explorer の左端のメニューから、「Utilization Report」を選択してください。デフォルトで「先月」の値が「日別」で表示されるようになっています。現在は2020年1月ですので、2019年12月の Savings Plans の利用率が表示されています。

購入した4つの Savings Plans は全て100%適用(利用)されていました。コミットした Savings Plans の額はブログに記載しました通り「全体の7割程度」の購入でしたため、想定通り完全に Savings Plans は使い切られていました。右上に表記があります 「Total Net Savings vs On-Demand (総純節約額とオンデマンドの比較)」 という項目が実際に Savings Plans によって削減された額になります。今回、 $809/month が削減できました。日本円(110円換算)でおおよそ 8.9万円/月程度 となりました。

Coverage Report を確認する

続いて、 Utilization Report の真下にある Coverage Report も確認していきます。

Coverage Report は「購入した Savings Plans が適用対象のサービス全体の利用料において何%までカバーできているのか?」を示すものです。このグラフをみると、狙った「70%」ではなく平均して62%程度のカバー率であったことがわかります。つまり 38% 程度はオンデマンド利用料となっていることから、追加で Savings Plans を購入する余地があることがわかります

現在どの程度の余地が残されているかは素直に Recommendations を確認すると良いでしょう。実際に確認してみたところ、上記の通りまだあと $1.60/hour のコミット余力があることがわかりました。実際にこの $1.60/hour をコミットすることでほぼほぼカバレッジは100%に近づくと予想されますが今回は追加購入を検討しないことにしました。理由については以下の通りです。

例えばですが「12月の1カ月間のみ実行されていた検証用の大きなEC2 Instance」などが破棄された場合に、突然利用料が下がることもあります。そうした場合には Savings Plans に無駄が発生することで Utilization が悪化し最悪の場合損を生む可能性があります。それを避けるために、検証環境においては「おおよそ 70% 程度の適用率」で留めるようにしておこうと考えています。この辺りの「SP購入戦略」はAWSの利用方法や状況によって異なってきますため、一概にこうすべきであるということは申し上げられるものではありませんため、本ブログは1つの目安と捉えて頂けますと幸いです。

なお、 Coverage Report では実際に Savings Plans によってカバーされたFamily及びRegionが表示されます。この図では「Spend covered by Savings Plan」で降順に並べてみました。最も多く Savings Plans にカバーされていたのは東京リージョンのt2ファミリーであることがわかります。また Region の項目を見ますと「Compute Savings Plan」が Region を跨いで適用されていることもよくわかります。このカバー範囲の広さこそが「Compute Savings Plan」最大のメリットと言えるでしょう。

Savings Plans Utilization Alert を設定する

続いて、AWS Budgets を利用して Utilization Alert を設定していきます。「Utilization Alert」とは何か?ですが、「Savings Plans の利用率が100%未満になったら通知を行う」など、Utilizationの値を「しきい値」として設定するアラートになります。今現在、Savings Plans の Utilization は常に100%ですが、「いつの間にか100%を割っている!?」という状況にすぐ気づけるようにしたいため、これを設定します。

Compute Savings Plan Utilization Alert

上図の通り、AWS Budgets の画面右上にある「Create a budget」を押下して進めていきます。

最下部にある「Savings Plans budget」を選択し「Set your budget」を押下して次に進みます。

Nameは今回「Compute Savings Plan」にしました。フィルターでわかる通り、Savings Plan の種類でそれぞれ閾値を設定可能となっていますため今回は分けることにしました。まずは「Compute Savings Plan」の通知を作成していきます。「Period」は「Daily」を選択します。

さて、閾値ですが100%未満になった場合にアラートが欲しいため「100」を入力します。こうすることで、100%未満になればすぐにアラートが飛びます。「Configure alerts」を押下して次に進みます。

ここで、通知先を選択します。基本的にはEメールアドレスになると思われますが、弊社ではSlackに連携を行うためにAWS Chatbot 連携用の SNS topic を設定しております。具体的な設定方法は以下のAWS公式ブログをご参考ください。「Confirm budget」を押下して確認画面に進みます。

Running AWS commands from Slack using AWS Chatbot https://aws.amazon.com/jp/blogs/devops/running-aws-commands-from-slack-using-aws-chatbot/

設定を確認し、問題がなければ「Create」でBudgetを作成します。

EC2 Instance Savings Plan Utilization Alert

次に EC2 Instance Savings Plan Utilization Alert も設定します。

フィルターで、今度は「EC2 Instance」を選択して作成を行います。他の設定は先ほどと同様です。

この通り、2つのアラート設定が完成しました。今のところ、2つとも 100% で推移していますので、アラートは発生しません。補足しますとカバレッジでも同様の通知設定が可能です。例えば「50% 以下にカバレッジが下がったら Savings Plan を追加で購入検討する」というシナリオでカバレッジの通知は有用です。ただし、一般的には「土日はカバレッジが上昇し、平日はカバレッジが低下する」傾向にある点はご留意ください。これは土日に停止する EC2 Instance が Savings Plan でカバーされないために発生します。

AWS Budgets のアラート運用 Tips

Budgets のアラート通知には少し癖があるため、Tips を記載しておきます。以下はEC2 Reserved Instance の運用で得た知見となりますが、恐らくこの仕様は Savings Plan でも同様と考えております。

1. Daily でも通知は72時間程度遅延する

Budgetsからアラートが来たタイミングでマネジメントコンソールにてUtilizationを実際に確認すると、およそ72時間前(3日前)の値になっています。例えば12月31日に通知されるアラートは、実際には12月28日の結果で送信されます。これは Budgets が Cost Explorer の Utilization の値を裏で利用しており、この値が表示されるまで48時間かかることと、そこからの Budgets への連携にさらに24時間かかるためと推測されます。よって、最新の値を見たい場合はマネジメントコンソールからUtilizationを見たほうがより新しい値が確認できます。

2. 月初は通知が来ない

AWSは月末締めを行い、月初に先月の利用料金を確定させますが、その計算のために膨大なリソースを用います。そのため月初には Budgets のアラートの通知が届きません。「その月の1日から3日間くらいまでは通知がこない」という仕様である点は理解して運用を行う必要があります。具体的な対応策としては、やはりこれもマネジメントコンソールから Utilization を見に行くこととなります。

3. 閾値を変更するともう1度通知が発生する

既に通知された内容であっても、その日に Budgets の閾値を変更すると再度通知が行われる場合があります。これは再設定を行った場合に通知のキューが再度投げ込まれるためと想定されます。例えば 95% の閾値を 90% に下げた時、実際の Utilization が80%であった場合、どちらの設定も閾値を下回っていますため 90% の設定でも再度通知が発生します。
※補足:閾値を70%に下げた場合は2度目の通知は発生しません

実際の Slack 通知画面

Reserved Instance のアラート画像で恐縮ですが、実際に Slack への通知処理が実行されると上の画像の通りの投稿が行われます。

まとめ

今回は Savings Plans の利用率とカバレッジを確認する方法、そして AWS Budgets を用いて利用率の監視通知を行う方法について記載しました。Savings Plan や Reserved Instance は購入するだけでなく「どの程度の費用削減効果が実際にあったのか」を把握するのも非常に重要です。費用削減効果の把握には Utilization Report を是非ご活用ください。

それではまたお会いしましょう。

佐竹 陽一 (Yoichi Satake) 記事一覧はコチラ

SRE2課所属。AWS資格12冠。2010年1月からAWSを利用してきました。
AWSのコスト削減、最適化を得意としています。