セイテクエンジニアのブログ 製品コラム カスタム監視でフェールオーバークラスターの監視を強化-BOM for Windows活用例
2024年11月13日配信
執筆者:セイ・テクノロジーズ エバンジェリスト
かつて山市良と呼ばれていたおじさんのブログの最近の記事「メモ. 意外と簡単?Hyper-Vホストクラスターの構築と管理」では、Hyper-Vホストクラスターの簡単な構築方法を紹介しています。Hyper-Vホストクラスターは、Windows Serverのフェールオーバークラスタリング機能を用いてフェールオーバークラスターを構築し、Hyper-V仮想マシン(VM)をクラスター化して可用性を高める方法です。
「BOM for Windows Ver.8.0 SR1」(以下、BOM)には、フェールオーバークラスター(Hyper-Vホストクラスターに限定されません)の監視に対応した監視テンプレートが同梱されています。標準のテンプレートにカスタム監視を追加して、さらに監視を強化する方法を紹介します。
BOMには、Windows Server 2016以降のフェールオーバークラスターの監視に対応した監視テンプレート(MSFC_*)が同梱されており、これをBOMサーバーにインポートするだけですぐにクラスターの監視を開始することができます(画面1)。監視テンプレートには、Cluster Serviceのサービス監視、フェールオーバークラスタリング機能に関連するイベントログ監視、クラスター対応更新(CAU)のイベントログ監視、リソース失敗やハートビートを監視するためのパフォーマンスカウンター監視などが定義済みとなっており、監視間隔やログの指定、しきい値の設定などせずに、詳しい知識がなくても、高品質な監視が可能です。もちろん、監視間隔やしきい値のカスタマイズも可能です
画面1 フェールオーバークラスターのノードとなっているWindows Serverは、フェールオーバークラスター対応の監視テンプレートをインポートすることで、クラスター環境を効果的に監視できる
フェールオーバークラスターの各ノードには、フェールオーバークラスタリング機能とともにWindows PowerShellの「FailoverClusters」モジュールがインストールされ、使用可能です。FailoverClustersモジュールのコマンドレットを使用すると、フェールオーバークラスターのノードやリソース、ネットワーク、ストレージに関するさまざまなステータス情報を取得することができます。例えば、「Get-ClusterNode」「Get-ClusterResource」「Get-ClusterNetwork」コマンドレットは、それぞれノードの状態、クラスターリソースの状態、クラスターネットワークの状態を提供します(画面2)。
FailoverClusters|Windows PowerShell(Microsoft Learn)
画面2 ステータス情報を返すFailoverClustersモジュールのコマンドレット
以下は「Get-ClusterNode」「Get-ClusterResource」「Get-ClusterNetwork」の各コマンドレットが返す情報を数値化するPowerShellスクリプトです。
「downnodes.ps1」はクラスター(クラスターのノードで実行することが前提)に含まれるノードの数と、稼働中(UP)の状態のノード数を調べ、その差、つまり現在ダウンしているノード数を返します。0であれば正常、1以上であればその数だけノードがダウンしていることになります。クラスターに接続できない場合(Get-ClusterNodeがエラーを返す場合)は、-1を返します。BOMは、値-1を失敗(N/A)として扱います。
[downnodes.ps1](プレーンテキストで表示)
$totalnodes = 0 $upnodes = 0 $nodes = (Get-ClusterNode -ErrorAction SilentlyContinue) if($nodes -eq $null) { return -1 } else { $totalnodes = $nodes.Count foreach ($node in $nodes) { if ($node.State -eq "Up") { $upnodes++ } } return $totalnodes - $upnodes } |
「downresources.ps1」はクラスター(クラスターのノードで実行することが前提)に存在するすべてのクラスターリソースの数と、現在オンライン(Online)になっているクラスターリソースの数を調べ、その差を返します。なお、クラスターリソースは常にすべてがオンラインなわけではないことに注意してください。フェールオーバークラスターには、必要時にのみオンラインになるリソースもいくつか存在します。そのため正常時でも結果は1以上の数を返す場合があります。通常稼働時にオンラインになっているリソースの数を把握し、しきい値を決定してください。このスクリプトも、クラスターに接続できないは、-1を返します。
[downresources.ps1](プレーンテキストで表示)
$totalresources = 0 $onlineresources = 0 $resources = (Get-ClusterResource -ErrorAction SilentlyContinue) if($resources -eq $null) { return -1 } else { $totalresources = $resources.Count foreach ($resource in $resources) { if ($resource.State -eq "Online") { $onlineresources++ } } return $totalresources - $onlineresources } |
「downnet.ps1」はクラスター(クラスターのノードで実行することが前提)に存在するすべてのクラスターネットワークの数と、現在稼働中(UP)になっている数を調べ、その差を返します。0であれば正常、1以上であれば何らかの問題が発生していることになります。このスクリプトも、クラスターに接続できない場合は、-1を返します。
[downnet.ps1](プレーンテキストで表示)
$totalnets = 0 $upnets = 0 $nets = (Get-ClusterNetwork -ErrorAction SilentlyContinue) if($nets -eq $null) { return -1 } else { $totalnets = $nets.Count foreach ($net in $nets) { if ($net.State -eq "Up") { $upnets++ } } return $totalnets - $upnets } |
このPowerShellスクリプトを、BOMがインストールされているフェールオーバークラスターのノードのローカルパスに保存し、各スクリプトに対応した「カスタム監視」を追加します。各監視設定のプロパティでは、「設定」タブのプログラム名に「powershell.exe」と入力し、引数にスクリプトのパスを入力します(画面3)。あとは、監視間隔としきい値を環境に合わせて調整すれば監視設定は完了です。例えば平常時にオフラインのクラスターリソースが2つある場合は、「downresources.ps1」の値「2」をしきい値にするなどです。これらのカスタム監視を追加すると、「BOMマネージャー」上でクラスターの現在の状態をより把握しやすくなるでしょう(画面4)。
画面3 PowerShellスクリプトをカスタム監視設定で定期的に実行するように構成する
画面4 ノードの1つを一時停止すると、カスタム監視設定の1つ(downnodes.ps1)のステータスが「注意」に変化
BOMによるHyper-Vホストクラスターの監視については、以下の記事もご覧ください。
記憶域スペースダイレクト(S2D)の容量と障害を監視する-BOM for Windows活用例
2025年01月15日 | サーバー設定仕様書の「自動更新を構成する」が実機と一致しない-SSD-assistance FAQ(仮) |
---|---|
2024年12月25日 | サーバー設定仕様書のプロセッサ数と合計コア数について-SSD-assistance FAQ(仮) |
2024年12月13日 | Windows Serverのインストール用USBメディアの作り方-Windows FAQ(仮) |
2024年12月06日 | Azure(従量課金制)の使用コスト監視-BOM for Windows活用例 |
2024年11月20日 | カスタム監視でHyper-Vレプリカの監視を強化-BOM for Windows活用例 |
2024年11月13日 | カスタム監視でフェールオーバークラスターの監視を強化-BOM for Windows活用例 |
2024年11月06日 | IEのアンインストールの可否について-BOM for Windows FAQ(仮) |
2024年10月30日 | Windows Server CoreにBOMをインストールしてみた(サポート外) |
2024年10月23日 | ネットワークドライブの容量監視-BOM for Windows FAQ(仮) |
2024年10月16日 | PowerShell: Excelシートからセルの値を取得したい-Windows FAQ(仮) |