opentelemetry-collector/docs
Pablo Baeyens 28ca163a92
[docs/component-stability.md] Add criteria for graduating between stability levels (#11864)
<!--Ex. Fixing a bug - Describe the bug and how this fixes the issue.
Ex. Adding a feature - Explain what this achieves.-->
#### Description

Code ownership and maintenance of components continues to be an issue,
with varying levels of support across contrib. As we approach 1.0 and
the ability to mark components as stable, we want to make sure that
components that we deem as 'stable' have a healthy community around
them. We have three datapoints that we can leverage here: how many
codeowners a component has, how diverse these are in terms of employers
and how actively the codeowners have been responding to issues/PRs in
the recent past.

We need criteria that
1. Are reasonable predictors of the component health over the
short/medium term
2. Are not too onerous on the code owners

Some notes:
1. Some beta components do not meet the criteria listed on the PR. This
will be the case even after the transition for some components. This PR
makes no claim as to what should happen to these components stability
(so, de facto, they will stay as is).
2. The OTLP receiver and exporters do not meet this criteria today
because they don't have listed code owners. We can solve this either by
carving out an exception or by listing code owners.
3. We need automation and templates to enforce this.

<!-- Issue number if applicable -->
#### Link to tracking issue
Fixes #11850

---------

Co-authored-by: Christos Markou <chrismarkou92@gmail.com>
2025-04-14 09:00:01 +00:00
..
img [service/internal] Allow components to transition from PermanentError to Stopping (#10958) 2024-12-17 13:02:44 +00:00
rfcs [chore] Propose additional attribute for 'otelcol.connector.produced.*' metrics (#12815) 2025-04-14 08:59:45 +00:00
README.md [docs] add guidance around what a collector/distro is (#12435) 2025-02-28 15:54:18 +00:00
coding-guidelines.md [chore] Add naming guidance for modules prefix (#12479) 2025-02-25 22:40:14 +00:00
component-stability.md [docs/component-stability.md] Add criteria for graduating between stability levels (#11864) 2025-04-14 09:00:01 +00:00
component-status.md [chore] Added spell check (#12671) 2025-03-20 18:53:25 +00:00
ga-roadmap.md [chore] Explicitly note that service and otelcol are not part of 1.0 (#10643) 2024-07-31 10:42:04 +02:00
internal-architecture.md Documentation improvements - Internal Architecture Doc + Package level comments (#10068) 2024-05-20 22:33:02 +02:00
observability.md [docs] Fix links `syslist.go` (#12388) 2025-02-14 15:50:35 +00:00
platform-support.md [docs] Fix links `syslist.go` (#12388) 2025-02-14 15:50:35 +00:00
release.md [chore] Move jpkrohling to emeritus (#12819) 2025-04-11 15:21:58 +00:00
scraping-receivers.md Update whitespace for list formatting (#12569) 2025-03-06 21:05:37 +00:00
security-best-practices.md [docs] Remove end-user content from security README (#12002) 2025-01-10 11:20:45 +00:00
standard-warnings.md Add standard warnings for components (#5558) 2022-06-27 09:24:06 -07:00
vision.md [docs] Clean up internal observability docs (#10454) 2024-06-28 10:25:13 +02:00

README.md

OpenTelemetry Collector

Status: Beta

The OpenTelemetry Collector consists of the following components:

These combined provide users the ability to easily switch between OpenTelemetry Collector Distributions while also ensuring that components produced by the OpenTelemetry Collector SIG are able to work with any vendor who claims support for an OpenTelemetry Collector.

Configuration file

An OpenTelemetry Collector configuration file is defined as YAML and MUST support the following minimum structure:

receivers:
processors:
exporters:
connectors:
extensions:
service:
  telemetry:
  pipelines:

OpenTelemetry Collector components

For a library to be considered an OpenTelemetry Collector component, it MUST implement a Component interface defined by the OpenTelemetry Collector SIG.

Components require a unique identfier to be included in an OpenTelemetry Collector. In the event of a name collision, the components resulting in the collision cannot be used simultaneously in a single OpenTelemetry Collector. In order to resolve this, the clashing components must use different identifiers.

Compatibility requirements

A component is defined as compatible with an OpenTelemetry Collector when its dependencies are source- and version-compatible with the Component interfaces of that Collector.

For example, a Collector derived from version tag v0.100.0 of the OpenTelemetry Collector MUST support all components that are version-compatible with the Golang Component API defined in the github.com/open-telemetry/opentelemetry-collector/component module found in that repository for that version tag.

OpenTelemetry Collector Distribution

An OpenTelemetry Collector Distribution (Distro) is a compiled instance of an OpenTelemetry Collector with a specific set of components and features. A Distribution author MAY choose to produce a distribution by utilizing tools and/or documentation supported by the OpenTelemetry project. Alternatively, a Distribution author MUST provide end users with the capability for adding their own components to the Distribution's components. Note that the resulting binary from updating a Distribution to include new components is a different Distribution.