Torna agli aggiornamenti
New releaseJul 27, 2026

network-monitor v0.7.4

Uno strumento di monitoraggio delle connessioni di rete in tempo reale costruito con Rust e GTK4, che mostra le connessioni attive con statistiche I/O in tempo reale in un'interfaccia grafica moderna.

Condividi

Network Monitor

Demo di Network Monitor su GNOME Desktop su Linux

Uno strumento di monitoraggio delle connessioni di rete in tempo reale realizzato con Rust e GTK4, che visualizza le connessioni attive con statistiche I/O in tempo reale in un'interfaccia grafica moderna.

rust dependency status

Funzionalità

  • Monitoraggio in tempo reale: monitora continuamente le connessioni di rete attive
  • Statistiche I/O: mostra le velocità di upload/download in tempo reale per ogni connessione
  • Identificazione dei processi: visualizza il programma e il PID associati a ciascuna connessione
  • Azioni sui processi: fai clic con il tasto destro su una riga per copiarne il valore/comando o per terminare il processo che possiede la connessione (Terminate o Force Kill, con conferma)
  • Selezione persistente: la riga selezionata mantiene la sua evidenziazione tra i vari aggiornamenti ed è mostrata nella barra di stato
  • Interfaccia GTK4 moderna: interfaccia grafica pulita e reattiva con stile Libadwaita
  • Interfaccia terminale (TUI): interfaccia terminale interattiva con le stesse capacità di monitoraggio
  • Risoluzione degli indirizzi: semplifica gli indirizzi comuni (localhost, any, mDNS)
  • Filtro delle connessioni: filtra le connessioni localhost per un output più pulito
  • Integrazione con GNOME: supporto corretto della WM class per il pinning nel dock e l'integrazione con il desktop
  • Doppia installazione: supporta sia l'installazione locale all'utente che a livello di sistema
  • Gestione robusta degli errori: recupero completo dagli errori con chiare indicazioni di configurazione
  • Prestazioni ottimizzate: caching dei processi e del layout per una reattività migliorata

Requisiti

  • Rust 1.70+ (edizione 2021)
  • Librerie di sviluppo GTK4
  • Librerie di sviluppo Libadwaita
  • Sistema Linux con filesystem /proc
  • Linux 5.8+ (per le capacità granulari eBPF)
  • Rust nightly e bpf-linker (per la compilazione eBPF)

Installazione su Ubuntu/Debian:

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

Installazione su Fedora:

sudo dnf install gtk4-devel libadwaita-devel

Installazione

Metodo 1: Installazione dal sorgente con integrazione desktop

  1. Clona il repository:
git clone <repository-url>
cd network-monitor
  1. Installa localmente (sudo non richiesto):
./scripts/install.sh
  1. Oppure installa a livello di sistema (richiede sudo):
sudo ./scripts/install.sh

Lo script di installazione:

  • Compila sia i binari GTK4 che TUI (debug per locale, release per sistema)
  • Installa i binari in ~/.local/bin/ (locale) o /usr/local/bin/ (sistema)
  • Installa il file desktop con la WM class corretta per il pinning nel dock di GNOME
  • Installa le icone nelle directory appropriate
  • Aggiorna la cache delle icone e il database desktop
  • Assicura che l'applicazione possa essere aggiunta al dock/dashboard di GNOME

Metodo 2: Compilazione ed esecuzione diretta

  1. Clona il repository:
git clone <repository-url>
cd network-monitor
  1. Compila ed esegui:
cargo run

Oppure compila in modalità release:

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

Metodo 3: Compilazione ed esecuzione della versione TUI

  1. Clona il repository:
git clone <repository-url>
cd network-monitor
  1. Compila ed esegui la TUI:
cargo build --bin nmt
./target/debug/nmt

Oppure compila in modalità release:

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

Disinstallazione

Rimuovere la versione installata

Rimozione dell'installazione locale:

