Testing

How to Test Your OpenTelemetry Collector Configuration Before Production

A practical checklist for validating receivers, processors, and exporters before a real workload depends on them.

A misconfigured OpenTelemetry Collector rarely fails loudly. It fails quietly — a processor silently drops spans that don't match its expected shape, an exporter retries into a void because of a typo'd endpoint, a sampling rule filters out exactly the traces you needed during an incident. By the time anyone notices, it's usually because they went looking for data that should have been there and wasn't.

Testing a collector config properly means checking each stage of the pipeline independently, then checking that the whole chain works together — not just sending one test span and calling it done.

1. Test the receiver first, in isolation

Before anything else, confirm the collector is actually listening where you think it is. This catches the most common early mistake: a receiver bound to the wrong port, protocol, or interface.

2. Test processors with data that actually varies

This is where most configs get under-tested. A single hand-crafted test span rarely exercises the processors that matter most:

Why single test spans aren't enough: a processor rule that filters on http.status_code >= 500 will pass a manual test with a 200 response and never reveal itself as broken — you only find out the rule was inverted when a real error trace goes missing during an actual incident.

3. Test exporters against the real backend, not just "it connected"

A successful TCP handshake to your backend doesn't mean data is actually being accepted. Confirm:

4. Test the whole chain together — with correlation intact

The most common gap: each stage tests fine independently, but trace-log correlation breaks somewhere in the pipeline. A log processor that strips trace_id during redaction, or a batch that separates related signals across export cycles, can silently disconnect logs from the traces that produced them — without any error, warning, or dropped-data metric to flag it.

The only reliable way to catch this: generate a trace and its correlated logs together, then confirm in your backend that searching by that trace ID actually surfaces both. This has to be an explicit check — collector metrics alone won't tell you correlation broke.

Generating the test data itself

You have a few real options here, each with a different tradeoff:

This is the exact gap OTel Studio is built for — generating correlated, multi-service telemetry against your actual collector config, so you can run through this whole checklist against realistic traffic patterns rather than a single synthetic span.

A minimal pre-production checklist

  1. Receiver reachable on the expected protocol/port/path
  2. Batch processor actually batching under realistic volume
  3. Sampling rules tested against both normal and error-flagged traces
  4. Attribute redaction/renaming verified on the exported side, not just collector debug logs
  5. Exporter auth/TLS confirmed against the real backend, not just a TCP check
  6. Trace-log correlation confirmed by searching a specific trace ID in your backend and finding both signal types

None of this replaces real production traffic eventually finding the gaps you missed. But catching the obvious ones — a wrong path, an inverted sampling rule, redaction that doesn't redact — before that traffic arrives is the difference between a quiet config change and a 2am page.

Related guides