MicrosoftのLinux向け無料プロセス監視ツール「ProcMon」レビュー、システムコールごとの実行時間などを確認可能
MicrosoftがWindows向けトラブルシューティングツール群「Windows Sysinternals」に含まれるプロセス監視ツール「Process Monitor(ProcMon)」をLinuxに移植します。このLinux版ProcMonはオープンソースソフトウェアとして公開され、さっそくプレビュー版がリリースされたので実際に使ってみました。
GitHub - microsoft/ProcMon-for-Linux: Procmon is a Linux reimagining of the classic Procmon tool from the Sysinternals suite of tools for Windows. Procmon provides a convenient and efficient way for Linux developers to trace the syscall activity on the system.
https://github.com/microsoft/ProcMon-for-Linux
ProcMon for Linux preview has been released!
— Mario Hewardt (@MarioHewardt) July 17, 2020
Want to better understand the activity on your system to identify abnormal behavior? https://t.co/3RSdwUQ2IN@Sysinternals @markrussinovich
Linux版ProcMonの利用に必要なシステム要件は以下の通り。記事作成時点ではUbuntu 18.04のみの対応ですが、今後はRHELやCentOSといった主要ディストリビューションにも対応していくとのこと。
・OS:Ubuntu 18.04 LTS(カーネルバージョンが4.18以上、5.3以下)
・cmake(バージョン3.14以上、 ビルド時のみ必要)
・libsqlite3-dev(バージョン3.22以上、ビルド時のみ必要)
今回は下記システムにProcMonをインストールします。
まずはProcMonのビルドに必要なパッケージをインストールするため、下記コマンドを実行。後でインストールするCMakeのコンパイルにOpenSSLのライブラリが必要なので、libssl-devもインストールしておきます。
sudo apt-get -y install bison build-essential flex git libedit-dev \ libllvm6.0 llvm-6.0-dev libclang-6.0-dev python zlib1g-dev libelf-dev libsqlite3-dev libssl-dev
CMakeもapt経由でインストールしたかったのですが、Ubuntu 18.04のリポジトリに存在するCMakeのバージョンが古く、システム要件を満たすことができなかったので、下記コマンドを実行して手動でコンパイルしインストールしました。
wget https://github.com/Kitware/CMake/releases/download/v3.18.0/cmake-3.18.0.tar.gz tar zxvf cmake-3.18.0.tar.gz cd cmake-3.18.0 ./bootstrap && make && sudo make install
続いて下記コマンドを実行してBCCをインストール。
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 4052245BD4284CDD echo "deb https://repo.iovisor.org/apt/$(lsb_release -cs) $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/iovisor.list sudo apt-get update sudo apt-get install bcc-tools libbcc-examples linux-headers-$(uname -r)
ホームディレクトリに戻り、下記コマンドを実行してProcMonをインストールします。
git clone https://github.com/Microsoft/Procmon-for-Linux mkdir Procmon-for-Linux/build cd Procmon-for-Linux/build cmake .. make
ディレクトリ下に実行ファイルが作成されるので、下記コマンドを実行してProcMonを実行します。
sudo ./procmon
ProcMonの画面はこんな感じ。左からタイムスタンプ、プロセスID、プロセス名、システムコールの名称、実行結果、実行にかかった時間(ミリ秒)が表示されています。
詳細を確認したいシステムコールを選択してEnterキーを押すと、画面に表示されていた情報に加え、スタックトレースを確認することができます。
F2キーを押すと、各項目ごとにシステムコールを並べ替えることができます。
F3キーでは、プロセスIDやプロセス名などでシステムコールを検索することが可能。検索画面でF3を押すと次の項目へ進むことができます。
表示するシステムコールをフィルターするには、F4キーを押してフィルターしたいプロセス名などを入力します。
F6キーを押すとProcMonが集めたシステムコールデータをダンプすることが可能。PcomMon起動時に「-f」オプションとともにファイルを指定すると、ダンプしたデータを読み取ることができます。
F8キーはシステムコールの統計情報を表示するのに使用します。統計情報の画面では、システムコールごとの回数および合計時間を確認することが可能。
ProcMonを終了するにはF9キーを押せばOK。まだプレビュー版のためか、一部グラフィックが乱れたり動作が重たくなったりする場面がありましたが、システムコールを中心にLinuxシステムを監視したい場面では役に立ちそうなツールでした。
・関連記事
無料でiPhoneやiPad上でコマンドやプログラムを実行できるターミナルアプリ「a-shell」 - GIGAZINE
コマンド一発でウェブサイトのアクセスログをターミナルやウェブブラウザで可視化できる「GoAccess」レビュー - GIGAZINE
ウィンドウサイズに合わせて表示される情報も変わるオープンソースのネットワーク監視ツール「bandwhich」を使ってみた - GIGAZINE
Microsoftの無料コマンドラインアプリ「Windows Terminal」がブラウン管ライクな見た目に変身可能に - GIGAZINE
無料&オープンソースで大規模なネットワークを常時グラフィカルに監視できる「Moloch」 - GIGAZINE
・関連コンテンツ