./scripts/uninstall.sh

Rimozione a livello di sistema (richiede sudo):

sudo ./scripts/uninstall.sh

Lo script di disinstallazione rimuove il binario, il file desktop e le icone dalle posizioni appropriate e aggiorna tutte le cache rilevanti.

Utilizzo

Interfaccia grafica GTK4

Avvia l'applicazione di monitoraggio della rete:

cargo run

L'applicazione aprirà una finestra GTK4 che mostra:

  • Process(ID): nome del processo e PID con una mappatura accurata socket-processo
  • Protocol: protocollo TCP/UDP
  • Source: endpoint locale (risolto in un formato leggibile)
  • Destination: endpoint remoto (risolto in un formato leggibile)
  • Status: stato della connessione (ESTABLISHED, LISTEN, ecc.)
  • TX: velocità di upload calcolata dalle statistiche I/O del processo
  • RX: velocità di download calcolata dalle statistiche I/O del processo
  • Path: percorso completo del comando e argomenti da /proc/[pid]/cmdline

Azioni sulle righe

  • Clic sinistro: seleziona una riga (mostrata anche nella barra inferiore)
  • Clic destro: apre il menu contestuale con Copy Value, Copy Command e Kill "process" (PID), che chiede se Terminate (SIGTERM) o Force Kill (SIGKILL)
  • Delete: termina la riga attualmente selezionata (stessa finestra di conferma)
  • Ctrl+C: copia il contenuto della cella
  • Pulsante Refresh nella barra dell'intestazione: aggiorna immediatamente (la lista si aggiorna anche ogni 3s)

Interfaccia terminale (TUI)

nmt tui di network-monitor

Avvia l'interfaccia terminale:

cargo run --bin nmt

La TUI fornisce le stesse capacità di monitoraggio in un'interfaccia terminale interattiva:

Controlli da tastiera:

  • q - Esce dall'applicazione
  • r - Attiva/disattiva la risoluzione dei nomi host
  • R - Aggiorna manualmente le connessioni
  • a - Attiva/disattiva l'aggiornamento automatico (intervalli di 2 secondi)
  • ↑/↓ - Naviga tra le connessioni
  • ←/→ - Scorri la tabella orizzontalmente
  • k / clic destro - Apre il menu di terminazione per una riga (Terminate / Force Kill / Cancel)
  • 1-8 - Ordina per colonne (Process(ID), Protocol, Source, Destination, Status, TX, RX, Path)

Mouse: il clic sinistro seleziona una riga, il clic destro la seleziona e apre il menu di terminazione.

Funzionalità:

  • Monitoraggio delle connessioni in tempo reale con aggiornamento automatico
  • Colonne ordinabili con indicatori visivi
  • Scorrimento orizzontale per tabelle larghe
  • Dimensionamento intelligente delle colonne - l'ultima colonna occupa tutta la larghezza rimanente
  • Protocolli con codice colore (TCP/TCP6 in verde, UDP/UDP6 in giallo)
  • Evidenziazione delle connessioni attive
  • Informazioni su processo e PID
  • Visualizzazione della velocità I/O in tempo reale
  • Stesso ordine delle colonne della versione GTK4 per coerenza

Risoluzione degli indirizzi

Gli indirizzi comuni sono semplificati per la leggibilità:

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

Come funziona

Backend eBPF (event-driven)

L'app utilizza kprobe a livello kernel (tcp_v4_connect, tcp_v6_connect, tcp_close, inet_csk_accept) invece del polling di /proc/net. Questo fornisce:

  • Event-driven: consegna degli eventi in meno di un millisecondo, nessun overhead di polling (~1-3% CPU)
  • PID diretto: catturato al punto di probe tramite bpf_get_current_pid_tgid(), nessuna scansione degli inode
  • Connessioni di breve durata: mai perse tra gli intervalli di polling

Modalità eBPF

Categorie