Azure 節約術! VM 自動電源管理スケジュールを展開する!

Azure 節約術! VM 自動電源管理スケジュールを展開する!

今回は Azure の節約につながる電源管理を自動化する方法を紹介します。Azure は従量課金制のサービスが多く、中でも多くの場合よく使うのは仮想マシンサービスです。仮想マシンは電源が入っている間コンピュートリソースに対する課金が発生します。電源をオフにしていれば、仮想マシンを利用していないので課金されません。これに加えてストレージやネットワークの料金が発生します。

自動電源管理の仕組み

Azure Automation による電源管理の仕組みは次の通りです。Azure Automation で仮想マシンの電源管理スクリプトをスケジューリングし、仮想マシンの電源操作を行います。実行ログは連携されている Log Analytics に保存されます。電源操作する対象の仮想マシンはリソースグループ単位で指定します。

Azure Automation でのピーク時間外 VM 起動/停止ソリューション

スケーリングの種類

標準で次の3種類のスケーリングが提供されています。今回は1番と2番を紹介します。

  1. 時間指定でのスケーリング
  2. 曜日と時間指定でのスケーリング
  3. リソース使用率に基づくスケーリング

自動電源管理の展開

時間指定でのスケーリングをセットアップ

電源管理のためには Azure Automation の作成が必要です。以下記事などをもとに作成を進めてください。

作成した Automation アカウントのメニューから、[VM の開始/停止]をクリックします。

[詳細を表示して、ソリューションを有効にします]をクリックして展開を始めます。

[ワークスペース]でログを保存する先の Log Analytics ワークスペースを選択します。

[パラメーター]ブレードでは、時間指定でのスケジューリングの設定を行います。設定したら[作成]をします。

  • [Target ResourceGroup Names]: 電源管理対象とするリソースグループ名を指定
  • [VM Exclude List]: 電源管理対象外とする仮想マシンリソース名を指定
  • [Daily Start Time]: 仮想マシン起動時間を指定
  • [Daily Stop Time]: 仮想マシン停止時間を指定
  • [Receive Email Notifications]: スクリプト実行時にメール通知するか選択
    • (Yes の場合)[Email Address]: 通知先のメールアドレスを指定

これで毎日特定の時間に電源を制御することができます。一番簡単な方法ですが、土日も含んで毎日実行されます。

曜日と時間指定でのスケーリング

次はもう少し柔軟に、曜日を指定して実行する方法を紹介します。

Automation アカウントのメニューから[スケジュール]を選択します。まずは[Scheduled-~]と名前のつく2つのスケジュールを[オフ]にし、[Sequenced-〜]と名前のつく2つのスケジュールを[オン]にします。

実行する曜日と時間を指定して、[有効]を[はい]にします。

さらに、電源管理の対象となる仮想マシンリソースにタグを追加します。sequencestartsequencestop のタグを追加し、それぞれに正の値を指定します。この値の順番にしたがって、電源 ON/OFF 操作が各リソースへ実行されます。

あとは指定の時間になると、スクリプトが実行されます。Automation アカウントの [ジョブ]画面から実行結果ログが確認できます。