Add support for OTEL_SEMCONV_STABILITY_OPT_IN (#492)#519
Add support for OTEL_SEMCONV_STABILITY_OPT_IN (#492)#519jack-berg merged 21 commits intoopen-telemetry:mainfrom
Conversation
snippets/ExperimentalGeneralInstrumentation_semconv_stability_opt_in.yaml
Outdated
Show resolved
Hide resolved
jack-berg
left a comment
There was a problem hiding this comment.
Couple of minor comments, but I like it!
cc @open-telemetry/specs-semconv-approvers please take a look and confirm this makes sense.
trask
left a comment
There was a problem hiding this comment.
could also make sense to scope somehow under
instrumentation/development:
general:
http:
database:
rpc:
Yeah, adopt a convention to nest a standard stability level property under each instrumentation domain type, like: |
|
Actually, neither of these approaches is compatible with env var substitution of the equivalent We have schema modeling guidance that allows us to have alternative versions to accommodate env var compatibility:
Applied here, I think that would look something like: With some well defined merge mechanic between |
dfb5350 to
131a804
Compare
|
@jack-berg please check again |
snippets/ExperimentalGeneralInstrumentation_semconv_stability_opt_in.yaml
Outdated
Show resolved
Hide resolved
|
JFYI similar config in collector - https://github.com/open-telemetry/opentelemetry-collector/blob/main/docs/rfcs/semconv-feature-gates.md
/cc @mx-psi |
dcc1d9f to
97bce22
Compare
jack-berg
left a comment
There was a problem hiding this comment.
Mostly nits at this point.
This is exciting - I think we're accidentally (or maybe not) making progress towards stable by default since according to this schema, by default only stable instrumentation is produced.
21cc512 to
bdea755
Compare
Adds semconv_stability_opt_in configuration to instrumentation.general to control semantic convention stability migration. Supports http, database, and rpc signals with optional /dup mode for phased migration. Signed-off-by: Gregor Zeitlinger <gregor.zeitlinger@grafana.com>
Signed-off-by: Gregor Zeitlinger <gregor.zeitlinger@grafana.com>
- Replace array-based semconv_stability_opt_in with string-based stability_opt_in_list for env var substitution compatibility - Add domain-specific stability_opt_in properties under http, database, rpc, and messaging instrumentation sections - Add ExperimentalDatabaseInstrumentation, ExperimentalRpcInstrumentation, and ExperimentalMessagingInstrumentation types - Update snippet examples with explanatory comments - Fix grammar: "no opt-in is configured and instrumentations continue" - Document merge semantics: domain-specific settings take precedence Addresses feedback from jack-berg about environment variable substitution compatibility per the project's data modeling guidance. Signed-off-by: Gregor Zeitlinger <gregor.zeitlinger@grafana.com>
Use enum values (stable, stable/dup) for domain-specific stability opt-in properties in http, database, rpc, and messaging instrumentation types. This provides better validation and IDE support compared to free-form strings. The general stability_opt_in_list remains a string type since it accepts comma-separated lists for env var substitution. Signed-off-by: Gregor Zeitlinger <gregor.zeitlinger@grafana.com>
Signed-off-by: Gregor Zeitlinger <gregor.zeitlinger@grafana.com>
Signed-off-by: Gregor Zeitlinger <gregor.zeitlinger@grafana.com>
- Extract ExperimentalSemconvStabilityOptIn as a common enum type - Update all stability_opt_in properties to reference the shared type - Use full property paths in descriptions (.instrumentation/development.general.*) - Fix migration config example to use instrumentation/development Signed-off-by: Gregor Zeitlinger <gregor.zeitlinger@grafana.com>
Signed-off-by: Gregor Zeitlinger <gregor.zeitlinger@grafana.com>
Replace the per-domain ExperimentalSemconvStabilityOptIn enum (stable/dup) with a structured ExperimentalSemconvConfig object supporting experimental, version, and dup properties for more expressive semconv configuration. Signed-off-by: Gregor Zeitlinger <gregor.zeitlinger@grafana.com>
Rename `dup` to `dual_emit` and change `version` type from string to integer to match the declarative configuration spec defined in semantic-conventions#3424. Signed-off-by: Gregor Zeitlinger <gregor.zeitlinger@grafana.com>
Align domain names with semantic-conventions#3424 which defines the canonical list: code, db, gen_ai, http, k8s, messaging, rpc. Signed-off-by: Gregor Zeitlinger <gregor.zeitlinger@grafana.com>
The semconv PR (semantic-conventions#3424) specifies the property order as version (required), experimental, dual_emit. Reorder schema and snippet to match. Signed-off-by: Gregor Zeitlinger <gregor.zeitlinger@grafana.com>
…redundant descriptions, add kitchen sink comment, remove k8s domain Signed-off-by: Gregor Zeitlinger <gregor.zeitlinger@grafana.com>
The page https://opentelemetry.io/docs/specs/semconv/code/ no longer exists. Updated to the correct URL: https://opentelemetry.io/docs/specs/semconv/registry/attributes/code/ Signed-off-by: Gregor Zeitlinger <gregor.zeitlinger@grafana.com>
…rsion=1, rebase on main - Remove "(e.g., messaging)" from future signal types note since messaging is already supported - Clarify dual_emit behavior for version=1 (pre-stable conventions) - Rebase on main to resolve conflict with known_methods PR (open-telemetry#527) Signed-off-by: Gregor Zeitlinger <gregor.zeitlinger@grafana.com>
81e3ed9 to
f2a4ebd
Compare
lmolkova
left a comment
There was a problem hiding this comment.
Looks great to me. I left a comment about GenAI - I think there is some ambiguity there.
Signed-off-by: Gregor Zeitlinger <gregor.zeitlinger@grafana.com>
|
all addressed now |
…y experimental description Signed-off-by: Gregor Zeitlinger <gregor.zeitlinger@grafana.com>
|
All review comments addressed. |
Signed-off-by: Gregor Zeitlinger <gregor.zeitlinger@grafana.com>
trask
left a comment
There was a problem hiding this comment.
re-approving, thanks @zeitlinger!
…y-configuration into semconv-opt-in
Adds declarative configuration for semantic convention version selection, aligned with semantic-conventions#3424.
Configuration
Per-domain semconv config (
semconvobject)Under
.instrumentation/development.general.<domain>.semconv, supports:version(integer) — target semconv version (e.g.,1)experimental(boolean) — use experimental conventionsdual_emit(boolean) — also emit the previous stable major versionDomains:
code,db,gen_ai,http,k8s,messaging,rpcEnv var compatibility (
stability_opt_in_list)A comma-separated string at
.instrumentation/development.general.stability_opt_in_listfollows the format ofOTEL_SEMCONV_STABILITY_OPT_IN. Domain-specificsemconvproperties take precedence.Fixes #492