セイテクエンジニアのブログ かつて山市良と呼ばれたおじさんのブログ メモ. Process Monitorを絶秒なタイミングで自動実行
2024年07月23日配信
執筆者:山内 和朗
Windows Sysinternalsの「Process Monitor(Procmon)」は、コンピューターの原因不明の問題を診断するときに多くの人が最初に試してみるユーティリティです。そして、Procmonがトラブルの原因を突き止めた、最後のユーティリティということもあります。そんなProcmonを絶妙なタイミングで開始するためには、Procmonのコマンドラインオプションを使用した自動化が鍵になります。
Procmonは実行ファイル(Procmon.exe)をダブルクリックして起動すれば、インストールなしですぐに使い始めることができます。Procmonの概要と一般的な使い方ついては、このブログの以下の記事で説明しました。今回の記事を読み進める前に一読しておくことをお勧めします。
ITニュース. Sysinternals更新情報: Process Monitor v4.0(さらにv4.01)
問題を再現できず、しかも不定期に突然発生する問題の調査は、Procmonの一般的な使い方では困難です。いつ起きるかわからないような問題のために、何時間も何日もキャプチャし続けるというわけにはいきません。Procmonはレジストリやファイルシステム、ネットワーク、プロセス、DLLのアクティビティをキャプチャし、仮想メモリ(既定)またはログファイルに短時間で膨大なイベントを記録します。つまり、リソースを大量に消費する可能性があるため、常時実行しておくようなことはできません。必要なときに、必要な時間だけ実行し、調査対象のイベントをできるだけ抑制するのが、トラブル解決までの近道です。
Procmonは多数のコマンドラインパラメーターを提供しており、キャプチャの開始から停止までをコマンドラインやバッチファイルから完全に制御することができます。例えば、次のコマンドラインを実行すると、カレントディレクトリの「myprocmon.pml」をバッキングファイル(Procmonログファイル、.pml)としてキャプチャを開始し、3分(180秒)経過したらProcmonを終了することができます(画面2)。
問題が発生してからProcmonのキャプチャを開始するのでは、コマンドラインを駆使してスピードアップしたとしても、多くの場合、遅すぎるでしょう。「BOM for Windows Ver.8.0 SR1」のような監視ツールを利用すれば、トラブルの予兆を捉えて、ちょうど良いタイミングでキャプチャを開始できるかもしれません。例えば、特定のイベントログの記録や、パフォーマンス問題の発生をトリガーとして、カスタムアクションでProcmonのキャプチャを自動化するのです。
製品コラム「USBメモリの監視-BOM for Windows活用例(Job Director連携)」では、USBリムーバブルディスク(USBメモリなど)の接続を監視し、Job Directorのジョブネットワークを呼び出して、USBメモリの内容を再帰的に走査する方法が説明されています。同じ監視設定を利用して、Job DirectorのジョブネットワークでProcmonの自動実行を実現してみましょう。
ジョブネットワークのジョブ用に、次のスクリプト(バッチ)を準備しました。このスクリプトは、コマンドプロンプトで実行可能なバッチファイル(.cmdまたは.bat)そのものですが、ジョブに直接記述することができます。
スクリプトでは、PMExeにProcmon.exeのパスを指定し、PMFileにProcmonログファイルのパスを指定します。この例では同じログファイルが使用されないように「c:¥tools¥procmon_年月日_時分.pml」というファイル名で保存するようにしています。Procmonログファイルは短時間で巨大化するため、十分な空き領域のある場所をパスに指定してください。スクリプトは、現在実行中のProcmonインスタンスが存在する場合は、既にキャプチャ中とみなし、何もしません。そうでない場合は、3分(180秒)の間キャプチャを実行して終了します。
なお、多くのジョブ管理ツールがそうであるように、コマンドの入力リダイレクトを受け付けるTIMEOUTコマンドは、ジョブの中では使用できません。そのため、3分(180秒)待機する部分を「powershell.exe start-sleep 180」と記述しています。
画面4 ジョブネットワーク「StartProcmon3min」は、Procmonの3分(180秒)のキャプチャを実行し、Procmonログファイルに保存するシンプルなジョブ。同時実行されないようにスクリプトおよびジョブネットワークのパラメーターで調整
製品コラム「USBメモリの監視 - BOM for Windows活用例(Job Director連携)」で作成した監視設定を利用して、このジョブネットワークを実行すると(BOMのカスタムアクションのCheckUSBDrivesジョブネットワークの呼び出しを、StartProcmon3minに変更)、USBリムーバブルディスクが検出されたタイミング(30~60秒のタイムラグがあり)でProcmonの3分間のキャプチャを開始するようになります。Procmonログファイルを開いて、USBリムーバブルデバイスに関連するパスのアクティビティを調査すれば、USBリムーバブルデバイスから読み取られたファイル、書き込まれたファイル、実行されたプログラムなどを調査することができるでしょう(画面5)。
画面5 ジョブネットワークのジョブにより自動的に保存されたProcmonログファイル「procmon_20240607_1443.pml」
お勧めの一冊Windows Sysinternalsユーティリティの日本語解説については、少し古い書籍ですが、こちらをお勧めします。Windows Sysinternalsユーティリティは更新を続けていますが、ユーティリティのラインアップや基本的な使い方に変わりはありません。Procexpは第2部リファレンスガイド第5章、かなりのボリュームを割いて詳しく説明されています。また、第3部のさまざまなトラブルシューティング事例で最も登場回数の多いユーティリティです。
Windows Sysinternals 徹底解説 改訂新版 著者 : Mark E. Russinovich、Aaron Margosis 著 ※書籍の正誤情報、およびユーティリティのこれまでの更新情報については、旧ブログサイトをご覧ください。 |
2024年09月02日 | vol.39 VMゲストの初期設定に役立つスクリプト|ラボ環境 in オンプレを作る(7) |
---|---|
2024年08月29日 | デモ. VMテンプレートのオフラインパッチ(動画) |
2024年08月29日 | vol.38 Hyper-V VMの管理に役立つスクリプト|ラボ環境 in オンプレを作る(6) |
2024年08月26日 | vol.37 オンプレのVMをAzureラボ環境に持ち込む|ラボ環境 in オンプレを作る(5) |
2024年08月22日 | vol.36 Azure Backupでクラウドバックアップ|ラボ環境 in オンプレを作る(4) |
2024年08月20日 | ITニュース. WinREの更新失敗の既知の問題、本当に解消したの? |
2024年08月19日 | vol.35 ローカルバックアップは超簡単|ラボ環境 in オンプレを作る(3) |
2024年08月08日 | vol.34 Windows Admin Centerの導入|ラボ環境 in オンプレを作る(2) |
2024年08月06日 | お知らせ. 定期セミナー「セイテク・シス管道場」、第2回を9月10日に開催 |
2024年08月05日 | vol.33 ラボ環境 in オンプレを作る(新シリーズスタート) |