diff --git a/semantic_conventions/Rakefile b/semantic_conventions/Rakefile index beed71b83..1c481583b 100644 --- a/semantic_conventions/Rakefile +++ b/semantic_conventions/Rakefile @@ -50,7 +50,7 @@ task default: default_tasks desc 'update semantic conventions' task generate: %i[update_spec_version_constant generate_require_rollups] -SPEC_VERSION = '1.38.0' +SPEC_VERSION = '1.39.0' OTEL_WEAVER_VERSION = 'v0.22.1' semconv_source_dir = Pathname.new('./tmp/semconvrepo') semconv_output_dir = Pathname.new('./lib/opentelemetry/semconv') diff --git a/semantic_conventions/lib/opentelemetry/semantic_conventions/version.rb b/semantic_conventions/lib/opentelemetry/semantic_conventions/version.rb index 1677c1310..f62430033 100644 --- a/semantic_conventions/lib/opentelemetry/semantic_conventions/version.rb +++ b/semantic_conventions/lib/opentelemetry/semantic_conventions/version.rb @@ -7,7 +7,7 @@ module OpenTelemetry module SemanticConventions # Version of the OpenTelemetry Semantic Conventions from which this library was generated. - SPEC_VERSION = '1.38.0' + SPEC_VERSION = '1.39.0' # Release version of this gem. May not match SPEC_VERSION until gem is released after a spec update. VERSION = '1.37.1' end diff --git a/semantic_conventions/lib/opentelemetry/semconv/db/attributes.rb b/semantic_conventions/lib/opentelemetry/semconv/db/attributes.rb index 5ced2d3c7..faf90482f 100644 --- a/semantic_conventions/lib/opentelemetry/semconv/db/attributes.rb +++ b/semantic_conventions/lib/opentelemetry/semconv/db/attributes.rb @@ -83,7 +83,7 @@ module DB # Summary may be available to the instrumentation through # instrumentation hooks or other means. If it is not available, instrumentations # that support query parsing SHOULD generate a summary following - # [Generating query summary](/docs/database/database-spans.md#generating-a-summary-of-the-query) + # [Generating query summary](/docs/db/database-spans.md#generating-a-summary-of-the-query) # section. # # @note Stability Level: stable @@ -91,7 +91,7 @@ module DB # The database query being executed. # - # For sanitization see [Sanitization of `db.query.text`](/docs/database/database-spans.md#sanitization-of-dbquerytext). + # For sanitization see [Sanitization of `db.query.text`](/docs/db/database-spans.md#sanitization-of-dbquerytext). # For batch operations, if the individual operations are known to have the same query text then that query text SHOULD be used, otherwise all of the individual query texts SHOULD be concatenated with separator `; ` or some other database system specific separator if more applicable. # Parameterized query text SHOULD NOT be sanitized. Even though parameterized query text can potentially have sensitive data, by using a parameterized query the user is giving a strong signal that any sensitive data will be passed as parameter values, and the benefit to observability of capturing the static part of the query text by default outweighs the risk. # diff --git a/semantic_conventions/lib/opentelemetry/semconv/error/attributes.rb b/semantic_conventions/lib/opentelemetry/semconv/error/attributes.rb index 53c1069ff..85eb6b7e5 100644 --- a/semantic_conventions/lib/opentelemetry/semconv/error/attributes.rb +++ b/semantic_conventions/lib/opentelemetry/semconv/error/attributes.rb @@ -39,7 +39,7 @@ module ERROR # # If the operation has completed successfully, instrumentations SHOULD NOT set `error.type`. # - # If a specific domain defines its own set of error identifiers (such as HTTP or gRPC status codes), + # If a specific domain defines its own set of error identifiers (such as HTTP or RPC status codes), # it's RECOMMENDED to: # # - Use a domain-specific attribute diff --git a/semantic_conventions/lib/opentelemetry/semconv/incubating/container/attributes.rb b/semantic_conventions/lib/opentelemetry/semconv/incubating/container/attributes.rb index 3303f8e1d..633fbcb0f 100644 --- a/semantic_conventions/lib/opentelemetry/semconv/incubating/container/attributes.rb +++ b/semantic_conventions/lib/opentelemetry/semconv/incubating/container/attributes.rb @@ -63,12 +63,12 @@ module CONTAINER # Container ID. Usually a UUID, as for example used to [identify Docker containers](https://docs.docker.com/engine/containers/run/#container-identification). The UUID might be abbreviated. # - # @note Stability Level: development + # @note Stability Level: alpha CONTAINER_ID = 'container.id' # Runtime specific image identifier. Usually a hash algorithm followed by a UUID. # - # Docker defines a sha256 of the image id; `container.image.id` corresponds to the `Image` field from the Docker container inspect [API](https://docs.docker.com/reference/api/engine/version/v1.43/#tag/Container/operation/ContainerInspect) endpoint. + # Docker defines a sha256 of the image id; `container.image.id` corresponds to the `Image` field from the Docker container inspect [API](https://docs.docker.com/reference/api/engine/version/v1.52/#tag/Container/operation/ContainerInspect) endpoint. # K8s defines a link to the container registry repository with digest `"imageID": "registry.azurecr.io /namespace/service/dockerfile@sha256:bdeabd40c3a8a492eaf9e8e44d0ebbb84bac7ee25ac0cf8a7159d25f62555625"`. # The ID is assigned by the container runtime and can vary in different environments. Consider using `oci.manifest.digest` if it is important to identify the same image in different environments/runtimes. # @@ -77,19 +77,19 @@ module CONTAINER # Name of the image the container was built on. # - # @note Stability Level: development + # @note Stability Level: alpha CONTAINER_IMAGE_NAME = 'container.image.name' # Repo digests of the container image as provided by the container runtime. # - # [Docker](https://docs.docker.com/reference/api/engine/version/v1.43/#tag/Image/operation/ImageInspect) and [CRI](https://github.com/kubernetes/cri-api/blob/c75ef5b473bbe2d0a4fc92f82235efd665ea8e9f/pkg/apis/runtime/v1/api.proto#L1237-L1238) report those under the `RepoDigests` field. + # [Docker](https://docs.docker.com/reference/api/engine/version/v1.52/#tag/Image/operation/ImageInspect) and [CRI](https://github.com/kubernetes/cri-api/blob/c75ef5b473bbe2d0a4fc92f82235efd665ea8e9f/pkg/apis/runtime/v1/api.proto#L1237-L1238) report those under the `RepoDigests` field. # - # @note Stability Level: development + # @note Stability Level: alpha CONTAINER_IMAGE_REPO_DIGESTS = 'container.image.repo_digests' - # Container image tags. An example can be found in [Docker Image Inspect](https://docs.docker.com/reference/api/engine/version/v1.43/#tag/Image/operation/ImageInspect). Should be only the `` section of the full name for example from `registry.example.com/my-org/my-image:`. + # Container image tags. An example can be found in [Docker Image Inspect](https://docs.docker.com/reference/api/engine/version/v1.52/#tag/Image/operation/ImageInspect). Should be only the `` section of the full name for example from `registry.example.com/my-org/my-image:`. # - # @note Stability Level: development + # @note Stability Level: alpha CONTAINER_IMAGE_TAGS = 'container.image.tags' # Must be called with a key for the full attribute name. See notes below about the expectations diff --git a/semantic_conventions/lib/opentelemetry/semconv/incubating/db/attributes.rb b/semantic_conventions/lib/opentelemetry/semconv/incubating/db/attributes.rb index af3022c26..271411ad3 100644 --- a/semantic_conventions/lib/opentelemetry/semconv/incubating/db/attributes.rb +++ b/semantic_conventions/lib/opentelemetry/semconv/incubating/db/attributes.rb @@ -328,7 +328,7 @@ module DB # Summary may be available to the instrumentation through # instrumentation hooks or other means. If it is not available, instrumentations # that support query parsing SHOULD generate a summary following - # [Generating query summary](/docs/database/database-spans.md#generating-a-summary-of-the-query) + # [Generating query summary](/docs/db/database-spans.md#generating-a-summary-of-the-query) # section. # # @note Stability Level: stable @@ -338,7 +338,7 @@ module DB # The database query being executed. # - # For sanitization see [Sanitization of `db.query.text`](/docs/database/database-spans.md#sanitization-of-dbquerytext). + # For sanitization see [Sanitization of `db.query.text`](/docs/db/database-spans.md#sanitization-of-dbquerytext). # For batch operations, if the individual operations are known to have the same query text then that query text SHOULD be used, otherwise all of the individual query texts SHOULD be concatenated with separator `; ` or some other database system specific separator if more applicable. # Parameterized query text SHOULD NOT be sanitized. Even though parameterized query text can potentially have sensitive data, by using a parameterized query the user is giving a strong signal that any sensitive data will be passed as parameter values, and the benefit to observability of capturing the static part of the query text by default outweighs the risk. # diff --git a/semantic_conventions/lib/opentelemetry/semconv/incubating/error/attributes.rb b/semantic_conventions/lib/opentelemetry/semconv/incubating/error/attributes.rb index 18b6a97a4..7396ae807 100644 --- a/semantic_conventions/lib/opentelemetry/semconv/incubating/error/attributes.rb +++ b/semantic_conventions/lib/opentelemetry/semconv/incubating/error/attributes.rb @@ -51,7 +51,7 @@ module ERROR # # If the operation has completed successfully, instrumentations SHOULD NOT set `error.type`. # - # If a specific domain defines its own set of error identifiers (such as HTTP or gRPC status codes), + # If a specific domain defines its own set of error identifiers (such as HTTP or RPC status codes), # it's RECOMMENDED to: # # - Use a domain-specific attribute diff --git a/semantic_conventions/lib/opentelemetry/semconv/incubating/gen_ai/attributes.rb b/semantic_conventions/lib/opentelemetry/semconv/incubating/gen_ai/attributes.rb index c7cab8abd..8e05c6173 100644 --- a/semantic_conventions/lib/opentelemetry/semconv/incubating/gen_ai/attributes.rb +++ b/semantic_conventions/lib/opentelemetry/semconv/incubating/gen_ai/attributes.rb @@ -181,6 +181,11 @@ module GEN_AI # @deprecated Removed, no replacement at this time. GEN_AI_PROMPT = 'gen_ai.prompt' + # The name of the prompt that uniquely identifies it. + # + # @note Stability Level: development + GEN_AI_PROMPT_NAME = 'gen_ai.prompt.name' + # The Generative AI provider as identified by the client or server instrumentation. # # The attribute SHOULD be set based on the instrumentation's best diff --git a/semantic_conventions/lib/opentelemetry/semconv/incubating/jsonrpc.rb b/semantic_conventions/lib/opentelemetry/semconv/incubating/jsonrpc.rb new file mode 100644 index 000000000..4ee0a5afc --- /dev/null +++ b/semantic_conventions/lib/opentelemetry/semconv/incubating/jsonrpc.rb @@ -0,0 +1,21 @@ +# frozen_string_literal: true + +# Copyright The OpenTelemetry Authors +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +# SPDX-License-Identifier: Apache-2.0 + +# This file was autogenerated. Do not edit it by hand. + +require_relative 'jsonrpc/attributes' diff --git a/semantic_conventions/lib/opentelemetry/semconv/incubating/jsonrpc/attributes.rb b/semantic_conventions/lib/opentelemetry/semconv/incubating/jsonrpc/attributes.rb new file mode 100644 index 000000000..b3c50a427 --- /dev/null +++ b/semantic_conventions/lib/opentelemetry/semconv/incubating/jsonrpc/attributes.rb @@ -0,0 +1,44 @@ +# frozen_string_literal: true + +# Copyright The OpenTelemetry Authors +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +# SPDX-License-Identifier: Apache-2.0 +# +# This file was autogenerated. Do not edit it by hand. + +module OpenTelemetry + module SemConv + module Incubating + module JSONRPC + # @!group Attribute Names + + # Protocol version, as specified in the `jsonrpc` property of the request and its corresponding response. + # + # @note Stability Level: development + JSONRPC_PROTOCOL_VERSION = 'jsonrpc.protocol.version' + + # A string representation of the `id` property of the request and its corresponding response. + # + # Under the [JSON-RPC specification](https://www.jsonrpc.org/specification), the `id` property may be a string, number, null, or omitted entirely. When omitted, the request is treated as a notification. Using `null` is not equivalent to omitting the `id`, but it is discouraged. + # Instrumentations SHOULD NOT capture this attribute when the `id` is `null` or omitted. + # + # @note Stability Level: development + JSONRPC_REQUEST_ID = 'jsonrpc.request.id' + + # @!endgroup + end + end + end +end diff --git a/semantic_conventions/lib/opentelemetry/semconv/incubating/k8s/attributes.rb b/semantic_conventions/lib/opentelemetry/semconv/incubating/k8s/attributes.rb index b14609979..d8319f181 100644 --- a/semantic_conventions/lib/opentelemetry/semconv/incubating/k8s/attributes.rb +++ b/semantic_conventions/lib/opentelemetry/semconv/incubating/k8s/attributes.rb @@ -26,7 +26,7 @@ module K8S # The name of the cluster. # - # @note Stability Level: development + # @note Stability Level: alpha K8S_CLUSTER_NAME = 'k8s.cluster.name' # A pseudo-ID for the cluster, set to the UID of the `kube-system` namespace. @@ -54,17 +54,17 @@ module K8S # Therefore, UIDs between clusters should be extremely unlikely to # conflict. # - # @note Stability Level: development + # @note Stability Level: alpha K8S_CLUSTER_UID = 'k8s.cluster.uid' # The name of the Container from Pod specification, must be unique within a Pod. Container runtime usually uses different globally unique name (`container.name`). # - # @note Stability Level: development + # @note Stability Level: alpha K8S_CONTAINER_NAME = 'k8s.container.name' # Number of times the container was restarted. This attribute can be used to identify a particular container (running or stopped) within a container spec. # - # @note Stability Level: development + # @note Stability Level: alpha K8S_CONTAINER_RESTART_COUNT = 'k8s.container.restart_count' # Last terminated reason of the Container. @@ -97,7 +97,7 @@ module K8S # - An annotation `data` with empty string value SHOULD be recorded as # the `k8s.cronjob.annotation.data` attribute with value `""`. # - # @note Stability Level: development + # @note Stability Level: alpha K8S_CRONJOB_ANNOTATION_LAMBDA = ->(key) { "k8s.cronjob.annotation.#{key}" } # Must be called with a key for the full attribute name. See notes below about the expectations @@ -115,17 +115,17 @@ module K8S # - A label `automated` with empty string value SHOULD be recorded as # the `k8s.cronjob.label.automated` attribute with value `""`. # - # @note Stability Level: development + # @note Stability Level: alpha K8S_CRONJOB_LABEL_LAMBDA = ->(key) { "k8s.cronjob.label.#{key}" } # The name of the CronJob. # - # @note Stability Level: development + # @note Stability Level: alpha K8S_CRONJOB_NAME = 'k8s.cronjob.name' # The UID of the CronJob. # - # @note Stability Level: development + # @note Stability Level: alpha K8S_CRONJOB_UID = 'k8s.cronjob.uid' # Must be called with a key for the full attribute name. See notes below about the expectations @@ -143,7 +143,7 @@ module K8S # - A label `data` with empty string value SHOULD be recorded as # the `k8s.daemonset.annotation.data` attribute with value `""`. # - # @note Stability Level: development + # @note Stability Level: alpha K8S_DAEMONSET_ANNOTATION_LAMBDA = ->(key) { "k8s.daemonset.annotation.#{key}" } # Must be called with a key for the full attribute name. See notes below about the expectations @@ -161,17 +161,17 @@ module K8S # - A label `data` with empty string value SHOULD be recorded as # the `k8s.daemonset.label.injected` attribute with value `""`. # - # @note Stability Level: development + # @note Stability Level: alpha K8S_DAEMONSET_LABEL_LAMBDA = ->(key) { "k8s.daemonset.label.#{key}" } # The name of the DaemonSet. # - # @note Stability Level: development + # @note Stability Level: alpha K8S_DAEMONSET_NAME = 'k8s.daemonset.name' # The UID of the DaemonSet. # - # @note Stability Level: development + # @note Stability Level: alpha K8S_DAEMONSET_UID = 'k8s.daemonset.uid' # Must be called with a key for the full attribute name. See notes below about the expectations @@ -189,7 +189,7 @@ module K8S # - A label `data` with empty string value SHOULD be recorded as # the `k8s.deployment.annotation.data` attribute with value `""`. # - # @note Stability Level: development + # @note Stability Level: alpha K8S_DEPLOYMENT_ANNOTATION_LAMBDA = ->(key) { "k8s.deployment.annotation.#{key}" } # Must be called with a key for the full attribute name. See notes below about the expectations @@ -207,17 +207,17 @@ module K8S # - A label `injected` with empty string value SHOULD be recorded as # the `k8s.deployment.label.injected` attribute with value `""`. # - # @note Stability Level: development + # @note Stability Level: alpha K8S_DEPLOYMENT_LABEL_LAMBDA = ->(key) { "k8s.deployment.label.#{key}" } # The name of the Deployment. # - # @note Stability Level: development + # @note Stability Level: alpha K8S_DEPLOYMENT_NAME = 'k8s.deployment.name' # The UID of the Deployment. # - # @note Stability Level: development + # @note Stability Level: alpha K8S_DEPLOYMENT_UID = 'k8s.deployment.uid' # The type of metric source for the horizontal pod autoscaler. @@ -278,7 +278,7 @@ module K8S # - A label `data` with empty string value SHOULD be recorded as # the `k8s.job.annotation.data` attribute with value `""`. # - # @note Stability Level: development + # @note Stability Level: alpha K8S_JOB_ANNOTATION_LAMBDA = ->(key) { "k8s.job.annotation.#{key}" } # Must be called with a key for the full attribute name. See notes below about the expectations @@ -296,17 +296,17 @@ module K8S # - A label `data` with empty string value SHOULD be recorded as # the `k8s.job.label.automated` attribute with value `""`. # - # @note Stability Level: development + # @note Stability Level: alpha K8S_JOB_LABEL_LAMBDA = ->(key) { "k8s.job.label.#{key}" } # The name of the Job. # - # @note Stability Level: development + # @note Stability Level: alpha K8S_JOB_NAME = 'k8s.job.name' # The UID of the Job. # - # @note Stability Level: development + # @note Stability Level: alpha K8S_JOB_UID = 'k8s.job.uid' # Must be called with a key for the full attribute name. See notes below about the expectations @@ -324,7 +324,7 @@ module K8S # - A label `data` with empty string value SHOULD be recorded as # the `k8s.namespace.annotation.data` attribute with value `""`. # - # @note Stability Level: development + # @note Stability Level: alpha K8S_NAMESPACE_ANNOTATION_LAMBDA = ->(key) { "k8s.namespace.annotation.#{key}" } # Must be called with a key for the full attribute name. See notes below about the expectations @@ -342,12 +342,12 @@ module K8S # - A label `data` with empty string value SHOULD be recorded as # the `k8s.namespace.label.data` attribute with value `""`. # - # @note Stability Level: development + # @note Stability Level: alpha K8S_NAMESPACE_LABEL_LAMBDA = ->(key) { "k8s.namespace.label.#{key}" } # The name of the namespace that the pod is running in. # - # @note Stability Level: development + # @note Stability Level: alpha K8S_NAMESPACE_NAME = 'k8s.namespace.name' # The phase of the K8s namespace. @@ -373,7 +373,7 @@ module K8S # - An annotation `data` with empty string value SHOULD be recorded as # the `k8s.node.annotation.data` attribute with value `""`. # - # @note Stability Level: development + # @note Stability Level: alpha K8S_NODE_ANNOTATION_LAMBDA = ->(key) { "k8s.node.annotation.#{key}" } # The status of the condition, one of True, False, Unknown. @@ -414,17 +414,17 @@ module K8S # - A label `data` with empty string value SHOULD be recorded as # the `k8s.node.label.data` attribute with value `""`. # - # @note Stability Level: development + # @note Stability Level: alpha K8S_NODE_LABEL_LAMBDA = ->(key) { "k8s.node.label.#{key}" } # The name of the Node. # - # @note Stability Level: development + # @note Stability Level: alpha K8S_NODE_NAME = 'k8s.node.name' # The UID of the Node. # - # @note Stability Level: development + # @note Stability Level: alpha K8S_NODE_UID = 'k8s.node.uid' # Must be called with a key for the full attribute name. See notes below about the expectations @@ -444,9 +444,29 @@ module K8S # - An annotation `data` with empty string value SHOULD be recorded as # the `k8s.pod.annotation.data` attribute with value `""`. # - # @note Stability Level: development + # @note Stability Level: alpha K8S_POD_ANNOTATION_LAMBDA = ->(key) { "k8s.pod.annotation.#{key}" } + # Specifies the hostname of the Pod. + # + # The K8s Pod spec has an optional hostname field, which can be used to specify a hostname. + # Refer to [K8s docs](https://kubernetes.io/docs/concepts/services-networking/dns-pod-service/#pod-hostname-and-subdomain-field) + # for more information about this field. + # + # This attribute aligns with the `hostname` field of the + # [K8s PodSpec](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.34/#podspec-v1-core). + # + # @note Stability Level: alpha + K8S_POD_HOSTNAME = 'k8s.pod.hostname' + + # IP address allocated to the Pod. + # + # This attribute aligns with the `podIP` field of the + # [K8s PodStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.34/#podstatus-v1-core). + # + # @note Stability Level: alpha + K8S_POD_IP = 'k8s.pod.ip' + # Must be called with a key for the full attribute name. See notes below about the expectations # for the state of the key. # @@ -464,7 +484,7 @@ module K8S # - A label `data` with empty string value SHOULD be recorded as # the `k8s.pod.label.data` attribute with value `""`. # - # @note Stability Level: development + # @note Stability Level: alpha K8S_POD_LABEL_LAMBDA = ->(key) { "k8s.pod.label.#{key}" } # Must be called with a key for the full attribute name. See notes below about the expectations @@ -481,9 +501,21 @@ module K8S # The name of the Pod. # - # @note Stability Level: development + # @note Stability Level: alpha K8S_POD_NAME = 'k8s.pod.name' + # The start timestamp of the Pod. + # + # Date and time at which the object was acknowledged by the Kubelet. + # This is before the Kubelet pulled the container image(s) for the pod. + # + # This attribute aligns with the `startTime` field of the + # [K8s PodStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.34/#podstatus-v1-core), + # in ISO 8601 (RFC 3339 compatible) format. + # + # @note Stability Level: alpha + K8S_POD_START_TIME = 'k8s.pod.start_time' + # The phase for the pod. Corresponds to the `phase` field of the: [K8s PodStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.33/#podstatus-v1-core) # # @note Stability Level: development @@ -496,7 +528,7 @@ module K8S # The UID of the Pod. # - # @note Stability Level: development + # @note Stability Level: alpha K8S_POD_UID = 'k8s.pod.uid' # Must be called with a key for the full attribute name. See notes below about the expectations @@ -514,7 +546,7 @@ module K8S # - A label `data` with empty string value SHOULD be recorded as # the `k8s.replicaset.annotation.data` attribute with value `""`. # - # @note Stability Level: development + # @note Stability Level: alpha K8S_REPLICASET_ANNOTATION_LAMBDA = ->(key) { "k8s.replicaset.annotation.#{key}" } # Must be called with a key for the full attribute name. See notes below about the expectations @@ -532,17 +564,17 @@ module K8S # - A label `injected` with empty string value SHOULD be recorded as # the `k8s.replicaset.label.injected` attribute with value `""`. # - # @note Stability Level: development + # @note Stability Level: alpha K8S_REPLICASET_LABEL_LAMBDA = ->(key) { "k8s.replicaset.label.#{key}" } # The name of the ReplicaSet. # - # @note Stability Level: development + # @note Stability Level: alpha K8S_REPLICASET_NAME = 'k8s.replicaset.name' # The UID of the ReplicaSet. # - # @note Stability Level: development + # @note Stability Level: alpha K8S_REPLICASET_UID = 'k8s.replicaset.uid' # The name of the replication controller. @@ -587,7 +619,7 @@ module K8S # - A label `data` with empty string value SHOULD be recorded as # the `k8s.statefulset.annotation.data` attribute with value `""`. # - # @note Stability Level: development + # @note Stability Level: alpha K8S_STATEFULSET_ANNOTATION_LAMBDA = ->(key) { "k8s.statefulset.annotation.#{key}" } # Must be called with a key for the full attribute name. See notes below about the expectations @@ -605,17 +637,17 @@ module K8S # - A label `injected` with empty string value SHOULD be recorded as # the `k8s.statefulset.label.injected` attribute with value `""`. # - # @note Stability Level: development + # @note Stability Level: alpha K8S_STATEFULSET_LABEL_LAMBDA = ->(key) { "k8s.statefulset.label.#{key}" } # The name of the StatefulSet. # - # @note Stability Level: development + # @note Stability Level: alpha K8S_STATEFULSET_NAME = 'k8s.statefulset.name' # The UID of the StatefulSet. # - # @note Stability Level: development + # @note Stability Level: alpha K8S_STATEFULSET_UID = 'k8s.statefulset.uid' # The name of K8s [StorageClass](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#storageclass-v1-storage-k8s-io) object. diff --git a/semantic_conventions/lib/opentelemetry/semconv/incubating/linux/attributes.rb b/semantic_conventions/lib/opentelemetry/semconv/incubating/linux/attributes.rb index 1ab43f5ad..f40290e8f 100644 --- a/semantic_conventions/lib/opentelemetry/semconv/incubating/linux/attributes.rb +++ b/semantic_conventions/lib/opentelemetry/semconv/incubating/linux/attributes.rb @@ -27,6 +27,7 @@ module LINUX # The Linux Slab memory state # # @note Stability Level: development + # @deprecated Replaced by `system.memory.linux.slab.state`. LINUX_MEMORY_SLAB_STATE = 'linux.memory.slab.state' # @!endgroup diff --git a/semantic_conventions/lib/opentelemetry/semconv/incubating/mcp.rb b/semantic_conventions/lib/opentelemetry/semconv/incubating/mcp.rb new file mode 100644 index 000000000..92436a4c7 --- /dev/null +++ b/semantic_conventions/lib/opentelemetry/semconv/incubating/mcp.rb @@ -0,0 +1,22 @@ +# frozen_string_literal: true + +# Copyright The OpenTelemetry Authors +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +# SPDX-License-Identifier: Apache-2.0 + +# This file was autogenerated. Do not edit it by hand. + +require_relative 'mcp/attributes' +require_relative 'mcp/metrics' diff --git a/semantic_conventions/lib/opentelemetry/semconv/incubating/mcp/attributes.rb b/semantic_conventions/lib/opentelemetry/semconv/incubating/mcp/attributes.rb new file mode 100644 index 000000000..a95147ca3 --- /dev/null +++ b/semantic_conventions/lib/opentelemetry/semconv/incubating/mcp/attributes.rb @@ -0,0 +1,53 @@ +# frozen_string_literal: true + +# Copyright The OpenTelemetry Authors +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +# SPDX-License-Identifier: Apache-2.0 +# +# This file was autogenerated. Do not edit it by hand. + +module OpenTelemetry + module SemConv + module Incubating + module MCP + # @!group Attribute Names + + # The name of the request or notification method. + # + # @note Stability Level: development + MCP_METHOD_NAME = 'mcp.method.name' + + # The [version](https://modelcontextprotocol.io/specification/versioning) of the Model Context Protocol used. + # + # @note Stability Level: development + MCP_PROTOCOL_VERSION = 'mcp.protocol.version' + + # The value of the resource uri. + # + # This is a URI of the resource provided in the following requests or notifications: `resources/read`, `resources/subscribe`, `resources/unsubscribe`, or `notifications/resources/updated`. + # + # @note Stability Level: development + MCP_RESOURCE_URI = 'mcp.resource.uri' + + # Identifies [MCP session](https://modelcontextprotocol.io/specification/2025-06-18/basic/transports#session-management). + # + # @note Stability Level: development + MCP_SESSION_ID = 'mcp.session.id' + + # @!endgroup + end + end + end +end diff --git a/semantic_conventions/lib/opentelemetry/semconv/incubating/mcp/metrics.rb b/semantic_conventions/lib/opentelemetry/semconv/incubating/mcp/metrics.rb new file mode 100644 index 000000000..e62581674 --- /dev/null +++ b/semantic_conventions/lib/opentelemetry/semconv/incubating/mcp/metrics.rb @@ -0,0 +1,51 @@ +# frozen_string_literal: true + +# Copyright The OpenTelemetry Authors +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +# SPDX-License-Identifier: Apache-2.0 +# +# This file was autogenerated. Do not edit it by hand. + +module OpenTelemetry + module SemConv + module Incubating + module MCP + # @!group Metrics Names + + # The duration of the MCP request or notification as observed on the sender from the time it was sent until the response or ack is received. + # + # @note Stability Level: development + MCP_CLIENT_OPERATION_DURATION = 'mcp.client.operation.duration' + + # The duration of the MCP session as observed on the MCP client. + # + # @note Stability Level: development + MCP_CLIENT_SESSION_DURATION = 'mcp.client.session.duration' + + # MCP request or notification duration as observed on the receiver from the time it was received until the result or ack is sent. + # + # @note Stability Level: development + MCP_SERVER_OPERATION_DURATION = 'mcp.server.operation.duration' + + # The duration of the MCP session as observed on the MCP server. + # + # @note Stability Level: development + MCP_SERVER_SESSION_DURATION = 'mcp.server.session.duration' + + # @!endgroup + end + end + end +end diff --git a/semantic_conventions/lib/opentelemetry/semconv/incubating/otel/attributes.rb b/semantic_conventions/lib/opentelemetry/semconv/incubating/otel/attributes.rb index d07334937..d07a4ad12 100644 --- a/semantic_conventions/lib/opentelemetry/semconv/incubating/otel/attributes.rb +++ b/semantic_conventions/lib/opentelemetry/semconv/incubating/otel/attributes.rb @@ -51,6 +51,13 @@ module OTEL # @note Stability Level: development OTEL_COMPONENT_TYPE = 'otel.component.type' + # Identifies the class / type of event. + # + # This attribute SHOULD be used by non-OTLP exporters when destination does not support `EventName` or equivalent field. This attribute MAY be used by applications using existing logging libraries so that it can be used to set the `EventName` field by Collector or SDK components. + # + # @note Stability Level: development + OTEL_EVENT_NAME = 'otel.event.name' + # Deprecated. Use the `otel.scope.name` attribute # # @note Stability Level: development diff --git a/semantic_conventions/lib/opentelemetry/semconv/incubating/peer/attributes.rb b/semantic_conventions/lib/opentelemetry/semconv/incubating/peer/attributes.rb index 1f985a31b..6a7ea4967 100644 --- a/semantic_conventions/lib/opentelemetry/semconv/incubating/peer/attributes.rb +++ b/semantic_conventions/lib/opentelemetry/semconv/incubating/peer/attributes.rb @@ -32,6 +32,7 @@ module PEER # - A gRPC service `rpc.service="io.opentelemetry.AuthService"` may be hosted in both a gateway, `peer.service="ExternalApiService"` and a backend, `peer.service="AuthService"`. # # @note Stability Level: development + # @deprecated Replaced by `service.peer.name`. PEER_SERVICE = 'peer.service' # @!endgroup diff --git a/semantic_conventions/lib/opentelemetry/semconv/incubating/pprof/attributes.rb b/semantic_conventions/lib/opentelemetry/semconv/incubating/pprof/attributes.rb index c08ecd9e4..da649a770 100644 --- a/semantic_conventions/lib/opentelemetry/semconv/incubating/pprof/attributes.rb +++ b/semantic_conventions/lib/opentelemetry/semconv/incubating/pprof/attributes.rb @@ -54,6 +54,23 @@ module PPROF # @note Stability Level: development PPROF_PROFILE_COMMENT = 'pprof.profile.comment' + # Documentation link for this profile type. + # + # The URL must be absolute and may be missing if the profile was generated by code that did not supply a link + # + # @note Stability Level: development + PPROF_PROFILE_DOC_URL = 'pprof.profile.doc_url' + + # Frames with Function.function_name fully matching the regexp will be dropped from the samples, along with their successors. + # + # @note Stability Level: development + PPROF_PROFILE_DROP_FRAMES = 'pprof.profile.drop_frames' + + # Frames with Function.function_name fully matching the regexp will be kept, even if it matches drop_frames. + # + # @note Stability Level: development + PPROF_PROFILE_KEEP_FRAMES = 'pprof.profile.keep_frames' + # @!endgroup end end diff --git a/semantic_conventions/lib/opentelemetry/semconv/incubating/process/metrics.rb b/semantic_conventions/lib/opentelemetry/semconv/incubating/process/metrics.rb index ef5edf4b3..f607bd26f 100644 --- a/semantic_conventions/lib/opentelemetry/semconv/incubating/process/metrics.rb +++ b/semantic_conventions/lib/opentelemetry/semconv/incubating/process/metrics.rb @@ -59,9 +59,10 @@ module PROCESS # @note Stability Level: development PROCESS_NETWORK_IO = 'process.network.io' - # Number of file descriptors in use by the process. + # Deprecated, use `process.unix.file_descriptor.count` instead. # # @note Stability Level: development + # @deprecated Replaced by `process.unix.file_descriptor.count`. PROCESS_OPEN_FILE_DESCRIPTOR_COUNT = 'process.open_file_descriptor.count' # Number of page faults the process has made. @@ -74,6 +75,11 @@ module PROCESS # @note Stability Level: development PROCESS_THREAD_COUNT = 'process.thread.count' + # Number of unix file descriptors in use by the process. + # + # @note Stability Level: development + PROCESS_UNIX_FILE_DESCRIPTOR_COUNT = 'process.unix.file_descriptor.count' + # The time the process has been running. # # Instrumentations SHOULD use a gauge with type `double` and measure uptime in seconds as a floating point number with the highest precision available. @@ -82,6 +88,11 @@ module PROCESS # @note Stability Level: development PROCESS_UPTIME = 'process.uptime' + # Number of handles held by the process. + # + # @note Stability Level: development + PROCESS_WINDOWS_HANDLE_COUNT = 'process.windows.handle.count' + # @!endgroup end end diff --git a/semantic_conventions/lib/opentelemetry/semconv/incubating/rpc/attributes.rb b/semantic_conventions/lib/opentelemetry/semconv/incubating/rpc/attributes.rb index 6bf0ddc34..f428d48eb 100644 --- a/semantic_conventions/lib/opentelemetry/semconv/incubating/rpc/attributes.rb +++ b/semantic_conventions/lib/opentelemetry/semconv/incubating/rpc/attributes.rb @@ -24,9 +24,10 @@ module Incubating module RPC # @!group Attribute Names - # The [error codes](https://connectrpc.com//docs/protocol/#error-codes) of the Connect request. Error codes are always string values. + # Deprecated, use `rpc.response.status_code` attribute instead. # # @note Stability Level: development + # @deprecated Replaced by `rpc.response.status_code`. RPC_CONNECT_RPC_ERROR_CODE = 'rpc.connect_rpc.error_code' # Must be called with a key for the full attribute name. See notes below about the expectations @@ -35,15 +36,10 @@ module RPC # @example Usage # RPC_CONNECT_RPC_REQUEST_METADATA_LAMBDA.call('some-cool-key') #=> 'rpc.connect_rpc.request.metadata.some-cool-key' # - # Connect request metadata, `` being the normalized Connect Metadata key (lowercase), the value being the metadata values. - # - # Instrumentations SHOULD require an explicit configuration of which metadata values are to be captured. - # Including all request metadata values can be a security risk - explicit configuration helps avoid leaking sensitive information. - # - # For example, a property `my-custom-key` with value `["1.2.3.4", "1.2.3.5"]` SHOULD be recorded as - # the `rpc.connect_rpc.request.metadata.my-custom-key` attribute with value `["1.2.3.4", "1.2.3.5"]` + # Deprecated, use `rpc.request.metadata` instead. # # @note Stability Level: development + # @deprecated Replaced by `rpc.request.metadata`. RPC_CONNECT_RPC_REQUEST_METADATA_LAMBDA = ->(key) { "rpc.connect_rpc.request.metadata.#{key}" } # Must be called with a key for the full attribute name. See notes below about the expectations @@ -52,15 +48,10 @@ module RPC # @example Usage # RPC_CONNECT_RPC_RESPONSE_METADATA_LAMBDA.call('some-cool-key') #=> 'rpc.connect_rpc.response.metadata.some-cool-key' # - # Connect response metadata, `` being the normalized Connect Metadata key (lowercase), the value being the metadata values. - # - # Instrumentations SHOULD require an explicit configuration of which metadata values are to be captured. - # Including all response metadata values can be a security risk - explicit configuration helps avoid leaking sensitive information. - # - # For example, a property `my-custom-key` with value `"attribute_value"` SHOULD be recorded as - # the `rpc.connect_rpc.response.metadata.my-custom-key` attribute with value `["attribute_value"]` + # Deprecated, use `rpc.response.metadata` instead. # # @note Stability Level: development + # @deprecated Replaced by `rpc.response.metadata`. RPC_CONNECT_RPC_RESPONSE_METADATA_LAMBDA = ->(key) { "rpc.connect_rpc.response.metadata.#{key}" } # Must be called with a key for the full attribute name. See notes below about the expectations @@ -69,15 +60,10 @@ module RPC # @example Usage # RPC_GRPC_REQUEST_METADATA_LAMBDA.call('some-cool-key') #=> 'rpc.grpc.request.metadata.some-cool-key' # - # gRPC request metadata, `` being the normalized gRPC Metadata key (lowercase), the value being the metadata values. - # - # Instrumentations SHOULD require an explicit configuration of which metadata values are to be captured. - # Including all request metadata values can be a security risk - explicit configuration helps avoid leaking sensitive information. - # - # For example, a property `my-custom-key` with value `["1.2.3.4", "1.2.3.5"]` SHOULD be recorded as - # `rpc.grpc.request.metadata.my-custom-key` attribute with value `["1.2.3.4", "1.2.3.5"]` + # Deprecated, use `rpc.request.metadata` instead. # # @note Stability Level: development + # @deprecated Replaced by `rpc.request.metadata`. RPC_GRPC_REQUEST_METADATA_LAMBDA = ->(key) { "rpc.grpc.request.metadata.#{key}" } # Must be called with a key for the full attribute name. See notes below about the expectations @@ -86,40 +72,40 @@ module RPC # @example Usage # RPC_GRPC_RESPONSE_METADATA_LAMBDA.call('some-cool-key') #=> 'rpc.grpc.response.metadata.some-cool-key' # - # gRPC response metadata, `` being the normalized gRPC Metadata key (lowercase), the value being the metadata values. - # - # Instrumentations SHOULD require an explicit configuration of which metadata values are to be captured. - # Including all response metadata values can be a security risk - explicit configuration helps avoid leaking sensitive information. - # - # For example, a property `my-custom-key` with value `["attribute_value"]` SHOULD be recorded as - # the `rpc.grpc.response.metadata.my-custom-key` attribute with value `["attribute_value"]` + # Deprecated, use `rpc.response.metadata` instead. # # @note Stability Level: development + # @deprecated Replaced by `rpc.response.metadata`. RPC_GRPC_RESPONSE_METADATA_LAMBDA = ->(key) { "rpc.grpc.response.metadata.#{key}" } - # The [numeric status code](https://github.com/grpc/grpc/blob/v1.33.2/doc/statuscodes.md) of the gRPC request. + # Deprecated, use string representation on the `rpc.response.status_code` attribute instead. # # @note Stability Level: development + # @deprecated Use string representation of the gRPC status code on the `rpc.response.status_code` attribute. RPC_GRPC_STATUS_CODE = 'rpc.grpc.status_code' - # `error.code` property of response if it is an error response. + # Deprecated, use string representation on the `rpc.response.status_code` attribute instead. # # @note Stability Level: development + # @deprecated Use string representation of the error code on the `rpc.response.status_code` attribute. RPC_JSONRPC_ERROR_CODE = 'rpc.jsonrpc.error_code' - # `error.message` property of response if it is an error response. + # Deprecated, use span status description or `error.message` attribute on other signals. # # @note Stability Level: development + # @deprecated Use the span status description or `error.message` attribute on other signals. RPC_JSONRPC_ERROR_MESSAGE = 'rpc.jsonrpc.error_message' - # `id` property of request or response. Since protocol allows id to be int, string, `null` or missing (for notifications), value is expected to be cast to string for simplicity. Use empty string in case of `null` value. Omit entirely if this is a notification. + # Deprecated, use `jsonrpc.request.id` instead. # # @note Stability Level: development + # @deprecated Replaced by `jsonrpc.request.id`. RPC_JSONRPC_REQUEST_ID = 'rpc.jsonrpc.request_id' - # Protocol version as in `jsonrpc` property of request/response. Since JSON-RPC 1.0 doesn't specify this, the value can be omitted. + # Deprecated, use `jsonrpc.protocol.version` instead. # # @note Stability Level: development + # @deprecated Replaced by `jsonrpc.protocol.version`. RPC_JSONRPC_VERSION = 'rpc.jsonrpc.version' # Compressed size of the message in bytes. @@ -144,21 +130,101 @@ module RPC # @note Stability Level: development RPC_MESSAGE_UNCOMPRESSED_SIZE = 'rpc.message.uncompressed_size' - # This is the logical name of the method from the RPC interface perspective. + # The fully-qualified logical name of the method from the RPC interface perspective. + # + # The method name MAY have unbounded cardinality in edge or error cases. + # + # Some RPC frameworks or libraries provide a fixed set of recognized methods + # for client stubs and server implementations. Instrumentations for such + # frameworks MUST set this attribute to the original method name only + # when the method is recognized by the framework or library. + # + # When the method is not recognized, for example, when the server receives + # a request for a method that is not predefined on the server, or when + # instrumentation is not able to reliably detect if the method is predefined, + # the attribute MUST be set to `_OTHER`. In such cases, tracing + # instrumentations MUST also set `rpc.method_original` attribute to + # the original method value. + # + # If the RPC instrumentation could end up converting valid RPC methods to + # `_OTHER`, then it SHOULD provide a way to configure the list of recognized + # RPC methods. + # + # The `rpc.method` can be different from the name of any implementing + # method/function. + # The `code.function.name` attribute may be used to record the fully-qualified + # method actually executing the call on the server side, or the + # RPC client stub method on the client side. # # @note Stability Level: development RPC_METHOD = 'rpc.method' - # The full (logical) name of the service being called, including its package name, if applicable. + # The original name of the method used by the client. # # @note Stability Level: development + RPC_METHOD_ORIGINAL = 'rpc.method_original' + + # Must be called with a key for the full attribute name. See notes below about the expectations + # for the state of the key. + # + # @example Usage + # RPC_REQUEST_METADATA_LAMBDA.call('some-cool-key') #=> 'rpc.request.metadata.some-cool-key' + # + # RPC request metadata, `` being the normalized RPC metadata key (lowercase), the value being the metadata values. + # + # Instrumentations SHOULD require an explicit configuration of which metadata values are to be captured. + # Including all request metadata values can be a security risk - explicit configuration helps avoid leaking sensitive information. + # + # For example, a property `my-custom-key` with value `["1.2.3.4", "1.2.3.5"]` SHOULD be recorded as + # `rpc.request.metadata.my-custom-key` attribute with value `["1.2.3.4", "1.2.3.5"]` + # + # @note Stability Level: development + RPC_REQUEST_METADATA_LAMBDA = ->(key) { "rpc.request.metadata.#{key}" } + + # Must be called with a key for the full attribute name. See notes below about the expectations + # for the state of the key. + # + # @example Usage + # RPC_RESPONSE_METADATA_LAMBDA.call('some-cool-key') #=> 'rpc.response.metadata.some-cool-key' + # + # RPC response metadata, `` being the normalized RPC metadata key (lowercase), the value being the metadata values. + # + # Instrumentations SHOULD require an explicit configuration of which metadata values are to be captured. + # Including all response metadata values can be a security risk - explicit configuration helps avoid leaking sensitive information. + # + # For example, a property `my-custom-key` with value `["attribute_value"]` SHOULD be recorded as + # the `rpc.response.metadata.my-custom-key` attribute with value `["attribute_value"]` + # + # @note Stability Level: development + RPC_RESPONSE_METADATA_LAMBDA = ->(key) { "rpc.response.metadata.#{key}" } + + # Status code of the RPC returned by the RPC server or generated by the client + # + # Usually it represents an error code, but may also represent partial success, warning, or differentiate between various types of successful outcomes. + # Semantic conventions for individual RPC frameworks SHOULD document what `rpc.response.status_code` means in the context of that system and which values are considered to represent errors. + # + # @note Stability Level: development + RPC_RESPONSE_STATUS_CODE = 'rpc.response.status_code' + + # Deprecated, use fully-qualified `rpc.method` instead. + # + # @note Stability Level: development + # @deprecated Value should be included in `rpc.method` which is expected to be a fully-qualified name. RPC_SERVICE = 'rpc.service' - # A string identifying the remoting system. See below for a list of well-known identifiers. + # Deprecated, use `rpc.system.name` attribute instead. # # @note Stability Level: development + # @deprecated Replaced by `rpc.system.name`. RPC_SYSTEM = 'rpc.system' + # The Remote Procedure Call (RPC) system. + # + # The client and server RPC systems may differ for the same RPC interaction. For example, a client may use Apache Dubbo or Connect RPC to communicate with a server that uses gRPC since both protocols provide compatibility with gRPC. + # + # @note Stability Level: development + RPC_SYSTEM_NAME = 'rpc.system.name' + # @!endgroup end end diff --git a/semantic_conventions/lib/opentelemetry/semconv/incubating/rpc/metrics.rb b/semantic_conventions/lib/opentelemetry/semconv/incubating/rpc/metrics.rb index 69f4dcf68..8d3463104 100644 --- a/semantic_conventions/lib/opentelemetry/semconv/incubating/rpc/metrics.rb +++ b/semantic_conventions/lib/opentelemetry/semconv/incubating/rpc/metrics.rb @@ -24,7 +24,15 @@ module Incubating module RPC # @!group Metrics Names - # Measures the duration of outbound RPC. + # Measures the duration of outbound remote procedure calls (RPC). + # + # When this metric is reported alongside an RPC client span, the metric value + # SHOULD be the same as the RPC client span duration. + # + # @note Stability Level: development + RPC_CLIENT_CALL_DURATION = 'rpc.client.call.duration' + + # Deprecated, use `rpc.client.call.duration` instead. Note: the unit also changed from `ms` to `s`. # # While streaming RPCs may record this metric as start-of-batch # to end-of-batch, it's hard to interpret in practice. @@ -32,6 +40,7 @@ module RPC # **Streaming**: N/A. # # @note Stability Level: development + # @deprecated Replaced by `rpc.client.call.duration` with unit `s`. RPC_CLIENT_DURATION = 'rpc.client.duration' # Measures the size of RPC request messages (uncompressed). @@ -68,7 +77,15 @@ module RPC # @deprecated Removed, no replacement at this time. RPC_CLIENT_RESPONSES_PER_RPC = 'rpc.client.responses_per_rpc' - # Measures the duration of inbound RPC. + # Measures the duration of inbound remote procedure calls (RPC). + # + # When this metric is reported alongside an RPC server span, the metric value + # SHOULD be the same as the RPC server span duration. + # + # @note Stability Level: development + RPC_SERVER_CALL_DURATION = 'rpc.server.call.duration' + + # Deprecated, use `rpc.server.call.duration` instead. Note: the unit also changed from `ms` to `s`. # # While streaming RPCs may record this metric as start-of-batch # to end-of-batch, it's hard to interpret in practice. @@ -76,6 +93,7 @@ module RPC # **Streaming**: N/A. # # @note Stability Level: development + # @deprecated Replaced by `rpc.server.call.duration` with unit `s`. RPC_SERVER_DURATION = 'rpc.server.duration' # Measures the size of RPC request messages (uncompressed). diff --git a/semantic_conventions/lib/opentelemetry/semconv/incubating/service/attributes.rb b/semantic_conventions/lib/opentelemetry/semconv/incubating/service/attributes.rb index e0fde6b63..bee1c5c62 100644 --- a/semantic_conventions/lib/opentelemetry/semconv/incubating/service/attributes.rb +++ b/semantic_conventions/lib/opentelemetry/semconv/incubating/service/attributes.rb @@ -72,7 +72,17 @@ module SERVICE # @note Stability Level: development SERVICE_NAMESPACE = 'service.namespace' - # The version string of the service API or implementation. The format is not defined by these conventions. + # Logical name of the service on the other side of the connection. SHOULD be equal to the actual [`service.name`](/docs/resource/README.md#service) resource attribute of the remote service if any. + # + # @note Stability Level: development + SERVICE_PEER_NAME = 'service.peer.name' + + # Logical namespace of the service on the other side of the connection. SHOULD be equal to the actual [`service.namespace`](/docs/resource/README.md#service) resource attribute of the remote service if any. + # + # @note Stability Level: development + SERVICE_PEER_NAMESPACE = 'service.peer.namespace' + + # The version string of the service component. The format is not defined by these conventions. # # @note Stability Level: stable # diff --git a/semantic_conventions/lib/opentelemetry/semconv/incubating/system/attributes.rb b/semantic_conventions/lib/opentelemetry/semconv/incubating/system/attributes.rb index ce72f7c0a..bc86c0e4e 100644 --- a/semantic_conventions/lib/opentelemetry/semconv/incubating/system/attributes.rb +++ b/semantic_conventions/lib/opentelemetry/semconv/incubating/system/attributes.rb @@ -61,6 +61,11 @@ module SYSTEM # @note Stability Level: development SYSTEM_FILESYSTEM_TYPE = 'system.filesystem.type' + # The Linux Slab memory state + # + # @note Stability Level: development + SYSTEM_MEMORY_LINUX_SLAB_STATE = 'system.memory.linux.slab.state' + # The memory state # # @note Stability Level: development diff --git a/semantic_conventions/lib/opentelemetry/semconv/incubating/system/metrics.rb b/semantic_conventions/lib/opentelemetry/semconv/incubating/system/metrics.rb index 398d5531d..d8352f105 100644 --- a/semantic_conventions/lib/opentelemetry/semconv/incubating/system/metrics.rb +++ b/semantic_conventions/lib/opentelemetry/semconv/incubating/system/metrics.rb @@ -113,6 +113,23 @@ module SYSTEM # @note Stability Level: development SYSTEM_FILESYSTEM_UTILIZATION = 'system.filesystem.utilization' + # The number of packets transferred. + # + # @note Stability Level: development + # @deprecated Replaced by `system.memory.linux.available`. + SYSTEM_LINUX_MEMORY_AVAILABLE = 'system.linux.memory.available' + + # The number of packets transferred. + # + # @note Stability Level: development + # @deprecated Replaced by `system.memory.linux.slab.usage`. + SYSTEM_LINUX_MEMORY_SLAB_USAGE = 'system.linux.memory.slab.usage' + + # Total virtual memory available in the system. + # + # @note Stability Level: development + SYSTEM_MEMORY_LIMIT = 'system.memory.limit' + # An estimate of how much memory is available for starting new applications, without causing swapping. # # This is an alternative to `system.memory.usage` metric with `state=free`. @@ -122,21 +139,16 @@ module SYSTEM # See also `MemAvailable` in [/proc/meminfo](https://man7.org/linux/man-pages/man5/proc.5.html). # # @note Stability Level: development - SYSTEM_LINUX_MEMORY_AVAILABLE = 'system.linux.memory.available' + SYSTEM_MEMORY_LINUX_AVAILABLE = 'system.memory.linux.available' # Reports the memory used by the Linux kernel for managing caches of frequently used objects. # - # The sum over the `reclaimable` and `unreclaimable` state values in `linux.memory.slab.usage` SHOULD be equal to the total slab memory available on the system. + # The sum over the `reclaimable` and `unreclaimable` state values in `memory.linux.slab.usage` SHOULD be equal to the total slab memory available on the system. # Note that the total slab memory is not constant and may vary over time. # See also the [Slab allocator](https://blogs.oracle.com/linux/post/understanding-linux-kernel-memory-statistics) and `Slab` in [/proc/meminfo](https://man7.org/linux/man-pages/man5/proc.5.html). # # @note Stability Level: development - SYSTEM_LINUX_MEMORY_SLAB_USAGE = 'system.linux.memory.slab.usage' - - # Total virtual memory available in the system. - # - # @note Stability Level: development - SYSTEM_MEMORY_LIMIT = 'system.memory.limit' + SYSTEM_MEMORY_LINUX_SLAB_USAGE = 'system.memory.linux.slab.usage' # Shared memory used (mostly by tmpfs). # diff --git a/semantic_conventions/lib/opentelemetry/semconv/incubating/thread/attributes.rb b/semantic_conventions/lib/opentelemetry/semconv/incubating/thread/attributes.rb index 7d1d4a960..fa229da4c 100644 --- a/semantic_conventions/lib/opentelemetry/semconv/incubating/thread/attributes.rb +++ b/semantic_conventions/lib/opentelemetry/semconv/incubating/thread/attributes.rb @@ -28,7 +28,7 @@ module THREAD # # Examples of where the value can be extracted from: # - # | Language or platform | Source | + # | Language or platform | Source | # | --- | --- | # | JVM | `Thread.currentThread().threadId()` | # | .NET | `Thread.CurrentThread.ManagedThreadId` | @@ -44,7 +44,7 @@ module THREAD # # Examples of where the value can be extracted from: # - # | Language or platform | Source | + # | Language or platform | Source | # | --- | --- | # | JVM | `Thread.currentThread().getName()` | # | .NET | `Thread.CurrentThread.Name` | diff --git a/semantic_conventions/lib/opentelemetry/semconv/incubating/user_agent/attributes.rb b/semantic_conventions/lib/opentelemetry/semconv/incubating/user_agent/attributes.rb index b77c744cb..00f1660df 100644 --- a/semantic_conventions/lib/opentelemetry/semconv/incubating/user_agent/attributes.rb +++ b/semantic_conventions/lib/opentelemetry/semconv/incubating/user_agent/attributes.rb @@ -26,7 +26,7 @@ module USER_AGENT # Name of the user-agent extracted from original. Usually refers to the browser's name. # - # [Example](https://www.whatsmyua.info) of extracting browser's name from original string. In the case of using a user-agent for non-browser products, such as microservices with multiple names/versions inside the `user_agent.original`, the most significant name SHOULD be selected. In such a scenario it should align with `user_agent.version` + # [Example](https://uaparser.dev/#demo) of extracting browser's name from original string. In the case of using a user-agent for non-browser products, such as microservices with multiple names/versions inside the `user_agent.original`, the most significant name SHOULD be selected. In such a scenario it should align with `user_agent.version` # # @note Stability Level: development USER_AGENT_NAME = 'user_agent.name' @@ -61,7 +61,7 @@ module USER_AGENT # Version of the user-agent extracted from original. Usually refers to the browser's version # - # [Example](https://www.whatsmyua.info) of extracting browser's version from original string. In the case of using a user-agent for non-browser products, such as microservices with multiple names/versions inside the `user_agent.original`, the most significant version SHOULD be selected. In such a scenario it should align with `user_agent.name` + # [Example](https://uaparser.dev/#demo) of extracting browser's version from original string. In the case of using a user-agent for non-browser products, such as microservices with multiple names/versions inside the `user_agent.original`, the most significant version SHOULD be selected. In such a scenario it should align with `user_agent.name` # # @note Stability Level: development USER_AGENT_VERSION = 'user_agent.version' diff --git a/semantic_conventions/lib/opentelemetry/semconv/service/attributes.rb b/semantic_conventions/lib/opentelemetry/semconv/service/attributes.rb index 748ac81b0..a885e1411 100644 --- a/semantic_conventions/lib/opentelemetry/semconv/service/attributes.rb +++ b/semantic_conventions/lib/opentelemetry/semconv/service/attributes.rb @@ -30,7 +30,7 @@ module SERVICE # @note Stability Level: stable SERVICE_NAME = 'service.name' - # The version string of the service API or implementation. The format is not defined by these conventions. + # The version string of the service component. The format is not defined by these conventions. # # @note Stability Level: stable SERVICE_VERSION = 'service.version'