uptimepage

uptimepage

1 4 26
calendar_todayschedule1 min read

Uptimepage is an open-source uptime monitor and status page, built as one self-contained Rust binary backed by Postgres and ClickHouse. Run it with docker compose up, or use the free hosted tier.

I built it because I wanted a monitor I could run as a single binary and drive entirely as code, without operating a fleet of services to do it.

What it does

  • Checks: HTTP, TCP, DNS, TLS-certificate expiry, and domain expiry, from one region or many.
  • Public status page: HTML, JSON, and RSS, per-component opt-in, incidents, maintenance windows, email and webhook subscribers.
  • Alerting across about fourteen channels: Slack, generic signed webhooks, Telegram, WhatsApp, SMS, PagerDuty, ntfy, Pushover, Discord, Google Chat, MS Teams, email. Fire once, recover, and repeat until acknowledged.
  • Incidents with a separate internal state and public phase, so you can work an incident before you publish anything.
  • Multi-region probes: each agent is the same binary in a stateless probe mode. Run your own anywhere with an org-scoped token.
  • Automation: REST API with an OpenAPI spec, a Terraform provider, and an MCP server an LLM client can query over OAuth.

A few engineering bits

  • A custom hyper and rustls client instead of a high-level one, so each result carries separate DNS, connect, TLS, and TTFB timings. About 130K checks a second on one core in the load test.
  • A single min-heap scheduler for the whole fleet rather than a timer task per monitor, so memory stays flat in fleet size.
  • ClickHouse with per-row TTL and minute and hour rollups, so dashboards never scan raw rows.

Full write-up of how it is built: https://uptimepage.dev/blog/building-an-uptime-monitor-in-rust

Free and open

The core is not paywalled. Checks, status pages, subscribers, the API, and every alert channel are in the free tier, with no card to start. It is AGPL-3.0, and it monitors itself.

Happy to answer questions about the internals or the self-host setup in the comments.

4 Comments

2 votes
1
1 vote
0
🔥 Join developers growing publicly
Share your knowledge, build in public, and grow your developer presence with a global community.

More Posts

Mesa: Why I built a programming language

Crackanimador - May 10

Porting my Rust KVM hypervisor to ARM64: Running the binary

stjepan - Jul 22

Astro 7: What's New, What's Faster, and What Breaks

morellodev - Jul 21

Why I chose Rust over Go for an uptime monitor

Artem Senenko - Jul 20

pnpm v12 Is Being Rewritten in Rust

morellodev - Jul 18
chevron_left
610 Points31 Badges
Kiev, Ukraineuptimepage.dev
13Posts
9Comments
19Connections
Software developer with more than 20 years of experience.

Related Jobs

View all jobs →

Commenters (This Week)

8 comments
1 comment
1 comment

Contribute meaningful comments to climb the leaderboard and earn badges!