
network-monitor v0.7.5
RustとGTK4で構築されたリアルタイムネットワーク接続監視ツール。モダンなグラフィカルインターフェースで、アクティブな接続とライブI/O統計を表示します。
ネットワークモニター

RustとGTK4で構築されたリアルタイムのネットワーク接続監視ツールで、アクティブな接続をライブI/O統計とともにモダンなグラフィカルインターフェースで表示します。
機能
- リアルタイム監視: アクティブなネットワーク接続を継続的に監視
- I/O統計: 各接続のライブアップロード/ダウンロードレートを表示
- プロセス識別: 各接続に関連するプログラムとPIDを表示
- プロセス操作: 行を右クリックして値/コマンドをコピー、または接続を所有するプロセスを強制終了(TerminateまたはForce Kill、確認付き)
- 選択の保持: 選択された行は更新後もハイライトを維持し、ステータスストリップに表示されます
- モダンなGTK4 UI: Libadwaitaスタイリングによるクリーンでレスポンシブなグラフィカルインターフェース
- ターミナルUI (TUI): 同じ監視機能を備えたインタラクティブなターミナルインターフェース
- アドレス解決: 一般的なアドレス(localhost、any、mDNS)を簡略化
- 接続フィルタリング: localhost接続を除外して出力をクリーンに
- GNOME統合: ドックへのピン留めとデスクトップ統合のための適切なWMクラスサポート
- デュアルインストール: ユーザーローカルとシステム全体の両方のインストールをサポート
- 堅牢なエラー処理: 明確なセットアップガイダンスを備えた包括的なエラー回復
- パフォーマンス最適化: プロセスキャッシュとレイアウトキャッシュによる応答性の向上
要件
- Rust 1.70+ (2021 edition)
- GTK4開発ライブラリ
- Libadwaita開発ライブラリ
/procファイルシステムを備えたLinuxシステム- Linux 5.8+ (eBPFの詳細なケーパビリティ用)
- Nightly Rustと
bpf-linker(eBPFコンパイル用)
Ubuntu/Debianでのインストール:
sudo apt update
sudo apt install libgtk-4-dev libadwaita-1-dev
Fedoraでのインストール:
sudo dnf install gtk4-devel libadwaita-devel
インストール
方法1: デスクトップ統合付きでソースからインストール
- リポジトリをクローン:
git clone <repository-url>
cd network-monitor
- ローカルにインストール (sudo不要):
./scripts/install.sh
- またはシステム全体にインストール (sudoが必要):
sudo ./scripts/install.sh
インストールスクリプトは以下を実行します:
- GTK4とTUIの両方のバイナリをビルド (ローカルはdebug、システム全体はrelease)
- バイナリを
~/.local/bin/(ローカル) または/usr/local/bin/(システム全体) にインストール - GNOMEドックへのピン留め用の適切なWMクラスを持つデスクトップファイルをインストール
- 適切なアイコンディレクトリにアイコンをインストール
- アイコンキャッシュとデスクトップデータベースを更新
- アプリケーションをGNOMEドック/ダッシュボードにピン留めできるようにする
方法2: 直接ビルドして実行
- リポジトリをクローン:
git clone <repository-url>
cd network-monitor
- ビルドして実行:
cargo run
またはリリースモードでビルド:
cargo build --release
./target/release/network-monitor
方法3: TUIバージョンをビルドして実行
- リポジトリをクローン:
git clone <repository-url>
cd network-monitor
- TUIをビルドして実行:
cargo build --bin nmt
./target/debug/nmt
またはリリースモードでビルド:
cargo build --release --bin nmt
./target/release/nmt
アンインストール
インストール済みバージョンの削除
ローカルインストールの削除:
./scripts/uninstall.sh
システム全体の削除 (sudoが必要):
sudo ./scripts/uninstall.sh
アンインストールスクリプトは、適切な場所からバイナリ、デスクトップファイル、アイコンを削除し、関連するすべてのキャッシュを更新します。
使用方法
GTK4グラフィカルインターフェース
ネットワークモニターアプリケーションを起動:
cargo run
アプリケーションはGTK4ウィンドウを開き、以下を表示します:
- Process(ID): 正確なソケット-プロセスマッピングによるプロセス名とPID
- Protocol: TCP/UDPプロトコル
- Source: ローカルエンドポイント (読みやすい形式に解決)
- Destination: リモートエンドポイント (読みやすい形式に解決)
- Status: 接続状態 (ESTABLISHED、LISTENなど)
- TX: プロセスI/O統計から計算されたアップロードレート
- RX: プロセスI/O統計から計算されたダウンロードレート
- Path:
/proc/[pid]/cmdlineからの完全なコマンドパスと引数
行の操作
- 左クリック: 行を選択 (下部ストリップにも表示)
- 右クリック: コンテキストメニューを開く (Copy Value、Copy Command、Kill "process" (PID))、Terminate (SIGTERM) またはForce Kill (SIGKILL) を確認
- Delete: 現在選択されている行を強制終了 (同じ確認ダイアログ)
- Ctrl+C: セルの内容をコピー
- ヘッダーバーのRefreshボタン: 即座に更新 (リストは3秒ごとにも更新されます)
ターミナルインターフェース (TUI)

