Voltar às atualizações
New releaseJul 27, 2026

network-monitor v0.7.4

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

Network Monitor

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

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 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
  • Ações de processo: Clique com o botão direito em uma linha para copiar seu valor/comando ou para encerrar o processo que possui a conexão (Terminate ou Force Kill, com confirmação)
  • Seleção persistente: A linha selecionada mantém seu destaque entre atualizações e é exibida na faixa de status
  • Interface GTK4 moderna: Interface gráfica limpa e responsiva com estilo Libadwaita
  • Interface de Terminal (TUI): Interface de terminal interativa com os mesmos recursos de monitoramento
  • Resolução de endereços: Simplifica endereços comuns (localhost, any, mDNS)
  • Filtragem 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 desktop
  • 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 GTK4
  • Bibliotecas de desenvolvimento 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 desktop

  1. Clone o repositório:
git clone <repository-url>
cd network-monitor
  1. Instale localmente (sem necessidade de 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 í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

Ações de linha

  • Clique esquerdo: seleciona uma linha (também exibida na faixa inferior)
  • Clique direito: abre o menu de contexto com Copy Value, Copy Command e Kill "process" (PID), que pergunta se deve Terminate (SIGTERM) ou Force Kill (SIGKILL)
  • Delete: encerra a linha atualmente selecionada (mesmo diálogo de confirmação)
  • Ctrl+C: copia o conteúdo da célula
  • Botão Refresh na barra de cabeçalho: atualiza imediatamente (a lista também é atualizada a cada 3s)

Interface de Terminal (TUI)

nmt tui do network-monitor

Inicie a interface de terminal:

cargo run --bin nmt

A TUI fornece os mesmos recursos de monitoramento em uma interface de terminal interativa:

Controles de Teclado:

  • q - Sair do aplicativo
  • r - Alternar resolução de hostname
  • R - Atualizar conexões manualmente
  • a - Alternar atualização automática (intervalos de 2 segundos)
  • ↑/↓ - Navegar pelas conexões
  • ←/→ - Rolar a tabela horizontalmente
  • k / clique direito - Abrir o menu de encerramento para uma linha (Terminate / Force Kill / Cancel)
  • 1-8 - Ordenar por colunas (Process(ID), Protocol, Source, Destination, Status, TX, RX, Path)

Mouse: clique esquerdo seleciona uma linha, clique direito a seleciona e abre o menu de encerramento.

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 de 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 legibilidade:

  • 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 polling em /proc/net. Isso proporciona:

  • Orientado a eventos: Entrega de eventos em menos de um milissegundo, sem sobrecarga de polling (~1-3% de CPU)
  • PID direto: Capturado no ponto de probe via bpf_get_current_pid_tgid(), sem varredura de inode
  • 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

Categorias