# OpenTelemetry in. Open Parquet out.

OTel solved vendor lock-in at the collection layer and stopped there — most backends still take open telemetry and put it into a proprietary index. CtrlB keeps the whole path open, from the collector to the files in your bucket.

## Metadata

- **Canonical HTML**: https://ctrlb.ai/solutions/opentelemetry
- **Section**: Solutions — OpenTelemetry

## At a glance

| Figure | What it refers to |
|--------|-------------------|
| 3 signals | Logs, metrics, traces |
| No agent | Your collector, unchanged |
| Open Parquet | Open on both ends |
| Fan out | Run in parallel with today's backend |

## Where the open path stops

- You instrumented with OTel to stay portable, then sent it to a backend whose storage format you cannot read.
- Switching backends means re-pointing collectors and abandoning the history the old one holds.
- Semantic conventions get flattened into whatever the vendor's schema expects, and the fidelity is not recoverable.
- Three signals arrive over one protocol and then land in three separate stores anyway.

## What changes

- Collectors point at CtrlB with no vendor agent in the path and no instrumentation changes.
- All three signals land in one lake as open Parquet, in a bucket you own, readable by any Parquet engine.
- Schema-less ingestion preserves attributes as sent, including the ones your backend would have dropped.
- Because collectors fan out, you can run CtrlB beside your current backend for as long as the comparison is useful.

## How it works

1. **Add an exporter** — Add CtrlB as a destination in your existing collector config. Keep the current backend as a second exporter during evaluation.
2. **Land all three signals** — Logs, metrics, and traces write into one Parquet lake with their attributes intact, rather than into three stores with three schemas.
3. **Query one layer** — Full-text search, SQL, and PromQL read the same files, so trace-to-log and metric-to-log are joins rather than tool switches.

## Capabilities

- **OTLP native**: Standard OTLP over gRPC or HTTP, with no translation layer of ours in between.
- **Semantic conventions kept**: Resource and span attributes survive ingest instead of being flattened to fit a fixed schema.
- **Collector fleet control**: Configure and upgrade collectors across clusters and clouds from the control plane.
- **Parallel running**: Fan out to CtrlB and your current backend at once; there is no cutover date.
- **Vector and Fluent Bit**: Non-OTel shippers are supported for sources that have not migrated yet.
- **Portable history**: The lake is Parquet in your bucket, so leaving does not mean losing the data.

## FAQ

**Do we need to re-instrument?**

No. If you already emit OTLP, adding CtrlB is a collector configuration change.

**Can we send to CtrlB and our current backend at the same time?**

Yes, and that is the recommended way to evaluate. Configure two exporters and compare the same investigation against both.

**Are attributes preserved?**

Yes. Ingestion is schema-less, so attributes land as sent and new ones index the moment they appear.

**What about non-OTel sources?**

Vector, Fluent Bit, and direct HTTP ingestion are supported for sources that have not moved to OTel.

Markdown mirror: fetch `/solutions/opentelemetry.md` for this page as plain Markdown.