Layer 3 · self-hosting reality check
What it actually takes to self-host Grafana + Prometheus
The docs say 2 GB. In practice you want 8 GB. Here is the honest version — real requirements, real monthly cost, what you will be maintaining, and the one thing that catches people out.
Usually reached from Datadog alternatives, where Grafana + Prometheus is one of the picks.
| RAM — documented minimum | 2 GB |
|---|---|
| RAM — what it really needs | 8 GB |
| CPU | 4 vCPU |
| Disk | ~1–2 bytes per sample after compression. 10k active series at 15s scrape is roughly 40 GB/year. |
| Monthly cost | $30–60/mo for a stack monitoring 20–50 hosts, against several hundred on Datadog for the same estate |
| Setup time | A day for the stack, a week before the dashboards are genuinely useful |
| How you install it | docker compose for one node; kube-prometheus-stack via Helm on Kubernetes |
| Ongoing maintenance | Real. You own retention policy, cardinality, alert-rule hygiene and upgrades. This is the piece people underestimate: expect a few hours a month once it matters. |
| Where it stops scaling | A single Prometheus handles a few million active series on good hardware. Past that you need Thanos or Mimir for long-term storage and horizontal reads, which is a genuine step up in operational complexity. |
The thing that catches people out
Cardinality is the thing that kills Prometheus, not volume. One label containing user IDs, request IDs or full URLs turns 5,000 series into 5 million and the server dies. Set a label budget before you instrument anything, and check `topk(10, count by (__name__)({__name__=~".+"}))` weekly.
When not to self-host Grafana + Prometheus
You have no one who wants to own an observability stack. Datadog's real product is that somebody else is on call for the monitoring itself, and that is worth money when your team is small.
Every guide here carries this section. A site that only ever tells you to self-host is selling something — the useful answer is sometimes no.
Other Layer 3 self-hosting guides
Common questions
- How much RAM does Grafana + Prometheus actually need?
- 8 GB in practice. The documented minimum is 2 GB, which is the figure at which the process starts rather than the figure at which it works under real use. 4 vCPU alongside it.
- What does self-hosting Grafana + Prometheus cost per month?
- $30–60/mo for a stack monitoring 20–50 hosts, against several hundred on Datadog for the same estate This is commodity VPS pricing and excludes your time, which is the larger cost for most people — budget for real. You own retention policy, cardinality, alert-rule hygiene and upgrades. This is the piece people underestimate: expect a few hours a month once it matters.
- How long does it take to set up Grafana + Prometheus?
- A day for the stack, a week before the dashboards are genuinely useful, via docker compose for one node; kube-prometheus-stack via Helm on Kubernetes.
- When should I NOT self-host Grafana + Prometheus?
- You have no one who wants to own an observability stack. Datadog's real product is that somebody else is on call for the monitoring itself, and that is worth money when your team is small.
- What is the most common mistake when self-hosting Grafana + Prometheus?
- Cardinality is the thing that kills Prometheus, not volume. One label containing user IDs, request IDs or full URLs turns 5,000 series into 5 million and the server dies. Set a label budget before you instrument anything, and check `topk(10, count by (__name__)({__name__=~".+"}))` weekly.