Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

add document defining an OpenTelemetry Collector #4313

Open
wants to merge 30 commits into
base: main
Choose a base branch
from
Open
Changes from 3 commits
Commits
Show all changes
30 commits
Select commit Hold shift + click to select a range
512a3b4
add document defining an openTelemetry Collector
codeboten Nov 27, 2024
c71e06d
adding details regarding components and distributions
codeboten Nov 27, 2024
9d61bf7
typo
codeboten Nov 27, 2024
2405824
Update specification/collector/README.md
codeboten Nov 27, 2024
94e2673
added links
codeboten Nov 27, 2024
b41fb8c
Merge branch 'main' into codeboten/add-spec-for-collector
codeboten Nov 27, 2024
27699e9
Update specification/collector/README.md
codeboten Nov 28, 2024
9844574
Update specification/collector/README.md
codeboten Dec 2, 2024
d6a319f
Update specification/collector/README.md
codeboten Dec 2, 2024
7236f08
Update specification/collector/README.md
codeboten Dec 2, 2024
46829cf
Merge branch 'main' into codeboten/add-spec-for-collector
codeboten Dec 2, 2024
010c65f
Update specification/collector/README.md
codeboten Dec 5, 2024
d6b2ab4
Update specification/collector/README.md
codeboten Dec 5, 2024
4a42bee
Merge branch 'main' into codeboten/add-spec-for-collector
codeboten Dec 6, 2024
abc13c8
add details about configuration file
codeboten Dec 6, 2024
17cc1bf
Merge branch 'main' into codeboten/add-spec-for-collector
codeboten Dec 10, 2024
b589775
Update specification/collector/README.md
codeboten Dec 10, 2024
9229492
Update specification/collector/README.md
codeboten Dec 10, 2024
0704000
Update specification/collector/README.md
codeboten Dec 10, 2024
b0dd212
fix lint
codeboten Dec 10, 2024
b20d4d8
adding details regarding components that may use the same identifier
codeboten Dec 10, 2024
d73e36a
Update specification/collector/README.md
codeboten Dec 11, 2024
61d3666
Update specification/collector/README.md
codeboten Dec 11, 2024
af4a225
Update specification/collector/README.md
codeboten Dec 16, 2024
3e7d6c5
Merge branch 'main' into codeboten/add-spec-for-collector
codeboten Dec 16, 2024
167de2f
Merge branch 'main' into codeboten/add-spec-for-collector
codeboten Dec 17, 2024
8101579
add document status
codeboten Dec 18, 2024
1f98be5
update should to must
codeboten Dec 20, 2024
d91f7ea
Merge branch 'main' into codeboten/add-spec-for-collector
codeboten Dec 23, 2024
d8c0185
Merge branch 'main' into codeboten/add-spec-for-collector
codeboten Jan 7, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
31 changes: 31 additions & 0 deletions specification/collector/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
<!--- Hugo front matter used to generate the website version of this page:
path_base_for_github_subdir:
from: tmp/otel/specification/baggage/_index.md
to: baggage/README.md
codeboten marked this conversation as resolved.
Show resolved Hide resolved
--->

# OpenTelemetry Collector
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

OpenTelemetry Collector is never defined. Is it a source code artifact? A binary?

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

That's one of the things I was trying to get at here. Since there's no binary plugin mechanism it seems that the source would need to be available for it to be extended in the manner contemplated, but that's not clear or explicit in the current state.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Since there's no binary plugin mechanism it seems that the source would need to be available for it to be extended in the manner contemplated, but that's not clear or explicit in the current state.

Is the lack of binary plugin mechanism something that the OpenTelemetry Collector SIG wants to solve? Are there technical blockers?

Binary and dynamic loading plugin seem to be an established pattern. For example:

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The Fluent Bit example is not necessarily apposite as it involves a C application dynamically loading shared libraries built with the Go toolchain using CGO (which is generally prohibited in the Collector codebase).

Go does have a native plugin mechanism, though it comes with many caveats and is widely regarded as a bad idea that can't be dropped due to compatibility guarantees. Its documentation sums up its litany of restrictions in this way, which sounds a lot like a suggestion to use something like ocb:

Together, these restrictions mean that, in practice, the application and its plugins must all be built together by a single person or component of a system. In that case, it may be simpler for that person or component to generate Go source files that blank-import the desired set of plugins and then compile a static executable in the usual way.

codeboten marked this conversation as resolved.
Show resolved Hide resolved

The goal of this document is for users to be able to easily switch between
OpenTelemetry Collector Distros while also ensuring that components produced by
the OpenTelemetry Collector SIG is able to work with any vendor who claims
codeboten marked this conversation as resolved.
Show resolved Hide resolved
support for an OpenTelemetry Collector.

- An OpenTelemetry Collector _MUST_ accept as OpenTelemetry Collector Configuration
codeboten marked this conversation as resolved.
Show resolved Hide resolved
file.
- An OpenTelemetry Collector _MUST_ be able to be compiled with any and all
codeboten marked this conversation as resolved.
Show resolved Hide resolved
additional Collector components that the user wishes to include.
reyang marked this conversation as resolved.
Show resolved Hide resolved

## OpenTelemetry Collector Configuration file
reyang marked this conversation as resolved.
Show resolved Hide resolved

## OpenTelemetry Collector components

For a library to be considered an OpenTelemetry Collector component, it _MUST_
implement the [Component interface](https://github.com/open-telemetry/opentelemetry-collector/blob/main/component/component.go)
codeboten marked this conversation as resolved.
Show resolved Hide resolved
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The Collector also accepts confmap.Providers and confmap.Converters, which do not accept this interface. Do we consider those out of scope?

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think they do need to be considered in scope. Interoperability of those components is important.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The Collector also accepts confmap.Providers and confmap.Converters, which do not accept this interface. Do we consider those out of scope?

I wonder if including them would allow us to avoid having to include a definition for a config file, wdyt?

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Providers handle configuration abstractly so they help remove the need for how configuration should be represented, but they don't solve the schema part (which I don't feel like we need to solve tbh)

codeboten marked this conversation as resolved.
Show resolved Hide resolved
defined in the [opentelemetry-collector repository](https://github.com/open-telemetry/opentelemetry-collector).
repository.

codeboten marked this conversation as resolved.
Show resolved Hide resolved
## OpenTelemetry Collector Distribution
codeboten marked this conversation as resolved.
Show resolved Hide resolved

An OpenTelemetry Collector Distribution (Distro) is a compiled instance
of an OpenTelemetry Collector with a specific set of components and features.
codeboten marked this conversation as resolved.
Show resolved Hide resolved
codeboten marked this conversation as resolved.
Show resolved Hide resolved
Loading