クラウドエンジニアブログ

仮想マシンのメンテナンス予定の通知

human02

齋藤 恭平

はじめに

4/11 に Instance Metadata Service がプレビューとなりました。

[Announcing public preview of Instance Metadata Service]

また、現在は東西日本リージョン含めてプレビューが利用できるようになりました。

[Reacting to maintenance events... before they happen]

これにより仮想マシンで予定されているメンテナンスについて、イベントの種類(再起動, ReDeploy, フリーズ)やイベントが開始される時間を取得することができます。

  • ※フリーズとは、メモリの状態を保持したまま数秒間停止することで、開いているファイルやネットワーク接続の状態が維持されます。

さらに、メンテナンス予告を事前に知ることができるだけでなく、利用者の任意のタイミングでメンテナンスを実施することも可能なようです。

  • (残念ながら、実際にメンテナンスがスケジュールされたことを確認できていないため、実際に試すことができていません…)

今回は Instance Metadata Service と Azure Log Analytics を使用して、メンテナンスの予定があった場合にメールで通知する仕組みを構成してみます。
以下のような流れで構成しています。

  1. 予定されているメンテナンスの取得
  2. 結果をイベントログに出力
  3. Azure Log Analytics にログ転送
  4. メンテナンス予定があればアラート

図解するとこんな感じです。

通知の仕組み

予定されているメンテナンスの取得

対象の仮想マシンから「Invoke-RestMethod」 コマンドでイベントを取得しに行きます。

Invoke-RestMethod

- 予定されているメンテナンスがある場合の結果イメージ

メンテナンスがある場合

- 予定されているメンテナンスがない場合の結果イメージ

メンテナンスがない場合

ちなみに取得先が、仮想マシンのリンクローカルアドレスとなっているため、Azure Automation などで外部から取れません。

結果をイベントログに出力

取得結果をもとにイベントログに書き込みます。
Powershell だと「Write-EventLog」コマンドによりイベントログに出力できます。 また、Azure Log Analytics で検索しやすいように、イベントソースと ID の定義を行います。

イベントソースと ID の定義

Azure Log Analytics にログ転送

Azure Log Analytics に仮想マシンを接続し、イベントログを収集するように設定します。

Azure Portal の Log Analytics のブレードで仮想マシンを接続します。(下図クリックで拡大)

ブレードで仮想マシンを接続

OMS Portal の Settings でイベントログを収集するように設定します。(下図クリックで拡大)

イベントログを収集

Azure Log Analytics による通知

Azure Log Analytics で、特定のイベントを検知してメールを送るように設定します。

今回、イベントログに出力する際に、Azure のメンテナンスイベントがある場合、イベントソースが「GetVmScheduledEvents」、イベント ID が「2001」のイベントを出力するように設定しているので、イベントソースとイベント ID を検索してメール通知するようにします。

OMS Portal で Log Search を開き、下記のクエリを実行します。

OMS Portal で Log Search を開く1

(下図クリックで拡大)

OMS Portal で Log Search を開く2

検索結果はこんな感じです。(下図クリックで拡大)

検索結果

検索結果で「Alerts」をクリックします。

アラートルールを設定し、「Save」をクリックすれば完了です。(下図クリックで拡大)

アラートルールを設定

今回は下記のような設定をします。

  • Time window クエリの結果に含む時間範囲を指定。5分を設定し、クエリが9時に実行された場合、8時55分から9時の間の結果を返します。今回はすぐに結果が欲しいので最も細かい「5分」を指定。
  • Alert frequency クエリの実行頻度を指定。
  • Generate alert based on 検索結果の件数かメトリックの数値のどちらをもとにしきい値を判断するか指定。今回は結果の件数をもとにしきい値を判断するため「Number of results」を選択。
  • Number of results しきい値を指定。
  • Email notification メール通知をするか指定。今回はメール通知を試すため「Yes」
  • Subject メールの題名を指定。
  • Recipients 宛先のメールアドレスを指定。
  • Webhook Webhook の実行が可能。今回は試しませんが、Slack に送ったりもできます。

実際にメンテナンスが予定されると、下記のようなメールが来ます。(下図クリックで拡大)

対象の仮想マシン名やメンテナンスの開始時間

対象の仮想マシン名やメンテナンスの開始時間もメールで確認することができます。

これで突然のメンテナンスに怯える日々から解放されますね。


次回予告


【総合】お問い合わせ

ソリューションに関する全般的なお問い合わせはお気軽にご相談ください。

ピックアップ

セミナー情報
クラウドエンジニアブログ
clouXion
メールマガジン登録