レビュー

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!

Want to better understand the activity on your system to identify abnormal behavior? https://t.co/3RSdwUQ2IN@Sysinternals @markrussinovich

— Mario Hewardt (@MarioHewardt)


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システムを監視したい場面では役に立ちそうなツールでした。

この記事のタイトルとURLをコピーする

・関連記事
無料でiPhoneやiPad上でコマンドやプログラムを実行できるターミナルアプリ「a-shell」 - GIGAZINE

コマンド一発でウェブサイトのアクセスログをターミナルやウェブブラウザで可視化できる「GoAccess」レビュー - GIGAZINE

ウィンドウサイズに合わせて表示される情報も変わるオープンソースのネットワーク監視ツール「bandwhich」を使ってみた - GIGAZINE

Microsoftの無料コマンドラインアプリ「Windows Terminal」がブラウン管ライクな見た目に変身可能に - GIGAZINE

無料&オープンソースで大規模なネットワークを常時グラフィカルに監視できる「Moloch」 - GIGAZINE

in レビュー,   ソフトウェア, Posted by darkhorse_log

You can read the machine translated English article here.