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.

example · one check, three locations

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.

Probes connect out to the hub

Probes connect outward to the hub, so you never open a port or set up a VPN. Put one inside a private network and monitor what the internet cannot reach.

network · eu-zh network · us-east network · ap-sg no open ports no open ports no open ports hub
outbound only

Run several hubs as equals

Run several hubs and lose nothing when a machine fails. Every hub is equal, so there is no primary to promote and no separate database to run. They 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 ap-sgslack
  2. 14:07:11no reply · escalating to on-callpaging
  3. 14:09:40api.example.com RECOVEREDslack
example · one alert

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.