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

opentelemetry-collector review

OpenTelemetry Collector receives telemetry, processes it through configured pipelines, and exports it to observability backends. It gives teams one vendor-neutral service for traces, metrics, and logs instead of deploying a separate agent for each format and destination.

+25stars / 7d
Verdict

Our OpenTelemetry Collector run installed 55 packages, built in 27 seconds, and passed its single available test in 11 seconds. Use it when vendor-neutral traces, metrics, and logs need one programmable transit layer, and assign an owner to capacity, configuration, and upgrades. A passing build is the start: replay real telemetry and force backend outages before trusting the collector as production plumbing.

We ran it

Lab card: what happened when we ran opentelemetry-collectorScreenshot of opentelemetry-collector (opentelemetry.io)
Install✓ · 48s55 packages
Build✓ · 27s
Tests✓ · 11s1 passed · 0 failed of 1 (go test)
Repo2806 files~261,996 lines of source · 11.3 MB · 37 CI workflows

Answers from our run

Does opentelemetry-collector build from source?

Dependencies installed in 48 seconds (55 packages), and the build succeeded in 27 seconds. We cloned commit 934999f into a clean Debian container with 3 CPUs and no project-specific setup.

Do opentelemetry-collector's tests pass?

Yes: 1 of 1 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?

Teams seeking a useful zero-config daemon: receivers, processors, exporters, pipelines, endpoints, authentication, and limits must be chosen deliberately.

What are the alternatives to opentelemetry-collector?

Prometheus, Fluent Bit, Vector. Our OpenTelemetry Collector run installed 55 packages, built in 27 seconds, and passed its single available test in 11 seconds.

Setup3/5Build is quick; safe pipelines need deliberate configuration
Docs5/5Configuration, security, stability, monitoring, and signing are covered
Community5/57,453 stars, 37 workflows, and active SIG governance
Maturity5/5Stable OTLP support with frequent releases and signed artifacts

Who it’s for

Platform teams standardizing telemetry before it reaches one or more vendors.
Organizations that need OTLP receivers, processors, routing, retries, and export outside application processes.
Go developers building a custom collector distribution from selected components.

Who it’s NOT for

Teams seeking a useful zero-config daemon: receivers, processors, exporters, pipelines, endpoints, authentication, and limits must be chosen deliberately.
Operators unwilling to monitor the collector itself: failed exports, queue saturation, dropped items, and memory pressure can hide the systems it is meant to observe.
Users who need cancellation alerts to be perfectly classified today: issue #15827 says current outcome metrics can make context cancellations look like pipeline failures.
Projects expecting all behavior to remain stable across every update: v0.159.0 includes API breaking changes and changed exporter batching metrics.

Setup reality

Our sandbox installed 55 Go packages in 48 seconds and built successfully in 27 seconds. The available test step passed in 11 seconds, with 1 passed and 0 failed out of 1. That is a clean result, but one test does not represent the whole 261,996-line repository.

Running a useful collector requires a configuration defining receivers, processors, exporters, and service pipelines. Exporters may need backend endpoints, API keys, TLS material, or cloud credentials. Production deployments also need resource limits, queues, retries, and internal telemetry.

The core repository is a Go component framework and distribution source, not a preconfigured observability backend. Image signatures can be verified with Cosign. Component stability levels and supported Go versions vary, so custom-distribution builders must pin modules and follow release notes.

One service handles traces, metrics, and logs

OpenTelemetry Collector sits between applications and observability backends. Receivers accept telemetry, processors modify or filter it, exporters send it onward, and service pipelines connect those parts for traces, metrics, and logs. The same design can run beside a workload as an agent or centrally as a gateway. This reduces vendor-specific code inside applications and makes it possible to change destinations without reinstrumenting every service.

The Collector is plumbing, not a database or user interface. It does not replace the backend that stores telemetry, answers queries, draws dashboards, or sends alerts. Its value is control in transit: batching, sampling, attribute changes, routing, redaction, retries, and protocol translation can live outside application processes. That central power also creates a failure domain. A bad filter or saturated exporter can affect many services at once.

OTLP v1.10.0 is stable while components have separate levels

The README says this codebase is built against OTLP protocol v1.10.0, which is considered stable. Individual Collector components still carry their own stability levels, and library compatibility tracks Go's supported minor versions. The first Collector release after a new Go minor adds that version and drops support for Go N-2. Custom-distribution builders therefore need to pin modules and read component-specific notes, even when the wire protocol is stable.

