Windows 10のトラブルに備えるなら、日ごろからパフォーマンスログを収集しておこう。

Windows 10のトラブルに備えるなら、日ごろからパフォーマンスログを収集しておこう。

会社などで複数台のWindowsPCを管理していると、利用者から「なんか最近遅いんだけど」といった漠然とした問い合わせを受けることがあります。

そんなとき、やみくもに調べても原因を特定するのは難しいでしょう。

そこで活用したいのがWindowsの標準機能である「パフォーマンスモニター」です。

パフォーマンスモニターは、CPU、メモリ、ディスク、ネットワークをはじめとした、Windowsマシン上で動作しているさまざまなリソースの利用状況をリアルタイムに表示したり、ログとして採取できるツールで、サーバー環境ではよく利用されています。

ですが、クライアントPCでも日ごろからパフォーマンスログを採取するようにしておけば、いざトラブルが発生したときに、原因の調査でとても役立ちます。

そこでここでは、Windows 10でパフォーマンスモニターの「データコレクターセット」機能を利用して、パフォーマンスログを継続的に収集する方法を紹介します。

Windows 10のリソースを監視するときにチェックするべきパフォーマンスカウンター
ここでは、Windowsマシンのリソース(CPU/メモリ/ディスク/ネットワーク)監視する際に、最低限チェックすべきパフォーマンスカウンターを紹介します。

この記事は、以下の環境での動作結果を基にしています。他のエディションやバージョンでは、動作結果が異なる場合があることをご了承ください。

ソフトウェアバージョン
Windows 10 Pro 64bit1909

データコレクターセットを作成する

データコレクターセットの作成は、パフォーマンスモニター画面からGUI操作で作成したり、コマンド(logman create)で作成することができますが、コマンドでは細かな設定ができないため、ここではGUI操作で作成します。

パフォーマンスモニター画面からデータコレクターセットを作成する手順は、次のとおりです。

まず、パフォーマンスモニターを起動して、左ペインの「データコレクターセット」を展開して「ユーザー定義」を右クリックし、メニューから「新規作成」>「データコレクターセット」を順にクリックします。

Windows 10のトラブルに備えるなら、日ごろからパフォーマンスログを収集しておこう。

データコレクターセットの作成ウィザードが起動するので、順に設定します。

データコレクターセットの名前は、任意の分かりやすい名前を付けて、作成方法は「手動で作成する」を選択して「次へ」をクリックします。

Windows 10のトラブルに備えるなら、日ごろからパフォーマンスログを収集しておこう。

データの種類では「パフォーマンスカウンター」にチェックを入れて「次へ」をクリックします。

Windows 10のトラブルに備えるなら、日ごろからパフォーマンスログを収集しておこう。

パフォーマンスカンターの選択画面では、まず「追加」をクリックします。

Windows 10のトラブルに備えるなら、日ごろからパフォーマンスログを収集しておこう。

すると、カウンターの追加画面が表示されるので、必要なカウンターを追加します。

カウンターを追加するときは、次の順に操作して追加します。

  1. 追加するカウンターを選択
  2. オブジェクトのインスタンスを選択
  3. 「追加」をクリック

Windows 10のトラブルに備えるなら、日ごろからパフォーマンスログを収集しておこう。

ここでは、トラブルシューティングに役立つ以下のカウンターを追加していますが、環境に応じて必要なカウンターを選択しましょう。

追加するカウンターオブジェクトのインスタンス
LogicalDiskすべてのインスタンス
Memory
Network Adapterすべてのインスタンス
Network Interfaceすべてのインスタンス
Paging Fileすべてのインスタンス
PhysicalDiskすべてのインスタンス
Processすべてのインスタンス
Processorすべてのインスタンス
Processor Informationすべてのインスタンス
System

必要なカウンターを追加したら「追加されたカウンター」で確認し「OK」をクリックします。

Windows 10のトラブルに備えるなら、日ごろからパフォーマンスログを収集しておこう。

ウィザード画面に戻ったら、サンプル(収集)間隔を指定して「次へ」をクリックします。

