Windowsの標準搭載機能でシステムリソースを監視する方法

Windowsの標準搭載機能でシステムリソースを監視する方法。

Windowsでシステムリソース監視をする場合、サーバー環境なら専用の監視ツールを利用することが多いですが、監視ツールを導入するまでもない小規模環境などでは、なるべくコストをかけずに監視したいところです。そんなときは、Windowsに標準搭載されているパフォーマンスモニターやコマンドを使った方法がおすすめです。

そこでここでは、パフォーマンスモニターやコマンド操作でシステムリソースを監視する方法を解説します。

パフォーマンスモニターを使った監視方法

パフォーマンスモニターを使ってシステムリソースを監視するときの手順は、次のとおりです。

データコレクターセットの作成

まずどのリソース(CPUやメモリなど)を監視対象とするかを、データコレクターセットで定義します。データコレクターセットの作成手順は、次のとおりです。

スタートメニューのプログラム一覧から「Windowsツール」>「パフォーマンスモニター」を起動し、左メニューから「データコレクターセット」を展開し「ユーザー定義」を右クリックして「新規作成」の「データコレクターセット」をクリックします。

Windowsの標準搭載機能でシステムリソースを監視する方法。

「データコレクターセット」の作成画面が表示されるので、名前には分かりやすい名前を入力し「手動で作成する」選択して「次へ」をクリックします。

Windowsの標準搭載機能でシステムリソースを監視する方法。

次の画面では「パフォーマンスカウンターの警告」を選択して「次へ」をクリックします。

Windowsの標準搭載機能でシステムリソースを監視する方法。

次の画面では「追加」をクリックして、監視するリソースを選択します。

Windowsの標準搭載機能でシステムリソースを監視する方法。

ここでは、例としてCドライブの空き容量をチェックするために「LogicalDisk」オブジェクトを展開して「Free Megabytes」カウンターを選択し、オブジェクトのインスタンスとして「C:」を選択し「追加」をクリックします。 

すると、右側の「追加されたカウンター」に追加されるので、確認後、右下の「OK」をクリックします。

Windowsの標準搭載機能でシステムリソースを監視する方法。

前の画面に戻り、追加したパフォーマンスカウンターのしきい値を設定します。

ここでは、Cドライブの空き容量が1GBを下回ったら警告させたいので「警告する時期」では「より下」を選択し「制限値」には「1024」を設定し「完了」をクリックします。

Windowsの標準搭載機能でシステムリソースを監視する方法。

データコレクターセットの作成は、以上で完了です。

データコレクターの設定

次に、作成したデータコレクターセットの実行間隔やしきい値を下回った(上回った)ときの動作を設定します。

まず、パフォーマンスモニター画面から作成したデータコレクターセット「Disk_Check」を選択して、右側に表示される「DataCollector01」を右クリックして「プロパティ」を選択します。

Windowsの標準搭載機能でシステムリソースを監視する方法。

プロパティ画面の「警告」タブでは、先ほど追加したパフォーマンスカウンターをチェックする間隔を設定できます。

デフォルトは「15秒」に設定されていますが、クリティカルなサーバーでなければ1日に1回ぐらいが程よい間隔ではないでしょうか。

Windowsの標準搭載機能でシステムリソースを監視する方法。

「警告の動作」タブでは、設定したしきい値を下回った(上回った)ときに、アプリケーションイベントログに記録するよう設定できます。

Windowsの標準搭載機能でシステムリソースを監視する方法。

「警告のタスク」タブでは、設定したしきい値を下回った(上回った)ときに、指定したタスクを実行するよう設定できます。

たとえば、メール送信するタスクを作成しておき、警告が出されてた時に実行するタスクとして指定しておけば、設定したしきい値を下回った(上回った)ときに、メールで通知することができます。

Windowsの標準搭載機能でシステムリソースを監視する方法。

データコレクターセットの開始

ここまでの設定が完了したら、作成したデータコレクターセットを右クリックして「開始」を選択することで、監視が開始します。

Windowsの標準搭載機能でシステムリソースを監視する方法。

開始されると、データコレクターセットのアイコンが、以下のように表示されます。

Windowsの標準搭載機能でシステムリソースを監視する方法。

なお、データコレクターセットは、マシンをシャットダウンしたり再起動すると自動的に停止してしまうので、継続して監視したい場合は、以下の記事を参考にマシン起動時に自動的にデータコレクターセットが開始するよう設定しておく必要があります。

