Windowsの高システム使用時にアラートを出すための監視設定方法
Windowsで見落とされがちなツールの1つがPerfmon、つまりパフォーマンスモニターです。このユーティリティには多くの見過ごされている機能があり、その中の1つがさまざまなメトリック条件に対するアラートを設定する能力です。この記事では、高CPU使用率の状況におけるPerfmonのアラート機能を正しく使用する方法を探ります。
Perfmonとは何ですか?
Windowsの初期からさまざまなバージョンで利用可能なパフォーマンスモニターは、システムの使用状況やさまざまなパフォーマンスメトリックを監視するために設計されたWindowsのMMCスナップインとして利用できます。起動時のデフォルトビューでは、いくつかの異なる領域とリアルタイムメトリックが強調表示されます。
- パフォーマンスモニター - メトリクスのリアルタイム表示
- データコレクターセット - 特定の時間間隔にわたるデータの定義されたコレクション
- レポート - データコレクターセットで収集されたデータの表示方法
パフォーマンスモニターが管理者として起動されていない場合、その機能は制限され、データコレクターセットやレポートが表示されないことがあります。
視聴メトリクス
パフォーマンスモニターを最初にクリックすると、デフォルトで表示される動いている線グラフが表示されます。
%Processor Timeこれ自体はそれほど役に立たず、データは変動値であり、実際には悪条件があるかどうかを知りたいのです。
このグラフに追加の指標を追加するには、緑のプラスをクリックして、さらに指標を追加してください。ただし、異なるデータポイント間で値のスケールが一致しない場合があるため、単一のグラフに統合するとあまり役に立たない場合があります。
データコレクターセット
リアルタイムデータは有用ですが、最終的に求めているものではありません。それでは、特定の条件、つまり長時間持続する高いCPU使用率について、どのようにアラートを出しますか?
ここでデータコレクターセットが登場します。データコレクターセットを展開した後、ユーザー定義 → 新規 → データコレクターセットを右クリックします。
セットに名前を付けるオプションと、テンプレートからセットを作成するか手動でセットを作成するかを選択することができます。この場合、私たちは手動で設定を作成する必要があります。
この場合、パフォーマンスカウンターアラートを設定しています。これにより、特定のカウンターを監視し、その後、アラートに特定のアクションを取るよう指示できます。
私たちが総CPUパーセンテージを監視しようとしているので、監視するための正しいメトリックを選ぶことが最も重要です。ここでは、選択されたインスタンスの横にある「追加>>」をクリックして、プロセッサ→_総計を選択しています。
問題の一つは、すべてのProcessor _Totalメトリックを取得することです。最終的に、私たちが望むのはただそれです。
\Processor(_Total)\% Processor Timeメトリック。他のものを削除するには、それぞれを選択して削除ボタンをクリックします。
残念ながら、削除の方法では、削除ボタンを何度もクリックしても、選択したアイテムが毎回上に移動してしまいます。各メトリックを個別に選択して、「削除」をクリックしてください。
今、パフォーマンスカウンターにアラートを開始すべきポイントを伝える必要があります。この場合、私たちは値が上回った時のみアラートが出るようにしたいと考えています。
95
最後に、データコレクターセットを保存して閉じます。
アラートの設定
デフォルトの設定が完了したので、次にどのアラートアクションが行われるかを設定する必要があります。アラートの設定には、アラートアクションとアラートタスクの2つの方法があります。ユーザー定義 → 高いCPU使用率のデータコレクタセットを選択し、デフォルトのDataCollector01エントリを右クリックしてプロパティを選択します。
エントリーの監視を開始する最も簡単な方法は、アラートアクションタブに移動し、「アプリケーションイベントログにエントリを記録する」のチェックボックスをクリックすることです。また、アラートの基準が満たされたときに異なるデータコレクターセットを開始する便利なオプションもあります。これにより、必要に応じて追加のログを収集できますが、ここではただエントリを記録するだけです。
アラートタスクの設定
これはすべて良いですが、最終的には実際のアラートではなく、新しいイベントログエントリが得られているだけです。アラートタスクタブでは、このデータコレクタにスケジュールされたタスクを開始させ、いくつかのパラメーターを送信し、その後に任意のアラートアクションを実行できるようにします。これを機能させるためには、2つのことを行う必要があります。実行するスクリプトを作成し、スケジュールされたタスク自体を作成します。
ログスクリプト
以下は非常に簡単なログ記録スクリプトです。アラートタスクによって出力されたアラートメトリックを読み込み、その結果をログファイルに送信します。
HighCPUAlert.ps1$Date = $args[0]
$Threshold = $args[1]
$Counter = $args[2]
$Value = "[{0}] {1} {2} | {3}" -F $Date, 'High CPU', $Threshold, $Counter
Add-Content -Value $Value -Path 'C:\HighCPUAlert.log'
スケジュールされたタスク
ここでは、データコレクターによって呼び出されたときにスクリプトを実際に実行するスケジュールされたタスクを作成する必要があります。私たちは、スケジュールされたタスクを作成するためにPowerShellを使用し、実行時にはpwsh.exeエグゼキュータブルを用いてPowerShell 7を使用しています。
$Params = @{
"Action" = New-ScheduledTaskAction -Execute "pwsh.exe" -Argument "-NoProfile -File C:\HighCPUAlert.ps1 $(Arg0)"
"Principal" = New-ScheduledTaskPrincipal -UserId "LOCALSERVICE" -LogonType ServiceAccount
"Settings" = New-ScheduledTaskSettingsSet
}
New-ScheduledTask @Params | Register-ScheduledTask 'HighCPUAlert'
PowerShell 7が正式にリリースされるまで、実行可能ファイルはpwsh-preview.exeかもしれません。
アラートタスクの設定
最後に、データコレクターでアラートタスクを設定する必要があります。これを行うには、再度DataCollector01のプロパティに移動し、以下の詳細を入力します。
タスクの引数は文字列として PowerShell に渡されるため、引数を引用符で囲んでいます。したがって、引用符で囲むことにより、引数をインデックスで簡単に分離できるようになります。つまり、
$arg[0]や$arg[1]です。
保存をクリックすると、資格情報の入力を求められる場合があります。これは、管理者権限を持つユーザーである必要があります。
データコレクターの実行
データコレクターセットの上で右クリックし、開始を選択することで、収集プロセスが始まります。スケジュールされたタスクを監視すると、新しく作成されたスケジュールタスクが監視間隔と設定されたしきい値に応じて定期的に実行されるのがわかります。
結論
Windowsの組み込みモニタリングツールを使用することで、コアユーティリティやPowerShellの周りに便利で強力なモニタリングソリューションを構築することができます。この柔軟性により、メトリックデータ収集を通じて診断可能なほぼすべての問題の根本に迫ることができるでしょう!