収集間隔を短く設定すれば、ログから状況を把握しやすくなりますが、ログファイルのサイズは大きくなります。

ここでは「5秒」に設定していますが、最終的なサンプル間隔は、実際にログを収集してみて1時間当たりでログファイルのサイズがどれぐらいの大きさになるかを確認しながら、カウンターの数やサンプル間隔を調整しましょう。

Windows 10のトラブルに備えるなら、日ごろからパフォーマンスログを収集しておこう。

ログの保存場所を設定して「次へ」をクリックします。

Windows 10のトラブルに備えるなら、日ごろからパフォーマンスログを収集しておこう。

「このデータコレクターセットのプロパティを開く」を選択して「完了」をクリックします。

Windows 10のトラブルに備えるなら、日ごろからパフォーマンスログを収集しておこう。

データコレクターセットのプロパティ画面が開くので「停止条件」タブで、一定間隔でログファイルを切り替えるよう設定します。

以下の例では「制限に達したらデータコレクターセットを再開する」にチェックを入れ「期間」に1日を設定して、1日ごとにログファイルを切り替えています。

Windows 10のトラブルに備えるなら、日ごろからパフォーマンスログを収集しておこう。

Memo

短期間しかログを収集しない場合は、ログファイルを切り替えなくても良いですが、長期間に渡って継続的にログを収集する場合は、ログファイルを切り替えることで、下記で紹介している「古いログファイルを自動的に削除する」処理が可能となります。

ログファイルのフォーマットを変更する

デフォルトでは、ログファイルはバイナリ形式で保存され、収集したログを確認するときは、パフォーマンスモニターにログファイルをロードして表示する必要がありますが、収集したログファイルを表計算ソフトなどで読み込んだりしたい場合は、ログファイルをテキスト形式で保存することも可能です。

ログファイルのフォーマットを変更する手順は、次のとおりです。

パフォーマンスモニター画面で、作成したデータコレクターセットを選択し、右ペインに表示されるデータコレクターを右クリックしてメニューからプロパティ画面を開きます。

Windows 10のトラブルに備えるなら、日ごろからパフォーマンスログを収集しておこう。

プロパティ画面の「パフォーマンスカウンター」タブにある「ログフォーマット」から「カンマ区切り」や「タブ区切り」を選択すれば、ログファイルをテキスト形式で保存できます。

Windows 10のトラブルに備えるなら、日ごろからパフォーマンスログを収集しておこう。

古いログファイルを自動的に削除する

長期間に渡ってログを収集すると、ログファイルが溜まってディスク容量を圧迫してしまうので、データコレクターセットの「データマネージャー」で、古いログファイルを自動的に削除するよう設定します。

古いログファイルを自動的に削除する手順は、次のとおりです。

パフォーマンスモニター画面で、作成したデータコレクターセットを右クリックして、メニューから「データマネージャー」をクリックします。

Windows 10のトラブルに備えるなら、日ごろからパフォーマンスログを収集しておこう。

データマネージャーの設定画面が開くので「データ マネージャー」タブで、ログの保存ポリシーを設定します。

たとえば、ログの総容量が5GBを超えると、もっとも古いログから自動的に削除されるよう設定するには、次のように設定します。

  1. 「リソース ポリシー」で「もっとも古い物を削除」を選択
  2. 「ルートパスの最大サイズ」にチェックをいれ、フォルダの最大サイズに「5120」を設定
  3. 「データ管理とレポート生成を有効にする」にチェックを入れ「OK」をクリックします。

Windows 10のトラブルに備えるなら、日ごろからパフォーマンスログを収集しておこう。

具体的な設定値は、ログを保存しておきたい期間、1日当たりのログファイルのサイズ、ディスクの空き容量などから調整しましょう。

Memo

古いログの削除処理は、データコレクターセットが停止するとき(PCを再起動したり、シャットダウンするとき)に行われるため、サーバーなど常時稼働しているマシンでは、タスクスケジューラなどから定期的にデータコレクターセットの停止と開始を行う必要があります。

データコレクターセットを開始する

作成したデータコレクターセットでログ収集を開始するには、パフォーマンスモニター画面で、作成したデータコレクターセットを右クリックして、メニューから「開始」をクリックします。

