opentelemetry-collector is a free, open source monitoring & observability project written in Go and released under Apache-2.0. It has 7,564 GitHub stars, 2,249 forks and 696 open issues, and was last pushed 10 hours ago. On this registry it ranks #54 of 97 tracked projects in Monitoring & Observability, with 5 head-to-head comparisons available. It gained 8 stars over the last 3 tracked days.

What is opentelemetry-collector?

The OpenTelemetry Collector is a vendor-agnostic, Apache-2.0 licensed telemetry agent and collector, written in Go, that receives, processes and exports telemetry data for teams running observability pipelines and distributed systems.

What it is

The OpenTelemetry Collector offers a vendor-agnostic implementation of how to receive, process and export telemetry data. It is built on a single codebase that can be deployed either as an agent or as a collector, with support for traces, metrics and logs, and it attempts to be usable, performant, observable, extensible and unified according to the objectives stated in its README. The codebase is currently built against OTLP protocol v1.10.0, which the project considers Stable, and component maturity is documented in docs/component-stability.md.

The concrete problem it solves is sprawl: without it, supporting open-source telemetry data formats such as Jaeger and Prometheus while shipping that data to multiple open-source or commercial back-ends requires running, operating and maintaining several separate agents or collectors. The Collector replaces that set of per-format, per-backend agents with one pipeline, so a team configures receivers, processors and exporters in a single place rather than stitching together parallel daemons. It also removes the need to touch core code when behaviour must change, because the extension points are designed for customisation.

Key capabilities

  • Single codebase, deployable as an agent or as a collector, with unified support for traces, metrics and logs.
  • Vendor-agnostic receive, process and export pipeline for telemetry data.
  • Built against OTLP protocol v1.10.0, marked Stable by the project.
  • Bridges open-source telemetry formats such as Jaeger and Prometheus to multiple open-source or commercial back-ends.
  • Extensible without touching the core code, so customisation does not fork the project.
  • Reasonable default configuration and support for popular protocols, so it runs and collects out of the box.
  • Usable as a Go library, with a stated policy of tracking currently supported Go minor versions, documented in the project's component stability and compatibility notes.

Who uses it and how

  • Operators consolidating several per-backend agents into one deployment to support open-source formats such as Jaeger and Prometheus alongside commercial back-ends.
  • Teams that need traces, metrics and logs handled by one pipeline, choosing the agent or collector deployment mode to match their topology.
  • Contributors and adopters who participate in the #otel-collector channel on CNCF Slack and the weekly video calls, which rotate across three time slots: Tuesdays at 17:00 PT, and Wednesdays at 09:00 PT and 05:00 PT.
  • Developers working on proposed components or stuck pull requests, who use ad-hoc meetings announced in #otel-collector-dev, with GitHub recorded as the source of truth for decisions.
  • Go developers embedding the Collector as a library, who accept that support for older Go minor versions is dropped as the upstream Go policy moves.

Getting started

The README's Getting Started section is the entry point for installation and first run, with the project homepage at https://opentelemetry.io; deployment follows the documented path for running the single codebase as either an agent or a collector.

How it compares

Among the tools named in the facts, Jaeger and Prometheus are telemetry sources and systems whose formats the Collector is designed to accept and forward, rather than alternatives it competes with. The Collector sits alongside them as the vendor-agnostic transport and processing layer that can feed multiple open-source or commercial back-ends at once.

When to use it — and when not to

Choose it when the goal is one configurable pipeline instead of several agents, and when traces, metrics and logs must reach more than one back-end. Self-hosters should expect an active project rather than a finished one: the repository shows 696 open issues and an Apache-2.0 licence that is clear and permissive. The README excerpt is weighted toward community process and compatibility policy, so teams needing extensive deployment guidance should read the linked Getting Started, Configuration, Monitoring and Security documentation before committing.

project readme (upstream, from github) — read inline

Getting Started   •   Getting Involved   •   Getting In Touch

Build Status Codecov Status GitHub release (latest by date including pre-releases)
Fuzzing Status

Vision   •   Configuration   •   Monitoring   •   Security   •   Package


OpenTelemetry Icon OpenTelemetry Collector

The OpenTelemetry Collector offers a vendor-agnostic implementation on how to receive, process and export telemetry data. In addition, it removes the need to run, operate and maintain multiple agents/collectors in order to support open-source telemetry data formats (e.g. Jaeger, Prometheus, etc.) to multiple open-source or commercial back-ends.

Objectives:

  • Usable: Reasonable default configuration, supports popular protocols, runs and collects out of the box.
  • Performant: Highly stable and performant under varying loads and configurations.
  • Observable: An exemplar of an observable service.
  • Extensible: Customizable without touching the core code.
  • Unified: Single codebase, deployable as an agent or collector with support for traces, metrics and logs.

Community

The OpenTelemetry Collector SIG is present at the #otel-collector channel on the CNCF Slack and meets once a week via video calls. If you are new to the CNCF Slack community, you can create an account. Everyone is invited to join those calls, which typically serves the following purposes:

  • meet the humans behind the project
  • get an opinion about specific proposals
  • look for a sponsor for a proposed component after trying already via GitHub and Slack
  • get attention to a specific pull-request that got stuck and is difficult to discuss asynchronously

