Ping(at)WorkNetwork PING templates, with a web GUI.
Put the targets, ping options, schedule and thresholds in a template, and run it with one click or every five minutes. Ping(at)Work shows round-trip time, loss and jitter per target, sets the status from the thresholds and notifies you when something changes. Runs on Rocky Linux 9, in VMware and in Proxmox VE, and installs from one package without internet access.
| Target | Label | Average | Loss | Status |
|---|---|---|---|---|
| 10.10.0.1 | core-osl-01 | – | – | waiting |
| 10.10.0.2 | core-osl-02 | – | – | waiting |
| 10.20.0.1 | core-drm-01 | – | – | waiting |
| 10.20.0.2 | core-drm-02 | – | – | waiting |
Ping(at)Work
1.0.0A web application for reusable ping tests. Flask behind Caddy, with a separate service that runs ping. The interface is available in English and Norwegian, in light and dark mode.
- Templates
- Targets as host names, IPv4, IPv6 or CIDR networks, with labels. The Linux
pingoptions-c -i -s -W -t -I -Qand Don't Fragment, with a command preview as you type. - Runs
- With one click or on a schedule (every 5, 15, 60 minutes or custom). All targets are pinged in parallel, and the run page refreshes itself.
- Evaluates
- Average, min/max, loss and jitter per target. Status OK, warning or critical from the template's latency and loss thresholds. History with raw output and CSV export.
- Notifies
- E-mail or webhook (Slack, Mattermost and similar) when a template changes status, including when it is OK again.
- Secures
- HTTPS through Caddy, login with lockout, CSRF protection and a strict CSP.
pingruns without a shell, with validated arguments and onlyCAP_NET_RAW.
Example templates
A template is one ping test you can run again and again. This is how you build one:
- Create a template and add the targets
One row per target, or paste a list. CIDR networks such as
10.200.0.0/28are expanded automatically. - Choose the ping options
Count, interval, size, TTL, DSCP, DF and source interface. The preview shows exactly which
pingcommands will run. - Set the schedule and thresholds
Manual or a fixed interval. Warning and critical for average latency and packet loss, and who to notify.
- Run and follow up
«Save and run» shows the result right away. The history keeps every run with its raw output.
| Template | Setup |
|---|---|
| Latency to the core routers | 20 packets at 0.2 s interval every 5 minutes. Warning at ≥ 30 ms, critical at ≥ 80 ms or ≥ 5 % loss. |
| MTU on WAN links | Packet size 1472 and Don't Fragment. Replies mean the path carries a 1500-byte MTU. |
| QoS for voice | DSCP EF (46) and a source interface with -I, to check that marked traffic gets through. |
| IPv6 next to IPv4 | IP version «Both»: each target is pinged with -4 and -6 in the same run. |
| Many customers | Paste 10.200.0.0/28 or a list from a spreadsheet, with a label per line. |
| After a change window | Run the template manually and attach the run's CSV file to the change record. |
Installation
Everything is in one offline package: the Python packages, Caddy and the systemd services. The installer verifies the checksums, creates the certificate and the first user, opens the firewall and finishes with a health check over HTTPS.
Rocky Linux 9, physical or VM
$ sha256sum -c pingforge-1.0.0-el9-x86_64.tar.gz.sha256
$ tar xzf pingforge-1.0.0-el9-x86_64.tar.gz
$ cd pingforge-1.0.0-el9-x86_64
$ sudo ./install.sh
# open https://<server>/ – user name and password are printed
Needs only Python 3.9, iputils (ping), OpenSSL and systemd, all part of Rocky Linux 9 Minimal. No pip downloads, no containers and no internet. Run install.sh again to upgrade.
VMware and Proxmox VE
# VMware: VMXNET3 · Proxmox: VirtIO + QEMU agent
$ scp pingforge-1.0.0-el9-x86_64.tar.gz* root@vm:/root/
$ ssh root@vm
# tar xzf pingforge-*.tar.gz && cd pingforge-1.0.0-el9-x86_64
# ./install.sh --admin-user ops
Install on a Rocky Linux 9 Minimal VM with 2 vCPU and 2 GB memory. If the VM is going to be a template for cloning, install Ping(at)Work after cloning so that each clone gets its own certificate and key.
Install from the built package (pingforge-1.0.0-el9-x86_64.tar.gz), not from packaging/ in the source code: only the package contains Caddy and the Python packages. The certificate is self-signed; replace it with one from your own CA in production.
Screenshots
The interface is available in English and Norwegian, with light and dark mode, and also works on mobile. The pictures here are from the English version; the Norwegian page shows Norwegian screenshots. Click to see the full-size picture.