Skip to content
Operations · Planning All levels

Capacity planner

Estimate the CPU, RAM, and storage a self-hosted Sluicio stack needs from your logs, metrics, and traces volume. Interactive — change the numbers and the recommendation updates live.

SLSluicio team Interactive Updated Jun 2026

Sluicio runs the whole stack — ClickHouse, Postgres, the ingest + API services, and the frontend — on infrastructure you control. Because retention is bounded, your telemetry volume plateaus rather than growing forever, so a surprisingly small box goes a long way. Use the calculator to get a starting point, then read how it gets there below.

Your telemetry

points/day
spans/day

Recommended box

2
vCPU
4
GB RAM
20
GB SSD

Breakdown

Ingest (avg / peak)
Rows retained
Logs on disk
Metrics on disk
Traces on disk
Data footprint
Assumptions (editable)

Defaults assume ZSTD compression on tables sorted by service name. Storage = rows × bytes/row × overhead; disk adds a 20 GB base for OS, images, and Postgres. RAM / CPU / cost are tiered heuristics, not a benchmark.

The numbers come from three signals × your retention window:

  • Storage is the defensible part. Each signal’s retained rows (rate × retention days) are multiplied by a compressed bytes-per-row estimate, then by a ClickHouse overhead factor for indexes, marks, and merge headroom. ClickHouse stores telemetry sorted by service name and compresses it with ZSTD, so repeated dimensions shrink dramatically — logs land around 300 bytes/row, metric points around 40, spans around 500. A 20 GB base is added for the OS, container images, and the Postgres control plane.
  • RAM is tiered off the retained row count (ClickHouse is the memory-hungry component), with a bump when sustained ingest is high. The stateless Go services and Postgres add a small fixed floor.
  • CPU is tiered off peak ingest rate (average × your peak factor).

All of these are editable under Assumptions — if you know your real compression ratio or row sizes, dial them in.

  1. Traces usually dominate. One request produces many spans, and spans are the heaviest row. Logs and metrics alone keep you on a small single box; adding tracing is what pushes you up a tier. If you trace, that’s the input to get right.
  2. “Metrics” means points, not series. 30,000 data points per day is tiny. But 30,000 active series scraped every 15 seconds is ~173 million points per day — four orders of magnitude more. Use the active series × scrape interval mode if you’re scraping Prometheus-style endpoints, and the storage estimate will reflect reality.

Below roughly 2 billion retained rows / 16 GB RAM / 10k events per second, everything runs comfortably on one VM via the bundled docker-compose deployment. Past that, the move is to give ClickHouse its own node (or a managed instance), put Postgres on a managed service, and keep the stateless services on the app box.

Whatever the size, the state worth protecting is Postgres — it holds your orgs, users, integrations, and alert rules. Back it up nightly (pg_dump). ClickHouse telemetry is effectively disposable: it ages out at your retention window anyway, so a backup there is optional.