Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion semantic_conventions/Rakefile
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,7 @@ task default: default_tasks
desc 'update semantic conventions'
task generate: %i[update_gem_version generate_semconv generate_require_rollups rubocop_autocorrect]

SPEC_VERSION = '1.37.0'
SPEC_VERSION = '1.39.0'
OTEL_WEAVER_VERSION = 'v0.17.1'
semconv_source_dir = Pathname.new('./tmp/semconvrepo')
semconv_output_dir = Pathname.new('./lib/opentelemetry/semconv')
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,6 @@

module OpenTelemetry
module SemanticConventions
VERSION = '1.37.0'
VERSION = '1.39.0'
end
end
Original file line number Diff line number Diff line change
Expand Up @@ -101,7 +101,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
Expand All @@ -114,7 +114,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.
#
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -59,8 +59,9 @@ module HTTP
# HTTP request method.
#
# HTTP request method value SHOULD be "known" to the instrumentation.
# By default, this convention defines "known" methods as the ones listed in [RFC9110](https://www.rfc-editor.org/rfc/rfc9110.html#name-methods)
# and the PATCH method defined in [RFC5789](https://www.rfc-editor.org/rfc/rfc5789.html).
# By default, this convention defines "known" methods as the ones listed in [RFC9110](https://www.rfc-editor.org/rfc/rfc9110.html#name-methods),
# the PATCH method defined in [RFC5789](https://www.rfc-editor.org/rfc/rfc5789.html)
# and the QUERY method defined in [httpbis-safe-method-w-body](https://datatracker.ietf.org/doc/draft-ietf-httpbis-safe-method-w-body/?include_text=1).
#
# If the HTTP request method is not known to instrumentation, it MUST set the `http.request.method` attribute to `_OTHER`.
#
Expand Down Expand Up @@ -142,16 +143,24 @@ module HTTP
# 200
HTTP_RESPONSE_STATUS_CODE = 'http.response.status_code'

# The matched route, that is, the path template in the format used by the respective server framework.
# The matched route template for the request. This MUST be low-cardinality and include all static path segments, with dynamic path segments represented with placeholders.
#
# MUST NOT be populated when this is not supported by the HTTP server framework as the route attribute should have low-cardinality and the URI path can NOT substitute it.
# SHOULD include the [application root](/docs/http/http-spans.md#http-server-definitions) if there is one.
#
# A static path segment is a part of the route template with a fixed, low-cardinality value. This includes literal strings like `/users/` and placeholders that
# are constrained to a finite, predefined set of values, e.g. `{controller}` or `{action}`.
#
# A dynamic path segment is a placeholder for a value that can have high cardinality and is not constrained to a predefined list like static path segments.
#
# Instrumentations SHOULD use routing information provided by the corresponding web framework. They SHOULD pick the most precise source of routing information and MAY
# support custom route formatting. Instrumentations SHOULD document the format and the API used to obtain the route string.
#
# @note Stability Level: stable
#
# @example Sample Values
# /users/:userID?
# {controller}/{action}/{id?}
# my-controller/my-action/{id?}
HTTP_ROUTE = 'http.route'

# @!endgroup
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -109,6 +109,33 @@ module APP
# 99
APP_SCREEN_COORDINATE_Y = 'app.screen.coordinate.y'

# An identifier that uniquely differentiates this screen from other screens in the same application.
#
# A screen represents only the part of the device display drawn by the app. It typically contains multiple widgets or UI components and is larger in scope than individual widgets. Multiple screens can coexist on the same display simultaneously (e.g., split view on tablets).
#
# @note Stability Level: development
#
# @example Sample Values
# f9bc787d-ff05-48ad-90e1-fca1d46130b3
# com.example.app.MainActivity
# com.example.shop.ProductDetailFragment
# MyApp.ProfileView
# MyApp.ProfileViewController
APP_SCREEN_ID = 'app.screen.id'

# The name of an application screen.
#
# A screen represents only the part of the device display drawn by the app. It typically contains multiple widgets or UI components and is larger in scope than individual widgets. Multiple screens can coexist on the same display simultaneously (e.g., split view on tablets).
#
# @note Stability Level: development
#
# @example Sample Values
# MainActivity
# ProductDetailFragment
# ProfileView
# ProfileViewController
APP_SCREEN_NAME = 'app.screen.name'

# An identifier that uniquely differentiates this widget from other widgets in the same application.
#
# A widget is an application component, typically an on-screen visual GUI element.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,7 @@ module AZURE

# List of regions contacted during operation in the order that they were contacted. If there is more than one region listed, it indicates that the operation was performed on multiple regions i.e. cross-regional call.
#
# Region name matches the format of `displayName` in [Azure Location API](https://learn.microsoft.com/rest/api/subscription/subscriptions/list-locations?view=rest-subscription-2021-10-01&tabs=HTTP#location)
# Region name matches the format of `displayName` in [Azure Location API](https://learn.microsoft.com/rest/api/resources/subscriptions/list-locations)
#
# @note Stability Level: development
#
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -85,15 +85,15 @@ 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
#
# @example Sample Values
# a3bf90e006b2
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/engine/api/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.
#
Expand All @@ -105,26 +105,26 @@ module CONTAINER

