OTel Collector¶
Summary
The OpenTelemetry Collector is a vendor-agnostic pipeline engine that receives, processes, and exports telemetry. One Go codebase runs as either an agent or a gateway and handles traces, metrics, and logs, plus profiles as an alpha signal behind a feature gate. The current train is v1.67.0 / v0.161.0 (2026-09-14), released every two weeks with no LTS line. Collector 1.0 has not shipped: the core APIs are v1.x, but the binary and every component are still v0.x. This is the component-level companion to the OpenTelemetry guidance topic, which covers how organizations deploy it.
Key Facts¶
| Fact | Value |
|---|---|
| Latest Version | Core v1.67.0 / v0.161.0 (2026-09-14). Contrib v0.161.0 (2026-09-15) |
| Next release | v0.162.0, scheduled 2026-09-28 |
| Release cadence | Every 2 weeks (measured 13 to 15 days). No LTS or EOL policy |
| Security SLA | Fix within 30 days of disclosure. CVSSv3 >= 9.0 within five business days |
| License | Apache-2.0 |
| Governance | OpenTelemetry Collector SIG. OpenTelemetry became a CNCF Graduated project in May 2026 |
| Language | Go (Go 1.26 minimum since v0.160.0) |
| Stable Go modules | pdata (v1.0.0 since 2023-11-27), component, confmap, consumer, pipeline, receiver/processor/exporter/extension APIs, most config/* packages |
| Signals | Traces, metrics, logs. Profiles alpha (gate service.profilesSupport) |
| Official distributions | 6: otelcol, otelcol-contrib, otelcol-k8s, otelcol-otlp, otelcol-ebpf-profiler, otelcol-prometheus (experimental) |
| Default ports | OTLP 4317 (gRPC) and 4318 (HTTP), internal metrics 8888. All bind to localhost by default |
| Management | OpAMP (spec Beta) via the contrib Supervisor. Kubernetes via the OpenTelemetry Operator v0.159.0 |
| Repositories | core, contrib, releases |
Overview¶
Per the project's own repository objectives, the Collector is "unified: single codebase, deployable as an agent or collector with support for traces, metrics and logs." Receivers ingest data and convert it to the internal pdata model. Processors transform, filter, or sample it. Exporters send it on. Connectors join pipelines, and extensions (health, auth, storage, OpAMP) run beside them.
The compact map shows how the pieces fit in a typical Kubernetes deployment.
flowchart LR
SDK["App SDKs<br/>OTLP"] --> AG["Agent<br/>otelcol-k8s DaemonSet"]
HOST["kubelet, node,<br/>log files"] --> AG
AG -->|"load_balancing<br/>routing_key traceID"| GW["Gateway<br/>otelcol-contrib Deployment"]
TA["Target Allocator"] -.->|"scrape targets"| AG
SUP["OpAMP Supervisor"] -.->|"remote config"| GW
OP["OpenTelemetry Operator"] -.->|"CRs, HPA"| GW
GW --> BE[("Backends:<br/>OTLP, Prometheus RW, Kafka")]
Internals, deployment modes, and design trade-offs are in the explanation. Install, scaling, build, and upgrade recipes are in the how-to guides. Stability levels, defaults, ports, renames, and deprecations are in the reference.
Releases And Versioning¶
The core repo uses dual versioning: each release pairs a stable v1.x tag (the stable module set) with a v0.x tag for everything else. Contrib and the distributions carry only the v0.x number and are tagged a day later.
- Cadence: the release policy says "very short 2 week release cycles". Intervals across v1.58.0 to v1.67.0 were 13 to 15 days.
- No formal LTS, end-of-life, or support-window policy exists. The published commitments are security fixes within 30 days of public disclosure and within five business days for CVSSv3 >= 9.0.
- Collector 1.0: the roadmap to v1 targets stable configuration and APIs. The config-facing work is visible in 2026 releases (snake_case component renames with aliases, generated
config.schema.yamlfiles, stabilized-and-removed feature gates), but no 1.0 date is published.
Operational Implication
With two-week releases and no LTS, running Collectors means planning regular upgrades rather than freezing versions. See the upgrade routine. The Operator's automatic upgrade handling exists partly to absorb this churn.
Official Distributions¶
Six distributions are built from opentelemetry-collector-releases as of 2026-09-25:
| Distribution | Binary | Focus |
|---|---|---|
| Core | otelcol |
Minimal foundation set |
| Contrib | otelcol-contrib |
Broad component zoo, including vendor exporters |
| Kubernetes | otelcol-k8s |
Kubernetes-focused component set |
| OTLP | otelcol-otlp |
OTLP-only lean build |
| eBPF Profiling | otelcol-ebpf-profiler |
Whole-host profile collection. Release artifacts since v0.133.0 (2025) |
| Prometheus | otelcol-prometheus |
Embeds Prometheus exporters (blackbox, postgres, stackdriver, yace) as receivers. Experimental, "not recommended for production" per its README. Not in any tagged release yet: absent from the v0.161.0 tag, present in the v0.162.0 nightly tags (checked 2026-09-28) |
Third-party distributions (AWS Distro for OpenTelemetry, Grafana Alloy, Datadog DDOT, Splunk OTel) exist but are not project-published. Anything beyond these is built with the Collector Builder. See Custom Builds With ocb.
What Changed In The Last 12 Months¶
| When | Change | Source |
|---|---|---|
| v0.144.0 (2026-01-20) | otlp exporter renamed otlp_grpc, otlphttp renamed otlp_http, with deprecated aliases. Start of the snake_case rename campaign across contrib |
core and contrib CHANGELOGs |
| 2026-03-26 | Profiles signal enters public alpha. Collector support from v0.148.0. Core OTLP components alpha for profiles in v0.149.0 | Profiles alpha blog |
| 2026-05 | OpenTelemetry becomes a CNCF Graduated project | CNCF announcement |
| v0.151.0 to v0.159.0 | pebble_tail_storage extension moves tail-sampling buffers to disk (alpha, gated). Tail sampling gains num_shards, span-ingest, and W3C tracestate support |
contrib CHANGELOG |
| v0.155.0 to v0.157.0 | Stabilized feature gates removed. schemagen moved into core. Partial reload gates. Receivers start last |
core CHANGELOG |
| v0.156.0 | file_storage max_size cap. memory_limiter GC backoff |
core and contrib CHANGELOGs |
| v0.158.0 to v0.159.0 | queue_batch processor (development) to replace batch. Exporter batching gate. Supervisor package-upgrade groundwork |
core and contrib CHANGELOGs |
| v0.160.0 | Go 1.26 minimum. windows/amd64 Tier 1. confighttp keepalive section |
core CHANGELOG |
| 2026 | otelcol-prometheus distribution added (experimental) |
releases repo README |
Evaluation¶
Strengths
- One engine for all signals, with the widest receiver and exporter catalogue in the ecosystem. Backends can be swapped at the exporter without touching SDKs.
- Fail-fast config validation and typed pipelines catch wiring errors at startup.
- Custom builds with
ocbkeep binaries and attack surface small. - CNCF graduated governance with multi-vendor maintainers (Grafana Labs, Splunk, Elastic, Datadog, Dynatrace, and others per the releases repo).
Weaknesses
- Two-week releases with no LTS. Frequent renames and deprecations mean real upgrade work.
- Most components are alpha or beta. Only the OTLP receiver/exporters and a few processors (for example
k8s_attributes) are stable. - Stateful features (tail sampling, persistent queues) push operational complexity onto you: sticky routing, disk sizing, at-least-once duplicates.
- No official benchmarks for tail sampling, batch tuning, or queue sizing (see Benchmarks).
Choosing a distribution
| If you need… | Pick |
|---|---|
| Smallest reasonable static build, OTLP-only pipelines | otelcol-otlp |
| Kubernetes install with a Kubernetes-focused component set | otelcol-k8s |
| The wide receiver/exporter/processor zoo, for evaluation | otelcol-contrib |
| A hand-curated component set (including your own Go components) for production | ocb custom build |
| Profile-signal collection via eBPF | otelcol-ebpf-profiler |
| Prometheus exporters without separate exporter processes, for evaluation only | otelcol-prometheus |
Anti-pattern: do not run contrib everywhere by default when workloads only speak OTLP. The distributions exist precisely so platform teams do not ship unused components into every pod.
Topic Map¶
- How-to Guides: install, configure, scale, build (OCB) and upgrade the Collector (v1.67.0/v0.161.0).
- Reference: versions and release train, component stability, renames and deprecations, default ports, configuration keys.
- Explanation: pipeline engine and pdata, deployment modes, tail-sampling placement, resiliency and batching, OpAMP, Target Allocator, distributions and the builder, stability model, scaling doctrine.
Related Topics¶
- OpenTelemetry guidance topic: blueprint doctrine and Adobe/Mastodon/Skyscanner production topologies, plus the project reference (spec, OTLP, Operator CRDs). This folder supplies the engine internals those topologies run on
- Backend topics consuming Collector output: SigNoz, LGTM Stack, Victoria Stack, Apache SkyWalking, OpenObserve
- Grafana Alloy, a third-party Collector distribution: Grafana
- Domain comparisons: Observability stacks comparison (collection row), LGTM vs Victoria Stack (Alloy vs vmagent plus Collector)
- Other domains: Kubernetes (DaemonSet/Deployment/StatefulSet modes, HPA), Kafka (Kafka receiver and exporter as a buffer between tiers), Istio (Istio's OpenTelemetry tracing provider can export spans to a Collector over OTLP)
- Domain hub: Observability
Sources¶
Checked 2026-09-25 (repository files via raw.githubusercontent.com, release timestamps via proxy.golang.org, docs pages via the opentelemetry.io source repo). Links first verified HTTP 200 on 2026-08-27.
| Source | Kind |
|---|---|
| Collector architecture | Primary docs |
| Collector configuration | Primary docs |
| Internal telemetry | Primary docs |
| Distributions | Primary docs |
| Collector Builder (ocb) | Primary docs |
| Gateway deployment | Primary docs |
| Agent-to-gateway pattern | Primary docs |
| Kubernetes install | Primary docs |
| Resiliency | Primary docs |
| Scaling guide | Primary docs: tail-sampling routing, memory-limiter behavior |
| Benchmarks | Primary docs/dashboard: verified absent our three metrics (data.js parsed 2026-08-27) |
| Load-test data dashboard | Primary data: absence verification target |
| Roadmap to v1 for the Collector | Primary blog (2024) |
| Profiles public alpha | Primary blog, 2026-03-26 |
| CNCF graduation announcement | CNCF, 2026-05-21 |
| Core repo | Primary source, CHANGELOG, versions.yaml, docs/release.md |
| Core CHANGELOG | Primary: v1.67.0/v0.161.0 and history |
| Contrib CHANGELOG | Primary: v0.161.0 and history |
| Releases repo | Primary: distribution list and manifests |
| Component stability | Primary: stability level definitions |
| pdata package docs | Primary |
| exporterhelper README | Primary code doc: queue, retry, batch defaults |
| filestorage extension README | Primary code doc: max_size cap, rebound compaction |
| memorylimiterprocessor README | Primary code doc |
| loadbalancingexporter README | Primary code doc |
| tailsamplingprocessor README | Primary code doc |
| configauth README | Primary code doc: authenticator matrix |
| configtls README | Primary code doc |
| OpAMP spec | Primary spec: Beta, opamp-spec v0.20.0 |
| OpAMP Supervisor README | Primary: capability status table |
| OpAMP Supervisor specification | Primary: remote config viable, package upgrades blocked (#47272) |
| Target Allocator docs | Primary: allocation strategies, CR usage |
| Operator HPA autoscaling | Primary docs |
| Collector Helm chart | Primary: chart 0.173.1 |
| OpenTelemetry CVE list | Primary: security advisories |
| Configuration security best practices | Primary docs |
| contrib #31498 | Practitioner datapoint: memory scaling law |
| Elastic Observability Labs study | Vendor lab A/B: version-unpinned, confounded bundle |
| contrib #42326 | Pebble PoC numbers (pebble-only) |
| VictoriaMetrics KubeCon EU 2026 sampling | Secondhand relay of #42326 table |
| contrib #30770 | Unresolved PVC-stall anomaly |
| Cost of tail sampling (Meth) | Low-confidence single run. Bot-gated link |
| contrib issue #35378 | Tracker: data loss on DNS change behind the LB exporter |
| CNCF: Operating OpenTelemetry at scale with OpAMP | Practitioner corroboration |
| KEDA scaling concepts | Practitioner corroboration |
Provenance: the internals were extracted from three verification passes on 2026-08-27 (pass one: 25 claims confirmed, zero refuted. Pass two: 23 confirmed, 2 overclaims refuted, notably OpAMP spec-level secure auto-update guarantees. Pass three: official benchmark corpus parsed for verified absence, external measured deltas with confounds documented). The 2026-09-25 refresh re-checked versions, component names, stability levels, and defaults against v1.67.0/v0.161.0.
Questions¶
Resolved by the 2026-08-27 passes:
- Queue, retry, and persistent-storage semantics: Resiliency Internals and resiliency recipes
- OpAMP readiness: management plane. Remote config yes (conservatively). Package upgrades no, still true at v0.161.0
- Auth extension landscape: auth matrix
- Tail-sampling overhead numbers: Benchmarks and measured numbers. The official corpus is silent. External deltas are Elastic's confounded −65%/+2× and #42326's pebble-only −82%/~7.5×
- Batch processor under overload: confirmed absence of public measured evidence
- Queue sizing: units verified (batches under the default sizer, not bytes). The operative ceiling is real disk (#30770 anomaly documented)
Resolved by the 2026-09-25 refresh:
- Profiles status: public alpha since 2026-03-26, still gated by
service.profilesSupport(Profiles Signal) - Routing processor: deprecated v0.116.0, removed v0.133.0. Use the routing connector (deprecations)
Open questions:
- How should secrets be handled beyond the static authenticator matrix? Candidates to study are the configuration security best practices page and secret-provider mechanisms such as confmap providers for vaults.
- When will version-pinned, variable-isolated Collector performance benchmarks appear? None are published as of 2026-09-28, so quote vendor deltas only with their confounds attached. A
BenchmarkTailSampling*entry on the load-test dashboard would answer this. - When will
queue_batchleave development and join a distribution, and when willbatchbe deprecated? - When will the Supervisor's
accepts_packagesship (issues #47272 and #33947)? - When will
otelcol-prometheusget its first tagged release? As of 2026-09-28 it ships only inv0.162.0nightly tags, so v0.162.0 is the earliest possible stable release. - Is there a dated Collector 1.0 plan beyond the 2024 roadmap post?