The Real Cost of Self-Hosting Observability on ClickHouse

Getting Started with OpenObserve

Try OpenObserve Cloud today for more efficient and performant observability.

"ClickHouse is way cheaper." It usually is, as a database. Columnar storage, aggressive compression, no license fee, genuinely excellent economics for the price of a terabyte at rest. That's not in dispute here.
What's worth separating out is a claim that quietly rides along with it: that self-hosting observability on ClickHouse is equally cheap. Those are two different claims, and the gap between them is everything you still have to build before ClickHouse is an observability platform instead of a fast place to put rows.
This is a breakdown of exactly what's in that gap, what it costs in practice, and when building it yourself is genuinely the right call anyway.
Worth saying plainly: ClickHouse deserves its reputation. Columnar storage with strong compression, a mature query engine, an Apache 2.0 license with no cost at any scale, and a large enough community that most operational problems have already been solved by someone, publicly. Teams that reach for it aren't making a mistake about the database. Compared to row-oriented stores or paying a per-GB SaaS tax on raw ingestion, ClickHouse's storage cost per terabyte is a legitimate, well-earned advantage.
None of what follows disputes that. It's about what sits between "a fast columnar database" and "a production observability platform," because that distance is where the actual cost of the self-hosted plan lives.
It's also why the demo always goes well. A single-node ClickHouse instance, a handful of test logs, one engineer querying it directly, that's where almost every evaluation starts, and at that scale nothing below is visible yet. There's no second team asking how they log in, so SSO isn't a gap yet. There's no resharding to do, because volume hasn't grown. There's no security review asking for per-dashboard access control, because it's still one person's proof of concept. Every cost in this piece is a production-scale, multi-team problem, which is exactly why it's invisible during the part of the process where the go/no-go decision actually gets made.
A database stores and queries rows. An observability platform does a specific list of additional things, all of which ClickHouse leaves for you to build:
trace_id. That correlation logic, and the query patterns that make it fast, is application logic you design and maintain, not something a generic SQL database gives you.None of this is a knock on ClickHouse. A general-purpose columnar database was never supposed to ship with all of this. It's the reason "ClickHouse is free" and "a production observability platform on ClickHouse is free" are different sentences.
This is where the DIY math gets worst, and where it matters most for a team whose ingestion volume is actively growing, not staying flat.
A single-node or lightly-sharded ClickHouse setup that runs fine at moderate volume typically needs real re-architecture well before it reaches several times that volume: repartitioning, adding shards, rebalancing existing data across the new topology, ideally without downtime on a system your on-call already depends on. This is a well-documented, genuinely difficult category of ClickHouse operations work, not an edge case.
High availability compounds the same problem rather than solving it separately: every ClickHouse replica stores a full copy of its shard's data, so adding replicas for HA multiplies your provisioned disk by the replica count, on top of whatever resharding growth already required. Coordinating that replication also means running ClickHouse Keeper (or the ZooKeeper-based setup it replaced) for quorum, itself another distributed system to size, monitor, and keep healthy.
And critically: self-hosted, open-source ClickHouse cannot fully decouple storage from compute the way object storage does. It can tier older data parts to S3, but the MergeTree engine underneath was designed around local disk, so S3-backed parts query slower and background merges generate a steady stream of object storage API calls against data that still, ultimately, belongs to a specific replica. True compute-storage separation, ClickHouse's SharedMergeTree, exists only in ClickHouse Cloud, the commercial managed offering, not in the self-hosted open-source version. If the plan is "self-host to avoid a vendor," the storage-efficiency argument that made ClickHouse attractive in the first place doesn't fully carry over to the self-hosted deployment model.
Say a team is ingesting logs, metrics, and traces at meaningful daily volume today, growing several times over within a year, and needs the full list above: unified querying, dashboards, alerting, application-level RBAC, and SSO, because that's what a real production rollout across multiple teams requires.
Rough shape of the build, not exact numbers, since team composition and existing expertise vary a lot:
Translate that into fully-loaded engineering time (salary, benefits, overhead, typically $150-250K+/year per senior platform engineer depending on market) amortized over the first 12-18 months, and it's common for the "free" self-hosted option to cost more in people-hours than a platform that ships the same capability set already built, before infrastructure spend is even counted separately. That's not a knock on the team's competence, it's simply how much software this actually is.
This is the part that's easy to skip in a piece like this, and shouldn't be: for some teams, building on ClickHouse directly is genuinely the correct decision, not a mistake they haven't discovered yet.
If none of those describe your situation, the honest read is that you're not choosing "cheap" over "expensive." You're choosing "pay in engineering time, spread out and easy to underestimate" over "pay on an invoice, visible up front."
OpenObserve is built on the same class of storage economics teams like about ClickHouse, Parquet-format columnar data on object storage (S3, GCS, Azure Blob), not a proprietary engine that only decouples storage from compute in a paid cloud tier. The difference is that the observability layer described above isn't something you build afterward:
This doesn't remove the option to self-host, OpenObserve is open source (AGPL-3.0) and runs entirely on your own infrastructure if that's the requirement. It removes the specific cost this piece has been walking through: the months of engineering time spent building ingestion, correlation, RBAC, and SSO before a team can use any of it in production.
Not "what does ClickHouse cost to run," which is a real and genuinely low number. The question that actually determines total cost is: what does it cost to reach a production-grade observability platform, with RBAC, SSO, and high availability that survives real growth, and who on the team is building and then owning that indefinitely?
Answer that question honestly, with fully-loaded engineering time included, not just infrastructure spend, and the comparison usually looks very different than "ClickHouse is free."
For a direct feature-by-feature comparison, see ClickHouse vs OpenObserve for Logs, Metrics & Traces.