Zurück zu den Updates
New releaseJul 27, 2026

network-monitor v0.7.4

Ein Echtzeit-Tool zur Überwachung von Netzwerkverbindungen, entwickelt mit Rust und GTK4, das aktive Verbindungen mit Live-I/O-Statistiken in einer modernen grafischen Oberfläche anzeigt.

Teilen

Netzwerk-Monitor

Netzwerk-Monitor-Demo auf dem GNOME-Desktop unter Linux

Ein Echtzeit-Überwachungstool für Netzwerkverbindungen, entwickelt mit Rust und GTK4, das aktive Verbindungen mit Live-I/O-Statistiken in einer modernen grafischen Oberfläche anzeigt.

rust dependency status

Funktionen

  • Echtzeit-Überwachung: Überwacht kontinuierlich aktive Netzwerkverbindungen
  • I/O-Statistiken: Zeigt Live-Upload-/Download-Raten für jede Verbindung an
  • Prozessidentifikation: Zeigt das Programm und die PID an, die jeder Verbindung zugeordnet sind
  • Prozessaktionen: Rechtsklick auf eine Zeile, um ihren Wert/Befehl zu kopieren oder den Prozess zu beenden, der die Verbindung besitzt (Terminate oder Force Kill, mit Bestätigung)
  • Persistente Auswahl: Die ausgewählte Zeile behält ihre Hervorhebung über Aktualisierungen hinweg und wird im Statusstreifen angezeigt
  • Moderne GTK4-Oberfläche: Saubere, reaktionsschnelle grafische Oberfläche mit Libadwaita-Styling
  • Terminal-Oberfläche (TUI): Interaktive Terminal-Oberfläche mit denselben Überwachungsfunktionen
  • Adressauflösung: Vereinfacht gängige Adressen (localhost, any, mDNS)
  • Verbindungsfilterung: Filtert localhost-Verbindungen für eine übersichtlichere Ausgabe heraus
  • GNOME-Integration: Ordnungsgemäße WM-Klassen-Unterstützung für Dock-Anheftung und Desktop-Integration
  • Duale Installation: Unterstützt sowohl benutzerlokale als auch systemweite Installation
  • Robuste Fehlerbehandlung: Umfassende Fehlerwiederherstellung mit klarer Einrichtungsanleitung
  • Leistungsoptimiert: Prozess-Caching und Layout-Caching für verbesserte Reaktionsfähigkeit

Anforderungen

  • Rust 1.70+ (2021 Edition)
  • GTK4-Entwicklungsbibliotheken
  • Libadwaita-Entwicklungsbibliotheken
  • Linux-System mit /proc-Dateisystem
  • Linux 5.8+ (für eBPF-Granulare Fähigkeiten)
  • Nightly Rust und bpf-linker (für eBPF-Kompilierung)

Installation unter Ubuntu/Debian:

sudo apt update
sudo apt install libgtk-4-dev libadwaita-1-dev

Installation unter Fedora:

sudo dnf install gtk4-devel libadwaita-devel

Installation

Methode 1: Aus dem Quellcode mit Desktop-Integration installieren

  1. Repository klonen:
git clone <repository-url>
cd network-monitor
  1. Lokal installieren (kein sudo erforderlich):
./scripts/install.sh
  1. Oder systemweit installieren (erfordert sudo):
sudo ./scripts/install.sh

Das Installationsskript wird:

  • Beide Binärdateien (GTK4 und TUI) erstellen (Debug für lokal, Release für systemweit)
  • Binärdateien nach ~/.local/bin/ (lokal) oder /usr/local/bin/ (systemweit) installieren
  • Desktop-Datei mit ordnungsgemäßer WM-Klasse für GNOME-Dock-Anheftung installieren
  • Symbole in die entsprechenden Symbolverzeichnisse installieren
  • Symbol-Cache und Desktop-Datenbank aktualisieren
  • Sicherstellen, dass die Anwendung an das GNOME-Dock/Dashboard angeheftet werden kann

Methode 2: Direkt erstellen und ausführen

  1. Repository klonen:
git clone <repository-url>
cd network-monitor
  1. Erstellen und ausführen:
cargo run

Oder im Release-Modus erstellen:

cargo build --release
./target/release/network-monitor

Methode 3: TUI-Version erstellen und ausführen

  1. Repository klonen:
git clone <repository-url>
cd network-monitor
  1. TUI erstellen und ausführen:
cargo build --bin nmt
./target/debug/nmt

Oder im Release-Modus erstellen:

cargo build --release --bin nmt
./target/release/nmt

Deinstallation

Installierte Version entfernen

Lokale Installation entfernen:

./scripts/uninstall.sh

Systemweite Entfernung (erfordert sudo):

