Skip to content
All flows

Dual-ship to two backends during a migration

Fans every trace, metric, and log out to both the legacy agent and the new OTLP/HTTP backend so the two can be compared side by side during a migration.

Every trace, metric, and log fans out to two backends at once: the legacy agent keeps receiving exactly what it always has, and the new OTLP/HTTP backend receives the same stream, so dashboards and alerts can be compared side by side before anything is cut over. A resource processor stamps deployment.environment: production on the way through.

Point otlp/legacy at your existing agent and set NEW_BACKEND_OTLP_ENDPOINT for the new destination. When the comparison holds, delete the otlp/legacy exporter from the pipelines and the migration is done. The fan-out is the whole flow.

How the data moves
receiverprocessorexporter
traces
otlpmemory_limiterresourcebatchotlp/legacyotlphttp/new
metrics
otlpmemory_limiterresourcebatchotlp/legacyotlphttp/new
logs
otlpmemory_limiterresourcebatchotlp/legacyotlphttp/new

Use this flow

Open the config in Telflo and it becomes a working pipeline on the canvas: adapt what's specific to you, test it against recorded traffic, and push it to your fleet over OpAMP. Free account, no card.

Components

What's in it, and why

otlp

Single entry point for all three signals from SDKs and downstream collectors, over gRPC and HTTP.

memory_limiter

Runs first so backpressure reaches the receiver rather than the collector being OOM-killed when one backend slows down.

resource

Stamps deployment.environment: production on every record so both backends see the same resource attributes.

batch

Batches on a 10 second timeout before the fan-out, so both exporters receive the same batches.

otlp/legacy

Keeps the existing agent receiving exactly what it always has, over OTLP gRPC.

otlphttp/new

Sends an identical copy of every record to the new backend named by NEW_BACKEND_OTLP_ENDPOINT.

Notes

Gotchas

  • 1

    Every exporter in a pipeline receives a full copy of the data, so this doubles egress volume and, on per-GB pricing, doubles the bill for as long as both run.

  • 2

    otlp/legacy points at legacy-agent.internal:4317 with TLS disabled, which is fine inside a trusted network and not fine across one.

  • 3

    Neither exporter declares a persistent queue here, so a restart drops whatever was buffered for both backends.

  • 4

    A slow backend applies backpressure to the whole pipeline, so the healthy destination is affected by the unhealthy one.

Test it before your fleet runs it

Free account, no card. Open this flow in the editor, adapt it, and see what it does to real data before anything ships.