Windows 10のトラブルに備えるなら、日ごろからパフォーマンスログを収集しておこう。

コマンドで開始するには、管理者権限でコマンドプロンプトを起動して、以下のコマンドを入力します。

「New Data Collector Set」の部分には、作成したデータコレクターセットの名前を入力します。

> logman start "New Data Collector Set"

データコレクターセットを自動開始させる

データコレクターセットは、マシンを再起動すると自動的に停止され、再起動後は自動的には開始されません。

そこで、再起動後も自動的にデータコレクターセットが開始されるよう、タスクスケジューラに起動時に実行されるタスクを作成しておきます。

タスクの作成は、管理者権限で起動したコマンドプロンプトで以下のコマンドを実行します。

「New Data Collector Set」の部分には、作成したデータコレクターセットの名前を入力します。

> schtasks /create /tn \Microsoft\Windows\PLA\MyTask /sc onstart /tr "logman start 'New Data Collector Set'" /ru system

データコレクターセットをエクスポート/インポートする

作成したデータコレクターセットは、テンプレートファイル(XML形式)としてエクスポートでき、エクスポートしたテンプレートファイルは、別のマシンでインポートすることができます。

たとえば、1台のマシンでテンプレートとなるデータコレクターセットを作成して、テンプレートファイルとしてエクスポートしておけば、他のマシンでテンプレートファイルをインポートすることでカンタンに同一設定のデータコレクターセットを作成できます。

データコレクターセットをエクスポート/インポートする手順は、次のとおりです。

データコレクターセットをエクスポートする

データコレクターセットをエクスポートするときは、パフォーマンスモニター画面で、作成したデータコレクターセットを右クリックして、メニューから「テンプレートの保存」をクリックします。

Windows 10のトラブルに備えるなら、日ごろからパフォーマンスログを収集しておこう。

コマンドでエクスポートするには、管理者権限でコマンドプロンプトを起動して、以下のコマンドを入力します。

「New Data Collector Set」の部分には、作成したデータコレクターセットの名前を入力し「-xml」オプションの後には出力するファイル名を入力します。

> logman export "New Data Collector Set" -xml D:\sample.xml

データコレクターセットをインポートする

エクスポートしたテンプレートファイルをインポートするときは、データコレクターセットの作成ウィザードで「テンプレートから作成する」を選択して、次画面で「参照」をクリックして、エクスポートしたテンプレートファイルを指定することでインポートできます。

Windows 10のトラブルに備えるなら、日ごろからパフォーマンスログを収集しておこう。

Windows 10のトラブルに備えるなら、日ごろからパフォーマンスログを収集しておこう。

コマンドでインポートするときは、管理者権限でコマンドプロンプトを起動して、以下のコマンドを入力します。

「New Data Collector Set」の部分には、任意のデータコレクターセット名を入力し「-xml」オプションの後にはインポートする ファイル名を入力します。

> logman import "New Data Collector Set" -xml D:\sample.xml

パフォーマンスログを収集するその他の方法

Windows 10でパフォーマンスログを収集する方法としては、ここで紹介したデータコレクターセット以外では、次のようなコマンドで収集する方法があります。

  • typeperfコマンド
  • wmicコマンド
  • Get-Counterコマンドレット(PowerShell)

パフォーマンスログの値をもとにして、何らかの処理を実行したい場合は、上に挙げたコマンドなどを利用してスクリプトを作成する方法が便利です。

Windows 10でパフォーマンスカウンターのデータをコマンドで収集する方法(typeperf)
ここでは、Windows 10でパフォーマンスカウンターのデータをtypeperfコマンドで収集・保存する方法を紹介します。

あとがき

会社で多くのWindowsPCを管理している場合は、日ごろからパフォーマンスログを収集しておくよう設定しておけば、トラブルが起こったときに、問題発生時のパフォーマンスログから、迅速かつ適切な調査ができます。

もちろん、パフォーマンスログだけで、原因を特定できるわけではありませんが、おおよそのあたりを付けられるという意味では、調査の初動で大いに役立ってくれるでしょう。