Repository navigation
🌟 Highlights 🌟
- RPC spans and call duration metrics are now stable, including gRPC and Apache Dubbo.
- RC promotions cover Kubernetes and container metrics, JVM file descriptor metrics, hostmetrics attributes, and RPC headers and trailers.
- Other highlights include Kubernetes resource monitoring, clearer network endpoint guidance, MongoDB and Oracle context propagation, JVM executor metrics, and progress on Weaver schema v2.
🛑 Breaking changes 🛑
-
android: Remove theandroidentity in favor of theandroidattribute group. Usage on resources stays the same. (#4168) -
aws: Remove theaws.ecsentity in favor ofaws.ecs.task,aws.ecs.cluster, andaws.ecs.containerentities identified by their required ARNs. (#4170) -
aws: Remove the AWS log entity while retaining its attributes for resource metadata. (#4171) -
cloudfoundry: Splitcloudfoundry.systemintocloudfoundry.systemandcloudfoundry.system.instance, and define required identifying attributes for Cloud Foundry entities for Weaver schema v2 migration. (#4191) -
db: Renamedb.client.connection.maxtodb.client.connection.limit(#4073) -
faas: This renames the faas attributes describing the invocation to be faas.invocation.* (#4228)
The faas.time attribute has been renamed to faas.invocation.start_time.
The faas.invocation_id attribute has been renamed to faas.invocation.id to complement the time attribute. -
gcp: Remove thegcp.gceandgcp.cloud_runentities in favor ofgcp.gce.instanceandgcp.cloud_run.job.task, and define required identifying attributes for GCP entities. (#4173) -
rpc: Replacerpc.request.metadata.<key>andrpc.response.metadata.<key>withrpc.request.header.<key>,rpc.response.header.<key>, andrpc.response.trailer.<key>. (#3924, #4072)
gRPC and Connect RPC send response metadata both before and after the response payload and
expose the two separately on their APIs.rpc.response.metadata.<key>did not record which
of the two a value came from, so this change splits it intorpc.response.header.<key>for
metadata sent before the response payload andrpc.response.trailer.<key>for metadata sent
after it. Dubbo Triple has the same split: instrumentations record Triple response headers as
rpc.response.header.<key>and Dubbo response attachments, which Triple sends as trailers, as
rpc.response.trailer.<key>.No RPC system sends metadata after the request payload, so there is no
rpc.request.trailer
attribute and the request side is a plain rename.The already-deprecated
rpc.grpc.*andrpc.connect_rpc.*metadata attributes now point at
the new attributes directly instead of at the deprecatedrpc.request.metadata.<key>and
rpc.response.metadata.<key>. -
rpc: Renamerpc.response.status_codetorpc.status_code. (#3870) -
system: Renamesystem.deviceattribute tosystem.device.name(#1474)
This namespacessystem.devicetosystem.device.nameto clarify the property being described.
The oldsystem.devicehas been deprecated. -
system:system.memory.statenow only defines theusedandavailablestates. (#2538)
The newavailablestate corresponds toMemAvailableon Linux, so thatused+available
equalssystem.memory.limit. Thefree,buffersandcachedstates are deprecated. -
zos: Remove z/OS entities and deprecate z/OS attributes in favor ofopen-telemetry/semantic-conventions-mainframe. (#4174, #3808)
🚩 Deprecations 🚩
-
azure: Move theazure.resource.logevent to schema v2 and deprecate section describing its body fields. (#4085) -
enduser: Deprecateenduser.idandenduser.pseudo.idin favor ofopen-telemetry/semantic-conventions-client-side. (#4238) -
messaging: Renamemessaging.systemtomessaging.system.nameand align cloud-provider values with their attribute namespaces. (#4250) -
messaging: Move system-specific messaging attributes into system-specific namespaces. (#4004)
Renamemessaging.kafka.*,messaging.rabbitmq.*, andmessaging.rocketmq.*
tokafka.*,rabbitmq.*, androcketmq.*, respectively.
Renamemessaging.gcp_pubsub.*togcp.pubsub.*,
messaging.servicebus.*toazure.servicebus.*, and
messaging.eventhubs.*toazure.eventhubs.*.
The old attributes are deprecated. -
opentracing: Deprecate OpenTracing compatibility document andopentracing.ref_typeattribute. (#4049) -
service: Deprecateservice.peer.nameandservice.peer.namespacein favor ofserver.service.name/.namespaceandclient.service.name/.namespace. (#3472)
💡 Enhancements 💡
-
aws: Define AWS Lambda, S3, and DynamoDB spans as refinements of the FaaS server and AWS SDK client spans. (#3808)
The AWS Lambda span now lists the attributes it inherits from the FaaS server span, including
the requiredfaas.trigger. -
client: Addclient.service.nameandclient.service.namespaceattributes at development stability. (#3472) -
client: Addclient.as.numberandclient.as.organizationattributes for client network endpoints.
(#1663, #3740) -
client: Add theclient.mac.addressattribute for client network endpoints.
(#2416) -
client: Add theclient.prefixattribute in CIDR notation for client network endpoints, with normalization by instrumentation or Collector receivers.
(#3731) -
container: Define identifying attributes for container entities for Weaver schema v2 migration. (#4164) -
cpu: Clarify thatcpu.logical_numberis not the same as the number of cores. (#2934)
cpu.logical_numberattribute is not the same as the number of cores on a system, for example,
a CPU with hyper-threading may have 8 cores and 16 logical CPUs. The cpu.logical_number
attribute brief has been updated to include this information. -
db: Add trace context propagation for MongoDB through the comment command field (#3926) -
db: Add application context propagation to Oracle DB via piggybacking (#3863)
Also recommends driver-provided APIs for updatingV$SESSION.ACTION
instead of issuing SQL or PL/SQL directly. -
db: Db spans have been switched to v2 syntax including spans now becoming refinements & adding db.system.name attribute. (#3808)
azure.cosmosdb.client,db.cassandra.client,db.couchdb.client,db.elasticsearch.client,db.hbase.client,
db.mariadb.client,db.mongodb.client,db.mysql.client,db.oracledb.client,db.postgresql.client,db.redis.client,
db.sql_server.client,db.sql.clientspan defintiions have been switched to a refinement of thedb.clientspan. -
db: Clarify that database clientserver.addressidentifies the configured database target, including multiple servers and service discovery.
(#4041) -
db: Adddb.system.name,db.namespace,server.address, andserver.portattributes to database client connection pool metrics.
(#4097) -
deployment: Define identifying attributes for deployment entities for Weaver schema v2 migration. (#4167) -
destination: Clarify thatdestination.addressanddestination.portdescribe the receiver of a network exchange and are recorded as the address available at the point of instrumentation. Instrumentation captures that address and does not try to resolve the address behind intermediaries such as proxies. They apply when there is no clear or known client/server role (for example low-level flow/packet telemetry or peer-to-peer protocols); useclient.*/server.*for logical, de-proxied identity when the roles are known.
(#3947, #1721) -
destination: Adddestination.as.numberanddestination.as.organizationattributes for destination network endpoints.
(#1663, #3740) -
destination: Add thedestination.mac.addressattribute for destination network endpoints.
(#2416) -
destination: Add thedestination.prefixattribute in CIDR notation for destination network endpoints, with normalization by instrumentation or Collector receivers.
(#3731) -
docs: Link the "Example Values" column directly to the full list of well-known values for enum-typed attributes. (#1085) -
docs: Stop rendering the redundant "well-known values" table on per-signal usage pages for enums whose only member is the generic fallback value, such aserror.type. (#2141)
The attribute registry page still shows this table. -
general: Support unbounded attributes withannotations.value.unbounded_size: true, add*_refattribute conventions, and enforce both via Rego policies. (#1428, #3773, #4102) -
host: Define identifying attributes for host entities for Weaver schema v2 migration. (#4165) -
host: Define an explicit priority order for host.id sources, list the currently recognized cloud environments, and specify behavior around machine-id lookup and the user-configured fallback properties.
(#3897) -
host: Define attribute roles for thehostentity, makehost.ididentifying. (#4086) -
http: Add opt-inhttp.request.body.contentandhttp.response.body.contentattributes to capture HTTP request and response bodies (#857)
These attributes may contain sensitive information. -
jvm: Promotejvm.file_descriptor.countandjvm.file_descriptor.limitmetrics torelease_candidate(#4019)
The following metrics are being promoted to release_candidate:- jvm.file_descriptor.count
- jvm.file_descriptor.limit
These metrics are only available on Unix-like operating systems and are obtained
from theUnixOperatingSystemMXBeanJVM management interface.
-
jvm: Define development semantic conventions for JVM executor metrics, including executor identities fixed for the lifetime of each registration, completed-task and rejected-submission counting semantics, and user-configured names for unnamed executors. (#3956) -
k8s: Add Pod level CPU limit and request metrics. (#4064)
Introducesk8s.pod.cpu.limit.desired,k8s.pod.cpu.limit.current,
k8s.pod.cpu.limit.utilization,k8s.pod.cpu.request.desired,
k8s.pod.cpu.request.currentandk8s.pod.cpu.request.utilization,
aligning thek8s.podnamespace with the equivalentk8s.containermetrics
and with the K8s Pod level resources feature. -
k8s: Promotecontainer.uptime,k8s.pod.uptimeandk8s.node.uptimemetrics torelease_candidate(#3945)
The following metrics are being promoted to release_candidate:- container.uptime
- k8s.pod.uptime
- k8s.node.uptime
Notes referencing the Kubelet stats summary API fields (ContainerStats.StartTime,
PodStats.StartTime,NodeStats.StartTime) have been added to each metric.
-
k8s: Promote container.cpu.usage, k8s.pod.cpu.usage and k8s.node.cpu.usage metrics to release candidate (#4145) -
k8s: Add Pod and container memory limit and request utilization metrics. (#4133)
Introducesk8s.pod.memory.limit.utilization,k8s.pod.memory.request.utilization,
k8s.container.memory.limit.utilizationandk8s.container.memory.request.utilization,
aligning memory with the equivalent CPU utilization metrics. The utilization metrics use
the memory working set as the numerator. -
k8s: Add Pod level memory limit and request metrics. (#4133)
Introducesk8s.pod.memory.limit.desired,k8s.pod.memory.limit.current,
k8s.pod.memory.request.desiredandk8s.pod.memory.request.current,
aligning Pod level memory with the equivalent Pod level CPU metrics. -
k8s: Promotek8s.pod.filesystem.*,k8s.node.filesystem.*, andcontainer.filesystem.*metrics torelease_candidate. Container filesystem metrics (container.filesystem.available,container.filesystem.capacity,container.filesystem.usage) also gain documentation notes mapping them to their cadvisor equivalents (container_fs_limit_bytes,container_fs_usage_bytes), enabling use cases where metrics are retrieved directly from cadvisor rather than through the Kubelet stats summary API.
(#4053) -
k8s: Clarify the Linux working set calculation for Pod, Node, and container memory working set metrics and document the related kubelet eviction behavior. (#4133) -
k8s: Promotek8s.pod.network.io,k8s.pod.network.errors,k8s.node.network.io, andk8s.node.network.errorsmetrics torelease_candidate(#3946) -
k8s: Promote paging fault metrics (k8s.node.paging.faults,k8s.pod.paging.faults,container.paging.faults) to RC (#4036) -
k8s: Addk8s.statefulset.pod.availablemetric, reporting the number of available replica pods (ready for at leastminReadySeconds) targeted by a StatefulSet, aligning with the existing.pod.availablemetrics onk8s.deployment,k8s.replicaset, andk8s.replicationcontroller.
(#4028) -
k8s: Addk8s.node.pid.usageandk8s.node.pid.limitmetrics to track Kubernetes node PID limit and usage. (#3864) -
log: Removedocs/general/logs.mdand attribute groups covered there (log.record,attributes.log, andattributes.log.file) in favor of attributes defined in the registry.
(#4083) -
network: Remove the network connection and carrier attributes section fromdocs/general/attributes.md. Thenetwork.carrier.*andnetwork.connection.*attributes remain available in the attribute registry.
(#4048) -
network: Add guidance for choosing betweenclient.*/server.*,source.*/destination.*, andnetwork.local.*/network.peer.*in a dedicated Network document (docs/network/choosing-network-attributes.md).
(#3947, #1721) -
network: Add publicnetwork.peerandnetwork.localattribute groups, replacing the internalnetwork-coregroup.
(#4084) -
network: Addnetwork.local.as.number,network.local.as.organization,network.peer.as.number, andnetwork.peer.as.organizationattributes for local and peer network endpoints.
(#1663, #3740) -
network: Addnetwork.local.mac.addressandnetwork.peer.mac.addressattributes for local and peer network endpoints.
(#2416) -
network: Addnetwork.local.prefixandnetwork.peer.prefixattributes in CIDR notation for local and peer network endpoints, with normalization by instrumentation or Collector receivers.
(#3731) -
os: Define identifying attributes for os entities for Weaver schema v2 migration. (#4165) -
otel: Markerror.typeas conditionally required onotel.sdk.processor.{span,log}.processedandotel.sdk.exporter.{span,log,metric_data_point}.exported, matchingotel.sdk.exporter.operation.duration.
(#3954) -
otel: Defineotel.scope.nameas required and identifying and keepotel.scope.versionrecommended and descriptive for Weaver schema v2 migration. (#4193) -
otel: Clarify thatotel.sdk.log.createdcounts log records at intake on an enabledLogger, before per-record filtering.
(#3506) -
profile: Extend the list of known frame types with a value for CUDA (#4079) -
rpc: Update RPC call-duration histogram bucket recommendations and align gRPC boundaries with gRPC's existing OpenTelemetry metrics. (#316)
General RPC (including Dubbo) uses 18 boundaries from 0.0001 to 60 seconds with1, 2.5, 5subdivisions through 10 seconds;
gRPC uses the 41 latency boundaries defined in gRPC A66, including zero. -
rpc: Markrpc.request.header.<key>,rpc.response.header.<key>, andrpc.response.trailer.<key>as release candidate. (#4276) -
rpc: Clarify that RPC instrumentations may use additional context or provide configuration options to customize which status or error codes are considered errors.
(#3704) -
rpc: Clarify how to populateserver.addressandserver.porton RPC server spans. Change requirement level ofserver.addresstoopt_inonrpc.server.call.durationmetric and torecommendedon server spans.
(#3784) -
rpc: Add Apache Dubbo-specific metric refinements forrpc.server.call.durationandrpc.client.call.duration, and define Dubbo spans as refinements of the generic RPC spans with shared attribute definitions. Therpc.methodrequirement level differs between client (required) and server (conditionally required), matching the corresponding Dubbo span conventions.
(#4120)
Require clientserver.portonly whenserver.addressis set and a port is
specified in the direct provider target URL, excluding registry discovery targets.
Dubbo spans now explicitly includerpc.system.name. -
rpc: Add gRPC-specific metric refinements forrpc.server.call.durationandrpc.client.call.duration, rendered on the gRPC page. Therpc.methodrequirement level differs between client (required) and server (conditionally required), matching the corresponding gRPC span conventions. Convert gRPC spans to refinements and share gRPC attribute definitions across spans and metrics.
(#3868) -
rpc: Mark RPC spans and call duration metrics as stable, including the gRPC and Apache Dubbo conventions. (#3477) -
rpc: Define Connect RPC and JSON-RPC spans as refinements of the generic RPC client and server spans. (#3808)
JSON-RPC spans now list the opt-inrpc.request.header.<key>,rpc.response.header.<key>, and
rpc.response.trailer.<key>attributes inherited from the generic RPC spans. -
server: Addserver.service.nameandserver.service.namespaceattributes at development stability. (#3472) -
server: Addserver.as.numberandserver.as.organizationattributes for server network endpoints.
(#1663, #3740) -
server: Add theserver.mac.addressattribute for server network endpoints.
(#2416) -
server: Add theserver.prefixattribute in CIDR notation for server network endpoints, with normalization by instrumentation or Collector receivers.
(#3731) -
service: Addservice.instance.cost_center.idandservice.instance.cost_center.nameattributes to the service registry. (#3754) -
source: Clarify thatsource.addressandsource.portdescribe the sender of a network exchange and are recorded as the address available at the point of instrumentation. Instrumentation captures that address and does not try to resolve the address behind intermediaries such as proxies. They apply when there is no clear or known client/server role (for example low-level flow/packet telemetry or peer-to-peer protocols); useclient.*/server.*for logical, de-proxied identity when the roles are known.
(#3947, #1721) -
source: Addsource.as.numberandsource.as.organizationattributes for source network endpoints.
(#1663, #3740) -
source: Add thesource.mac.addressattribute for source network endpoints.
(#2416) -
source: Add thesource.prefixattribute in CIDR notation for source network endpoints, with normalization by instrumentation or Collector receivers.
(#3731) -
system: Promote attributes used by hostmetrics system metrics to RC (#1804) -
v8js: Add members for the current V8 heap space set tov8js.heap.space.nameand note thatmap_spaceis only reported by Node.js <= 19, since V8 merged the map space into the old space. (#4057) -
webengine: Definewebengine.nameas identifying and keepwebengine.versionrecommended and descriptive for Weaver schema v2 migration. (#4194)
🧰 Bug fixes 🧰
-
db: Correct PostgreSQL namespace examples and handle pipe escaping in Markdown templates. (#4222) -
docs: Fix broken Markdown tables when an attribute, metric, or enum-member brief spans multiple lines in YAML. (#3073) -
k8s: Fix description ofk8s.container.cpu.request.utilizationto allow values above 1.0. (#4126)
The previous description incorrectly stated the value range is [0.0,1.0].
Since a CPU request is a scheduling reservation and not a hard cap, values
above 1.0 are possible and indicate the container is using more CPU than requested. -
url: RestoreAWSAccessKeyIdandSignatureto the default list of sensitive query parameter keys. (#3989)
New Contributors
- @om7057 made their first contribution in #4023
- @svencowart made their first contribution in #4046
- @Aman-goel-04 made their first contribution in #4108
- @pinoOgni made their first contribution in #4057
- @peschinskiy made their first contribution in #3916
- @riccardomenegazzo made their first contribution in #4148
- @Abhimanyu9988 made their first contribution in #4158
- @martinkuba made their first contribution in #4238
- @udsmicrosoft made their first contribution in #4056
- @YaoYingLong made their first contribution in #3970
- @ajimenez1503 made their first contribution in #4115
Full Changelog: v1.44.0...v1.45.0