Short answer. Self-hosted monitoring (for example Prometheus + Grafana) gives you full control over your data and flexibility, but it needs your own servers, setup time and constant operations. Cloud (SaaS) monitoring starts in minutes and needs no maintenance, but you pay a subscription and trust your data to a provider. The choice comes down to an honest total cost of ownership (TCO) calculation, not just the subscription price.
Two approaches in a nutshell
Self-hosted saves subscription money but spends engineering time. Cloud saves engineering time but adds a line to the bill. The cheaper option is whatever is more expensive for your team — its time or its budget.
- Self-hosted — you deploy and maintain the stack yourself.
- Cloud / SaaS — the provider runs the infrastructure; you just configure checks.
What goes into TCO
The subscription price is only the tip. Full TCO accounts for:
- Servers and storage — for self-hosted this is real money for metrics and history.
- Setup time — days to weeks of engineering for the first self-hosted launch.
- Operations — upgrades, backups, scaling, and on-call for the monitoring itself.
- Vantage points — external monitoring needs servers in several regions.
TCO comparison
| Factor | Self-hosted (Prometheus/Grafana) | Cloud / SaaS |
|---|---|---|
| Time to start | Days to weeks of setup | Minutes |
| Subscription | None, but you pay for servers | Monthly fee |
| Operations | On your team | On the provider |
| Data control | Full, data stays with you | With the provider |
| External vantage points | You deploy them per region | Built in |
| Scaling | Manual, needs expertise | Transparent |
Internal and external monitoring are different
An important fork people often confuse:
- Internal (Prometheus inside your cluster) sees CPU, memory and app metrics — but if the whole data centre goes down, it goes down with it.
- External (synthetic) probes the service from the outside, like a user, and is independent of your infrastructure.
That is why even teams with their own Prometheus add external monitoring — so something is left to report the outage when everything is down. For why you should check from several regions, see our multi-region monitoring article.
A simple external health check
A basic availability check is a one-liner — but someone has to run it around the clock from several locations:
# Check that the health endpoint returns 200
curl -fsS -o /dev/null -w "%{http_code} %{time_total}s\n" \
https://example.com/health
# Example output:
# 200 0.142s
# In a script: alert if the code is not 200
if ! curl -fsS https://example.com/health > /dev/null; then
echo "DOWN: example.com/health" | send-alert
fi
Maintaining such a script across several regions, with history, alert deduplication and a status page, is exactly the hidden part of external-monitoring TCO.
Where enterno.io removes that burden
enterno.io is cloud-based external (synthetic) monitoring: you get ready vantage points in Russia, Europe and the US with no servers of your own. The free plan gives 10 monitors at a 5-minute interval; paid plans check every minute or every 30 seconds. It supports HTTP, SSL, Ping and DNS checks, alerts via Telegram, Slack, email, webhook, PagerDuty and Jira, incidents and public status pages, plus a REST API документацию v4 and an MCP server for automation.
It is not a replacement for internal Prometheus but a complement: the internal stack sees root causes, while enterno.io sees the user experience from outside. Publish a status page, and enable heartbeat for cron and background jobs. For SLAs, see our uptime SLA article.
FAQ
Can I combine self-hosted and cloud?
Yes, and it is a common choice: internal Prometheus for metrics and root causes, plus cloud external monitoring for the user experience and independent alerts.
Which is cheaper in the long run?
It depends on scale and the cost of engineering time. Early on and for small teams, cloud almost always wins on TCO; at huge metric volumes, self-hosted can pay off.
Who watches the monitoring itself in self-hosted?
Your team. This is often overlooked: monitoring also fails, and someone has to maintain it — a real TCO line item.
Is self-hosted suitable for external checks?
Technically yes, but you must deploy probes across regions and maintain them — exactly the part cloud synthetic monitoring handles out of the box.
Want external monitoring without your own servers? Launch checks at enterno.io/monitors in a couple of minutes — the free plan needs no card.