A high-performance uptime monitoring system built with Bun and ClickHouse. Receive heartbeat pulses from your services, organize them into groups, track custom metrics, and get notified when things go down.
- Pulse-Based Monitoring - Services send heartbeats; missing pulses trigger alerts
- Hierarchical Groups - Organize monitors with flexible health strategies (any-up, all-up, percentage)
- Custom Metrics - Track up to 3 numeric values per monitor (player count, connections, etc.)
- Multi-Channel Notifications - Discord, Email, Ntfy, Telegram and Webhook support with per-monitor control
- Dependency-Based Notification Suppression - Define dependencies between monitors/groups to avoid notification storms when infrastructure fails
- Real-Time Status Pages - WebSocket-powered live updates
- Self-Healing - Automatic backfill when the monitor itself recovers from downtime
wget https://github.com/Rabbit-Company/UptimeMonitor-Server/releases/latest/download/uptime-monitor.tar.xz
tar -xf uptime-monitor.tar.xz
cd uptime-monitor
sudo docker compose up -dThis starts:
- Uptime Monitor on port
3000 - ClickHouse database (internal)
Option A: Visual Configuration Editor (Recommended)
Visit https://uptime-monitor.org/configurator to visually create and edit your configuration with a user-friendly interface. You can:
- Import your existing config.toml file
- Visually create monitors, groups, and status pages
- Configure custom metrics and notification channels
- Export your configuration back to TOML format
Option B: Manual Configuration
Edit config.toml to add your monitors:
[[monitors]]
id = "my-api"
name = "My API"
token = "secret-token-here"
interval = 30 # Expect pulse every 30 seconds
maxRetries = 0 # Mark down immediately on miss
resendNotification = 0 # Don't resend notificationsFrom your service, send a GET request when healthy:
curl http://localhost:3000/v1/push/secret-token-hereOr with latency tracking:
curl "http://localhost:3000/v1/push/secret-token-here?latency=125"See Pulses for timing parameters, best practices, and how pulse windows work.
curl http://localhost:3000/v1/status/:slug| Document | Description |
|---|---|
| Pulses | How pulses work, timing, and best practices |
| Configuration Guide | Complete config.toml reference |
| API Reference | All endpoints and WebSocket events |
| Admin API Reference | CRUD endpoints for managing configuration via API |
| Notifications | Setting up Discord, Email, Ntfy, Telegram, Webhook |
| Groups & Strategies | Organizing monitors hierarchically |
| Dependencies | Notification suppression via dependencies |
| Custom Metrics | Tracking additional data points |
| PulseMonitor Integration | Automated monitoring from multiple regions |
| Visual Configuration Editor | Web-based UI for configuring monitors |
- UptimeMonitor-StatusPage - Frontend status page
- PulseMonitor - Automated pulse sender for multiple protocols
- Visual Configuration Editor - Web-based UI for configuring monitors
┌─────────────────┐ ┌──────────────────┐ ┌─────────────┐
│ Your Services │─────▶│ Uptime Monitor │─────▶│ ClickHouse │
│ (send pulses) │ │ (Bun server) │ │ (storage) │
└─────────────────┘ └──────────────────┘ └─────────────┘
│
▼
┌──────────────────────┐
│ Notifications │
│ Discord/Email/Ntfy │
└──────────────────────┘