Uptime Kuma vs Better Uptime vs Grafana: How Much Monitoring Do You Need?
Cloud

Uptime Kuma vs Better Uptime vs Grafana: How Much Monitoring Do You Need?

Three tools, three different answers to a question most people never actually ask themselves: how much monitoring does this app need, versus how much monitoring would feel satisfying to build? Here's the honest comparison, including the part where self-hosting your own uptime monitor is a slightly absurd idea.

Published August 28, 202610 min readUpdated Sep 6, 2026

Written by · Full-Stack Agentic AI Software Engineer — AI Agents, Automation & Revenue Systems for GTM/RevOps teams

In brief

Should a small self-hosted app run Uptime Kuma, pay for Better Stack, or build out Grafana and Prometheus?

Almost none of them need the full stack. Uptime Kuma is free and self-hosted, but self-hosting the tool that's supposed to tell you your server is down means it has to live somewhere other than the server it watches — which most people get wrong on day one. Better Stack (formerly Better Uptime) is a hosted alternative that sidesteps that problem entirely for a monthly fee once you outgrow its free tier. Grafana plus Prometheus is a different category: a real metrics and query system, not just a checker, and it's worth the operational overhead only once you have more than one box, a custom metric nothing else exposes, or a team that needs a shared dashboard. For one person running one app, that's a rare set of conditions to actually meet.

  • Self-hosting your own uptime monitor on the same box it monitors defeats the purpose — the monitor dies exactly when it needs to alert you
  • Better Stack's free tier (10 monitors, 3-minute checks) covers a solo project without ever touching the self-hosting problem
  • Grafana plus Prometheus is a metrics platform, not an uptime checker — it answers different questions and costs real setup and maintenance time to run well
  • Grafana Cloud's free tier (10k active metric series, 50GB logs/traces monthly, 14-day retention) is enough to try it without standing up your own Prometheus first
  • The honest verdict: most small self-hosted apps need one uptime checker and host metrics, not an observability stack — decide by what question you actually need answered, not by which tool looks more serious

Evidence notes

Uptime Kuma

MIT-licensed, self-hosted uptime and status-page tool with HTTP/TCP/DNS/ping/Docker monitors and 20-second check intervals.

Better Stack's free monitoring tier

Better Stack's own uptime page states its free tier includes 10 monitors, 10 heartbeats, a status page, and 3-minute checks, with 30-second checks available on paid tiers.

Grafana Cloud pricing

Grafana's own pricing page lists the free tier at 10,000 active metric series, 50GB of ingested logs/traces/profiles per month, and 14-day retention across the board, before usage-based paid tiers begin.

UptimeRobot as a hosted alternative

UptimeRobot's pricing page lists 50 monitors on a 5-minute interval free, including SSL/domain expiry checks, as another zero-cost hosted option.

I run Uptime Kuma, and I'd be lying if I said the decision took much thought — for one app on one box, it's the obvious default. What most comparisons skip is the part that actually matters: they list features until every option sounds necessary, when the real question is much smaller. What do you need to know, and how bad is it if you find out five minutes late instead of thirty seconds late?

Uptime Kuma: the honest, slightly absurd option

Uptime Kuma is free, MIT-licensed, and does exactly what it says: HTTP, TCP, DNS, ping, and Docker checks, a status page, notifications to more than 90 services, and a UI simple enough that getting a first check running is a matter of minutes, not an afternoon. As a tool, there's very little to argue with. As a deployment decision, there's one thing worth being blunt about: running it on the same VPS it's supposed to be watching is a slightly absurd idea, because the one scenario it exists to catch — the box going down — is the exact scenario where it also goes down.

This isn't a knock on the software. It's a deployment mistake the software lets you make easily, because nothing in the setup flow stops you from pointing Uptime Kuma at localhost. The fix costs nothing: a second free-tier box, a spare Raspberry Pi, or genuinely just not self-hosting the checker at all and using a hosted free tier for that one job while keeping everything else self-hosted. Self-hosting is a good default for most of a stack. An uptime monitor is the one piece where the argument for hosted is strongest, because its entire value depends on not sharing a failure domain with what it watches. If you are scoping uptime kuma vs better uptime vs Grafana for a business rather than a codebase, XenGrowth's growth operations team covers that angle.

