ICMP + TCP probes
Per-target ping and connect probes on independent threads. Catch issues that ICMP alone misses — DNS soft-failure, port-blocked upstreams.
FTS Net Mon continuously probes your router, ISP gateways, DNS, and an upstream public host over ICMP and TCP. It tracks loss, latency and jitter, and surfaces it all through a fast local web UI — so when the internet feels weird, you know exactly which hop is misbehaving.
Built for home-office and small-business networks where a flaky link is invisible until something important breaks.
Per-target ping and connect probes on independent threads. Catch issues that ICMP alone misses — DNS soft-failure, port-blocked upstreams.
Targets are grouped LAN / ISP1 / ISP2 with per-group health. One glance tells you which side is broken.
Loss %, recent loss %, avg / min / max latency, jitter — all updated live. Sparklines per target, full chart for everything together.
State transitions only — first fail, sustained DOWN after 3 strikes, recovery. No alarm fatigue from a single dropped packet.
First-run wizard pre-fills router IP and DNS from your active interface. Confirm and you're monitoring in seconds.
No pip install. Just Python 3.10+. The optional Tk GUI ships with CPython on Windows and macOS.
Every panel is backed by a documented endpoint. Plug into Prometheus, a custom dashboard, or your own tooling.
Defaults to 127.0.0.1 — no telemetry, no cloud, no accounts. Your network data stays on your machine.
The web UI auto-opens in your browser when you start the server.
Three commands. No virtualenv. No package install.
git clone https://github.com/MuchDevSuchCode/FTS-Network-Monitor.git
cd FTS-Network-Monitor
python fts_netmon.py
A browser tab opens at http://127.0.0.1:8765. The first-run wizard pre-fills your router and DNS from the active interface.
python fts_netmon.py --gui # native Tk window too
python fts_netmon.py --bind 0.0.0.0 # expose on the LAN (read security notes!)
python fts_netmon.py --port 9090 # custom port
127.0.0.1 unless you've put it behind something that does authentication, or you're only exposing it to a network you fully trust.
Every UI surface is a documented endpoint. Bring your own dashboard.
| Method | Path | Purpose |
|---|---|---|
| GET | /api/status | Per-target stats, samples, group health rollup |
| GET | /api/config | Current configuration as JSON |
| POST | /api/config | Update configuration; restarts probes atomically |
| GET | /api/events?since=<seq> | Event log entries newer than seq |
| GET | /api/events/export | Full event log as a downloadable text file |
| GET | /api/netinfo?refresh=1 | Local interfaces, gateway, DNS, MAC, DHCP |
| GET | /api/setup/suggest | Suggested config based on the active interface |
curl -X POST http://127.0.0.1:8765/api/config \
-H 'Content-Type: application/json' \
-d '{"isp2_gateway": "10.0.2.1", "probe_interval": 0.5}'
A small core, one thread per probe, two read-only consumers.
pingsocketDrop FTS Net Mon onto any machine on your network and start watching the path that matters.