rabbitcompany/uptime-monitor

By rabbitcompany

Updated 2 months ago

Enterprise-grade uptime monitoring system

Image
Monitoring & observability
1

7.6K

rabbitcompany/uptime-monitor repository overview

Uptime Monitor

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.

Features

  • 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, and Ntfy support with per-monitor control
  • Real-Time Status Pages — WebSocket-powered live updates
  • Self-Healing — Automatic backfill when the monitor itself recovers from downtime

Quick Start

1. Start the Services
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 -d

This starts:

  • Uptime Monitor on port 3000
  • ClickHouse database (internal)
2. Configure Your Monitors

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 notifications
3. Send Pulses

From your service, send a GET request when healthy:

curl http://localhost:3000/v1/push/secret-token-here

Or with latency tracking:

curl "http://localhost:3000/v1/push/secret-token-here?latency=125"
4. Check Status
curl http://localhost:3000/v1/status/:slug

Documentation

DocumentDescription
Configuration GuideComplete config.toml reference
API ReferenceAll endpoints and WebSocket events
NotificationsSetting up Discord, Email, Ntfy
Groups & StrategiesOrganizing monitors hierarchically
Custom MetricsTracking additional data points
PulseMonitor IntegrationAutomated monitoring from multiple regions
Visual Configuration EditorWeb-based UI for configuring monitors

Architecture

┌─────────────────┐      ┌──────────────────┐      ┌─────────────┐
│  Your Services  │─────▶│  Uptime Monitor  │─────▶│  ClickHouse │
│  (send pulses)  │      │   (Bun server)   │      │  (storage)  │
└─────────────────┘      └──────────────────┘      └─────────────┘
                                  │
                                  ▼
                       ┌──────────────────────┐
                       │    Notifications     │
                       │  Discord/Email/Ntfy  │
                       └──────────────────────┘

License

GPL-3.0

Tag summary

Content type

Image

Digest

sha256:9545b26dc

Size

40.7 MB

Last updated

2 months ago

docker pull rabbitcompany/uptime-monitor:0