EC2の無駄遣いを指摘する Resource Optimization Recommendations がリリースされました

AWS運用自動化サービス「Cloud Automator」

お金の話が大好きな佐竹です。
今日はRIの購入 Recommendations に続き、Cost Explorer に「Resource Optimization Recommendations」という新たなRecommendations(推奨)が追加されましたのでご紹介します。

はじめに

私はお金の話が大好きなので、コスト削減関係のリリースには目がありません。今回、EC2の無駄遣いを指摘して、コスト削減を推奨してくれるツールが出たという話を聞き、いてもたってもいられず検証してブログにしている次第です。今回のツールは Cost Explorer の中の Recommendations の1つで、「Resource Optimization Recommendations」となっております。日本語では「リソース最適化の推奨」という項目になります。AWS公式のリリース告知ページは以下の通りです。

Launch: Resource Optimization Recommendations
https://aws.amazon.com/jp/blogs/aws-cost-management/launch-resource-optimization-recommendations/

以下、実際に使ってみたので使い勝手をご報告します。

「リソース最適化の推奨」を有効化する

「Resource Optimization Recommendations」の利用には、機能の有効化が必要です。「こちらのURL」もしくは Cost Explorer の画面左下の「推奨事項(Recommendations)」から上記の画面を表示していただき「Enable」を押下してください。有効化すると、以下のメッセージが表示されます。

You do not have any rightsizing recommendations at this time. It may take up to 24 hours in order to generate your rightsizing recommendations.

最大24時間ほど待つと結果が表示されるようでしたが、今回は数時間で結果が表示されました。早速結果を見ていきましょう。

「リソース最適化の推奨」を確認する

結果が表示されると、上画像のように、具体的な結果が表示されます。詳細を確認するには、「View all」から確認をします。

Recommendations の対象となったインスタンスが69台あり、その対応を行うことでどの程度のコスト削減ができるのか表示されます。インスタンスごとの詳細はコスト削減効果が高いものから順に並んでいます。結果は他の Cost Explorer の機能と同様にCSVにてダウンロードが可能です。CSVには、マネジメントコンソールよりも詳しい値が掲載されており、特にタグが全て付与された状態でダウンロード可能なため、結果の分析にはCSVが有用です。

また、 Recommendations には大きく分けて2つの推奨が表示されます。

  1. Idle instances/アイドル状態のインスタンス:最大CPU使用率が1%未満のインスタンスが表示され、推奨としては「Terminate(削除)」が推奨されます
  2. Underutilized instances/低使用率のインスタンス:最大CPU使用率が1%~40%の間のインスタンスが表示され、推奨としては「Modify(変更)」によるInstance Typeの変更(より安い Instance type にスペックを下げる)になります

右上にチェックボックスがあり、デフォルトではどちらも表示されています。チェックボックスを外すことで、以下のようにTerminate すべきとされるインスタンスだけに表示を絞り込むことも可能です。

Idle instances だけに表示を絞れば、Terminate する対象だけが表示されることになります。

また、「View」を押下することで、各コスト削減推奨案の詳細を確認することが可能です。以下、それぞれの詳細を確認していきます。

Modifyの推奨となったインスタンスの詳細

このインスタンスでは、まずModifyの推奨として m5.4xlarge を m5.2xlarge とするように記載されていました。加えて、ここが非常に嬉しい部分ですが、Reserved Instance の適用対象となっているのかどうか「RI hours」で確認が可能です。今回対象となったインスタンスにおいては、すべてがオンデマンドによる利用であるとわかりますので、これを m5.2xlarge に下げたとしても Reserved Instance の無駄が発生しないことがわかります。

なお、公式ブログには「小さいサイズにModifyした結果、コストが高くなるような場合(サイズが柔軟でないリザーブドインスタンスの場合)、AWSはこれらの推奨事項を自動的に除外します。このシステムでは、コスト削減につながる推奨事項のみが表示されます。」とありました。よって、そのような不適切な推奨は予めAWS側で弾いてくれているようです。

Terminateの推奨となったインスタンスの詳細

Terminate が推奨されたインスタンスの詳細も確認してみましょう。このインスタンスでは、CPUの利用率が 0% という結果から、Terminate による削除が推奨されています。また、先の例とは異なり「RI hours」が331/338と、ほとんど Reserved Instance の割引が有効となっているインスタンスとなっています。

本来であれば対象のインスタンスを Terminate(削除)した場合に Reserved Instance の無駄(余り)が発生してしまう可能性があるため、RIも含めた検討が必要ですが、先に記載した通りRIについては予めAWS側が検討してくれているようです。加えて、以下の表記が公式ブログにありました。意訳で掲載します。

