Live monitoring tools

Network~4 minView script

Three interactive launchers for real-time network observation and bandwidth measurement: iftop, iptraf-ng and iperf3. Each tool is auto-installed from apt on first use, runs in the foreground, and is exited with the documented keystroke. Read-only against the host configuration — they only observe traffic.

What this does

Three interactive monitoring tools, each behind its own menu entry. The first time you launch one, the package is installed silently via apt-get. Subsequent launches start instantly. None of these tools modify the host network configuration.

When to use which

QuestionUse
Who is saturating the link right now?iftop
What protocol breakdown / packet sizes / TCP flows are flowing?iptraf-ng
How much bandwidth is actually available between two hosts?iperf3

Real-time network usage (iftop)

Live bandwidth per host pair (source ↔ destination) — like top for traffic. Shows the heaviest flows at the top, with rolling 2/10/40-second averages. Best tool for the question "why is my uplink saturated?".

12.5Kb        25.0Kb        37.5Kb        50.0Kb         62.5Kb
└─────────────┴─────────────┴─────────────┴──────────────┴──────────
proxmox.lan         => 192.168.1.50          14.2Kb  9.8Kb   7.1Kb
                    <=                        2.3Kb  1.7Kb   1.4Kb
proxmox.lan         => 1.1.1.1                0b     145b     38b
                    <=                       128b    96b      24b
─────────────────────────────────────────────────────────────────
TX:          14.2Kb       9.9Kb       7.1Kb
RX:           2.4Kb       1.8Kb       1.4Kb
TOTAL:       16.6Kb      11.7Kb       8.5Kb

Exit: press q. ProxMenux shows a reminder dialog before launching.

Useful keys inside iftop

n toggle DNS lookup, p show port numbers, P pause display, t toggle line direction (sent / received / both), 1/2/3 sort by 2s / 10s / 40s average. man iftop for the full set.

Network monitoring tool (iptraf-ng)

A menu-driven multi-mode traffic monitor. Where iftop answers "who", iptraf-ng answers "what": per-protocol byte/packet counts, TCP connection state tracking, packet size histograms and per-station LAN activity.

On launch you get a five-option menu:

ModeUse it for
IP traffic monitorLive TCP / UDP / ICMP / other-IP flow list with byte counters and connection state
General interface statsAggregate IPv4 / IPv6 / TCP / UDP / ICMP / non-IP packet counts per NIC
Detailed interface statsSame as above but for one interface, with packet size and rate detail
Statistical breakdownsPacket size distribution histogram, by TCP / UDP port
LAN station monitorPer-MAC traffic stats for the local broadcast domain

Exit: press x from any view (or Q from the main menu). ProxMenux shows a reminder dialog before launching.

Logging captures to file

Each mode offers to log captured stats to /var/log/iptraf-ng/. Useful if you need a record of a traffic spike — leave it running, log to file, review the file afterwards instead of trying to read the live screen.

Bandwidth test (iperf3)

Measures actual TCP throughput between two hosts. Unlike iftop / iptraf-ng (which observe existing traffic), iperf3 generates synthetic traffic to stress-test the link. Indispensable for answering questions like "is my 10 GbE actually doing 10 GbE?" or "is the bottleneck the NIC, the switch, or the storage?".

iperf3 is a two-host tool: one side runs as server (listens on TCP port 5201), the other runs as client (connects, sends data, prints the rate). The ProxMenux launcher asks which mode you want:

ModeBehaviourEquivalent CLI
ServerListens on TCP 5201 and prints results for each incoming test. Stops on Ctrl+C.iperf3 -s
ClientAsks for the server IP / hostname, connects, runs a default 10-second test and prints the report.iperf3 -c <target>

Typical workflow to test a 10 GbE link between two Proxmox hosts:

  1. On host A, open the Network menu → Bandwidth test (iperf3) → choose Server.
  2. On host B, open the same menu entry → choose Client → enter host A's IP.
  3. Wait 10 seconds. Compare the reported rate to the link's theoretical maximum.

Sample client output:

Connecting to host 10.0.0.10, port 5201
[  5] local 10.0.0.20 port 53994 connected to 10.0.0.10 port 5201
[ ID] Interval           Transfer     Bitrate         Retr  Cwnd
[  5]   0.00-1.00   sec  1.10 GBytes  9.45 Gbits/sec    0    1.55 MBytes
[  5]   1.00-2.00   sec  1.10 GBytes  9.45 Gbits/sec    0    1.55 MBytes
[  5]   2.00-3.00   sec  1.10 GBytes  9.45 Gbits/sec    0    1.55 MBytes
...
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bitrate         Retr
[  5]   0.00-10.00  sec  11.0 GBytes  9.45 Gbits/sec    0    sender
[  5]   0.00-10.00  sec  11.0 GBytes  9.44 Gbits/sec         receiver

iperf Done.

Useful manual flags (run from a shell)

-t 60 longer test (60s instead of default 10s), -P 4 4 parallel streams (saturates faster), -R reverse direction (server → client), -u -b 100M UDP test at 100 Mbit/s (for jitter / packet loss measurements), -p 5202 use a different port (multiple tests in parallel). man iperf3 for the full set.

Open the firewall port on the server

The server listens on TCP 5201 by default. If you run the server inside a Proxmox host with a strict firewall (datacenter or host level), allow inbound TCP 5201 from the client's IP for the duration of the test, then close it again. Same applies to nftables / iptables on bare hosts.

First launch installs the package

All three launchers check for the binary and run apt-get update -qq &amp;&amp; apt-get install -y &lt;pkg&gt; if missing. The install is silent: the menu may appear frozen for 10–30 seconds the first time. Subsequent launches start instantly.

Troubleshooting

Install hangs forever on first launch

The host has no internet or the apt repos are unreachable. Cancel with Ctrl+C, run apt-get update manually to see the actual error (DNS, repo signature, proxy …), then come back to the menu.

iperf3 client: "unable to connect to server: Connection refused"

Either the server is not running, or its firewall blocks TCP 5201. Confirm on the server: ss -tlnp | grep 5201 — should show iperf3 listening. If listening but client still fails, check the firewall path between the two hosts.

iperf3 reports way less than the expected link speed

Common causes, in order of likelihood: (1) one of the hosts is bottlenecked on CPU — try iperf3 -c &lt;target&gt; -P 4 to use multiple cores; (2) the path goes through a slower link (gigabit switch in the middle of two 10 GbE NICs); (3) MTU mismatch — check ip link show on both ends; (4) NIC offloading disabled — see the Disable NIC Offloading community script if you have an Intel e1000e card.

iftop / iptraf-ng show no traffic for a busy host

Default capture is on the first detected interface. Specify the right one explicitly from the shell: iftop -i vmbr0 or iptraf-ng -i vmbr0. The menu launcher uses the default; for non-default interfaces, run from a console.

Related