ターミナルインターフェースを起動:
cargo run --bin nmt
TUIはインタラクティブなターミナルインターフェースで同じ監視機能を提供します:
キー操作:
q- アプリケーションを終了r- ホスト名解決を切り替えR- 接続を手動で更新a- 自動更新を切り替え (2秒間隔)↑/↓- 接続間を移動←/→- テーブルを水平スクロールk/ 右クリック - 行のkillメニューを開く (Terminate / Force Kill / Cancel)1-8- 列でソート (Process(ID)、Protocol、Source、Destination、Status、TX、RX、Path)
マウス: 左クリックで行を選択、右クリックで選択してkillメニューを開きます。
機能:
- 自動更新によるリアルタイム接続監視
- 視覚的インジケーター付きのソート可能な列
- ワイドテーブル用の水平スクロール
- スマートな列サイズ調整 - 最後の列が残りの幅全体を取得
- 色分けされたプロトコル (TCP/TCP6は緑、UDP/UDP6は黄色)
- アクティブな接続のハイライト
- プロセスとPID情報
- ライブI/Oレート表示
- 一貫性のためのGTK4バージョンと同じ列順序
アドレス解決
一般的なアドレスは読みやすさのために簡略化されます:
0.0.0.0:*または*:*→ANY127.0.0.1:*または[::1]:*→LOCALHOST224.0.0.251:*→MDNS
仕組み
eBPFバックエンド (イベント駆動)
アプリは/proc/netのポーリングの代わりに、カーネルレベルのkprobes (tcp_v4_connect、tcp_v6_connect、tcp_close、inet_csk_accept) を使用します。これにより以下が提供されます:
- イベント駆動: サブミリ秒のイベント配信、ポーリングオーバーヘッドなし (~1-3% CPU)
- 直接PID: プローブポイントで
bpf_get_current_pid_tgid()を介してキャプチャ、inodeスキャン不要 - 短命な接続: ポーリング間隔の間に見逃すことがない
eBPFモード
eBPFバックエンドは、デフォルトの/proc/netポーリングアプローチと比較して、低いオーバーヘッドとリアルタイムイベントを備えたイベント駆動の接続監視を提供します。ポーリングでは見逃す可能性のある短命な接続をキャプチャできます。
前提条件:
rustup toolchain install nightly
cargo install bpf-linker
ビルドと実行:
cargo build
通常ユーザーとして実行 (カーネル5.8+が必要):
バイナリに必要なLinuxケーパビリティを一度付与します:
sudo setcap cap_bpf,cap_net_admin,cap_perfmon+ep target/debug/network-monitor
./target/debug/network-monitor
またはTUIバージョンの場合:
sudo setcap cap_bpf,cap_net_admin,cap_perfmon+ep target/debug/nmt
./target/debug/nmt
リリースビルドの場合は、パスを適宜調整してください:
sudo setcap cap_bpf,cap_net_admin,cap_perfmon+ep target/release/network-monitor
eBPFが利用できない場合 (ケーパビリティの欠如またはサポートされていないカーネル)、アプリはセットアップメッセージとともに終了します。
アーキテクチャ
- GTK4: モダンなクロスプラットフォームGUIフレームワーク
- Libadwaita: GNOMEスタイルのUIコンポーネント
- Tokio: 並行操作のための非同期ランタイム
- Aya + eBPF: リアルタイムイベントのためのkprobesによるカーネルレベルの接続トレース
- 直接PID: プローブポイントでの
bpf_get_current_pid_tgid()によるプロセス識別 - システムコール: I/O統計のための
/proc/[pid]/ioの直接読み取り - エラー処理:
thiserrorを使用した優雅な回復を備えた包括的なエラー型 - パフォーマンスキャッシュ: 最適なパフォーマンスのためのUIレイアウトキャッシュ
Linuxパッケージ
寄付
このプロジェクトが役立つと思われる場合は、開発を支援するための寄付をご検討ください。
- Monero:
88LyqYXn4LdCVDtPWKuton9hJwbo8ZduNEGuARHGdeSJ79BBYWGpMQR8VGWxGDKtTLLM6E9MJm8RvW9VMUgCcSXu19L9FSv - Bitcoin:
bc1q6mh77hfv8x8pa0clzskw6ndysujmr78j6se025
ライセンス
このプロジェクトはオープンソースです。詳細はLICENSEファイルを参照してください。