
network-monitor v0.7.5
Uma ferramenta de monitoramento de conexões de rede em tempo real construída com Rust e GTK4, exibindo conexões ativas com estatísticas de I/O ao vivo em uma interface gráfica moderna.
Monitor de Rede

Uma ferramenta de monitoramento de conexões de rede em tempo real criada com Rust e GTK4, exibindo conexões ativas com estatísticas de E/S ao vivo em uma interface gráfica moderna.
Recursos
- Monitoramento em tempo real: monitora continuamente as conexões de rede ativas
- Estatísticas de E/S: mostra taxas de upload/download ao vivo para cada conexão
- Identificação de processos: exibe o programa e o PID associados a cada conexão
- Interface GTK4 moderna: interface gráfica limpa e responsiva com estilo Libadwaita
- Interface de terminal (TUI): interface interativa de terminal com os mesmos recursos de monitoramento
- Resolução de endereços: simplifica endereços comuns (localhost, any, mDNS)
- Filtro de conexões: filtra conexões localhost para uma saída mais limpa
- Integração com GNOME: suporte adequado à classe WM para fixação no dock e integração com o ambiente de trabalho
- Instalação dupla: suporta instalação local do usuário e em todo o sistema
- Tratamento robusto de erros: recuperação abrangente de erros com orientações claras de configuração
- Desempenho otimizado: cache de processos e cache de layout para melhor responsividade
Requisitos
- Rust 1.70+ (edição 2021)
- Bibliotecas de desenvolvimento do GTK4
- Bibliotecas de desenvolvimento do Libadwaita
- Sistema Linux com sistema de arquivos
/proc - Linux 5.8+ (para capacidades granulares de eBPF)
- Rust Nightly e
bpf-linker(para compilação eBPF)
Instalação no Ubuntu/Debian:
sudo apt update
sudo apt install libgtk-4-dev libadwaita-1-dev
Instalação no Fedora:
sudo dnf install gtk4-devel libadwaita-devel
Instalação
Método 1: Instalar a partir do código-fonte com integração ao ambiente de trabalho
- Clone o repositório:
git clone <repository-url>
cd network-monitor
- Instale localmente (não requer sudo):
./scripts/install.sh
- Ou instale em todo o sistema (requer sudo):
sudo ./scripts/install.sh
O script de instalação irá:
- Compilar os binários GTK4 e TUI (debug para local, release para todo o sistema)
- Instalar os binários em
~/.local/bin/(local) ou/usr/local/bin/(todo o sistema) - Instalar o arquivo desktop com a classe WM adequada para fixação no dock do GNOME
- Instalar os ícones nos diretórios de ícones apropriados
- Atualizar o cache de ícones e o banco de dados do desktop
- Garantir que o aplicativo possa ser fixado no dock/dashboard do GNOME
Método 2: Compilar e executar diretamente
- Clone o repositório:
git clone <repository-url>
cd network-monitor
- Compile e execute:
cargo run
Ou compile em modo release:
cargo build --release
./target/release/network-monitor
Método 3: Compilar e executar a versão TUI
- Clone o repositório:
git clone <repository-url>
cd network-monitor
- Compile e execute a TUI:
cargo build --bin nmt
./target/debug/nmt
Ou compile em modo release:
cargo build --release --bin nmt
./target/release/nmt
Desinstalação
Remover a versão instalada
Remoção da instalação local:
./scripts/uninstall.sh
Remoção em todo o sistema (requer sudo):
sudo ./scripts/uninstall.sh
O script de desinstalação removerá o binário, o arquivo desktop e os ícones dos locais apropriados e atualizará todos os caches relevantes.
Uso
Interface Gráfica GTK4
Inicie o aplicativo de monitoramento de rede:
cargo run
O aplicativo abrirá uma janela GTK4 exibindo:
- Process(ID): nome do processo e PID com mapeamento preciso de socket para processo
- Protocol: protocolo TCP/UDP
- Source: endpoint local (resolvido para formato legível)
- Destination: endpoint remoto (resolvido para formato legível)
- Status: estado da conexão (ESTABLISHED, LISTEN, etc.)
- TX: taxa de upload calculada a partir das estatísticas de E/S do processo
- RX: taxa de download calculada a partir das estatísticas de E/S do processo
- Path: caminho completo do comando e argumentos de
/proc/[pid]/cmdline
Interface de Terminal (TUI)