We rotate our video calls between three time slots, in order to allow everyone to join at least once every three meetings. The rotation order is as follows:

Tuesday:

Wednesday:

Contributors to the project are also welcome to have ad-hoc meetings for synchronous discussions about specific points. Post a note in #otel-collector-dev on Slack inviting others, specifying the topic to be discussed. Unless there are strong reasons to keep the meeting private, please make it an open invitation for other contributors to join. Try also to identify who would be the other contributors interested on that topic and in which timezones they are.

Remember that our source of truth is GitHub: every decision made via Slack or video calls has to be recorded in the relevant GitHub issue. Ideally, the agenda items from the meeting notes would include a link to the issue or pull request where a discussion is happening already. We acknowledge that not everyone can join Slack or the synchronous calls and don't want them to feel excluded.

Supported OTLP version

This code base is currently built against using OTLP protocol v1.10.0, considered Stable. See the OpenTelemetry Protocol Stability definition here.

Stability levels

See Stability Levels and versioning for more details.

Compatibility

When used as a library, the OpenTelemetry Collector attempts to track the currently supported Go minor versions, as defined by the Go team. Removing support for an unsupported Go version is not considered a breaking change.

Support for Go versions on the OpenTelemetry Collector is updated as follows:

  1. The first release after the release of a new Go minor version N will add build and tests steps for the new Go minor version.
  2. The first release after the release of a new Go minor version N will remove support for Go version N-2.

Within supported Go minor versions, the minimum supported patch version may increase over time, for example to accommodate dependency updates. Increasing the minimum supported patch version within a supported Go minor version is not considered a breaking change.

Official OpenTelemetry Collector distro binaries will be built with a release in the latest Go minor version series.

Verifying the images signatures

[!NOTE] To verify a signed artifact or blob, first install Cosign, then follow the instructions below.

We are signing the images otel/opentelemetry-collector and otel/opentelemetry-collector-contrib using sigstore cosign tool and to verify the signatures you can run the following command:

$ cosign verify \
  --certificate-identity=https://github.com/open-telemetry/opentelemetry-collector-releases/.github/workflows/base-release.yaml@refs/tags/<RELEASE_TAG> \
  --certificate-oidc-issuer=https://token.actions.githubusercontent.com \
  <OTEL_COLLECTOR_IMAGE>

where:

  • ``: is the release that you want to validate
  • ``: is the image that you want to check

Example:

$ cosign verify --certificate-identity=https://github.com/open-telemetry/opentelemetry-collector-releases/.github/workflows/base-release.yaml@refs/tags/v0.98.0 --certificate-oidc-issuer=https://token.actions.githubusercontent.com ghcr.io/open-telemetry/opentelemetry-collector-releases/opentelemetry-collector-contrib:0.98.0

Verification for ghcr.io/open-telemetry/opentelemetry-collector-releases/opentelemetry-collector-contrib:0.98.0 --
The following checks were performed on each of these signatures:
  - The cosign claims were validated
  - Existence of the claims in the transparency log was verified offline
  - The code-signing certificate was verified using trusted certificate authority certificates

[{"critical":{"identity":{"docker-reference":"ghcr.io/open-telemetry/opentelemetry-collector-releases/opentelemetry-collector-contrib"},"image":{"docker-manifest-digest":"sha256:5cea85bcbc734a3c0a641368e5a4ea9d31b472997e9f2feca57eeb4a147fcf1a"},"type":"cosign container image signature"},"optional":{"1.3.6.1.4.1.57264.1.1":"https://token.actions.githubusercontent.com","1.3.6.1.4.1.57264.1.2":"push","1.3.6.1.4.1.57264.1.3":"9e20bf5c142e53070ccb8320a20315fffb41469e","1.3.6.1.4.1.57264.1.4":"Release Contrib","1.3.6.1.4.1.57264.1.5":"open-telemetry/opentelemetry-collector-releases","1.3.6.1.4.1.57264.1.6":"refs/tags/v0.98.0","Bundle":{"SignedEntryTimestamp":"MEUCIQDdlmNeKXQrHnPayload":{"body":"eyJhcGlWZXJzaW9uIjoiMC4wLjEiLCJraW5kIjoiaGFzaGVkcmVrb3JkIiwic3BlYyI6eyJkYXRhIjp7Imhhc2giOnsiYWxnb3JpdGhtIjoic2hhMjU2IiwidmFsdWUiOiIxMzVjY2RlN2YzZTNhYjU2NmFmYzJhYWU3MDljYmJlNmFhMDZlZWMzNDA2MWNkZjMyNmRhYzM2MmY0NWM4Yjg4In19LCJzaWdu

readme truncated — read the full docs on github

Frequently asked questions

Is opentelemetry-collector free to use?

opentelemetry-collector is open source under the Apache-2.0 licence. There is no licence fee and no seat count — you can self-host it or, where the project offers one, pay a vendor for a managed version instead.

What does opentelemetry-collector do?

OpenTelemetry Collector

What is opentelemetry-collector written in?

opentelemetry-collector is primarily written in Go. Its source is publicly available at https://github.com/open-telemetry/opentelemetry-collector, and it has 7,564 GitHub stars.