Reserved Instances: Recommendations takes size-flexible Reserved Instance logic into account when generating recommendations. This might create recommendations to down-size instances for $0 in direct savings, which ultimately frees Reserved Instance hours you can use to cover other underutilized resources.
 
(意訳)Reserved Instances: Recommendations が生成されるときに、柔軟性のあるリザーブドインスタンスのロジックを考慮に入れます。これにより、インスタンスを縮小して節約した場合の表示額が $ 0 となる推奨が表示される場合があります。これは、RIが未適用の他のインスタンスを、解放されたRIが新たにカバーするために表示されます。

つまり今回の場合(ほぼ $0 に近いですが表示されています)であれば、このインスタンスに適用されているRIは、Terminate 後に別のインスタンスに適用されるようです。とは言っても、購入済の Reserved Instance を含めた検討は Terminate 前に念のために実行し、答え合わせはしておきたいと思いました。特にOSが Windows や RHEL の場合、RI は柔軟性を持ちませんため、Instance Type の変更や削除において、慎重に確認を入れたいところです。

Trusted Advisorとの違いは?

最初に「コスト最適化の推奨」と聞いて「 Trusted Advisor でもそんな機能ありません?」って思われた方もいらっしゃると思います。その通りです。Trusted Advisor にも、コスト最適化の推奨項目があります。具体的には Trusted Advisor のコスト最適化に関する推奨項目は以下の通りとなります。

  1. EC2 リザーブドインスタンスの最適化
  2. Amazon EC2 リザーブドインスタンスのリース有効期限切れ
  3. Amazon RDSアイドル状態のDBインスタンス
  4. Amazon Route 53 レイテンシーリソースレコードセット
  5. アイドル状態の Load Balancer
  6. 使用率の低い Amazon Redshift クラスター
  7. 使用率の低いAmazon EC2 Instances
  8. 利用頻度の低いAmazon EBSボリューム
  9. 関連付けられていない Elastic IP Address

こうして見てみると、Trusted Advisor の推奨項目はリッチですね。今回機能が重複するのは「使用率の低いAmazon EC2 Instances」の部分です。他は Trusted Advisor にしかない機能です。特に今回の機能はまだ「EC2」のみの対応であり、「RDS」等には対応できていません。また重複しているEC2 インスタンスのコスト削減部分ですが、以下の違いがあります。

  • Trusted Advisor は、1日のCPU使用率が10%以下で、4日以上ネットワークI / Oが5 MB以下の場合の警告がされるため、抽出ロジックが異なり、そのために一覧に表示されるインスタンスも結果が異なる
  • Trusted Advisor で推奨される対応方法は「使用率が低いインスタンスを停止または終了することを検討するか、もしくはAuto Scaling を使用してインスタンス数を調整する」となっており、Instance Type を Modify する文言はない
  • Trusted Advisor は「実際にリソースを利用しているアカウント上」で確認する必要がある

今回Cost Explorerに新しく実装されたこの Recommendations と以前より存在する Trusted Advisor の最も大きい違いは、3つ目の「実際にリソースを利用しているアカウント上」で確認する必要があるという点だと考えています。これまでは各アカウントに確認をしに行く必要があった内容を、アカウントを跨いでまとめて確認できるというところが、本 Recommendations(Cost Explorer) の素晴らしい点です。

まとめ

この記事では Cost Explorer に新しい Recommendations として追加された「EC2の無駄遣いを指摘するツール」こと「Resource Optimization Recommendations」について記載しました。

実際に利用してみたところ、Terminate すべきインスタンスと、Modify すべきインスタンスとを分けて推奨してくれるということ、そして Reserved Instance の適用状況まで加味した推奨案になっていることと、分析にはダウンロードが可能なCSVが有効なこともわかりました。

また、以前より存在していたTrusted Advisorとの違いも確認しました。Resource Optimization Recommendations は Trusted Advisor と比較すると機能は劣るものの、管理下にある全てのAWSアカウントを跨いだ確認ができる点が大きなメリットとなりそうでした。

本 Recommendations は、まだEC2のみが対象となっているものの、今後はRDSへの対応やRedshiftへの対応など、まだまだ機能が追加されて行きそうな予感です!
今後の更新にも期待しつつ、本記事を終わりたいと思います。ここまでお読みいただきありがとうございました。

AWS運用自動化サービス「Cloud Automator」