Anatomy of a Collector
Collectors are composed of pipelines. Each pipeline chains three component types:
All components and pipelines are defined in a single
config.yaml. The Collector’s flexibility comes from how those components are composed.

Deployment Models
Three common ways to deploy a Collector:Common Use Cases
Reasons to put a Collector between your applications and Phoenix:Common Pitfalls
A few Collector failure modes to know about:- Forgetting Phoenix Cloud authentication — when exporting to Phoenix Cloud or any authenticated Phoenix instance, the Collector needs to add
Authorization: Bearer <api-key>to outbound requests. Use theheaders_setterextension or set them in the exporter configuration. Local Phoenix doesn’t require auth. - Modifying shared span objects across pipelines — when one pipeline mutates a span, every other pipeline that processes the same span sees the modification. Use a
routingconnector to duplicate spans cleanly before fan-out. - No batch processor at the end of the pipeline — for production volumes, the last processor in a pipeline should be a
batchprocessor. Without it, the Collector exports one span at a time, which is inefficient. - Wrong Collector endpoint — applications need to point at the Collector’s OTLP endpoint (gRPC:
:4317, HTTP::4318), not at Phoenix directly. Mixing the two is a common source of “why are some spans missing?” debugging. - Receiver missing
include_metadata: true— when a centralized gateway uses inbound request metadata for routing (e.g., reading the target Phoenix project from a header), the receiver has to be told to make that metadata available. Without it, the routing extension has nothing to read.

