[アップデート] Amazon EC2 オンデマンドキャパシティ予約 に対する CloudWatch メトリクスが新規追加されました!

キャパシティ予約 っていう言葉があまりカッコよくないですが、他に呼び方が思いつかないですね。キャパシティリザベーションとかでしょうか。

コンバンハ、千葉(幸)です。

Amazon EC2 On-Demand Capacity Reservations に対して CloudWatch メトリクスがサポートされ、いくつかのメトリクスが参照できるようになりました!

キャパシティ予約を活用されている方は、 CloudWatch アラームと連携させることでより便利に管理できるようになりましたね!

目次

EC2 オンデマンドキャパシティ予約とは

簡単に言えば、オンデマンドでインスタンスを立ち上げる際に物理ホストのリソース不足でエラーとなるケースを回避できるものです。

EC2 インスタンスは物理ホスト上で稼働することになりますが、インスタンスファミリーごとに対応する物理ホストが異なります。(※もっと別の切り口があるかもしれませんが把握し切れていません。。)

特定のインスタンスファミリーに需要が偏った場合など、インスタンスを稼働(新規作成だけでなく停止状態から起動状態に遷移させる場合も含む)させることに失敗するケースがあります。

特に、テナンシーで占有(dedicated)を選択した際はその傾向は顕著になります。他のカスタマーが利用する EC2 インスタンスがすでに稼働していた場合、その物理ホストでは立ち上げられないため、結果的にどの物理ホストでも空きがないという状況に陥りやすくなります。

従来はそれをリザーブドインスタンスを購入しキャパシティを確保することによって回避するしか方法がありませんでしたが、2018年に登場したオンデマンドキャパシティ予約によってより柔軟に対応できるようになりました。

リザーブドインスタンスのように長期間コミットする必要がなく、任意の期間キャパシティを確保しておくことができます。期間に縛られないという点でより柔軟ですが、キャパシティを確保した分はインスタンスが稼働していなくても料金がかかる、という点は変わりありませんので注意してください。

詳細は以下をご確認ください。

オンデマンドキャパシティー予約 - Amazon Elastic Compute Cloud

追加されたメトリクス

以下のメトリクスが追加されています。

  • 名前空間:AWS/EC2CapacityReservations
  • ディメンション:キャパシティ予約 ID
メトリクス 説明 単位
UsedInstanceCount 現在使用中(予約枠を消費している)のインスタンスの数。 カウント
AvailableInstanceCount 使用可能なインスタンス(予約枠の空き)の数。 カウント
TotalInstanceCount 予約したインスタンスの総数。 カウント
InstanceUtilization 予約した枠に対する使用中のインスタンスの割合。 パーセント

CloudWatch metrics for On-Demand Capacity Reservations - Amazon Elastic Compute Cloud

キャパシティ予約の使用状況に関するメトリクスが取得できるようになりました。従来はこれらを把握するには手動だったり作り込みだったりを行う必要がありましたが、シンプルに値を取得できるようになりましたね。

実機で確認してみた

マネジメントコンソールでどう見えるか確認してみます。

私の環境ではキャパシティ予約を使っていなかったので、まずはそちらを作るところからです。

キャパシティ予約の作成

EC2 -> キャパシティーの予約 から作成画面に遷移し、以下のような項目を設定していきます。

せっかくの検証なので豪勢に、とも思いましたが、貧乏性なので t3.micro を 1台分だけ選択します。

なお、予約はアベイラビリティゾーン単位で行うことになるので注意してください。

その他もろもろを設定して作成します。

作成したキャパシティ予約はこのように確認できます。予約枠の中からインスタンスを起動する際は、この画面から遷移することもできますし、通常のインスタンス作成ウィザードから行うこともできます。

どちらの場合も、ステップ3の詳細設定の画面から適用するキャパシティ予約を設定することになります。

CloudWatch コンソールからの確認

CloudWatch のコンソールからメトリクスを確認すると、キャパシティ予約を作成済みであれば、新たに名前空間 AWS/EC2CapacityReservations が選択できるようになっています。

ディメンションとしてキャパシティ予約ごとに分類されていることが分かります。

実は我慢できずに裏でキャパシティ予約を何個も作っていたので急にメトリクスが増えていますが、それぞれ 4 つのメトリクスが取得できていることが確認できます。

予約枠を一つだけ作ってインスタンスを立ち上げていないという地味な状態なので見栄えはしないですが、それぞれこのように値が取れています。

今回のアップデートの肝は確認できました!

キャパシティ予約のキャンセル

枠を確保しているだけで料金が発生するので、不要な場合には忘れないよう解放しておきましょう。

[ 予約をキャンセル ] を押下し……

確認画面で再度押下すればキャンセル完了です。

ちなみに予約枠の中で稼働していたインスタンスは、キャンセルに影響を受けず稼働し続けます。

終わりに

Amazon EC2 オンデマンドキャパシティ予約 の使用状況を取得する CloudWatch メトリクスがサポートされたことを確認しました。

小規模で利用している場合にはあまりありがたみは無いかと思いますが、ある程度まとまった数を予約している環境では、一定数を超えたら CloudWatch アラームで通知を行うなど、従来は手動に頼るほかなかった部分を楽に行うことができるようになったかと思います。

コストに関連する部分ですので、ぜひこういった仕組みをご活用ください。

以上、千葉(幸)がお送りしました。