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.
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
Recommended box
Breakdown
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.
How it estimates
Section titled “How it estimates”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.
The two levers that matter most
Section titled “The two levers that matter most”- 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.
- “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.
Single box vs. split
Section titled “Single box vs. split”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.
Backups
Section titled “Backups”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.