Voltar às atualizações
New releaseAug 15, 2026

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.

Compartilhar

Monitor de Rede

Demonstração do Network Monitor no GNOME Desktop no Linux

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.

rust dependency status

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

  1. Clone o repositório:
git clone <repository-url>
cd network-monitor
  1. Instale localmente (não requer sudo):
./scripts/install.sh
  1. 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

  1. Clone o repositório:
git clone <repository-url>
cd network-monitor
  1. 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

  1. Clone o repositório:
git clone <repository-url>
cd network-monitor
  1. 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)

nmt tui of network-monitor

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 aplicativo
  • r - Atualizar as conexões manualmente
  • a - Alternar atualização automática (intervalos de 2 segundos)
  • ↑/↓ - Navegar pelas conexões
  • ←/→ - Rolar a tabela horizontalmente
  • 1-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 *:*ANY
  • 127.0.0.1:* ou [::1]:*LOCALHOST
  • 224.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]/io para 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

Packaging status

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.

Categorias