Uptime monitoring, incident alerting and log management in one product. It checks your endpoints from several regions, pages whoever is on call through a rota, and publishes a status page when something is down.
Build me monitoring and on-call that replace Better Stack — and know why this is ALMOST. Uptime checks are a weekend. **On-call routing is not**: a rota, escalation to a second person when the first does not answer, acknowledgement, overrides for holidays, and a delivery channel that wakes somebody at three in the morning. That last part means a phone call or a push notification through a registered application, which is a provider and a cost. If nobody is on call, skip half this document. STACK - Node 20+ with Fastify for the control plane - SQLite through better-sqlite3, WAL mode - Probes as small agents on cheap machines elsewhere - Caddy in front - **On different infrastructure from what it watches.** A monitor on the machine it monitors reports nothing when it matters THE DATA MODEL - monitors, checks, incidents — the usual shape, checks append-only with timings split into DNS, connect, TLS and time to first byte - schedules: id, name, timezone, rotation_kind, handoff_local_time, layers_json - shifts: id, schedule_id, user_id, starts_at, ends_at, is_override — computed from the rotation and materialised, so 'who is on call right now' is one indexed lookup rather than a calculation at the worst moment - escalation_policies: id, name, steps_json — each step a target, a channel and a delay - pages: id, incident_id, step_index, user_id, channel, sent_at, delivered_at, acknowledged_at, error - acknowledgements, resolutions, and a post-incident timeline assembled from all of it ON-CALL, PROPERLY - A rotation with layers: primary and secondary, weekly or daily, with a handoff time in a named zone. Daylight saving must not create an hour with nobody on call, and that is a real test to write - Overrides for a holiday or an illness, added by anybody, visible to everybody - Escalation: page the primary; if unacknowledged after N minutes, page the secondary; then the whole team. Every step recorded with its delivery result - Acknowledgement from the notification itself, needing no login - A schedule preview showing the next month, and a warning when a gap exists. A rota with a gap is discovered at three in the morning WAKING SOMEBODY UP - Email will not do it. The options are a phone call or an SMS through a provider, or a push notification through your own registered mobile application - The phone call is the reliable one and it costs per minute. Say so in the README, and set which severities may use it - The delivery path must not depend on the infrastructure being watched, including the mail server - A test page, on demand, so everybody has proved their own notifications work before they are needed NOT CRYING WOLF - Confirm from more than one region before opening an incident, and re-check immediately from elsewhere before declaring anything - Deduplicate: one bad deploy is one incident, not nine hundred - Flapping suppressed, recovery always notified, muting always with an end time - Quiet hours per monitor with a severity that ignores them LOGS, IF YOU WANT THEM HERE - Do not build a log store into this. Ship logs to a purpose-built one and link to a filtered query from the incident. Combining the two is what makes this product expensive and it is not where the value is THE STATUS PAGE - Rendered to static files on every change and served from somewhere else entirely, so it survives the application being dead OPERATIONS - .env: DATABASE_PATH, BASE_URL, SMTP_URL, VOICE_PROVIDER_KEY, PROBE_TOKEN_SALT, SESSION_SECRET, DEADMAN_URL - Migrations on boot, each once; nightly backup; a dead-man's switch on the scheduler itself - Health endpoint reporting every probe's last contact and the current on-call WHAT MATTERS MOST The rota with no gaps and a delivery path that wakes people. Build those and rehearse a real page before relying on any of it.
What you lose
- Checks running from several regions, so you can tell a real outage from your own network having a bad minute
- A monitor that is not hosted on the machine it monitors — the failure mode that makes self-hosted uptime checks worthless
- On-call schedules, escalation policies and phone calls that wake the right person
- Incident timelines and a status page fed automatically from the checks
- Log ingestion and retention bundled alongside, which is a real cost if you need it
If you would rather not build
- Upptime — checks driven entirely by GitHub Actions
What it costs
read from their page 15 Aug 2026
| Plan | Billed monthly | Billed yearly | Last read |
|---|---|---|---|
| — | $25/mo | — | 15 Aug 2026 |
Their pricing page is where these came from. Seeing a different price? Tell us.
The escape hatch
open source · no votes, no paid placement
Uptime Kuma
$0Uptime monitoring with a status page and alerts to most chat services.
louislam/uptime-kumafree · open source
Gatus
$0Health checks declared in a YAML file, with a status page generated from them.
TwiN/gatusfree · open source
Why this verdict
our own opinion · changed only by a person
58/100
Verdict kinda at 58: an HTTP check on a timer is genuinely simple, and the append-only attempts table gives better history than most paid tiers. Multi-region checking and a real on-call rotation are what keep this from being a yes.
History
tracked since 6 Aug 2026 · nothing is ever overwritten
Questions about Better Stack
answered from the record above
Is Better Stack free?
No — the plan we track is $25 a month. Uptime monitoring includes 10 monitors at no cost; the first paid step is $25/mo for an additional 50 monitors ($21 billed yearly). Logs and incident management are priced separately.
Can you replace Better Stack by building your own?
ALMOST. A weekend of work, and real gaps remain. Replacement score 58 out of 100, build time a weekend. Read what you lose before you decide.
How much does Better Stack cost?
$25 a month on Additional 50 monitors — $300 a year. Recorded 6 Aug 2026.
What do you lose by replacing Better Stack?
Checks running from several regions, so you can tell a real outage from your own network having a bad minute; A monitor that is not hosted on the machine it monitors — the failure mode that makes self-hosted uptime checks worthless; On-call schedules, escalation policies and phone calls that wake the right person; Incident timelines and a status page fed automatically from the checks; Log ingestion and retention bundled alongside, which is a real cost if you need it. If any of those carry weight for you, keep paying.
Is there an open-source alternative to Better Stack?
Yes: Uptime Kuma, Gatus. The prompt on this page is for when you want it your way instead.
Related entries
same category first, most replaced first
Every week, something stops being worth paying for.
New verdicts, prices that moved, entries added. One email a week. Unsubscribe in one click. Nothing is being sent yet — your address is kept here, and the first issue is the first thing it is used for.
free forever · no tracking pixel · stored here, never passed to anyone

