We've used Pingdom to alert outages and track uptime until they abandoned their free tier. Let's have a server-side plugin do this for us. See Service Blocks
We've developed the scheduling for Datalog. Maybe we just add a PING keyword to that plugin.
Or we can make a plugin that uses the same or similar scheduling and then let the existing Datalog query it.
See ICMP Options we've discarded.
# Cases
Alert if server is down or unavailable. Must see through port forwarding to home network.
Alert if service is down or unavailable. Must see through routing or other application logic.
Diagnosis based on time of failure and nature of intermittent failure.
Assess relative performance between servers, network path and over time.
Correlate and localize network anomalies.
Report uptime percentages over months and years.
# Code
I've added a ping-like sample endpoint to the Datalog plugin which returns curl error code and elapsed time ready to be logged. github
A pair of iframes offers side-by-side viewing. html
I've written html/javascript to report an Uptime Table using the parallel data fetch already proven.
# Use
We see occasional spikes of slowness that don't correlate between probing servers leading us to suspect timebase instability which we've studied before.
We could certainly get more stable numbers if we didn't make a call to make a probe but probed directly from the sampling logic in Datalog. We could also wrap this logic with real time clock checks that could detect when the hosting computer was slow on its own.