sudo ./scripts/uninstall.sh

Das Deinstallationsskript entfernt die Binärdatei, die Desktop-Datei und die Symbole aus den entsprechenden Verzeichnissen und aktualisiert alle relevanten Caches.

Verwendung

GTK4-Grafische Oberfläche

Starten Sie die Netzwerk-Monitor-Anwendung:

cargo run

Die Anwendung öffnet ein GTK4-Fenster, das Folgendes anzeigt:

  • Process(ID): Prozessname und PID mit präziser Socket-zu-Prozess-Zuordnung
  • Protocol: TCP/UDP-Protokoll
  • Source: Lokaler Endpunkt (in lesbares Format aufgelöst)
  • Destination: Remote-Endpunkt (in lesbares Format aufgelöst)
  • Status: Verbindungszustand (ESTABLISHED, LISTEN, usw.)
  • TX: Upload-Rate, berechnet aus Prozess-I/O-Statistiken
  • RX: Download-Rate, berechnet aus Prozess-I/O-Statistiken
  • Path: Vollständiger Befehlspfad und Argumente aus /proc/[pid]/cmdline

Zeilenaktionen

  • Linksklick: Eine Zeile auswählen (wird auch im unteren Streifen angezeigt)
  • Rechtsklick: Das Kontextmenü mit Copy Value, Copy Command und Kill "process" (PID) öffnen, das fragt, ob Terminate (SIGTERM) oder Force Kill (SIGKILL) ausgeführt werden soll
  • Delete: Die aktuell ausgewählte Zeile beenden (gleicher Bestätigungsdialog)
  • Ctrl+C: Den Zelleninhalt kopieren
  • Refresh-Button in der Kopfleiste: Sofort aktualisieren (die Liste wird auch alle 3 Sekunden aktualisiert)

Terminal-Oberfläche (TUI)

nmt tui of network-monitor

Starten Sie die Terminal-Oberfläche:

cargo run --bin nmt

Die TUI bietet dieselben Überwachungsfunktionen in einer interaktiven Terminal-Oberfläche:

Tastensteuerung:

  • q - Anwendung beenden
  • r - Hostnamen-Auflösung umschalten
  • R - Verbindungen manuell aktualisieren
  • a - Automatische Aktualisierung umschalten (2-Sekunden-Intervalle)
  • ↑/↓ - Durch Verbindungen navigieren
  • ←/→ - Tabelle horizontal scrollen
  • k / Rechtsklick - Kill-Menü für eine Zeile öffnen (Terminate / Force Kill / Cancel)
  • 1-8 - Nach Spalten sortieren (Process(ID), Protocol, Source, Destination, Status, TX, RX, Path)

Maus: Linksklick wählt eine Zeile aus, Rechtsklick wählt sie aus und öffnet das Kill-Menü.

Funktionen:

  • Echtzeit-Verbindungsüberwachung mit automatischer Aktualisierung
  • Sortierbare Spalten mit visuellen Indikatoren
  • Horizontales Scrollen für breite Tabellen
  • Intelligente Spaltengrößenanpassung - die letzte Spalte erhält die volle verbleibende Breite
  • Farbcodierte Protokolle (TCP/TCP6 in Grün, UDP/UDP6 in Gelb)
  • Hervorhebung aktiver Verbindungen
  • Prozess- und PID-Informationen
  • Live-I/O-Ratenanzeige
  • Gleiche Spaltenreihenfolge wie die GTK4-Version für Konsistenz

Adressauflösung

Gängige Adressen werden zur besseren Lesbarkeit vereinfacht:

  • 0.0.0.0:* oder *:* → ANY
  • 127.0.0.1:* oder [::1]:* → LOCALHOST
  • 224.0.0.251:* → MDNS

Funktionsweise

eBPF-Backend (ereignisgesteuert)

Die App verwendet Kernel-Level-kprobes (tcp_v4_connect, tcp_v6_connect, tcp_close, inet_csk_accept) anstelle von Polling auf /proc/net. Dies bietet:

  • Ereignisgesteuert: Sub-Millisekunden-Ereignisbereitstellung, kein Polling-Overhead (~1-3% CPU)
  • Direkte PID: Erfasst am Probe-Punkt über bpf_get_current_pid_tgid(), kein Inode-Scanning
  • Kurzlebige Verbindungen: Werden zwischen Poll-Intervallen nie verpasst

eBPF-Modus

Das eBPF-Backend bietet ereignisgesteuerte Verbindungsüberwachung mit geringerem Overhead und Echtzeit- Ereignissen im Vergleich zum standardmäßigen /proc/net-Polling-Ansatz. Es kann kurzlebige Verbindungen erfassen, die beim Polling möglicherweise verpasst werden.

Kategorien