製品コラム

セイテクエンジニアのブログ  製品コラム  カスタム監視でHyper-Vレプリカの監視を強化-BOM for Windows活用例

 

 

カスタム監視でHyper-Vレプリカの監視を強化-BOM for Windows活用例

2024年11月20日配信
執筆者:セイ・テクノロジーズ エバンジェリスト

 かつて山市良と呼ばれていたおじさんのブログの最近の記事「メモ. Hyper-Vのもう1つの可用性オプション、Hyper-Vレプリカ」では、2台のHyper-Vホスト間で簡単に構築実装可能な「Hyper-Vレプリカ」を紹介しています。

 「BOM for Windows Ver.8.0 SR1」(以下、BOM)には、Hyper-Vレプリカの監視に対応した監視テンプレートが同梱されています。標準のテンプレートにカスタム監視を追加して、さらに監視を強化する方法を紹介します。

 

インポートするだけですぐに監視を開始できる監視テンプレート

 

 BOMには、Windows ServerのHyper-Vレプリカの監視に対応した監視テンプレート「Hyper-Vレプリカ監視」が同梱されており、これをBOMサーバーにインポートするだけですぐにHyper-Vレプリカの監視を開始することができます(画面1)。この監視テンプレートは、Hyper-Vレプリカが依存する「Hyper-V Virtual Machine Management」のサービス監視、およびHyper-Vレプリカ関連のイベントログ監視が定義済みになっているものです。Hyper-Vレプリカの異常を検知することはできますが、Hyper-Vレプリカの状態(正常性や最終同期時刻など)までの監視には対応していません。

 

画面1
画面1 Windows ServerのHyper-Vレプリカは、監視テンプレート「Hyper-Vレプリカ監視」で監視可能

 

Hyper-V PowerShellモジュールで取得可能な情報をBOMに取り込む

 

 Hyper-Vの役割がインストールされているWindows Serverでは、PowerShell Hyper-Vモジュールのコマンドレットを使用できます。例えば、Hyper-Vレプリカのプライマリ/レプリカサーバーで「Get-VMReplication」コマンドレットを実行すると、Hyper-Vレプリカで保護されたHyper-V仮想マシン(VM)のレプリケーション設定、レプリケーションの状態(ReplicationState)、レプリケーションの正常性(ReplicationHealth)、最終同期日時(LastReplicationTime)の情報を取得することができます(画面2)。

Hyper-V|Windows PowerShell(Microsoft Learn)
Get-VMReplication|Windows PowerShell(Microsoft Learn)

 

画面2

画面2 Get-VMReplicationを実行すると、レプリケーションが有効なVMの設定とレプリケーション状態、正常性、最終同期日時を確認できる

 

 Get-VMReplicationコマンドレットで取得できる、レプリケーションの状態、正常性、最終同期日時をBOMに取り込むために、3つのPowerShellスクリプトを作成しました。

 「hvreplstate.ps1」は、レプリケーションの状態が「エラー(Error)」となっているVMの数を返します。0であれば正常であり、レプリケーションの状態は「FailOverWaitingCompletion」「FailedOver」「ReadyForInitialReplication」「Replicating」「Resynchronizing」「ResynchronizeSuspended」「Suspended」「SyncedReplicationComplete」「WaitingForInitialReplication」「WaitingForStartResynchronize」のいずれかであることを示しています。

[hvreplstate.ps1]プレーンテキストで表示

$vms = Get-VMReplication
$replstate = 0
if ($vms -eq $null) {
  return 0
} else {
  foreach ($vm in $vms) {
    if ($vm.ReplicationState -eq "Error") {
      $replstate++
    }
  }
  return $replstate
}

 

 「hvreplhealth.ps1」は、VMごとにレプリケーションの正常性(Normal、Warning、またはCritical)の情報を取得し、「Normal」であれば0、「Warning」であれば1、「Critical」であれば2として、VMが1台だけであればその数を返します。複数のVMが存在する場合はその合計値を返します。したがって、すべて正常であれば0、1以上であれば注意、2以上であれば危険と評価できるでしょう。

[hvreplhealth.ps1]プレーンテキストで表示

$vms = Get-VMReplication
$replstate = 0
if ($vms -eq $null) {
  return 0
} else {
  foreach ($vm in $vms) {
    if ($vm.ReplicationHealth -eq "Normal") {
    } elseif ($vm.ReplicationHealth -eq "Warning") {
      $replstate = $replstate + 1
    } else {
      $replstate = $replstate + 2
    }
  }
  return $replstate
}

 

 「hvreplsynctime.ps1」は、レプリケーションが有効なVMごとに、レプリカの最終同期日時と現在の日時との差分(秒)を取得し、複数のVMがある場合は最も経過時間が長い秒数を返します。Hyper-Vレプリカは、30秒、5分(300秒)、または15分(1500秒)の間隔で差分データを同期するため、同期間隔を超えた秒数である場合は注意、最後に同期されてから長い時間が経過している場合は危険と評価できるでしょう。

[hvreplsynctime.ps1]プレーンテキストで表示

$vms = Get-VMReplication
$elaspedsec = 0
if ($vms -eq $null) {
  return 0
} else {
  foreach ($vm in $vms) {
    $tempsec = ((Get-Date) - (Get-Date($vm.LastReplicationTime))).TotalSeconds
    if ($elaspedsec -lt $tempsec) {
      $elaspedsec = [int]$tempsec
    }
  }
  return $elaspedsec
}

 

 このPowerShellスクリプトを、BOMがインストールされているHyper-Vサーバーのローカルパスに保存し、各スクリプトに対応した「カスタム監視」を追加します。各監視設定のプロパティでは、「設定」タブのプログラム名に「powershell.exe」と入力し、引数にスクリプトのパスを入力します(画面3)。あとは、監視間隔としきい値を環境に合わせて調整すれば監視設定は完了です。これらのカスタム監視を追加すると、「BOMマネージャー」上でHyper-Vレプリカの現在の状態をより把握しやすくなるでしょう(画面4)。

 

画面3
画面3 PowerShellスクリプトをカスタム監視設定で定期的に実行するように構成する

 

画面4
画面4 レプリケーションを(意図的に)一時停止すると、BOM標準の監視テンプレートでは捉えられていないレプリケーション正常性の変化をカスタム監視が拾い上げている

blog_column_subscribe

blog_column_comment

最新記事