Better Stack: paying to remove that one problem entirely

Better Stack — most people still know it as Better Uptime, which was the product name before the company rebranded around a wider platform — sidesteps the self-hosting question by not giving you a server to run in the first place. You add a monitor URL, it checks from Better Stack's own infrastructure, and it alerts you regardless of what's happening to your box. Its own pricing page lists a free tier of 10 monitors and 10 heartbeats with 3-minute checks and a status page included, with 30-second checks reserved for paid plans. For one app, that free tier alone covers what most people actually need — you're trading a small amount of vendor dependency for the fact that the checker's uptime is now someone else's operational problem, not yours.

What you give up is control and depth. Uptime Kuma's status page and monitor list are yours to configure however you want, self-hosted alongside everything else. Better Stack's is a SaaS product with its own limits, its own release cadence, and a free tier that can change. Neither of those is a dealbreaker for a small app, but it's the actual trade, and it's worth naming instead of treating 'hosted' as automatically the more serious choice. The XenGrowth resource library covers the the operations side of this side of this.

Grafana and Prometheus: a different tool for a different question

This is where a lot of comparisons quietly go wrong, because Grafana and Prometheus aren't really competing with Uptime Kuma or Better Stack — they answer a different category of question. An uptime checker tells you whether something is up. Prometheus, feeding Grafana, tells you the shape of what's happening while it's up: request latency by route over the last hour, memory growth across three services, a custom business metric nobody built a pre-made dashboard for. That's genuinely more powerful, and it's also genuinely more to run.

Standing up Prometheus and Grafana yourself means running two more stateful services, configuring scrape targets, writing your own dashboards or importing ones that mostly fit, and eventually dealing with retention and storage growth as your metric cardinality climbs. Grafana Cloud's pricing page offers a free tier that removes the self-hosting half of that — 10,000 active metric series and 50GB of ingested logs, traces, and profiles a month, with 14-day retention across the board — which is a reasonable way to try the tool before deciding whether the full self-hosted version is worth your time. But even on the hosted free tier, you're still building dashboards and instrumenting your app to emit metrics worth looking at, which is real, ongoing work that an uptime checker never asks of you.

Tool

Answers

Cost at small scale

Where it runs

Setup weight

Uptime Kuma

Is it up right now?

Free (MIT license)

Must be off the box it watches

Low — one Docker container

Better Stack (Uptime)

Is it up right now, without me hosting the checker?

Free up to 10 monitors, then paid

Hosted by Better Stack

Lowest — no infrastructure at all

Grafana + Prometheus (self-hosted)

What is the shape of what's happening while it's up?

Free, but costs your time to run

Anywhere, ideally a separate box

High — two services, dashboards, upkeep

Grafana Cloud

Same as above, without self-hosting Prometheus

Free to 10k series / 50GB a month

Hosted by Grafana Labs

Medium — still requires instrumentation

What each one actually costs you past the free tier

The free tiers are generous enough that most people never leave them, but it's worth knowing what the next step up looks like before you pick, because switching monitoring tools later is more annoying than switching most things. Uptime Kuma has no next step at all — it's the same self-hosted software whether you're checking one endpoint or two hundred, so the only cost that grows is the size of the box you're running it on, which for anything short of an actual monitoring product stays trivial. XenGrowth on governed AI marketing workflows approaches this from the AI agents and marketing automation side.

Better Stack's paid tiers buy faster checks (down to 30 seconds instead of 3 minutes) and more monitors, billed on what they call all-you-can-alert pricing rather than a hard per-notification cap — reasonable for a team, unnecessary for one app where a 3-minute detection window on a false alarm costs you nothing. Grafana Cloud's paid tier is usage-based on metric series and data ingested, starting around $19 a month base plus consumption, which only becomes real money once you're instrumenting enough of your app that the free tier's 10,000 series and 50GB actually get consumed — for a single small service, that ceiling is higher than it sounds.