# Name of the image the container was built on.
#
# @note Stability Level: development
# @note Stability Level: alpha
#
# @example Sample Values
# gcr.io/opentelemetry/operator
CONTAINER_IMAGE_NAME = 'container.image.name'

# Repo digests of the container image as provided by the container runtime.
#
# [Docker](https://docs.docker.com/engine/api/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
#
# @example Sample Values
# example@sha256:afcc7f1ac1b49db317a7196c902e61c6c3c4607d63599ee1a82d702d249a0ccb
# internal.registry.example.com:5000/example@sha256:b69959407d21e8a062e0416bf13405bb2b71ed7a84dde4158ebafacfa06f5578
CONTAINER_IMAGE_REPO_DIGESTS = 'container.image.repo_digests'

# Container image tags. An example can be found in [Docker Image Inspect](https://docs.docker.com/engine/api/v1.43/#tag/Image/operation/ImageInspect). Should be only the `<tag>` section of the full name for example from `registry.example.com/my-org/my-image:<tag>`.
# 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 `<tag>` section of the full name for example from `registry.example.com/my-org/my-image:<tag>`.
#
# @note Stability Level: development
# @note Stability Level: alpha
#
# @example Sample Values
# v1.27.1
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -77,13 +77,46 @@
# @note Stability Level: development
CONTAINER_FILESYSTEM_USAGE = 'container.filesystem.usage'

# Container memory available.
#
# Available memory for use. This is defined as the memory limit - workingSetBytes. If memory limit is undefined, the available bytes is omitted.
# In general, this metric can be derived from [cadvisor](https://github.com/google/cadvisor/blob/v0.53.0/docs/storage/prometheus.md#prometheus-container-metrics) and by subtracting the `container_memory_working_set_bytes` metric from the `container_spec_memory_limit_bytes` metric.

Check warning on line 83 in semantic_conventions/lib/opentelemetry/semconv/incubating/container/metrics.rb

View workflow job for this annotation

GitHub Actions / Spelling Check

Unknown word (cadvisor) Suggestions: (cadis, caddis, caviar, caddish, caviler)
# In K8s, this metric is derived from the [MemoryStats.AvailableBytes](https://pkg.go.dev/k8s.io/kubelet@v0.34.0/pkg/apis/stats/v1alpha1#MemoryStats) field of the [PodStats.Memory](https://pkg.go.dev/k8s.io/kubelet@v0.34.0/pkg/apis/stats/v1alpha1#PodStats) of the Kubelet's stats API.
#
# @note Stability Level: development
CONTAINER_MEMORY_AVAILABLE = 'container.memory.available'

# Container memory paging faults.
#
# In general, this metric can be derived from [cadvisor](https://github.com/google/cadvisor/blob/v0.53.0/docs/storage/prometheus.md#prometheus-container-metrics) and specifically the `container_memory_failures_total{failure_type=pgfault, scope=container}` and `container_memory_failures_total{failure_type=pgmajfault, scope=container}`metric.

Check warning on line 91 in semantic_conventions/lib/opentelemetry/semconv/incubating/container/metrics.rb

View workflow job for this annotation

GitHub Actions / Spelling Check

Unknown word (cadvisor) Suggestions: (cadis, caddis, caviar, caddish, caviler)
# In K8s, this metric is derived from the [MemoryStats.PageFaults](https://pkg.go.dev/k8s.io/kubelet@v0.34.0/pkg/apis/stats/v1alpha1#MemoryStats) and [MemoryStats.MajorPageFaults](https://pkg.go.dev/k8s.io/kubelet@v0.34.0/pkg/apis/stats/v1alpha1#MemoryStats) field of the [PodStats.Memory](https://pkg.go.dev/k8s.io/kubelet@v0.34.0/pkg/apis/stats/v1alpha1#PodStats) of the Kubelet's stats API.
#
# @note Stability Level: development
CONTAINER_MEMORY_PAGING_FAULTS = 'container.memory.paging.faults'

# Container memory RSS.
#
# In general, this metric can be derived from [cadvisor](https://github.com/google/cadvisor/blob/v0.53.0/docs/storage/prometheus.md#prometheus-container-metrics) and specifically the `container_memory_rss` metric.

Check warning on line 99 in semantic_conventions/lib/opentelemetry/semconv/incubating/container/metrics.rb

View workflow job for this annotation

GitHub Actions / Spelling Check

