downtime

Monitor your services from everywhere your users are

downtime checks your websites, APIs, servers, databases and scheduled jobs, and alerts you when something is down. Self-hosted, up and running in one command.

Each location reports its own result

A check can be fine in Europe and failing in Asia, and downtime shows you both. You decide when a check counts as down: any location, all of them, or a number you set. Adding a location is one more probe: start it anywhere and it connects outward to the hub, so nothing needs an open port and a probe can even run inside a private network.

api.example.com monitored service Zurich New York Singapore no open ports no open ports no open ports hub

A monitoring tool has to survive what it is watching.

A monitor that goes down with your infrastructure tells you nothing. Run several hubs as a resilient mesh: every hub is equal, so there is no primary to promote and no separate database to run. The mesh stays available even when a machine or a whole region goes down, and the hubs stay in sync and keep an eye on each other.

hub hub hub

Alerts that reach the right people

Alerts arrive where your team already works, from chat and paging to SMS and email. When nobody reacts an alert is passed on, and quiet hours hold back what can wait.

alerts · slack#opsescalation on
  1. 14:02:11api.example.com is DOWN from Singaporeslack
  2. 14:07:11no reply · escalating to on-callpaging
  3. 14:09:40api.example.com RECOVEREDslack
  • slack
  • ms teams
  • pagerduty
  • opsgenie
  • telegram
  • ntfy
  • gotify
  • twilio sms
  • email
  • webhooks

Features

Website and API checks

Watch that a site or API answers, with the status code, content and response time you expect.

Port, DNS, ping and database checks

Watch TCP ports, DNS records, ping, and Postgres or MySQL queries.

Heartbeat checks

Cron jobs and backups check in when they finish, and a missed check-in alerts you straight away.

Alert channels

Slack, Microsoft Teams, PagerDuty, Opsgenie, Telegram, ntfy, Gotify, SMS through Twilio, email, and webhooks for anything else you use.

Routing and escalation

Send each alert to the right channel, hold back what is not urgent during quiet hours, and escalate when nobody reacts.

Status pages

Public pages for the checks you choose, with an incident timeline and an RSS feed.

Incidents

Incidents open and close on their own, leaving a record of what happened and for how long.

Maintenance windows

Plan work ahead in its own timezone: no alerts, and the time can stay out of your uptime numbers.

Reports and metrics

Uptime and SLA reports as JSON or CSV, warnings before a TLS certificate expires, and Prometheus metrics for your own dashboards.

Configuration as files

Keep your configuration in version control and review changes before they take effect.

Accounts and access

Single sign-on through OIDC, roles per project, API keys for scripts, and secrets encrypted at rest.

One program, one or many locations

Hub, probe, database and web interface in one program: run it all on one machine in a few hundred megabytes, or spread probes across locations.

Installation

  1. 01

    Start the hub

    docker run -d --name downtime -p 8080:8080 -v downtime-data:/data monostream.docker.pkg.emporium.rocks/downtime

    → http://localhost:8080

  2. 02

    Add a location

    docker run -d --name downtime-eu-zh monostream.docker.pkg.emporium.rocks/downtime --role=agent --hub=https://status.example.com --pool=eu-zh --join-token=dt_join_xxxxx

    run this once per location.

  3. 03

    Or install it on Kubernetes

    helm install dt deploy/helm/downtime --set sessionSecret=$(openssl rand -hex 32)

Install downtime and start monitoring your services.