The $100,000 Log Search That Took Ten Minutes
Last year, I watched a lead SRE at a mid-sized fintech firm stare in silence at a loading spinner. They were paying over six figures a month to one of the 'Big Three' observability vendors, yet a simple high-cardinality query—searching for a specific customer ID across three days of logs—was timing out. We have been sold a dream of 'single pane of glass' visibility, but the reality is a fragmented nightmare of proprietary data silos that charge you more as your system becomes more complex. You are being penalized for your success.
While OpenTelemetry (OTel) successfully standardized traces and metrics years ago, logs remained the awkward relative left behind in expensive, walled gardens like Splunk or Datadog. That changed recently. With the official maturity of the OpenTelemetry Logging specification, we finally have the tools to reclaim ownership of our telemetry. By pairing the OTel Collector with a high-performance OpenTelemetry ClickHouse observability architecture, you can stop sampling your most valuable data and start querying it at the speed of thought.
The Data Gravity Trap
Proprietary vendors thrive on 'data gravity.' They make it incredibly easy to send data in, but prohibitively expensive to store, search, or move it. Because traditional logging tools rely on inverted indices (like Lucene) or row-based storage, they hit a performance wall when dealing with high-cardinality data—think unique User IDs, Container IDs, or Trace IDs. To keep their own costs down, these vendors force you into aggressive sampling or 'cold storage' tiers where your data goes to die.
This creates a massive gap in your visibility. If your traces are in one tool and your logs are in another, you aren't doing observability; you're doing digital archaeology. You spend your incidents copy-pasting IDs between browser tabs, hoping the timestamps align. Using OLAP for logs via ClickHouse breaks this cycle by treating logs as what they actually are: structured analytical events.
Why ClickHouse is the Secret Weapon for OTel Logs
ClickHouse wasn't built for logs; it was built for speed. However, its columnar architecture is a perfect match for the way we use modern telemetry. Unlike Elasticsearch, which struggles with the 'schema-on-write' overhead of indexing every single string, ClickHouse stores data in columns. If you only query for service_name and severity, ClickHouse only reads those specific columns from the disk.
Unmatched Compression and Performance
In real-world benchmarks, ClickHouse typically achieves a 10x to 30x data compression ratio compared to traditional systems. This isn't just a win for your cloud bill; it's a win for your cache. Because the data is so compressed, more of it stays in memory, allowing you to scan billions of rows in sub-second time. This is exactly why a new generation of open source observability stack players like SigNoz and HyperDX have ditched legacy search engines to build exclusively on ClickHouse.
Observability 2.0: The End of the Three Pillars
The industry is moving toward Observability 2.0, a philosophy that rejects the idea of three separate 'pillars.' Instead, it posits that logs, metrics, and traces are just different views of a single data type: the wide, structured event. When you use an OpenTelemetry ClickHouse observability stack, you can store these wide events in a single table. Want to see the average latency (metric) grouped by a specific user (log attribute) across a specific request path (trace)? In a unified OLAP backend, that's just a single SQL query.
Implementing the Stack: Decoupling Collection from Storage
The beauty of this approach is the clean separation of concerns. Your application shouldn't know where its logs are going. It simply emits OTLP (OpenTelemetry Protocol) data to an OTel Collector configuration. The collector then acts as a traffic controller, using the ClickHouse Exporter to batch and write data into your database.
A Typical OTel Collector Configuration Flow:
- Receivers: Accept logs via OTLP, FluentBit, or legacy Syslog.
- Processors: Transform and enrich logs (e.g., adding k8s metadata or masking PII).
- Exporters: Send the structured data to ClickHouse using either the official OTLP schema or a custom mapping.
By decoupling these layers, you prevent vendor lock-in. If a better storage engine emerges in five years, you only change your exporter configuration, not your entire application code.
The Nuance: Addressing the Trade-offs
I wouldn't be an honest engineer if I told you this was a 'magic button' solution. There are two primary hurdles to consider when moving to a ClickHouse-backed logging system. First, operational complexity. While you will save a fortune on SaaS fees, you are now responsible for managing a distributed database. ClickHouse is powerful, but its primary keys and codec settings require a bit of specialized knowledge to tune for peak performance.
Second is schema rigidness. Developers love dumping 'random' JSON into logs. ClickHouse performs best when you have a defined schema. While you can use a JSON object type or a Map(String, String) for arbitrary attributes, you'll get the best performance by promoting frequent fields to their own columns. It requires a shift in mindset: treat your logs with the same respect you treat your application database.
The Path Forward
The era of paying a 'log tax' to proprietary vendors is coming to an end. By embracing OpenTelemetry ClickHouse observability, you are doing more than just saving money; you are giving your team the ability to ask questions of their data without waiting for a progress bar. You are moving from a reactive state of searching for needles in haystacks to a proactive state of analyzing system behavior in real-time.
If you're tired of the data silos, start small. Set up an OTel Collector, spin up a ClickHouse instance, and route a single high-volume service to it. The moment you see a high-cardinality aggregation return in milliseconds, you’ll never want to go back to a proprietary silo again.


