mrkeyoor.com_
Tue 01 Sept 17:45 UTC
Dataevaluationupdated 26 Aug 2026

opentelemetry-collector-contrib review

OpenTelemetry Collector Contrib is the large community repository of receivers, processors, exporters, connectors, and extensions for the OpenTelemetry Collector. It lets operators ingest telemetry from many systems, transform it, and send traces, metrics, or logs to different backends without putting vendor-specific code in every application.

+11stars / 7d
Verdict

Our root test command finished in 6 seconds with 0 tests because it matched no Go packages, so this repository must be evaluated through its multi-module Make targets rather than go test ./.... Use Contrib when a specific receiver, processor, or exporter justifies its stability and support level. Build a smaller distribution for production instead of accepting the entire component catalog by default.

We ran it

Lab card: what happened when we ran opentelemetry-collector-contribScreenshot of opentelemetry-collector-contrib (opentelemetry.io)
Install✓ · 20s1 packages
Build✓ · 6s
Tests✗ · 6s0 passed · 0 failed of 0 (go test)
Repo13519 files~1,558,177 lines of source · 86.4 MB · 41 CI workflows

Answers from our run

Does opentelemetry-collector-contrib build from source?

Dependencies installed in 20 seconds (1 packages), and the build succeeded in 6 seconds. We cloned commit e35b2fe into a clean Debian container with 3 CPUs and no project-specific setup.

Do opentelemetry-collector-contrib's tests pass?

Yes: 0 of 0 passed when we ran the project's own test command (go test). Some failures need services or credentials a bare container does not have.

Who should not use opentelemetry-collector-contrib?

Teams assuming every contrib component is production-stable: the README says one component can be stable for traces, alpha for metrics, and development for logs.

What are the alternatives to opentelemetry-collector-contrib?