Inicie a interface de terminal:
cargo run --bin nmt
A TUI oferece os mesmos recursos de monitoramento em uma interface de terminal interativa:
Controles principais:
q- Sair do aplicativor- Atualizar as conexões manualmentea- Alternar atualização automática (intervalos de 2 segundos)↑/↓- Navegar pelas conexões←/→- Rolar a tabela horizontalmente1-8- Ordenar por colunas (Process(ID), Protocol, Source, Destination, Status, TX, RX, Path)
Recursos:
- Monitoramento de conexões em tempo real com atualização automática
- Colunas ordenáveis com indicadores visuais
- Rolagem horizontal para tabelas largas
- Dimensionamento inteligente de colunas - a última coluna recebe toda a largura restante
- Protocolos com código de cores (TCP/TCP6 em verde, UDP/UDP6 em amarelo)
- Destaque de conexão ativa
- Informações de processo e PID
- Exibição da taxa de E/S ao vivo
- Mesma ordem de colunas da versão GTK4 para consistência
Resolução de Endereços
Endereços comuns são simplificados para facilitar a leitura:
0.0.0.0:*ou*:*→ANY127.0.0.1:*ou[::1]:*→LOCALHOST224.0.0.251:*→MDNS
Como Funciona
Backend eBPF (orientado a eventos)
O aplicativo usa kprobes em nível de kernel (tcp_v4_connect, tcp_v6_connect, tcp_close,
inet_csk_accept) em vez de fazer polling em /proc/net. Isso fornece:
- Orientado a eventos: entrega de eventos em sub-milissegundos, sem sobrecarga de polling (~1-3% de CPU)
- PID direto: capturado no ponto de sondagem via
bpf_get_current_pid_tgid(), sem varredura de inodes - Conexões de curta duração: nunca perdidas entre intervalos de polling
Modo eBPF
O backend eBPF fornece monitoramento de conexões orientado a eventos com menor sobrecarga e eventos
em tempo real, em comparação com a abordagem padrão de polling em /proc/net. Ele pode capturar conexões
de curta duração que o polling pode perder.
Pré-requisitos:
rustup toolchain install nightly
cargo install bpf-linker
Compilar e executar:
cargo build
Executar como usuário normal (kernel 5.8+ necessário):
Conceda as capacidades Linux necessárias ao binário uma vez:
sudo setcap cap_bpf,cap_net_admin,cap_perfmon+ep target/debug/network-monitor
./target/debug/network-monitor
Ou para a versão TUI:
sudo setcap cap_bpf,cap_net_admin,cap_perfmon+ep target/debug/nmt
./target/debug/nmt
Para builds release, ajuste o caminho de acordo:
sudo setcap cap_bpf,cap_net_admin,cap_perfmon+ep target/release/network-monitor
O aplicativo sairá com uma mensagem de configuração se o eBPF não estiver disponível (capacidades ausentes ou kernel não suportado).
Arquitetura
- GTK4: framework GUI moderno e multiplataforma
- Libadwaita: componentes de interface no estilo GNOME
- Tokio: runtime assíncrono para operações concorrentes
- Aya + eBPF: rastreamento de conexões em nível de kernel com kprobes para eventos em tempo real
- PID direto: identificação de processos via
bpf_get_current_pid_tgid()no ponto de sondagem - Chamadas de sistema: leitura direta de
/proc/[pid]/iopara estatísticas de E/S - Tratamento de erros: tipos de erro abrangentes com recuperação elegante usando
thiserror - Cache de desempenho: cache de layout da interface para desempenho ideal
Pacotes Linux
Doações
Se você acha este projeto útil, considere fazer uma doação para apoiar seu desenvolvimento.
- Monero:
88LyqYXn4LdCVDtPWKuton9hJwbo8ZduNEGuARHGdeSJ79BBYWGpMQR8VGWxGDKtTLLM6E9MJm8RvW9VMUgCcSXu19L9FSv - Bitcoin:
bc1q6mh77hfv8x8pa0clzskw6ndysujmr78j6se025
Licença
Este projeto é open source. Consulte o arquivo LICENSE para obter detalhes.