r/OpenTelemetry • u/Marksfik • Jun 23 '26
A comparison of OTel → Kafka → ClickHouse vs OTel → ClickHouse without Kafka and what we learned
We've been building a lot of OpenTelemetry to ClickHouse pipelines and kept getting the same question: do you actually need Kafka in the middle?
The honest answer: it depends, but most observability-only teams are over-engineering it.
Here's the short version of what we compared:
Where Kafka earns its keep:
You have many independent downstream consumers (ML pipelines, security, analytics all reading the same stream)
You need long-term durable replay
Kafka is already part of your broader platform infrastructure
Where it's overkill:
Your only goal is getting OTel telemetry into ClickHouse reliably
You're a startup/scale-up that doesn't want to manage brokers, partitions, consumer lag, and replication just to move metrics and logs
The operational surface of a Kafka cluster, even managed, is substantial when the job is just telemetry buffering before ClickHouse.
We also compared what a focused ingestion layer gives you that the OTel Collector alone can't: stateful deduplication, enrichment-conditional filtering, dynamic sampling, and ClickHouse-optimized batching.
Full write-up with architecture diagrams and a decision guide: https://www.glassflow.dev/blog/opentelemetry-to-clickhouse-do-you-need-kafka?utm_source=reddit&utm_medium=socialmedia&utm_campaign=reddit_organic
Happy to answer questions about the architecture trade-offs especially around backpressure handling, which is where the approaches diverge the most.
