Skip to content

default HTTP semconv to use the newer stable conventions #667

@trentm

Description

@trentm

Currently OTel JS is part way through migrating its various HTTP-semconv-producing instrumentations to the stable (as of semconv v1.23) HTTP conventions.

Relevant instrumentations:

  • instrumentation-http: For Node.js. Server and client instrumentation. In Sep 2024 (in Http server semconv span stable open-telemetry/opentelemetry-js#4978) this was updated to support OTEL_SEMCONV_STABILITY_OPT_IN as described at https://opentelemetry.io/docs/specs/semconv/non-normative/http-migration/ and was released in '0.54.0': '2024-10-23T14:52:35.451Z'.
  • instrumentation-undici: For Node.js. Client instrumentation (for undici usage, and for Node's builtin fetch(). This instrumentation was written after HTTP semconv had stabilized. It has always produced stable HTTP semconv.
  • instrumentation-xml-http-request: For web usage. I think is still using old HTTP semconv.
  • instrumentation-fetch: For web/browser fetch() usage. I think is still using old HTTP semconv.

The instrumentation-http is still "experimental" (i.e. 0.x versions) and has had breaking change bumps. So my understanding of the requirements from https://opentelemetry.io/docs/specs/semconv/non-normative/http-migration/ is that OTel JS could change instrumentation-http over to just use the newer semconv.

However, a possible read of the spirit of:

Need to maintain (security patching at a minimum) their existing major version for at least six months after it starts emitting both sets of conventions.

perhaps suggests that there should be a 6 month wait, at least for upstream OTel JS. That would be until 2025-04-23.


For EDOT Node.js, I think it would be fine the indirectly switch to using just the newer semconv by default now:

  • For instrumentation-http we would default OTEL_SEMCONV_STABILITY_OPT_IN=http if the user has not put an http-related entry in that envvar.
  • instrumentation-undici is already using the new
  • The web instrumentations are not relevant to EDOT Node.js

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions