Process Monitorの使い方
Process Monitorは、Sysinternalsユーティリティの一部としてMicrosoftによって無償で提供され、ファイルシステム、レジストリ、プロセスやスレッドの様々なアクティビティをイベントとしてリアルタイムに表示しログに記録することができる、Windows向けの高度なモニタリングツールです。 記録されたログには操作の種類やその結果、操作を呼び出したスタックなどの詳細な情報が含まれており、Process Monitorが提供する豊富なフィルター処理や統計機能によってシステムやアプリケーションの問題を様々な切り口から分析することができます。
本ページではProcess Monitorの入手方法と使用方法について簡単な解説をしています。詳細な使用方法や適用事例については書籍紹介のページに記載しているSysinternalsの解説本が大変参考になります。
Process Monitorの入手方法
Process MonitorはSysinternalsの公式ウェブサイトから無償でダウンロードすることができます。 単一の実行可能ファイルをコピーするだけで動作するように作成されているため、コンピューターにインストールする必要がなく、ネットワークやリムーバブルメディアなどどこからでも実行することができます。運用環境でProcess Monitor利用する場合や、顧客にProcess Monitorを使用してログの取得を依頼する場合には、ソフトウェアのインストールや環境設定を行うことが難しい場合が多いと思いますので、実行可能ファイルをコピーするだけで利用できることは実用上とても便利です。
また、Process MonitorはMicrosoft StoreやWinGetからインストールすることも可能です。 これらの方法はSysinternalsのウェブサイトからツールを個別に取得する場合と比べて、Windowsのスタートメニューに登録される、アプリ実行エイリアスを通じてコマンドラインからの起動が容易になる、自動更新されるといった利点があります。 開発環境などで日常的にProcess Monitorを使用する場合はこちらの方法でインストールすることをお勧めします。
Sysinternalsのウェブサイトから入手する
- EdgeなどのWebブラウザーからダウンロードページにアクセスします。
- [Process Monitor をダウンロード]のリンクをクリックしてProcessMonitor.zipをダウンロードします。
- エクスプローラーでProcessMonitor.zipを開きます。(ダウンロードされたファイルは一般的に"C:\users<ユーザー名>\Downloads"フォルダーに保存されています。)
- procmon.exeをコピーして任意のフォルダーにコピー&ペーストします。どこのフォルダーでも構いませんが、管理しやすくするために、"C:\Program Files"フォルダーの配下に"Sysinternals"という名前のフォルダーを作成しておくとよいでしょう。
Microsoft Storeから入手する
- Windowsのスタートメニューから[Microsoft Store]を開きます。
- 検索ウィンドウに"Sysinternals"を入力して検索します。
- [Sysinternals Suite]のパネルの[入手]ボタンをクリックします。
WinGetから入手する
管理者としてコマンドプロンプトまたはPowerShellを起動して以下のコマンドを実行します。
winget install Microsoft.Sysinternals
Process Monitorを起動する
Proces Monitorを入手できたら早速起動してみましょう。
Process MonitorをSysinternalsのウェブサイトから入手した場合は、エクスプローラーからprocmon.exeをダブルクリックします。
Microsoft StoreまたはWinGetから入手した場合はスタートメニューの検索欄に"procmon"と入力し、[Process Monitor]のアイコンをクリックします。
どちらの方法で起動した場合もUAC(ユーザーアカウント制御)のダイアログが表示されますので、[はい]のボタンをクリックします。
はじめてProcess Monitorを起動する場合はソフトウェアライセンス条項の画面が表示されますので、内容を確認して[Agree] (同意する) ボタンをクリックします。
正常にProcess Monitorが起動できた場合、次のような画面が表示されリストにイベントが表示されていきます。画面左下の[Showing 175,226 of 449,518 events]の表示は、右側が現在記録されているイベントの総数、左側が後述するフィルター機能でフィルタリングされた後のイベント件数を示しています。 何も操作していない状態でもWindowsはバックグラウンドで様々な処理を行っているため、記録されているイベントの件数がどんどん増えていく様子が確認できると思います。
Process Monitorの既定の動作ではイベントを仮想メモリ上に記録していきますので、長時間放っておくといずれ仮想メモリを使い果たしてしまいます。 64bit版のWindows上であれば簡単に仮想メモリを使い果たしてしまうことはありませんが、ここでイベントの記録をいったん停止しておきます。 ツールバーの左から三番目のアイコンをクリックしてください。
アイコンの表示が変化してレコーディング中から一時停止中のマークに変わり、画面左下のイベントの総数も増加しなくなったことが確認できると思います。 記録を再開する場合はもう一度ツールバーで左から三番目のアイコンをクリックしてください。
ログを保存する
Process Monitorで記録したイベントは、ログとして任意の場所に保存することができます。 保存できるファイル形式は3種類ありますが、Native Process Monitor Format (PML) 形式で保存した場合は他のコンピューター上でもProcess Monitorを使用して開くことが可能です。 運用環境や顧客先のコンピューター上では様々な制約からProcess Monitorを使用して詳細な調査を実施ことは出来ない場合が多いと思いますが、そのような場合は一旦記録したイベントをログとして保存して持ち帰って調査するとよいでしょう。
Process Monitorで記録したイベントをログとして保存する場合は、以下の操作を行います。
- [File]->[Save]メニューを開き、[Save To File]ダイアログを表示します。
- [Events to save]オプションで[All events]を選択します。
- [Format]オプションで[Native Process Monitor Format (PML)]を選択します。
- [Path]の欄に保存先のパスを入力します。
- [OK]ボタンをクリックします。
保存する形式はPML、CSV、XMLの3種類がありますが、特別な理由がない限りはProcess Monitorで開くことができるPML形式で保存しておくことをお勧めします。 PML形式で保存しておけば他の形式で保存しなおすことができますが、その逆はできません。 つまり、XMLやCSVからPML形式には変換できません。
XMLやCSVの形式は、テキストエディターやExcelなどを使用して分析する場合に便利なことがあります。 Process Monitorは豊富なフィルタリングや集計機能を備えていますが、他のツールを使用することでログに対してより柔軟かつ高度な操作を行うことができます。 また、Process Monitorはユーザー名などの個人情報が含まれる可能性がありますが、PML形式はバイナリフォーマットですので不要な個人情報を取り除くことはできません。 XMLやCSVの形式で保存することで、テキストエディターなどで個人情報を確認してマスクするなどの処理を行うことができます。ただし前述のとおりXMLやCSVからPML形式には変換できませんので、他のエンジニアにCSVやXML形式で保存したログを渡して調査を依頼する場合、エンジニアが十分な調査を行えない可能性が生じる点には十分注意が必要です。
PML形式で保存されたログを読み込む
PML形式で保存されたログを読み込むことは簡単です。 初回起動時に拡張子*.PMLが自動的にProcess Monitorと関連付けられますので、エクスプローラーからPMLファイルをダブルクリックするだけでProcess Monitorが起動され、ログを読み込んで表示してくれます。 このときログの記録は停止した状態になっています。
既にProcess Monitorが起動している状態でログを読み込む場合の手順は以下のとおりです。
- [File]->[Open]メニューを開き、[ファイルを開く]ダイアログを表示します。
- 開きたいPMLファイルを選択して[開く]ボタンをクリックします。
イベントをフィルタリングする
Windows上では絶えずレジストリ、ファイルシステム、ネットワーク、プロセス、スレッドのアクティビティが実行され続けていますので、Process Monitorに記録されるイベントの数は膨大になります。 ほんの数分だけでも数万件以上のログが記録されますので、関心のあるイベントを区別するためには適切にログをフィルタリングすることが重要になります。 Process Monitorには組み込みのフィルタリング機能が用意されていますので、これを使用して試しにメモ帳の動作を見てみましょう。
- Process Monitorを起動します。
- [Filter]->[Filter]メニューを開き、[Process Monitor Filter]ダイアログを表示します。
- 確実に既定の状態とするために、一旦[Reset]ボタンをクリックします。
- [Process Name]を選択します。
- [is]を選択します。
- "notepad.exe"を入力します。
- [include]を選択します。
- [Add]ボタンをクリックします。ダイアログ下部のフィルター一覧に4~7で設定したフィルターが追加されます。
- [OK]ボタンをクリックします。
以上の手順でProcess Monitorに表示されるイベントがメモ帳 (notepad.exe) のみに絞り込まれた状態になります。この時点でメモ帳が実行されていない場合は何もイベントが表示されていない状態になるはずです。この状態でスタートメニューからメモ帳を起動してみてください。 下図のようにメモ帳のイベントが記録されていき、アプリケーションの起動時にファイルやレジストリを読み込んでいる様子が確認できます。
なお、Process Monitorのフィルター設定は自動的に保存されます。 フィルターが既定の状態ではない場合、次回Process Monitorを起動したときに自動的にフィルター設定画面が表示され、保存されたフィルター設定に復元された状態になっていますで注意してください。