Windows起動時にデータコレクターセットを自動開始させる方法
Windows起動時にデータコレクターセットを自動開始させる方法
Windowsの起動時にデータコレクターセットを自動的に開始させる方法として、タスクスケジューラやローカルグループポリシーを使った方法を紹介します。

動作確認

「警告の動作」タブで、アプリケーションイベントログに記録するよう設定した場合、設定したしきい値を下回った(上回った)ときに、以下の場所にイベントログが生成されます。

イベントログが生成される場所:
アプリケーションとサービス ログ/Microsoft/Windows/Diagnosis-PLA/Operational

Windowsの標準搭載機能でシステムリソースを監視する方法。

生成されるイベントログ

コマンドを使った監視方法

コマンド操作でシステムリソースを監視するときは、typeperfコマンドやGet-Counterコマンドレットを使います。

typeperfコマンド

typeperfコマンドは、Windows XP時代から利用できるコマンドで、パフォーマンスカウンターの値を収集できます。

たとえば、 CPU使用率データを収集する場合は、以下のようにコマンドを実行します。

> typeperf "\Processor(*)\% Processor Time"

コマンドを実行すると、画面上にパフォーマンスカウンターの値が、CSV形式で1秒ごとに表示されます。実行を停止するときは「Ctrl+C」キーを押します。

> typeperf "\Processor(*)\% Processor Time"

"(PDH-CSV 4.0)","\\PC-001\Processor(0)\% Processor Time","\\PC-001\Processor(1)\% Processor Time","\\PC-001\Processor(2)\% Processor Time","\\PC-001\Processor(3)\% Processor Time","\\PC-001\Processor(_Total)\% Processor Time"
"01/29/2020 09:12:32.870","2.185967","0.633363","2.185967","0.633363","1.409665"
"01/29/2020 09:12:33.880","2.403741","0.854594","0.854594","3.952888","2.016449"
"01/29/2020 09:12:34.890","0.000000","2.883450","1.341918","2.883450","1.727306"
"01/29/2020 09:12:35.902","0.804968","0.804968","2.354890","2.354890","1.579929"
"01/29/2020 09:12:36.911","3.984854","2.436223","0.887591","2.436223","2.436223"
"01/29/2020 09:12:37.920","2.461077","4.009314","14.846972","0.912840","5.557551"
                                      
コマンドは、正しく完了しました。

>

コマンドの出力先は標準出力(画面)ですが「-o」オプションでファイル出力もできます。

> typeperf "\Processor(*)\% Processor Time" -o counters.csv

また、収集間隔は「-si <hh:mm:ss>」で指定でき、サンプリング数は「-sc」で指定できます。以下のコマンドでは、5秒間隔でサンプリング数を10回に指定しています。

> typeperf "\Processor(*)\% Processor Time" -si 5 -sc 10

Get-Counterコマンドレット

Get-Counterコマンドレットは、パフォーマンスカウンターの値を収集できるPowerShellコマンドレットです。

たとえば、 CPU使用率データを収集する場合は、以下のようにコマンドを実行します。

PS> Get-Counter "\Processor Information(_Total)\% Processor Utility"

コマンドを実行すると、画面上にパフォーマンスカウンターの値が表示されます。

Windowsの標準搭載機能でシステムリソースを監視する方法。

Get-Counterコマンドレットはデフォルトで1回のみ値を収集しますが、以下のように実行すると継続してパフォーマンスカウンターの値を収集できます。

PS> Get-Counter "\Processor Information(_Total)\% Processor Utility" -Continuous

また、収集間隔や収集回数を指定できます。以下のコマンドでは、2秒間隔でサンプリング回数を3回に設定しています。

PS> Get-Counter "\Processor Information(_Total)\% Processor Utility" -SampleInterval 2 -MaxSamples 3

Get-Counterコマンドレットで取得したパフォーマンスカウンターの値は、以下のようにWhere-Objectコマンドレットと組み合わせて簡単に値を比較することができ、パフォーマンスカウンターの値を監視する際に便利です。

PS> $counter = Get-Counter "\Processor Information(_Total)\% Processor Utility"
PS> $counter.CounterSamples | Where-Object { $_.CookedValue -gt "85" }

あとがき

個人的には、スクリプト作成が苦手でなければGet-Counterコマンドレットを使った監視方法がシンプルでいろいろとカスタマイズもできるのでおすすめです。