オンプレミス環境とAzureを接続するためには仮想ネットワークゲートウェイ(VPNゲートウェイ)が必要となります。VPNゲートウェイはAzure仮想マシンと比べると、管理できる範囲が少ないサービスです。ですが、オンプレのネットワーク機器と同様にネットワーク通信を快適に、継続的に行うためにVPNゲートウェイの状態を監視したいという声が多く聞かれます。
Azure仮想マシンの監視であれば、CPU使用率などのメトリックをもとにアラートを作成することが可能ですが、VPNゲートウェイでは同じ方法をとることができません。それでは、どのようにVPNゲートウェイを監視すればよいのでしょうか。今回は小ネタになりますが、VPNゲートウェイを監視する方法について投稿します。



1. 「リソース正常性」による監視

最もオーソドックスなVPNゲートウェイの状態確認方法は、VPNゲートウェイのメニューから「リソース正常性」で現在のVPNゲートウェイの状態を知ることです。この方法では、ポータルからの操作でゲートウェイの状態が確認でき、過去のステータス履歴も見ることができます。

VPNゲートウェイの状態が正常であれば、「使用可能」という表示になります。
正常性の履歴の中で、「このゲートウェイの正常性状態が不明です」というログが散見されるかと思います。このログは、該当の時間帯にVPNゲートウェイが落ちていた、というわけではなく、単純にVPNゲートウェイの状態取得に失敗したという結果によるものです。

VPNゲートウェイに何らかの異常が発生していることが検知できた場合は、その旨が示されたエラーログが記録されています。例えば、VPNゲートウェイがメンテナンスに入った場合には、以下のようにVPNゲートウェイがスタンバイ状態に入ったことが検知されたログが取得されます。

VPNゲートウェイの状態の履歴を一覧で見ることは可能ですが、VPNゲートウェイに異常が発生した場合でもそれを通知する事はできないため、以上に気づいたときの確認手段の役割になります。


2. プローブURLによる監視

VPNゲートウェイのプローブURLにアクセスすることで正常性を確認する方法です。
以下の参考ページにある手順7のURLへアクセスすると、VPNゲートウェイが生きているか確認することができます。
“https://<VPNゲートウェイのパブリックIPアドレス>:8081/healthprobe”

参考:トラブルシューティング: Azure サイト間 VPN が動作を停止して接続できない

正常に稼働していれば、以下のような情報が表示されます。(アクセス時に警告が表示されますが、そのまま表示する。)

<?xml version=”1.0″?>
<string xmlns=”http://schemas.microsoft.com/2003/10/Serialization/”>Primary Instance: GatewayTenantWorker_IN_0 GatewayTenantVersion: < VPNゲートウェイのパブリックIPアドレス> OSVersion: Windows Server 2012 R2 Datacenter</string>

ブラウザさえ使えれば利用できる手軽な監視方法です。ただし、この方法ではVPNゲートウェイインスタンスの生存確認は行えますが、VPNゲートウェイとしての機能が正常に動作しているかは確認できません。


3. 自動監視スクリプトによる構成

今回紹介する中では一番スマートな監視方法です。こちらはAzure Automationを利用して、定期的に監視スクリプトを実行し、VPNゲートウェイの状態を取得します。もしもVPNゲートウェイに何らかの異常があればメール通知を行うものとなります。
利用するAzureのサービスは以下になります。

サービス名 用途
Azureオートメーション 監視スクリプト定期実行
VPNゲートウェイ 監視対象
Network Watcher VPNゲートウェイ状態取得
Azureストレージ VPNゲートウェイ状態ログ保存

以下の図のような構成イメージになります。

今回参考としたスクリプトはマイクロソフトが以下のページで公開しているコードになります。

参考:Network Watcher のトラブルシューティングを使用した VPN ゲートウェイの監視

変数 説明
O365AutomationCredential メール送信アカウントの資格情報
fromEmail 送信者メールアカウント
toEmail 受信者メールアカウント
smtpServer SMTPサーバのFQDN
smtpPort SMTPサーバのポート番号
runAsConnectionName オートメーションの接続名
subscriptionId サブスクリプションID
Region ゲートウェイがデプロイされているリージョン
vpnConnectionName 監視対象VPNゲートウェイの接続名
vpnConnectionResourceGroup 監視対象VPNゲートウェイのリソースグループ名
storageAccountName ログ保存先ストレージアカウント名
storageAccountResourceGroup ストレージアカウントのリソースグループ名
storageAccountContainer ログ保存先コンテナ名

