📣 Highlights 📣
- Generative AI Migration: All
gen_ai.*attributes, metrics, events, and spans have been deprecated and moved to the dedicated OpenTelemetry GenAI Semantic Conventions Repository. (#3696) - Graduations to Stable: A core selection of Kubernetes and container registry resource attributes have officially graduated to
stablestatus. (#3382) - Promotions to Release Candidate: Several conventions advanced to
release_candidate, includingcpu.mode(#3694), process attributes (#3041), and core CPU time metrics (k8s.pod.cpu.time,k8s.node.cpu.time, andcontainer.cpu.time) (#3001).
Changelog
🛑 Breaking changes 🛑
-
gen-ai: Move Generative AI semantic conventions to a dedicated repository. (#3696)
Allgen_ai.*attributes, metrics, events, and spans previously defined under
model/gen-ai/,model/openai/, andmodel/mcp/(and documented under
docs/gen-ai/) are deprecated in this repository and have moved to the
OpenTelemetry GenAI semantic conventions repository.Instrumentations following the new repository's conventions should refer to
it for the correspondingschema_urlto use. -
http: Changenetwork.peer.addressattribute requirement level from Recommended to Opt-In on thehttp.client.open_connectionsandhttp.client.connection.durationmetrics. (#3279)
network.peer.addressis typically high-cardinality (one time series per remote IP)
and causes unbounded growth of metric streams over the lifetime of the process when
exported with cumulative temporality (always the case forhttp.client.open_connections
since it is an UpDownCounter, and possible forhttp.client.connection.durationwhen
the histogram is configured for cumulative). Operators that need this attribute can
still opt-in. -
v8js: Renamev8js.memory.heap.limittov8js.memory.heap.space.size(per-space pre-allocated size fromv8.getHeapSpaceStatistics()),
and add a newv8js.memory.heap.limitUpDownCounter representing the absolute heap size limit fromv8.getHeapStatistics().heap_size_limit
(controlled by--max-old-space-sizeor V8 defaults).
(#3476)
🚀 New components 🚀
browser: Introducebrowser.document.url.fullattribute andbrowser.documententity to capture the absolute URL of the current browser document. (#174)
Thebrowser.documententity is introduced as a separate entity frombrowserbecause
the browser runtime attributes (brands, platform, language) are immutable for the SDK
lifetime, while the document URL changes on every navigation. The new attribute follows
RFC3986 and hasRecommendedrequirement level atDevelopmentstability.
💡 Enhancements 💡
-
app: Defines a basic crash of an end-user facing app that requires a minimal amount of information. (#3448) -
cpu: Promotecpu.modeattribute and its enum members torelease_candidate(#3694) -
docs: Add guidance for defining events in semantic conventions. (#1855) -
docs: Don't allow signal definition to reference attributes with lower stability than the signal itself (unless they are opt-in).
(#3752) -
gcp: Add GCE instance labels as resource attributes. (#2617) -
k8s: Promotek8s.pod.cpu.time,k8s.node.cpu.timeandcontainer.cpu.timemetrics torelease_candidate(#3001) -
k8s: Add metrick8s.container.ephemeral_storage.usageto track ephemeral storage usage by containers. (#3681)
This metric includes an attributek8s.container.ephemeral_storage.fs_typeto distinguish betweenrootfsandlogsusage. -
k8s: Promote a selection of k8s and container registry attributes tostable(#3382) -
otel: Clarify semantics of SDK exporter metrics when the exporter performs retries: an export operation is considered finished only after the final attempt has concluded, items are counted exactly once per operation, andotel.sdk.exporter.operation.durationrecords one observation per operation covering all attempts and backoff. Also drop a spuriouserror.typenote from the*.inflightmetrics, which do not carry anerror.typeattribute.
(#3770) -
otel: Reservealready_shutdownas a value forerror.typeon theotel.sdk.processor.span.processedandotel.sdk.processor.log.processedmetrics, used when a processor drops items because it has already been shut down.
(#3710) -
process: Promote process attributes to release_candidate (#3041) -
profile: Extend the list of known frame types with a value for LuaJIT (#3707) -
service: Markservice.criticalityattribute as alpha. (#2986)
Theservice.criticalityattribute and its allowed values (critical,high,medium,low)
are now in alpha status. -
system, file: Add support for filesystem lock counts (#3611) -
v8js: Updatev8js.gc.durationmetric to match bucket boundaries used by Node.js instrumentation. (#3761)
🧰 Bug fixes 🧰
browser: remove the condition to includeuser_agent.originalattribute in browser resource (#3738)cicd: Consistent spelling of "CI/CD" throughout the CICD registry. (#3634)container: Remove kernel from cpu.mode enum and clarify container cpu states (#3700)k8s: Excludek8s.container.cpu.limit_utilizationandk8s.container.cpu.request_utilizationmetrics from code generation (#3711, #3705)
New Contributors
- @mquentin made their first contribution in #3633
- @Hronom made their first contribution in #3481
- @Dipanshusinghh made their first contribution in #3739
- @mcollina made their first contribution in #3761
- @david-luna made their first contribution in #3738
- @Ayushi-12 made their first contribution in #3781
Full Changelog: v1.41.0...v1.42.0