-
Notifications
You must be signed in to change notification settings - Fork 897
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
Mark service
and telemetry.sdk
resource attributes as stable.
#3202
Conversation
…esource attributes as stable.
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.
LGTM with a changelog entry.
I believe we need to explicitly specify what declaring a semantic convention stable means. There are 2 possibilities:
|
I'd go with this (conservative) option as, precisely, full Schema Files support aren't complete yet. It may surprise users to know an X or Y semantic convention is stable and then we can't provide massaging for any unexpected change. |
I don't see this mentioned, I'd delay this until #3210 is resolved. Maybe can be figured out today in the spec sig meeting. |
@tsloughter Regarding #3210 - I think the same thing I said about |
Update this so that it fragments @reyang @dashpole @carlosalberto PTAL as this may alter your approvals. @Oberon00 @arminru I've updated based on your suggestion to fragment stable/experimental portions. PTAL |
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.
With splitting it up and only marking service.name
and the three telemetry.sdk.*
attributes stable in the first iteration I think this is good to go. 👍
…avoid conflicting statements.
This PR was marked stale due to lack of activity. It will be closed in 7 days. |
Closed as inactive. Feel free to reopen if this PR is still being worked on. |
@tsloughter Any last concern? The related issue seems to have discussed and found general approval on resource detectors as a solution for that problem, which would make this PR ready to go in. |
@carlosalberto no concern from me anymore 👍 |
@jsuereth is this alive? |
@jmacd Yes. |
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.
LGTM, just one minor question that may be worth clarifying.
…en-telemetry#3202) ## Changes This PR marks the set of resource semantic conventions, which a relied upon in stable API / SDK specification, as stable themselves. - Add a caveat that changing `service.*` and `telemetry.*` names need MORE than just schema file changes. - Mark core Resource attribute semconv document as MIXED stability - Update key sections for Resource attribute semconv as stable - Mark `telemetry.sdk` and `service` attribute groups as stable. - Move `telemetry.auto` and `service.*` "contentious" attributes into `{section}_experimental.yaml` file. This retains the reserved name, but does not mark the convention as stable, allowing us to ensure stable portions of our specification refer to stable semconv. - Update examples for `service.instance.id` to include an example of the preferred style instance id before the fallback. Related issues open-telemetry#3177 ## Usage in the Specification One reason we should mark these attributes as stable is because they are referenced from numerous stable portions of our specification, and they are also leveraged from newly stabilizing portions of our specification. - [Resource SDK](https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/resource/sdk.md#sdk-provided-resource-attributes) - stable - [Environment Variables](https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/sdk-environment-variables.md#general-sdk-configuration) - stable - [Jaeger Exporter](https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/trace/sdk_exporters/jaeger.md#resource) - stable - [Zipkin Exporter](https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/trace/sdk_exporters/zipkin.md#service-name) - Stable - [Log DataModel](https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/logs/data-model.md#rfc5424-syslog) - Stable - [Prometheus compatibility](https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/compatibility/prometheus_and_openmetrics.md#resource-attributes) - still experimental - [Performance Benchmark Guidelines](https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/performance-benchmark.md) ## A note on ECS compatibility Here's [ECS service definition](https://www.elastic.co/guide/en/ecs/current/ecs-service.html). They include more attributes than we do. The only possible conflict between us is `service.instance.id` vs. `service.node.name`. In this case, our `service.instance.id` has a fallback of generating UUID which is inconsistent w/ `service.node.name` which requires a user-generated name if another name cannot be provided. There's an opportunity for us to unify here. However, I don't think there's appetite in OTEL to require user-specified names in lieu of some algorithm or generative specification.
Changes
This PR marks the set of resource semantic conventions, which a relied upon in stable API / SDK specification, as stable themselves.
service.*
andtelemetry.*
names need MORE than just schema file changes.telemetry.sdk
andservice
attribute groups as stable.telemetry.auto
andservice.*
"contentious" attributes into{section}_experimental.yaml
file. This retains the reserved name, but does not mark the convention as stable, allowing us to ensure stable portions of our specification refer to stable semconv.service.instance.id
to include an example of the preferred style instance id before the fallback.Related issues #3177
Usage in the Specification
One reason we should mark these attributes as stable is because they are referenced from numerous stable portions of our specification, and they are also leveraged from newly stabilizing portions of our specification.
A note on ECS compatibility
Here's ECS service definition.
They include more attributes than we do. The only possible conflict between us is
service.instance.id
vs.service.node.name
. In this case, ourservice.instance.id
has a fallback of generating UUID which is inconsistent w/service.node.name
which requires a user-generated name if another name cannot be provided.There's an opportunity for us to unify here. However, I don't think there's appetite in OTEL to require user-specified names in lieu of some algorithm or generative specification.