Ping(at)Work

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.

Ping(at)Worktemplate: Core routers – latencyReady
Targets4 core routers
Try it:
TargetLabelAverageLossStatus
10.10.0.1core-osl-01––waiting
10.10.0.2core-osl-02––waiting
10.20.0.1core-drm-01––waiting
10.20.0.2core-drm-02––waiting
Template thresholds: warning at average ≥ 30 ms or loss ≥ 1 %, critical at ≥ 80 ms, loss ≥ 5 % or no replies.

Ping(at)Work

1.0.0

A 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 ping options -c -i -s -W -t -I -Q and 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. ping runs without a shell, with validated arguments and only CAP_NET_RAW.
TCP 443web GUI over HTTPS
ICMPecho, IPv4 and IPv6
EN | NOEnglish and Norwegian
Read the technical description
The template editor. The left column lists all templates with schedule and last status.

Example templates

A template is one ping test you can run again and again. This is how you build one:

  1. Create a template and add the targets

    One row per target, or paste a list. CIDR networks such as 10.200.0.0/28 are expanded automatically.

  2. Choose the ping options

    Count, interval, size, TTL, DSCP, DF and source interface. The preview shows exactly which ping commands will run.

  3. Set the schedule and thresholds

    Manual or a fixed interval. Warning and critical for average latency and packet loss, and who to notify.

  4. Run and follow up

    «Save and run» shows the result right away. The history keeps every run with its raw output.

A run where core-drm-02 crosses the 30 ms warning threshold.
TemplateSetup
Latency to the core routers20 packets at 0.2 s interval every 5 minutes. Warning at ≥ 30 ms, critical at ≥ 80 ms or ≥ 5 % loss.
MTU on WAN linksPacket size 1472 and Don't Fragment. Replies mean the path carries a 1500-byte MTU.
QoS for voiceDSCP EF (46) and a source interface with -I, to check that marked traffic gets through.
IPv6 next to IPv4IP version «Both»: each target is pinged with -4 and -6 in the same run.
Many customersPaste 10.200.0.0/28 or a list from a spreadsheet, with a label per line.
After a change windowRun 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.