Better Stack

betterstack.comcontributed by Samuele Ongaro

ALMOST

A weekend of work, and real gaps remain.

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.

Promptfree, for everyone, and the only version there is
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

PlanBilled monthlyBilled yearlyLast 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

$0

Uptime monitoring with a status page and alerts to most chat services.

louislam/uptime-kumafree · open source

Gatus

$0

Health 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

Interest · last 30 dayspeak 2/day
views01230 Aug4 Sept9 Sept14 Sept19 Sept24 Sept28 Sept
— views— prompt copies none yet— votes none yet

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

All 25 in Monitoring & uptime

Not sending yet

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

Esc