Monitoring and status pages
status checks your services from the control plane, opens incidents when they
fail and tells notify.
Monitors
| Type |
Checks |
| HTTP(S) |
method, good status codes, a keyword in the body, a "degraded" threshold, the certificate's expiry |
| TCP |
that a port accepts connections |
| DNS |
a record and its expected value |
| Heartbeat |
that something called its ping URL in time |
A monitor runs every 30 seconds to once a day. It is down after N failures in a row and re-checked
within 20 seconds. Checks reach the internet only: private and loopback addresses are refused.
Choose a health URL that tests readiness (database reachable, migrations done), not a login page that
answers 200 whatever happens. Set thresholds so one lost packet isn't an outage.
Watch everything automatically
A team's automatic monitors switch watches every production web app and pages alias, and keeps the
monitors in step as apps and aliases come and go.
Heartbeats
For cron jobs and backups: each heartbeat has a URL, a period and a grace time.
curl -fsS https://status.xvii.network/ping/<key>/start \
&& ./backup.sh \
&& curl -fsS https://status.xvii.network/ping/<key> \
|| curl -fsS --data "exit $?" https://status.xvii.network/ping/<key>/fail
A missed ping sends heartbeat.missed; /fail reports a failure at once.
Incidents and maintenance
Incidents open and resolve themselves when monitors change state. Write updates on them, or open manual
incidents for problems no monitor sees. Maintenance windows keep their monitors quiet.
Status pages
A public page at https://status.xvii.network/p/<slug> (or your own name through domains) shows the
monitors you pick under labels you choose, 90 days of uptime and recent incidents, with an RSS feed at
/p/<slug>/feed.xml. Addresses and ids never appear. Pages can have their own look and e-mail
subscribers.
Alerts
Through notify: monitor.down, monitor.up, monitor.degraded, heartbeat.missed,
certificate.expiring (14, 7, 3 and 1 days before). Subscribe a Telegram chat or e-mail to them in
notify.
Checks are kept 7 days, daily rollups for good.