A comprehensive Go-based network profiler that measures per-process and per-interface bandwidth usage with real-time visualization.
- 📊 Real-time bandwidth monitoring - Track network usage as it happens
- 🖥️ Terminal charts - Beautiful ASCII charts in your terminal
- 🌐 Web UI - Modern web interface with interactive charts
- 🔌 Per-interface tracking - Monitor each network interface separately
- ⚡ Per-process monitoring - See which processes are using bandwidth (Linux)
- 📈 Historical summaries - View statistics over time
- 🚀 Platform-specific adapters - Optimized for different operating systems
git clone https://github.com/BaseMax/go-net-profiler.git
cd go-net-profiler
go build -o profiler ./cmd/profilergo install github.com/BaseMax/go-net-profiler/cmd/profiler@latestStart the profiler with default settings (terminal display):
./profilerStart with web interface on port 8080:
./profiler -web=8080Then open http://localhost:8080 in your browser.
Update statistics every 2 seconds:
./profiler -interval=2sDisplay a summary of collected data:
./profiler -summary-interval duration Update interval for statistics collection (default 1s)
-history int Maximum number of historical data points (default 300)
-web int Port for web UI (0 to disable, default 0)
-terminal Enable terminal display (default true)
-summary Show summary and exit (default false)
./profiler -web=8080 -interval=1s./profiler -web=8080 -terminal=false./profiler -interval=500ms -history=600- Linux: Full support including per-process statistics via
/procfilesystem - macOS/Windows: Basic interface statistics (per-process support limited)
The terminal interface shows:
- Overall bandwidth (download/upload speeds)
- Real-time ASCII bandwidth chart
- Per-interface statistics with mini bar charts
- Top 10 processes by bandwidth usage
- Historical summary on exit
The web interface provides:
- Real-time bandwidth dashboard
- Interactive Chart.js graphs
- Network interface table
- Top processes table
- Auto-refresh every 5 seconds
The project is organized into several packages:
stats/- Platform-specific network statistics collectionmonitor/- Bandwidth tracking and historical data managementdisplay/- Terminal visualizationweb/- HTTP server with embedded static assetscmd/profiler/- Main application entry point
- Go 1.21 or later (for embed directive and other features)
- Linux for per-process monitoring (other platforms support interface monitoring)
MIT License - see LICENSE file for details
Contributions are welcome! Please feel free to submit a Pull Request.
BaseMax