OpenTelemetry publishes core and broader distribution images, and the README documents Cosign verification using the release workflow identity. That is a good supply-chain control. Verification should happen in deployment automation, not as a one-time laptop command. Store the image digest alongside configuration so a rollback restores both code and behavior. A tag, a configuration file, and a set of enabled components together define the running collector.

What happened when we ran it

Our sandbox cloned commit 934999f and installed 55 Go packages in 48 seconds. The 11.3 MB checkout contained 2,806 files and about 261,996 lines of source. The build succeeded in 27 seconds. The available Go test step finished in 11 seconds with 1 passed and 0 failed out of 1. No install, build, or test error appeared in the measured run.

The repository had 37 CI workflow files, no Dockerfile, and no top-level tests directory in our signal scan. Those counts describe repository layout, not total upstream test coverage. One passing test is much too narrow to certify more than the command our harness found. We did not send OTLP data, load a production configuration, interrupt an exporter, fill a queue, or measure throughput. No performance claim follows from the 27-second build.

A useful local qualification should start a pinned distribution with the exact production configuration. Send known traces, metrics, and logs through every receiver, verify transformations at the destination, and compare accepted versus exported counts. Then stop the backend, exhaust retry time, restart the Collector, rotate credentials, and submit malformed or oversized payloads. The service is only dependable when its failure behavior is understood.

Queues and retries decide what happens during an outage

Exporters can retry transient errors and buffer work through sending queues, but those features need configuration and capacity. Memory queues are fast and disappear with the process. Persistent options add storage and recovery concerns. Backpressure can move upstream, while expired retries can turn into dropped telemetry. The correct queue size depends on peak input, backend outage duration, item size, and the loss the organization accepts.

Version v0.159.0 adds a feature gate for exporter-helper batching defaults and changes several queue metrics. Batch send-size histograms now describe post-batching requests, while new enqueue-size metrics preserve the earlier input view. Dashboards built around the old meaning can change after upgrade even if pipeline traffic does not. Release notes must be treated as an observability migration document, not only a binary changelog.

Internal telemetry can still make cancellation alerts noisy

The Collector emits metrics about its own receivers, processors, exporters, queues, and failures. Operators should scrape those signals separately from the data path being monitored, otherwise a Collector failure can erase its own evidence. Alert on refused or failed items, queue capacity, export errors, restarts, and configuration reloads. Logs should include component identifiers so one exporter failure does not look like a whole-service outage.

Issue #15827 points out that current universal telemetry outcomes do not clearly separate genuine pipeline failures from context cancellations. A cancellation can appear as refused upstream and failed at the exporter, creating noisy reliability alerts. The proposed changes involve a new error type or outcome value, each with cardinality or compatibility costs. Until that is settled, alert logic should correlate outcome metrics with exporter errors and shutdown events rather than counting every failure label identically.

HTTP edge cases deserve explicit negative tests

Issue #15122 describes compression handling where empty or identity settings behave incorrectly and garbage data can produce HTTP 500 instead of 400 while logging a recovered panic. The reporter says the server does not crash. This is a narrow current issue, not evidence that OTLP HTTP is generally unsafe. It is still a useful test case for any public or multi-tenant receiver: invalid compression and malformed bodies should be rejected predictably without filling logs.

GitHub showed 7,453 stars, 697 open issues and pull requests, and a last push on August 26, 2026. Release v0.159.0 arrived August 17, and the project has weekly SIG meetings with decisions recorded back in GitHub. The activity, signed artifacts, 37 workflows, and stable OTLP target justify choosing it as shared telemetry infrastructure. The operational price is continuous ownership of data loss, resource limits, configuration changes, and component upgrades.

Alternatives

ProjectWhat it isPick it when
Prometheus gh↗A metrics monitoring system with scraping, storage, querying, and alerting.pick this instead when metrics collection and local time-series storage are the main requirements.
Fluent BitA compact telemetry agent focused on logs, metrics, and event routing.pick this instead when lightweight log forwarding at the edge matters more than an OTLP-centered Go pipeline.
Vector gh↗A Rust-based observability data pipeline for collecting, transforming, and routing logs and metrics.pick this instead when its transformation language and log pipeline fit are more important than OpenTelemetry component compatibility.

What people are saying

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

Sources

  1. OpenTelemetry Collector README
  2. Collector configuration documentation
  3. OpenTelemetry Collector v0.159.0 release
  4. Issue #15827: cancellation outcome reporting
  5. Issue #15122: HTTP compression handling

More data reviews

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