Question you're actually asking

Best-fit tool

Why the others fall short here

"Is my app reachable right now?"

Uptime Kuma or Better Stack

Grafana can answer this too, but only after you've built a dashboard for it — overkill for one boolean

"Why did latency spike at 3am last Tuesday?"

Grafana + Prometheus

Neither uptime tool stores the granular history needed to answer a 'why', only a 'when'

"Did my TLS cert just expire?"

Better Stack or UptimeRobot's SSL check

Uptime Kuma doesn't check certificate expiry natively; Grafana would need you to scrape it yourself

"Is container A quietly leaking memory over days?"

Grafana + Prometheus, or Netdata's own retention

An uptime checker has no concept of a trend, only a pass/fail at each interval

So which one do you actually need?

For a single self-hosted app run by one person, the honest answer is usually just an uptime checker, run somewhere that isn't the box it watches, plus the host and container metrics covered in the companion post on this stack. That's Uptime Kuma on a second free-tier box, or Better Stack's free tier if you'd rather not run even that much. Either gets you the one alert that matters — something is unreachable — without a second stack to maintain.

  • Choose Uptime Kuma if you already self-host everything else and don't mind standing up one more small box to run it on

  • Choose Better Stack (or UptimeRobot's free plan) if you'd rather not run any infrastructure at all for this one job

  • Reach for Grafana and Prometheus only once you have more than one box to correlate, a custom metric no checker exposes, or a team that needs a shared dashboard rather than one person's terminal

  • Don't reach for the full observability stack because it looks more legitimate — a dashboard nobody queries is worse than no dashboard, because it creates the appearance of coverage that isn't there

Most small self-hosted apps never reach the point where Grafana earns its weight. That's not a knock on Grafana — it's a genuinely good tool for a question most one-person projects aren't actually asking yet.

A short checklist before you commit to one

  1. Count how many things you're actually watching right now. If it's one app and one database, you don't need a query language for it — you need a pass/fail check and a place to run it.

  2. Ask whether you're solving 'is it up' or 'why is it slow.' Those are different questions with different tools, and conflating them is how a simple checker turns into an afternoon spent learning PromQL for no reason.

  3. If you're leaning self-hosted, decide where the checker lives before you install anything. That single decision — off the box being watched — matters more than which tool you picked.

  4. If you're leaning hosted, read the free tier's limits against your actual monitor count before assuming you'll stay under it forever; Better Stack's 10 monitors and 3-minute checks are generous for one app, tight for five.

  5. Revisit the decision when something changes, not on a schedule — a second server, a customer-facing SLA, or a metric you keep wishing you could see historically are all real reasons to move up a tier. 'It felt like time' is not.

None of these tools are wrong choices in the abstract — Uptime Kuma, Better Stack, and Grafana are all well-built for what they're for. The actual mistake is skipping the first question and picking based on which one sounds most like what a serious operation would run, instead of what the specific app in front of you actually needs watched this month. XenGrowth on building one SEO and GEO content system approaches this from the AI search, GEO and discovery side.

The mistake that costs you the most either way

Whichever tool you pick, the deployment detail that matters more than the choice itself is where it runs. Uptime Kuma on the same box it watches, or a Grafana instance whose only alerting path is an email that goes to an inbox you check twice a week, both defeat the purpose regardless of how capable the underlying tool is. The next post in this series goes into what actually makes an alert useful once one of these tools decides to send you one — what a real healthcheck should assert, and how to avoid alert fatigue — because picking the right monitor is only half the problem.

One more thing worth saying plainly: none of these three tools are mutually exclusive, and running two isn't a sign you did it wrong. Uptime Kuma or Better Stack for the boolean question, and Grafana later once you have a genuine 'why' to answer, is a perfectly normal pair to end up with. What's worth avoiding is the version where you install all three because a comparison post made each one sound necessary, and then only ever look at the dashboard from whichever one happened to be open when something broke.

Further reading from XenGrowth

Where this work meets go-to-market

If uptime kuma vs better uptime vs Grafana is part of a growth programme rather than a standalone build, the XenGrowth practice is the companion reading.

How much monitoring do you actually need?

Four questions about what you're protecting and who's on the hook. The post's argument is that most people either under-monitor or buy an observability stack they'll never look at; this walks the same line.

1 / 4
What happens if the app is down for an hour and nobody notices?

Apply this article

How to turn insights into execution

A practical sequence for teams turning concepts into production outcomes.

uptime kumagrafanaprometheusmonitoringself-hostingobservabilitybetter stackcloud

Audit your current state

Map the bottlenecks and constraints connected to the article’s core problem.

Choose one bounded change

Test the most useful recommendation on one workflow before widening the scope.

Measure what changed

Keep the parts that improve the work, document what failed, and make the next decision from evidence.

Next step

Need help applying this in your stack?

I can translate these patterns into a concrete implementation plan for your team.

Discuss implementationBack to blog

Replies usually within 24 hours.

Next Steps

Continue reading

My Free Monitoring Stack for Self-Hosted Apps

Vercel gives you monitoring whether you ask for it or not. A VPS gives you a blank terminal and the assumption you'll figure it out. Here's what to actually watch on a self-hosted box, with tools that cost nothing, and why watching from the box itself is the one setup that will lie to you.

Navigate

Observability Stack for a Small Engineering Team: What to Buy, What to Build

Cutting through the noise: a practical guide to building observability for small teams. When to use managed tools like Datadog, when to self-host, and how to avoid alert fatigue.

Navigate

Case Study: An Observability Platform That Cut Incident Response Time

How a mid-scale SaaS company reduced incident response time by 65% through unified logging, metrics, and traces—plus actionable alert tuning.

Navigate

How I Self-Host PostgreSQL for My SaaS (and When I Wouldn't)

Running Postgres in a container is easy. Running it in a way that survives a redeploy, a full disk, and an eventual major-version upgrade is the actual job. Here's the setup, tuned against Postgres's own defaults, and the honest list of where managed wins outright.

Navigate

10 Mistakes That Break a Self-Hosted SaaS

None of these ten show up as a single dramatic outage. They show up as a disk that quietly fills, a rollback that turns out to be impossible, a backup nobody ever restored. Here's the mechanism behind each one, and the fix.

Navigate

The Backup Strategy Every Self-Hosted SaaS Needs (3-2-1, Applied)

3-2-1 is easy to nod along to and easy to get wrong in the specific way that only shows up on the day you need it. Here's what it actually means for one VPS running Postgres and Docker volumes, not the generic version you've already skimmed past twice.

Navigate

My Rule for Deciding What to Self-Host and What to Keep Paying For

Self-hosting everything is a bad idea, and I can point to the exact service where I decided that on purpose. Here's the actual rule I use, not a survey of options — and the one counterexample that explains why the rule exists.

Navigate

My Complete Self-Hosted Stack for SaaS in 2026

Contabo, Coolify, Docker, Cloudflare, Postgres, R2, Resend, Uptime Kuma, Turborepo and Docker Hub. Here's every piece of the stack I actually run, what each one replaced, and why I picked it over the alternatives.

Navigate

The Simplest Production Architecture for a Bootstrapped SaaS

One box, a handful of managed pieces around the edges, and a very short list of things you're not allowed to build yet. Here's the architecture, priced out to $20 a month, and the exact signal that tells you when to add each thing you skipped.

Navigate

How I Secure a Fresh VPS Before Deploying Anything

A brand-new VPS gets scanned within minutes of getting an IP address. Here's the exact order I run through before a single container touches the box — and which of these steps are real protection versus which ones are just theatre.

Navigate