OpenTelemetry Collector Core, Grafana Alloy, Fluent Bit. Our root test command finished in 6 seconds with 0 tests because it matched no Go packages, so this repository must be evaluated through its multi-module Make targets rather than `go test .

Setup2/5Fast build, but root testing missed every component module
Docs4/5Governance is clear; component quality varies by owner and signal
Community5/54,885 stars with same-day pushes and an active review dashboard
Maturity4/5Frequent releases and strong process, with mixed component stability

Who it’s for

Observability teams that need integrations absent from the Collector's core repository.
Platform engineers prepared to assess stability per component and per signal.
Organizations building a custom Collector distribution with only approved components.
Contributors maintaining a vendor or service integration inside the OpenTelemetry ecosystem.

Who it’s NOT for

Teams assuming every contrib component is production-stable: the README says one component can be stable for traces, alpha for metrics, and development for logs.
Operators who want one uniform support contract: actual help may come from the individual code owner or vendor for each component.
Deployments that cannot absorb frequent configuration changes: v0.159.0 removed an extension, changed file-log behavior, and deprecated several names and defaults.
Security-sensitive teams unwilling to trim the distribution: the project explicitly encourages custom builds containing only required components.
Developers expecting go test ./... at the repository root to test everything: our command matched no packages and exited 1 with 0 tests run.

Setup reality

Our sandbox install succeeded in 20 seconds and recorded 1 Go package. The build succeeded in 6 seconds. Tests exited 1 after 6 seconds with 0 passed and 0 failed because go test ./... matched no packages. That command did not exercise the repository's many component modules.

The repository Makefile discovers separate go.mod files under receivers, processors, exporters, extensions, connectors, commands, and internal packages, then delegates work per module. Building a useful Collector also means choosing components, writing YAML, opening network endpoints, and supplying backend credentials or certificates.

The checkout contained 13,519 files and about 1,558,177 source lines. It had 41 CI workflow files, no Dockerfile, and no top-level tests directory. Use the official release images or Collector Builder for deployment, and use the repository's Make targets for source validation rather than a root-wide Go shortcut.

Contrib is a component warehouse, not one uniform collector

OpenTelemetry Collector Contrib holds integrations that do not belong in the smaller core repository. Receivers bring in telemetry, processors alter or filter it, exporters send it onward, connectors join pipelines, and extensions add operational behavior. The official Contrib distribution includes many of them, but the repository also recommends Collector Builder for assembling a custom binary from core, contrib, third-party, and internal components.

That distinction changes how the project should be reviewed. A stable Prometheus receiver and a development-stage exporter can live in the same tree without sharing the same readiness. Stability is declared per signal, so one component may be stable for traces and alpha for metrics. Read the README for every selected component, including its code owners and feature gates, instead of transferring the repository's overall reputation to every integration.

Version 0.159.0 includes removals as well as additions

Release 0.159.0 was published on August 17, 2026. It removed the deprecated Kafka topics observer, reserved a processor rule-name prefix, and changed file_log so top_n: 0 means all matching files rather than one. Several component names and defaults entered deprecation. The release also marked the Huawei Cloud CES and simple Prometheus receivers unmaintained and said they would eventually leave community distributions.

Those notes are normal for a fast-moving integration catalog, but they demand disciplined upgrades. File-log behavior can affect duplicate or missing log collection, while renamed exporters and receivers can break configuration. Inventory each deployed component, compare its changelog, run configuration validation, and replay representative telemetry before updating. The Contrib version alone is too coarse because one deployment may use 5 components and another 50.

What happened when we ran it

Our sandbox installed in 20 seconds and recorded 1 Go package, then completed the build in 6 seconds. The test command exited 1 after another 6 seconds. It reported go: warning: "./..." matched no packages followed by no packages to test. There were 0 passed and 0 failed tests because no component tests were discovered from that root invocation.

The result is a tooling finding, not evidence that Contrib lacks tests. Its Makefile finds separate go.mod files beneath receivers, processors, exporters, extensions, connectors, commands, internal code, and packages. It delegates targets to those modules and defines separate integration and end-to-end paths. Reproducing upstream validation requires those Make targets or a chosen component directory, rather than the ordinary root go test ./... habit.

commit e35b2fe contained 13,519 files, about 1,558,177 lines of source, and an 86.4 MB checkout. The repository had 41 CI workflow files, no Dockerfile, and no top-level tests directory. Our Go 1.24 Debian container had 3 CPUs and 8 GB of RAM. The quick 6-second build should not be read as compilation of every component or distribution in this multi-module tree.

Custom distributions reduce code and ownership surface

The official Contrib distribution is convenient when exploring unfamiliar telemetry sources. Production teams usually know which receivers, processors, and exporters they need. Collector Builder can package that set and leave out unrelated cloud SDKs, protocols, and vendor integrations. A smaller binary narrows dependency review, configuration options, exposed endpoints, and the number of component release notes that can affect an upgrade.

Reduction does not remove the need for capacity testing. Receivers can poll APIs or listen on the network, processors can buffer and reshape data, and exporters can queue when a backend slows down. Test memory limits, retry behavior, disk queues, cardinality, and backpressure using the selected pipeline. Contrib provides building blocks; it does not choose safe limits for a workload it has never seen.

Support follows individual components and code owners

The README says components may be supported by the common maintainer group or by specific vendors. Actual assistance will often come from an individual contributor, usually the code owner. Maintainers can downgrade a component when it becomes unmaintained or poses a risk to the repository or binary distribution. That honesty is useful, though it rules out treating every contrib integration as having one central service commitment.

Check recent commits and reviews for each required directory. GitHub recorded a repository push on August 26, 2026, with 4,885 stars and 934 combined open issues and pull requests. Issue 49441 maintains a same-day dashboard showing who must act on active pull requests. Repository-wide activity is strong, but the dashboard cannot prove that a niche exporter has an available maintainer.

Feature gates turn defaults into an upgrade decision

Some behavior enters behind feature gates before joining the main code path. Gates have their own lifecycle stages and may later switch defaults or disappear. Release 0.159.0 offers a file-log gate that converts an implicit top_n choice into a startup error, giving operators time to make the setting explicit. This is safer than a surprise, provided teams track gates they enable and disable.

Record every non-default gate beside the component version and configuration. During upgrades, read both the component changelog and gate lifecycle. A temporary gate should not become undocumented infrastructure. Configuration tests should start a collector with production YAML and confirm that deprecated names, removed components, or new validation rules fail in CI before they reach a running collector.

Adopt components one by one

Contrib is the sensible source when a required database, cloud service, protocol, or backend is not available in core. The project has current releases, a large reviewer structure, and explicit stability labels. Our failed root test shows that newcomers must learn its multi-module workflow, while the release notes show that configuration maintenance is continuous.

Start with the core Collector, list the missing integrations, and add only the Contrib components that close those gaps. For each one, document signal stability, owner, feature gates, credentials, endpoints, and rollback. That approach uses the repository's breadth without turning all 1.5 million lines into your operational responsibility.

Alternatives

ProjectWhat it isPick it when
OpenTelemetry Collector Core gh↗The smaller upstream Collector repository with core components and lower integration breadth.pick this instead when standard OTLP pipelines cover the requirement and a narrower component set is easier to support.
Grafana Alloy gh↗An OpenTelemetry Collector distribution combined with Prometheus-compatible collection and Grafana integrations.pick this instead when Grafana's observability stack and its supported distribution are already the operating standard.
Fluent BitA compact telemetry agent best known for log collection and forwarding.pick this instead when logs are the dominant signal and a smaller edge agent matters more than broad OpenTelemetry components.

What people are saying

  1. [github-trending] open-telemetry/opentelemetry-collector-contrib

Sources

  1. OpenTelemetry Collector Contrib README
  2. Collector Contrib v0.159.0 release
  3. Collector component stability definitions
  4. Collector Contrib pull request dashboard
  5. OpenTelemetry Collector Builder

More data reviews

turso · TrackersListCollection · dash · getcontact-cli · awesome-zhuiju-free · iggy · the whole board →