-
Notifications
You must be signed in to change notification settings - Fork 896
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
protocol/exporter: Configuration options MAY be implemented by exporter, SDK, or separate component #3730
Merged
Conversation
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
…nted directly in the exporter
pellared
changed the title
protocol/exporter: Clarify that the env vars do not need to be implemented directly in the exporter
protocol/exporter: Configuration options MAY be implemented by exporter, SDK, or separate component
Oct 20, 2023
Kielek
approved these changes
Oct 20, 2023
mateuszrzeszutek
approved these changes
Oct 20, 2023
MrAlias
approved these changes
Oct 20, 2023
tigrannajaryan
approved these changes
Oct 20, 2023
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This is a clarification/guidance, not a breaking change. LGTM.
yurishkuro
approved these changes
Oct 20, 2023
carlosalberto
approved these changes
Oct 20, 2023
Let's mention this PR at the maintainers meeting today, and unless we get a complain, let's merge today. |
jack-berg
reviewed
Oct 23, 2023
bogdandrutu
reviewed
Oct 23, 2023
This was referenced Oct 24, 2023
jsuereth
approved these changes
Oct 27, 2023
pellared
added a commit
to pellared/opentelemetry-specification
that referenced
this pull request
Oct 30, 2023
pellared
added a commit
to pellared/opentelemetry-specification
that referenced
this pull request
Oct 30, 2023
This was referenced Oct 30, 2023
carlosalberto
pushed a commit
that referenced
this pull request
Oct 30, 2023
carlosalberto
pushed a commit
that referenced
this pull request
Nov 7, 2023
Fixes #3735 Addresses #3730 (comment) Supersedes #3730
Merged
carlosalberto
pushed a commit
to carlosalberto/opentelemetry-specification
that referenced
this pull request
Oct 31, 2024
…er, SDK, or separate component (open-telemetry#3730) Fixes open-telemetry#3721 ## Why The Go SIG is working towards stabilizing the OTLP metrics exporter. The Go SIG would prefer to manage the exporter environment variables through a distinct package: https://pkg.go.dev/go.opentelemetry.io/contrib/exporters/autoexport. This approach is akin to [Java Autoconfigure](https://github.com/open-telemetry/opentelemetry-java/tree/main/sdk-extensions/autoconfigure). The rationale behind this decision is as follows: 1. If users aim to utilize the `OTEL_EXPORTER_OTLP_PROTOCOL` and `OTEL_TRACES_EXPORTER`, we aim to support all the values documented in the specification. We want to ensure that users are not prone to encountering runtime errors if a protocol driver hasn't been registered in the code. 2. Simultaneously, we wish to avoid applications to depend on all exporter implementations defined in the specification. Currently, it is not clear of such design is in compliance with the specification. ## What Define that **configuration options MAY be implemented by exporter, SDK, or separate component**. While this PR may be seen as a breaking change, because of the way how the languages adopted the specification I would say that this is a "clarification" or "adopting to the reality". Here is how different languages currently implement the OTLP configuration options. ### .NET Configuration options implemented by exporter. Side note: Per-signal endpoint configuration options are not implemented. Source code: - https://github.com/open-telemetry/opentelemetry-dotnet/tree/main/src/OpenTelemetry.Exporter.OpenTelemetryProtocol ### C++ Most configuration options implemented by exporter. However, the `*_PROTOCOL` env vars are not implemented at all. See: open-telemetry/opentelemetry-cpp#971. Source code: - https://github.com/open-telemetry/opentelemetry-cpp/tree/main/exporters/otlp ### Erlang Configuration options implemented by exporter. Source code: - https://github.com/open-telemetry/opentelemetry-erlang/tree/main/apps/opentelemetry_exporter ### Go Most configuration options implemented by exporter. However, the `*_PROTOCOL` env vars are implemented by a separate component (autoexport) Source code (package docs): - https://pkg.go.dev/go.opentelemetry.io/contrib/exporters/autoexport - https://pkg.go.dev/go.opentelemetry.io/otel/exporters/otlp/otlptrace ### Java Configuration options implemented by an autoconfigure component. Source code: - https://github.com/open-telemetry/opentelemetry-java/tree/main/sdk-extensions/autoconfigure - https://github.com/open-telemetry/opentelemetry-java/tree/main/exporters/otlp/all/src/main/java/io/opentelemetry/exporter/otlp ### JavaScript Most configuration options implemented by exporter. However, the `*_PROTOCOL` env vars are implemented by a separate component (opentelemetry-sdk-node) Source code: - https://github.com/open-telemetry/opentelemetry-js/tree/main/experimental/packages/opentelemetry-sdk-node - https://github.com/open-telemetry/opentelemetry-js/tree/main/experimental/packages/exporter-trace-otlp-http ### PHP Configuration options implemented by exporter. Source code: - https://github.com/open-telemetry/opentelemetry-php/tree/main/src/Contrib/Otlp ### Python Most configuration options implemented by exporter. However, the `*_PROTOCOL` env vars are implemented by the SDK. Source code: - https://github.com/open-telemetry/opentelemetry-python/blob/main/opentelemetry-sdk/src/opentelemetry/sdk/_configuration/__init__.py - https://github.com/open-telemetry/opentelemetry-python/tree/main/exporter ### Ruby Most configuration options implemented by exporter. However, the `*_PROTOCOL` env vars are implemented by the SDK. Source code: - https://github.com/open-telemetry/opentelemetry-ruby/blob/main/sdk/lib/opentelemetry/sdk/configurator.rb - https://github.com/open-telemetry/opentelemetry-ruby/tree/main/exporter/otlp-http ### Rust Configuration options implemented by exporter. Source code: - https://github.com/open-telemetry/opentelemetry-rust/tree/main/opentelemetry-otlp ### Swift Env vars not supported. ### Previous work and discussions - open-telemetry#3721 - open-telemetry#3722
carlosalberto
pushed a commit
to carlosalberto/opentelemetry-specification
that referenced
this pull request
Oct 31, 2024
Editorial Sorry for my copy-paste error.
carlosalberto
pushed a commit
to carlosalberto/opentelemetry-specification
that referenced
this pull request
Oct 31, 2024
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Fixes #3721
Why
The Go SIG is working towards stabilizing the OTLP metrics exporter.
The Go SIG would prefer to manage the exporter environment variables through a distinct package: https://pkg.go.dev/go.opentelemetry.io/contrib/exporters/autoexport. This approach is akin to Java Autoconfigure. The rationale behind this decision is as follows:
OTEL_EXPORTER_OTLP_PROTOCOL
andOTEL_TRACES_EXPORTER
, we aim to support all the values documented in the specification. We want to ensure that users are not prone to encountering runtime errors if a protocol driver hasn't been registered in the code.Currently, it is not clear of such design is in compliance with the specification.
What
Define that configuration options MAY be implemented by exporter, SDK, or separate component.
While this PR may be seen as a breaking change, because of the way how the languages adopted the specification I would say that this is a "clarification" or "adopting to the reality".
Here is how different languages currently implement the OTLP configuration options.
.NET
Configuration options implemented by exporter.
Side note: Per-signal endpoint configuration options are not implemented.
Source code:
C++
Most configuration options implemented by exporter.
However, the
*_PROTOCOL
env vars are not implemented at all. See: open-telemetry/opentelemetry-cpp#971.Source code:
Erlang
Configuration options implemented by exporter.
Source code:
Go
Most configuration options implemented by exporter.
However, the
*_PROTOCOL
env vars are implemented by a separate component (autoexport)Source code (package docs):
Java
Configuration options implemented by an autoconfigure component.
Source code:
JavaScript
Most configuration options implemented by exporter.
However, the
*_PROTOCOL
env vars are implemented by a separate component (opentelemetry-sdk-node)Source code:
PHP
Configuration options implemented by exporter.
Source code:
Python
Most configuration options implemented by exporter.
However, the
*_PROTOCOL
env vars are implemented by the SDK.Source code:
Ruby
Most configuration options implemented by exporter.
However, the
*_PROTOCOL
env vars are implemented by the SDK.Source code:
Rust
Configuration options implemented by exporter.
Source code:
Swift
Env vars not supported.
Previous work and discussions