Status: Beta
The OpenTelemetry Collector consists of the following components:
- A mechanism that MUST be able to load and parse an OpenTelemetry Collector configuration file.
- A mechanism that MUST be able to include compatible Collector components that the user wishes to include.
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.
An OpenTelemetry Collector configuration file is defined as YAML and MUST support the following minimum structure:
receivers:
processors:
exporters:
connectors:
extensions:
service:
telemetry:
pipelines:
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.
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.
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.