この中でいくつかの項目に関して以下に説明します。

  • O365AutomationCredential

VPNゲートウェイの状態監視で以上を検知した際にメールを送信するアカウントの資格情報を指定します。こちらはポータルなどで事前に登録しておきます。
「Automationアカウント」のメニューから「資格情報」を選択します。「資格情報の追加」からメール発信時に利用するアカウントの資格情報を入力して登録します。変数には資格情報の「名前」を指定します。

  • smtpServer・smtpPort

smtpServer:smtp.office365.com
smtpPort:587
O365アカウントでメールを通知する際の設定です。こちらは環境に合わせて設定してください。

  • runAsConnectionName

オートメーションスクリプト実行時に、Azureリソースの情報を取得するためのアカウントの情報を指定します。通常はオートメーションの作成を行うと自動で作成されています。
「Automationアカウント」のメニューから「接続」を選択します。オートメーションアカウント作成時に既定で接続が作られているので、「AzureRunAsConnection」を利用します。

このアカウント情報のうち、「接続」に記載のある名前「AzureRunAsConnection」を変数に指定します。この画面に接続に必要な情報が表示されていますが、スクリプトではこれらの情報を自動で取得し、引数としてAzureログイン時に利用しています。

本監視スクリプトのフローは以下のとおりです。

「パラメータの定義」では、前述のパラメータを変数として宣言します。
「メール通知アカウント認証情報取得」では、異常検知時の通知用メールアカウント情報を取得します。
「オートメーションアカウントログイン」では、Azureの各リソース情報を取得するためにオートメーション用アカウントでログインします。
「リソース情報取得」では、監視に利用するAzureの各リソース情報を取得します。
「VPNステータス取得」では、Azure Network Watcherの機能でVPNゲートウェイの状態を取得します。ステータスが正常である場合はログをBLOBストレージへ保存し終了します。異常を検知した際はエラーメッセージがメールで通知されます。
正常時は以下のようなメッセージがログに出力されて保存されます。(Connection Status is: Healthy)

例として、VPNゲートウェイがメンテナンスに入るときは以下のようなメッセージが通知されます。エラーメッセージの一覧は参考のページで確認できます。

参考:VPN Gateway を使用してオンプレミスの接続を診断する

スクリプトを作成したら「Automation」からRunbookを作成し、「スケジュール」で実行する時間を指定します。Runbookの実行スケジュールは1時間おきの実行が最短ですので、それより短い頻度で実行する場合は複数のスケジュールを作成します。(毎時00分実行、毎時15分実行、毎時30分実行、など)


4. VPNゲートウェイ状態の異常判定基準

VPNゲートウェイで「異常」と判定されるのは、アクティブ状態のVPNゲートウェイすべてでエラーメッセージが取得されたときです。
通常VPNゲートウェイは2つのVPNゲートウェイインスタンスがアクティブ/スタンバイでデプロイされます。スタンバイとなっているVPNゲートウェイインスタンスはパブリックIPを持たないため、状態を取得することができません。
アクティブ/アクティブでVPNゲートウェイを構成した場合は、両方のインスタンスを監視することができます。このとき、本スクリプトではどちらか一方だけでもインスタンスが正常状態を返した場合、正常判定となります。
また、VPNゲートウェイインスタンスではなく、「接続」を監視対象とした場合は、冗長はないためVPN接続がされているかどうかの結果が確認できます。


5. おわりに

今回はVPNゲートウェイの監視方法を紹介しました。システムを利用するにあたって、監視は非常に重要な要素であると考えられます。本監視スクリプトでは、Azureから提供されるサービスを利用してVPNゲートウェイの監視を実現しました。ネットワーク監視サービスのNetwork Watcherや統合的な監視プラットフォームとなるLog Analyticsはこの他にも多くの機能が盛り込まれています。これらを活用すれば、クラウドシステムの監視を実現することが可能です。


この記事を読んだ方へのオススメコンテンツはこちら


この記事を書いた人

曽根悠斗
曽根悠斗
仮想基盤分野のエンジニア,曽根です。
昨年まではネットワークの構築を担当しておりました。
進歩の早いクラウド技術に置いて行かれないよう,日々成長していきます。