gw auth api ord inv db
Some paths require a wider view.
Return on a larger screen.

Reshaping in Flight

The application sends what it knows.
The collector shapes it into what you need.
raw telemetry from applications 3 problems
POST /checkout
http.method: POST
user.email: alice@example.com PII
GET /api/orders
http.method: GET
http.status: 200
deployment.environment: (missing) no env tag
healthcheck
span.kind: internal
debug: true noise
Three problems. A PII leak in an attribute, a missing environment tag, and debug spans cluttering production. Fixing these in application code means changing and redeploying every service.
receiver
OTLP
processor
transform
exporter
OTLP
The transform processor sits in the collector pipeline. It can delete attributes, add new ones, and drop entire spans — all through configuration, no code changes.
collector config (simplified)
processors: transform: trace_statements: # Strip PII - context: span statements: - delete_key(attributes, "user.email") # Add environment tag - context: resource statements: - set(attributes["deployment.environment"], "production") filter: traces: span: # Drop debug spans - 'attributes["debug"] == true'
processed telemetry after transform clean
POST /checkout
http.method: POST
user.email: (removed) PII stripped
GET /api/orders
http.method: GET
http.status: 200
deployment.environment: production added
healthcheck
span.kind: internal
debug: true
dropped by filter
Same applications. Zero code changes. The collector reshaped the telemetry before it reached storage.

An attribute contains user.email with PII. Where should you remove it?

What is the main advantage of transforming telemetry in the collector?

The collector's transform processor is your last chance to shape telemetry before it reaches storage. Strip PII, enrich with environment tags, drop noise — all without touching a single line of application code.

You can now produce, connect, and manage the three golden signals. But when a span is slow, they can tell you where — not what the code was doing. That question needs a different kind of answer.

Continue →