Three Repos, One Collector

▶ Watch (1:40)

The Collector SIG maintains three repositories. The core repo holds shared libraries, the OTLP receiver and exporter, the batch processor, and the builder tool. The contrib repo holds most production components, including the Prometheus receiver. The releases repo defines all official distributions and packaged binaries. If you want to know what is in a distribution, the manifest file lives there. This is year seven of the OpenTelemetry Collector.

The 1.0 Push: 25 Modules Stabilized

▶ Watch (3:35)

Stability has ranked first or second on user surveys three years running. In 2024, the team opened a 1.0 effort focused on stabilizing the OTLP exporter, OTLP receiver, and core libraries. Go APIs are harder to stabilize than expected. After a year and a half of work, 25 modules are now stable. The RFC for graduation requires stable configuration, benchmarks, clear ownership with at least two maintainers, and documentation.

Kubernetes and Prometheus Reach Stability Milestones

▶ Watch (6:38)

The K8s attributes processor is consolidating on OTel semantic conventions via a declared RFC. Version 0.147 delivers a 20% memory reduction. The leader election extension prevents over-scraping the Kubernetes API in multi-node clusters. The Kubernetes events receiver will not be deprecated. For Prometheus, the receiver is approaching stable. Start time must now be set via the metric start time processor, not the receiver. A new Prometheus Remote Write receiver complements the existing exporter.

Batch Processor Deprecated: Batching Moves to the Exporter

▶ Watch (11:10)

The batch processor has an in-memory buffer with no configurable size. When the backend returns errors or the exporter queue fills, those errors do not propagate because the buffer is synchronous. The fix: batching moves into the exporter itself. Remove the batch processor from your pipeline and add a batch section under sending_queue. The exporter batcher runs after the queue, supports configurable flush timeout and min/max size, and accepts queue size in bytes rather than just item counts.

Internal Telemetry Gains Component-Level Attribution

▶ Watch (15:08)

An RFC from November 2024 defined attributes to tag which component each piece of telemetry comes from. Implemented in March 2025, it lets spans, metrics, and logs from all collector components carry component identity. Universal pipeline metrics now measure data volume at the framework level rather than having each component measure itself. Basic error logging moves into the framework too. Enable the telemetry.PipelineTelemetry feature gate to try it. Component attributes attach as instrumentation scope attributes, so your backend must support that field.

Custom Distributions Over All-in-One Contrib

▶ Watch (26:25)

The SIG now officially maintains an eBPF profiler distribution. Its eBPF profiler receiver lives outside contrib in its own repo, which is the pattern they want to encourage. The collector builder tool lets you compile a custom distribution from any Go components. Benefits include smaller binaries (contrib ships around 200 components) and a lower memory footprint. The tradeoff is version compatibility. When picking component versions against a pre-stable core, mismatches can break builds. Ergonomics feedback is welcome.

Q&A

Was the collector builder hard to find because the slide lacked a direct link? The attendee found only an archived repo when searching by name; the maintainers acknowledged it as useful feedback. ▶ 30:08

Users chose contrib for batteries-included convenience; isn’t pushing them away a contradiction? Maintainers confirmed contrib is convenient, but the core reason for encouraging custom builds is that there are too many components to maintain properly in contrib. ▶ 31:08

Are gRPC load balancing and compression improvements on the roadmap? The team pointed to Arrow and STEF as existing projects targeting traffic reduction; cross-AZ routing was called out as outside collector scope. ▶ 32:56

Notable Quotes

you’re welcome. Evan Bradley · ▶ 11:02

and it takes a lot of size apparently. Dmitrii Anoshin · ▶ 14:58

we have to write a very fine line here Alex Boten · ▶ 34:05

Key Takeaways

  • The batch processor is deprecated; move batching config into the exporter’s sending_queue section.
  • K8s attributes processor cuts memory 20% in version 0.147 via semantic convention consolidation.
  • Enable telemetry.PipelineTelemetry to get per-component attribution on spans, metrics, and logs.

About the Speaker(s)

Alex Boten is a staff software engineer at Honeycomb with ten years of experience across network infrastructure, mobile, and cloud-native systems.

Dmitrii Anoshin is a Senior Staff Software Engineer at Cisco and a Technical Leader for Splunk Observability’s data collection team. He has contributed to OpenTelemetry since 2020 following Splunk’s acquisition of distributed tracing startup Omnition.

Evan Bradley is a Senior Software Engineer at Dynatrace and a primary contributor to the OpenTelemetry Transformation Language (OTTL). He also helps drive adoption of the OpAMP agent management protocol.

Jade Guiton is a Software Engineer II at Datadog who joined the OpenTelemetry team in 2024 and serves as an approver of the core Collector repository.

Antoine Toulme is a Principal Product Manager at Splunk focused on the OpenTelemetry Collector, with prior contributions to the Eclipse project, Apache Software Foundation, and Hyperledger Foundation.