Young Leaves

Azure Windows VM でVM watch を試してみた

今回は2024年10月17日にパブリックプレビューとなったAzure VM のアプリケーション正常性を確認するVM watch 機能をWindows Server で試し、触ってみた所感やどのような機能なのかを説明します。本記事は2024年11月4日現在で確認した内容であり、GA や仕様変更に伴い古い内容となる可能性もあります。

実施環境

OS

Windows Server 2025 Datacenter

Azure VM での従来のアプリケーション正常性監視

Azure VM でアプリケーションの正常性監視を行うには以下のようなサービス (製品) が必要でした。

  • 標準ロードバランサー、Application Gateway などの負荷分散サービス
  • Azure Monitor やApplication Insights などのモニタリング、APM サービス
  • SaaS などのサードパーティー製品

本番環境である程度の規模を運用するのであれば負荷分散サービスや監視設定を詳細に行うのは一般的ですが、検証用の環境やちょっとしたシステム (パッケージ製品) を利用したいVM にこれらのサービスを追加するとサービスの料金や運用コストがかかってしまいます。単純にアプリケーションのトップページが確認できればよい、程度の正常性を確認したい場合、これらのコストが課題となっていました。

Azure VM のVM watch とは

Public Preview: VM watch for Azure VMs

VM watch はAzure Virtual Machine およびAzure Virtual Machine Scale Set (VMSS) のアプリケーション正常性を監視する機能です。アプリケーションの正常性監視を行いたいリクエストパスを指定して監視を行います。正常性監視はプロトコルやポートの単純な確認だけでなく、DNS の名前解決などのネットワーク、ディスク、CPU、プロセスなど総合的に見て正常かどうか判断します。これにより従来の負荷分散サービスやAzure Monitor を準備せず、VM 単体でアプリケーションの正常性監視ができるようになりました。

VM watch はBinary Health States とRich Health States の2種類があります。主な違いは以下のとおりです。

Binary Health States

Rich Health States

プロトコル

HTTP、HTTPS、TCP

HTTP、HTTPS、TCP

ポート

任意のポート

任意のポート

リクエストパス

任意のパス。1つのみ指定可能

任意のパス。1つのみ指定可能

Unhealth の閾値

デフォルトは1回。Azure CLI、Azure PowerShell、REST API でのみ設定可能

デフォルトは1回。Azure Portal からも設定可能。

正常性の監視間隔

デフォルトは5秒。Azure CLI、Azure PowerShell、REST API でのみ設定可能

デフォルトは5秒。Azure Portal からも設定可能。

最大猶予期間

設定不可。Azure CLI、Azure PowerShell、REST API で設定可能だが利用されない。

デフォルトは7200秒。Azure Portal 、Azure CLI、Azure PowerShell、REST API で設定可能。

VM watch はAzure VM にApplication Health 拡張機能を追加することで利用可能となり、Windows VM とLinux VM で利用可能です。Windows 用とLinux 用で追加する拡張機能は若干異なりますが機能は同じとなります。VM watch は設定後にBinary Health States からRich Health States へ変更できます。また、Application Health 拡張機能をアンインストールするとVM watch は自動的に無効化されます。

VM watch の設定方法

VM watch の設定は以下の4つで設定可能です。

  • Azure Portal
  • Azure CLI
  • Azure PowerShell
  • REST API

今回はAzure Portal での設定を行います。初めにAzure VM を作成し左ペインの「Health monitoring」を選択します。

選択後「Enable application health monitoring」にチェックを入れ、各種項目を設定後「Save」を選択します。

保存後、「Extensions + applications」から拡張機能の追加を確認します。Azure Portal から設定を行った場合、名前は「HealthExtension」となります。特定の名前に変更したい場合はAzure CLI やAzure PowerShell などで追加してください。

アプリケーション正常性の表示

Azure Portal 上ではVM の概要に表示されます。Healthy の場合は正常、Unhealthy の場合は異常となります。

Azure CLI で確認する場合、以下のコマンドとなります。

az vm get-instance-view --resource-group <リソースグループ名> --name <VM名>

Azure CLI の場合、 vmHealth 欄のcode に正常性の結果が表示されます。正常な場合は「<拡張機能名>/healthy」、異常のある場合は「<拡張機能名>/unhealty」、VM が起動していない場合はnull となります。

{
  {
    <省略>
    "vmHealth": {
      "status": {
        "code": "HealthState/unhealthy",
        "displayStatus": "The VM is reporting itself as unhealthy or is unreachable",
        "level": "Error",
        "message": null,
        "time": "2024-11-04T14:30:16+00:00"
      }
    }
  },
  <省略>
}

アプリケーション正常性の状態取得が可能なため、状態をトリガーに通知を行うこともできそうです。

VM watch のユースケース

パブリックプレビュー時点では単純なアプリケーションの正常性確認のみであり、本番用の重要なシステムで利用するには少し物足りない印象です。ちょっとしたシステムやIaaS の必要なパッケージ製品、検証用の環境などでアプリケーションの正常性確認を無料でできるのは良いため、現時点ではこれらに利用して監視コストを削減する、みたいな使い方はできるかもしれません。詳細なアプリケーションの正常性確認を求める場合はApplication Insights やサードパーティー製品を利用するのが良いと思います。

まとめ

  • Azure VM のVM watch はApplication Health 拡張機能を追加することで、VM 単体でアプリケーションの正常性監視を行える機能
  • 単純な正常性監視を行うBinary Health States と詳細な条件を指定するRich Health States がある
  • ちょっとしたシステムやパッケージ製品、検証用の環境などでは無料で正常性監視ができるため、これらで利用する分には良さそう

参考資料