📴

Azure virtual machinesの自動シャットダウンの高機能さを伝えたい

2024/05/15に公開

こんにちは。イオンスマートテクノロジー株式会社(AST)でSREチームの林 aka もりはやです。

当社ではコンピューティングリソースの大半をAKS上のコンテナとして動作させていますが、一部の要件を満たすためにAzure virtual machines(以降はAzureVM)が存在します。本記事ではコスト削減のためのAzureVMの夜間停止を行う際に利用した「自動シャットダウン(英語表記では"Auto-Shutdown")」の機能が、AzureVMを停止するだけでなく”事前通知”や”期限延長”といった高機能を備えており、運用者としては大変嬉しいものであることを紹介します。

メールによる事前通知

TL;DR

はじめに要点を記載します。

  • AzureVMには”自動シャットダウン”機能が標準で備わっている
  • ”自動シャットダウン”機能を利用することで日次(Daily)で指定時間にAzureVMを停止できる
  • ”自動シャットダウン”機能は”タイムゾーン”が指定でき、直感的に設定を行える
  • ”自動シャットダウン”機能には”事前通知”の機能があり、メールとWebhookの通知を行える(現状は30分前固定)
  • ”事前通知”には”停止のスキップ”、”1時間延長”、"2時間延長"のリンクが記載されており、通知を受け取ったメンバーは1クリックでそれを行える

多くの皆さんは”自動シャットダウン”と聞いて思い浮かべるのは”指定時間に指定VMを停止するだけ”の機能ではないでしょうか?上述したようにAzureVMの”自動シャットダウン”は事前通知による高度な運用をサポートする大変嬉しい機能が備わっているのです!

背景

さて、私たちSREチームのミッションの一つとして、クラウド費用の適正化は重要です。同じチームのいつも頼りになるSRE岩崎さんが”第47回 Tokyo Jazug Night”で発表した以下のように様々な工夫をしながら日々改善を行なっています。

SREチームでは定期的に”コストモニタリング”と題したMTGでコスト関連のダッシュボード確認を行なっており、岩崎さんをホストにSREメンバ全体でコストの異常確認や改善ポイントについて話す場を設けて意識向上を図っています。

本記事のAzure VMの”自動シャットダウン”についても、そのような場で日頃から意識を高めていたおかげで「実はこのVMは夜間停止ができるのでは?つまりコスト削減ができるのでは?」といった疑問を持つことができ、様々な調整の上で停止することができるようになりました。(調整した上でRBAC等の権限周りなどに工夫するポイントがあったため別記事で書くかもしれません)

自動シャットダウンの設定はとても簡単

AzureVMの”自動シャットダウン”の設定は極めて簡単です。Web上のポータルから行うのであれば迷うことはおそらく無いでしょう。

まずは有効にする

以下の通り”自動シャットダウン”が無効な状態では選択できるのは”有効”欄の”オン”か”オフ”です。

自動シャットダウンの初期状態

AzureVMを停止する時間を指定する

”有効”の欄を”オン”にすることで以下の設定を行うことができます。

  • "スケジュールされたシャットダウン" -> VMを停止する時間
  • "タイムゾーン" -> 一つ上の時間指定のタイムゾーンを指定できる
  • ”自動シャットダウンの前に通知を送信しますか?” -> 次で説明します

自動シャットダウンを有効化

AzureVM停止前の通知を指定する

そして”自動シャットダウンの前に通知を送信しますか?”を”はい”にすることでさらに以下の設定を行うことができます。

  • "Webhook URL" -> SlackやTeamsなどに通知を送れる(1つのみ)
  • "電子メールアドレス" -> 複数のメールアドレスに通知を送れる

通知を有効化

注意点として、メールアドレスは ; で区切ることで複数アドレスを設定できますが、WebhookのURLは現状1つのみとなっています。複数のチャンネルに通知したいケースでは中継する何かを準備する必要がありますが、シンプルに利用する分には十分な機能を備えていると言えるでしょう。

また事前の通知時間が現在は”30分前固定”となっていますので利用者の「停止の10分前がいいのに!」といった要望には応えられません。

通知の内容について

今回一番書きたかった部分がこちらになります。
”自動シャットダウン”の設定で事前の通知を有効にした場合の中身を紹介します。

上述したようにメールとWebhookそれぞれについて紹介していきます。

メールによる事前通知

メールの件名は以下のようになります。

警告—仮想マシン hogehoge の自動シャットダウンまであと 30 分です

そしてメール本文は以下のようになっており、URLリンクとして以下の3つの選択が受信者に対して提供されます。

  • 延期: 1時間
  • 延期: 2時間
  • シャットダウンをスキップする

メールによる事前通知

英文によるメールも受け取れる

注意点として ”自動シャットダウン” を設定する際のポータルの言語設定が日本語の場合は上記の様に日本語のメールが来ますが、英語(English)の状態で設定すると英文のメールになります。

これは本来”自動シャットダウン”の設定項目に”言語”といったものがあり、そこから選べるべきとは思いますが、ブログを記述している現在では”裏技”的にポータルの言語設定が反映される様です。今後に期待ですね。

英文の場合メールの件名は以下のようになります。

Alert—Auto-shutdown of virtual machine hogehoge in 30 minutes

本文ももちろん英語ですが、内容は同じです。
メールによる事前通知英語版

Webhookによる事前通知

Webhookの場合は現状は宛先が1つのみです。またメールで記載したように言語設定による言語の変更はできない様でした。

日本語の通知は日本人としては望みたいところですので、サポートより機能要望として挙げている状態です。(Azureの中の方々ぜひご対応お願いします!この素晴らしい機能がさらに良いものに...!)

当社は歴史的経緯からSlackとTeamsの両方がありますが、今回はSlackへ通知を行いました。以下が参考の画面です。

Webhookの場合も延長やスキップのためのURLリンクが受け取れます。
WebhookによるSlack通知

リンクをクリックした場合の画面

”1時間延期”、"2時間延期"、"スキップ"のいずれかのURLリンクをクリックすると、以下のような画面がブラウザ上で表示されて処理の結果を確認できます。

まさに「1クリックでサクッと延長orスキップ」ができて大変に体験が良いです。

延長の結果画面

まとめ

以上、AzureVMの”自動シャットダウン”機能の素晴らしさについて紹介しました。このように事前通知ができて、その通知から延長やスキップができることは”自動シャットダウン”をその他のAzureVMへも展開しやすくする大きな要素となります。

それは私たちSREの大事なミッションの一つ、クラウド費用の最適化を加速する要因にもなってくれました。

改めてこの素晴らしい機能を実現してくれたAzure&Microsoftの中の方々に感謝をしつつ終わりとします。

AEON TECH HUB

Discussion