Volver a actualizaciones
Nuevo releaseJul 27, 2026

network-monitor v0.7.1

Una herramienta de monitoreo de conexiones de red en tiempo real construida con Rust y GTK4, que muestra conexiones activas con estadísticas de I/O en vivo en una interfaz gráfica moderna.

Compartir

Network Monitor

Demostración de Network Monitor en el escritorio GNOME en Linux

Una herramienta de monitoreo de conexiones de red en tiempo real construida con Rust y GTK4, que muestra las conexiones activas con estadísticas de E/S en vivo en una interfaz gráfica moderna.

rust dependency status

Características

  • Monitoreo en tiempo real: Monitorea continuamente las conexiones de red activas
  • Estadísticas de E/S: Muestra las tasas de subida/bajada en vivo para cada conexión
  • Identificación de procesos: Muestra el programa y el PID asociados a cada conexión
  • Acciones sobre procesos: Haz clic derecho en una fila para copiar su valor/comando o para matar el proceso que posee la conexión (Terminar o Forzar Cierre, con confirmación)
  • Selección persistente: La fila seleccionada mantiene su resaltado entre actualizaciones y se muestra en la franja de estado
  • Interfaz moderna GTK4: Interfaz gráfica limpia y responsiva con estilo Libadwaita
  • Interfaz de terminal (TUI): Interfaz de terminal interactiva con las mismas capacidades de monitoreo
  • Resolución de direcciones: Simplifica direcciones comunes (localhost, any, mDNS)
  • Filtrado de conexiones: Filtra las conexiones localhost para una salida más limpia
  • Integración con GNOME: Soporte adecuado de clase WM para anclar en el dock e integración con el escritorio
  • Instalación dual: Soporta tanto la instalación local para el usuario como la instalación en todo el sistema
  • Manejo robusto de errores: Recuperación integral de errores con guía de configuración clara
  • Rendimiento optimizado: Caché de procesos y caché de diseño para mejorar la capacidad de respuesta

Requisitos

  • Rust 1.70+ (edición 2021)
  • Bibliotecas de desarrollo de GTK4
  • Bibliotecas de desarrollo de Libadwaita
  • Sistema Linux con sistema de archivos /proc
  • Linux 5.8+ (para capacidades granulares de eBPF)
  • Rust nightly y bpf-linker (para la compilación de eBPF)

Instalación en Ubuntu/Debian:

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

Instalación en Fedora:

sudo dnf install gtk4-devel libadwaita-devel

Instalación

Método 1: Instalar desde el código fuente con integración con el escritorio

  1. Clona el repositorio:
git clone <repository-url>
cd network-monitor
  1. Instala localmente (no se requiere sudo):
./scripts/install.sh
  1. O instala en todo el sistema (requiere sudo):
sudo ./scripts/install.sh

El script de instalación hará lo siguiente:

  • Compilará los binarios de GTK4 y TUI (debug para local, release para todo el sistema)
  • Instalará los binarios en ~/.local/bin/ (local) o /usr/local/bin/ (todo el sistema)
  • Instalará el archivo desktop con la clase WM adecuada para anclar en el dock de GNOME
  • Instalará los iconos en los directorios de iconos correspondientes
  • Actualizará la caché de iconos y la base de datos de escritorio
  • Asegurará que la aplicación se pueda anclar al dock/panel de GNOME

Método 2: Compilar y ejecutar directamente

  1. Clona el repositorio:
git clone <repository-url>
cd network-monitor
  1. Compila y ejecuta:
cargo run

O compila en modo release:

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

Método 3: Compilar y ejecutar la versión TUI

  1. Clona el repositorio:
git clone <repository-url>
cd network-monitor
  1. Compila y ejecuta la TUI:
cargo build --bin nmt
./target/debug/nmt

O compila en modo release:

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

Desinstalación

Eliminar la versión instalada

Eliminación de la instalación local:

./scripts/uninstall.sh

Eliminación en todo el sistema (requiere sudo):

sudo ./scripts/uninstall.sh

El script de desinstalación eliminará el binario, el archivo desktop y los iconos de las ubicaciones correspondientes y actualizará todas las cachés relevantes.

Uso

Interfaz gráfica GTK4

Inicia la aplicación de monitoreo de red:

cargo run

La aplicación abrirá una ventana GTK4 que muestra:

  • Process(ID): Nombre del proceso y PID con un mapeo preciso de socket a proceso
  • Protocol: Protocolo TCP/UDP
  • Source: Endpoint local (resuelto a un formato legible)
  • Destination: Endpoint remoto (resuelto a un formato legible)
  • Status: Estado de la conexión (ESTABLISHED, LISTEN, etc.)
  • TX: Tasa de subida calculada a partir de las estadísticas de E/S del proceso
  • RX: Tasa de bajada calculada a partir de las estadísticas de E/S del proceso
  • Path: Ruta completa del comando y argumentos desde /proc/[pid]/cmdline

Acciones de fila

  • Clic izquierdo: selecciona una fila (también se muestra en la franja inferior)
  • Clic derecho: abre el menú contextual con Copy Value, Copy Command y Kill "process" (PID), que pregunta si se desea Terminar (SIGTERM) o Forzar Cierre (SIGKILL)
  • Delete: mata la fila actualmente seleccionada (mismo diálogo de confirmación)
  • Ctrl+C: copia el contenido de la celda
  • Botón Refresh en la barra de encabezado: actualiza inmediatamente (la lista también se actualiza cada 3s)

Interfaz de terminal (TUI)

nmt tui de network-monitor

Inicia la interfaz de terminal:

cargo run --bin nmt

La TUI proporciona las mismas capacidades de monitoreo en una interfaz de terminal interactiva:

Controles de teclado:

  • q - Salir de la aplicación
  • r - Alternar la resolución de nombres de host
  • R - Actualizar las conexiones manualmente
  • a - Alternar la actualización automática (intervalos de 2 segundos)
  • ↑/↓ - Navegar por las conexiones
  • ←/→ - Desplazar la tabla horizontalmente
  • k / clic derecho - Abrir el menú de matar para una fila (Terminar / Forzar Cierre / Cancelar)
  • 1-8 - Ordenar por columnas (Process(ID), Protocol, Source, Destination, Status, TX, RX, Path)

Ratón: el clic izquierdo selecciona una fila, el clic derecho la selecciona y abre el menú de matar.

Características:

  • Monitoreo de conexiones en tiempo real con actualización automática
  • Columnas ordenables con indicadores visuales
  • Desplazamiento horizontal para tablas anchas
  • Dimensionamiento inteligente de columnas - la última columna ocupa todo el ancho restante
  • Protocolos codificados por colores (TCP/TCP6 en verde, UDP/UDP6 en amarillo)
  • Resaltado de la conexión activa
  • Información de proceso y PID
  • Visualización de la tasa de E/S en vivo
  • Mismo orden de columnas que la versión GTK4 para mantener la consistencia

Resolución de direcciones

Las direcciones comunes se simplifican para facilitar la lectura:

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

Cómo funciona

Backend eBPF (basado en eventos)

La aplicación utiliza kprobes a nivel del kernel (tcp_v4_connect, tcp_v6_connect, tcp_close, inet_csk_accept) en lugar de hacer polling sobre /proc/net. Esto proporciona:

  • Basado en eventos: Entrega de eventos en menos de un milisegundo, sin sobrecarga de polling (~1-3% de CPU)
  • PID directo: Capturado en el punto de la sonda mediante bpf_get_current_pid_tgid(), sin escaneo de inodos
  • Conexiones de corta duración: Nunca se pierden entre intervalos de polling

Modo eBPF

Categorías