Unknown word (cadvisor) Suggestions: (cadis, caddis, caviar, caddish, caviler)
# In K8s, this metric is derived from the [MemoryStats.RSSBytes](https://pkg.go.dev/k8s.io/kubelet@v0.34.0/pkg/apis/stats/v1alpha1#MemoryStats) field of the [PodStats.Memory](https://pkg.go.dev/k8s.io/kubelet@v0.34.0/pkg/apis/stats/v1alpha1#PodStats) of the Kubelet's stats API.
#
# @note Stability Level: development
CONTAINER_MEMORY_RSS = 'container.memory.rss'

# Memory usage of the container.
#
# Memory usage of the container.
#
# @note Stability Level: development
CONTAINER_MEMORY_USAGE = 'container.memory.usage'

# Container memory working set.
#
# In general, this metric can be derived from [cadvisor](https://github.com/google/cadvisor/blob/v0.53.0/docs/storage/prometheus.md#prometheus-container-metrics) and specifically the `container_memory_working_set_bytes` metric.

Check warning on line 114 in semantic_conventions/lib/opentelemetry/semconv/incubating/container/metrics.rb

View workflow job for this annotation

GitHub Actions / Spelling Check

Unknown word (cadvisor) Suggestions: (cadis, caddis, caviar, caddish, caviler)
# In K8s, this metric is derived from the [MemoryStats.WorkingSetBytes](https://pkg.go.dev/k8s.io/kubelet@v0.34.0/pkg/apis/stats/v1alpha1#MemoryStats) field of the [PodStats.Memory](https://pkg.go.dev/k8s.io/kubelet@v0.34.0/pkg/apis/stats/v1alpha1#PodStats) of the Kubelet's stats API.
#
# @note Stability Level: development
CONTAINER_MEMORY_WORKING_SET = 'container.memory.working_set'

# Network bytes for the container.
#
# The number of bytes sent/received on all network interfaces by the container.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -238,7 +238,7 @@ module DB
# 200
# 201
#
# @deprecated {"note": "Replaced by `db.response.status_code`.", "reason": "renamed", "renamed_to": "db.response.status_code"}
# @deprecated {"note": "Use `db.response.status_code` instead.", "reason": "uncategorized"}
DB_COSMOSDB_STATUS_CODE = 'db.cosmosdb.status_code'

# Deprecated, use `azure.cosmosdb.response.sub_status_code` instead.
Expand Down Expand Up @@ -447,14 +447,17 @@ module DB
# `db.query.parameter.<key>` SHOULD match
# up with the parameterized placeholders present in `db.query.text`.
#
# It is RECOMMENDED to capture the value as provided by the application
# without attempting to do any case normalization.
#
# `db.query.parameter.<key>` SHOULD NOT be captured on batch operations.
#
# Examples:
#
# - For a query `SELECT * FROM users where username = %s` with the parameter `"jdoe"`,
# the attribute `db.query.parameter.0` SHOULD be set to `"jdoe"`.
# - For a query `"SELECT * FROM users WHERE username = %(username)s;` with parameter
# `username = "jdoe"`, the attribute `db.query.parameter.username` SHOULD be set to `"jdoe"`.
# - For a query `"SELECT * FROM users WHERE username = %(userName)s;` with parameter
# `userName = "jdoe"`, the attribute `db.query.parameter.userName` SHOULD be set to `"jdoe"`.
#
# @note Stability Level: development
#
Expand All @@ -472,7 +475,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
Expand All @@ -488,7 +491,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.
#
Expand All @@ -511,7 +514,7 @@ module DB
# 1
# 15
#
# @deprecated {"note": "Replaced by `db.namespace`.", "reason": "renamed", "renamed_to": "db.namespace"}
# @deprecated {"note": "Uncategorized.", "reason": "uncategorized"}
DB_REDIS_DATABASE_INDEX = 'db.redis.database_index'

# Number of rows returned by the operation.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ module DNS

# The name being queried.
#
# If the name field contains non-printable characters (below 32 or above 126), those characters should be represented as escaped base 10 integers (\DDD). Back slashes and quotes should be escaped. Tabs, carriage returns, and line feeds should be converted to \t, \r, and \n respectively.
# The name represents the queried domain name as it appears in the DNS query without any additional normalization.
#
# @note Stability Level: development
#
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -57,7 +57,7 @@ module ENDUSER
# @example Sample Values
# admin
#
# @deprecated {"note": "Replaced by `user.roles`.", "reason": "renamed", "renamed_to": "user.roles"}
# @deprecated {"note": "Use `user.roles` instead.", "reason": "uncategorized"}
ENDUSER_ROLE = 'enduser.role'

# Deprecated, no replacement at this time.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,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
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ module EVENT
# browser.mouse.click
# device.app.lifecycle
#
# @deprecated {"note": "Replaced by EventName top-level field on the LogRecord.\n", "reason": "uncategorized"}
# @deprecated {"note": "The value of this attribute MUST now be set as the value of the EventName field on the LogRecord to indicate that the LogRecord represents an Event.\n", "reason": "uncategorized"}
EVENT_NAME = 'event.name'

# @!endgroup
Expand Down
Loading
Loading