uptimepage

uptimepage

1 1 6
calendar_today agoschedule1 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.

2 Comments

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

The Security Liability of Memory Allocation in TEEs: A Design Decision Log (no_std Rust)

webMethodMan - Jul 2

Building an uptime monitor in Rust: one binary, two databases, 130K checks/sec per core

Artem Senenko - Jun 30

Building a KVM Virtual Machine in Rust: Running a binary

stjepan - Jun 28

KairoDB-Human-Readable Databases

fut0r - Jun 23
chevron_left
196 Points8 Badges
Kiev, Ukraineuptimepage.dev
3Posts
2Comments
6Connections
Software developer with more than 20 years of experience.

Related Jobs

View all jobs →

Commenters (This Week)

10 comments
1 comment
1 comment

Contribute meaningful comments to climb the leaderboard and earn badges!