diff --git a/docs/azure/events.md b/docs/azure/events.md index 4a32413085..43cc4c8998 100644 --- a/docs/azure/events.md +++ b/docs/azure/events.md @@ -7,7 +7,7 @@ Resource Log events. ## Azure Resource Log - + diff --git a/docs/cloud-providers/aws-sdk.md b/docs/cloud-providers/aws-sdk.md index 33d6e7bc03..84b936b71d 100644 --- a/docs/cloud-providers/aws-sdk.md +++ b/docs/cloud-providers/aws-sdk.md @@ -24,7 +24,7 @@ The span name MUST be of the format `Service.Operation` as per the AWS HTTP API, with the naming guidelines for RPC client spans. - + diff --git a/docs/database/cassandra.md b/docs/database/cassandra.md index ccfa8ad091..b1ac94a8a8 100644 --- a/docs/database/cassandra.md +++ b/docs/database/cassandra.md @@ -12,7 +12,7 @@ The Semantic Conventions for [Cassandra](https://cassandra.apache.org/) extend a ## Attributes - + diff --git a/docs/database/cosmosdb.md b/docs/database/cosmosdb.md index 3b75b969ae..65e8ccdaec 100644 --- a/docs/database/cosmosdb.md +++ b/docs/database/cosmosdb.md @@ -30,7 +30,7 @@ extend and override the [Database Semantic Conventions](database-spans.md). Cosmos DB instrumentation includes call-level (public API) surface spans and network spans. Depending on the connection mode (Gateway or Direct), network-level spans may also be created. - + diff --git a/docs/database/couchdb.md b/docs/database/couchdb.md index 8e38024767..2d5ba06070 100644 --- a/docs/database/couchdb.md +++ b/docs/database/couchdb.md @@ -12,7 +12,7 @@ The Semantic Conventions for [CouchDB](https://couchdb.apache.org/) extend and o ## Attributes - + diff --git a/docs/database/database-spans.md b/docs/database/database-spans.md index 06c08b0597..88cd2ea50b 100644 --- a/docs/database/database-spans.md +++ b/docs/database/database-spans.md @@ -89,7 +89,7 @@ For example, for an operation describing SQL query on an anonymous table like `S These attributes will usually be the same for all operations performed over the same database connection. - + diff --git a/docs/database/dynamodb.md b/docs/database/dynamodb.md index 9955a2032b..5c55d6ce8c 100644 --- a/docs/database/dynamodb.md +++ b/docs/database/dynamodb.md @@ -13,7 +13,7 @@ The Semantic Conventions for [AWS DynamoDB](https://aws.amazon.com/dynamodb/) ex ## DynamoDB.BatchGetItem - + @@ -50,7 +50,7 @@ The Semantic Conventions for [AWS DynamoDB](https://aws.amazon.com/dynamodb/) ex ## DynamoDB.BatchWriteItem - + @@ -88,7 +88,7 @@ The Semantic Conventions for [AWS DynamoDB](https://aws.amazon.com/dynamodb/) ex ## DynamoDB.CreateTable - + @@ -130,7 +130,7 @@ The Semantic Conventions for [AWS DynamoDB](https://aws.amazon.com/dynamodb/) ex ## DynamoDB.DeleteItem - + @@ -168,7 +168,7 @@ The Semantic Conventions for [AWS DynamoDB](https://aws.amazon.com/dynamodb/) ex ## DynamoDB.DeleteTable - + @@ -204,7 +204,7 @@ The Semantic Conventions for [AWS DynamoDB](https://aws.amazon.com/dynamodb/) ex ## DynamoDB.DescribeTable - + @@ -240,7 +240,7 @@ The Semantic Conventions for [AWS DynamoDB](https://aws.amazon.com/dynamodb/) ex ## DynamoDB.GetItem - + @@ -279,7 +279,7 @@ The Semantic Conventions for [AWS DynamoDB](https://aws.amazon.com/dynamodb/) ex ## DynamoDB.ListTables - + @@ -317,7 +317,7 @@ The Semantic Conventions for [AWS DynamoDB](https://aws.amazon.com/dynamodb/) ex ## DynamoDB.PutItem - + @@ -355,7 +355,7 @@ The Semantic Conventions for [AWS DynamoDB](https://aws.amazon.com/dynamodb/) ex ## DynamoDB.Query - + @@ -399,7 +399,7 @@ The Semantic Conventions for [AWS DynamoDB](https://aws.amazon.com/dynamodb/) ex ## DynamoDB.Scan - + @@ -446,7 +446,7 @@ The Semantic Conventions for [AWS DynamoDB](https://aws.amazon.com/dynamodb/) ex ## DynamoDB.UpdateItem - + @@ -484,7 +484,7 @@ The Semantic Conventions for [AWS DynamoDB](https://aws.amazon.com/dynamodb/) ex ## DynamoDB.UpdateTable - + diff --git a/docs/database/elasticsearch.md b/docs/database/elasticsearch.md index a536172f07..ea8f7c0bb7 100644 --- a/docs/database/elasticsearch.md +++ b/docs/database/elasticsearch.md @@ -16,7 +16,7 @@ The **span name** follows the [general database span name guidelines](database-s ## Attributes - + diff --git a/docs/database/hbase.md b/docs/database/hbase.md index e7a9f5921a..62bc5a78a5 100644 --- a/docs/database/hbase.md +++ b/docs/database/hbase.md @@ -12,7 +12,7 @@ The Semantic Conventions for [HBase](https://hbase.apache.org/) extend and overr ## Attributes - + diff --git a/docs/database/mariadb.md b/docs/database/mariadb.md index 99aced8daf..5df5167326 100644 --- a/docs/database/mariadb.md +++ b/docs/database/mariadb.md @@ -12,7 +12,7 @@ The Semantic Conventions for *MariaDB* extend and override the [Database Semanti ## Attributes - + diff --git a/docs/database/mongodb.md b/docs/database/mongodb.md index 05939fca5b..2d4c9a6f85 100644 --- a/docs/database/mongodb.md +++ b/docs/database/mongodb.md @@ -12,7 +12,7 @@ The Semantic Conventions for [MongoDB](https://www.mongodb.com/) extend and over ## Attributes - + diff --git a/docs/database/mssql.md b/docs/database/mssql.md index 35519e5fd6..a2b2f8a313 100644 --- a/docs/database/mssql.md +++ b/docs/database/mssql.md @@ -12,7 +12,7 @@ The Semantic Conventions for the *Microsoft SQL Server* extend and override the ## Attributes - + diff --git a/docs/database/mysql.md b/docs/database/mysql.md index 65e273688a..63f2a65692 100644 --- a/docs/database/mysql.md +++ b/docs/database/mysql.md @@ -12,7 +12,7 @@ The Semantic Conventions for *MySQL* extend and override the [Database Semantic ## Attributes - + diff --git a/docs/database/postgresql.md b/docs/database/postgresql.md index 23950fbe41..b4117a9616 100644 --- a/docs/database/postgresql.md +++ b/docs/database/postgresql.md @@ -12,7 +12,7 @@ The Semantic Conventions for *PostgreSQL* extend and override the [Database Sema ## Attributes - + diff --git a/docs/database/redis.md b/docs/database/redis.md index cc09b36948..ac849ee48c 100644 --- a/docs/database/redis.md +++ b/docs/database/redis.md @@ -12,7 +12,7 @@ The Semantic Conventions for [Redis](https://redis.com/) extend and override the ## Attributes - + diff --git a/docs/database/sql.md b/docs/database/sql.md index 66773c90bd..ff4f78af70 100644 --- a/docs/database/sql.md +++ b/docs/database/sql.md @@ -36,7 +36,7 @@ Instrumentations applied to generic SQL drivers SHOULD adhere to SQL semantic co ## Attributes - + diff --git a/docs/exceptions/exceptions-spans.md b/docs/exceptions/exceptions-spans.md index df00c1b87a..03ab3062ac 100644 --- a/docs/exceptions/exceptions-spans.md +++ b/docs/exceptions/exceptions-spans.md @@ -40,7 +40,7 @@ try { ## Exception event - + diff --git a/docs/faas/aws-lambda.md b/docs/faas/aws-lambda.md index e408f2cb56..c58c761a70 100644 --- a/docs/faas/aws-lambda.md +++ b/docs/faas/aws-lambda.md @@ -44,7 +44,7 @@ The following attributes SHOULD be set: Also consider setting other attributes of the [`faas` resource][faasres] and [trace][faas] conventions and the [cloud resource conventions][cloud]. The following AWS Lambda-specific attribute MAY also be set: - + diff --git a/docs/faas/faas-spans.md b/docs/faas/faas-spans.md index 648a9f176b..764eadaa81 100644 --- a/docs/faas/faas-spans.md +++ b/docs/faas/faas-spans.md @@ -38,7 +38,7 @@ Span `name` should be set to the function name being executed. Depending on the If Spans following this convention are produced, a Resource of type `faas` MUST exist following the [Resource semantic convention](../resource/faas.md). - + @@ -129,7 +129,7 @@ For incoming FaaS spans, the span kind SHOULD be `SERVER`. ### Incoming FaaS Span attributes - + @@ -188,7 +188,7 @@ The values reported by the client for the attributes listed below SHOULD be equa the corresponding [FaaS resource attributes][] and [Cloud resource attributes][], which the invoked FaaS instance reports about itself, if it's instrumented. - + @@ -236,7 +236,7 @@ This section describes how to handle the span creation and additional attributes A datasource function is triggered as a response to some data source operation such as a database or filesystem read/write. FaaS instrumentations that produce `faas` spans with trigger `datasource`, SHOULD use the following set of attributes. - + @@ -279,7 +279,7 @@ This way, it is possible to correlate each individual message with its invocatio A function is scheduled to be executed regularly. The following additional attributes are recommended. - + diff --git a/docs/feature-flags/feature-flags-logs.md b/docs/feature-flags/feature-flags-logs.md index 3ca0dff072..32b2519220 100644 --- a/docs/feature-flags/feature-flags-logs.md +++ b/docs/feature-flags/feature-flags-logs.md @@ -37,7 +37,7 @@ context. The table below indicates which attributes should be added to the [LogRecord](https://github.com/open-telemetry/opentelemetry-specification/tree/v1.37.0/specification/logs/data-model.md#log-and-event-record-definition) and their types. - + @@ -48,11 +48,11 @@ The table below indicates which attributes should be added to the The event name MUST be `feature_flag`. -This event describes feature flag evaluation representation on a Log Record. +This event describes feature flag evaluation. | Attribute | Type | Description | Examples | [Requirement Level](https://opentelemetry.io/docs/specs/semconv/general/attribute-requirement-level/) | Stability | |---|---|---|---|---|---| -| [`feature_flag.key`](/docs/attributes-registry/feature-flag.md) | string | The unique identifier of the feature flag. | `logo-color` | `Recommended` | ![Experimental](https://img.shields.io/badge/-experimental-blue) | +| [`feature_flag.key`](/docs/attributes-registry/feature-flag.md) | string | The unique identifier of the feature flag. | `logo-color` | `Required` | ![Experimental](https://img.shields.io/badge/-experimental-blue) | | [`feature_flag.provider_name`](/docs/attributes-registry/feature-flag.md) | string | The name of the service provider that performs the flag evaluation. | `Flag Manager` | `Recommended` | ![Experimental](https://img.shields.io/badge/-experimental-blue) | | [`feature_flag.variant`](/docs/attributes-registry/feature-flag.md) | string | SHOULD be a semantic identifier for a value. If one is unavailable, a stringified version of the value can be used. [1] | `red`; `true`; `on` | `Recommended` | ![Experimental](https://img.shields.io/badge/-experimental-blue) | diff --git a/docs/feature-flags/feature-flags-spans.md b/docs/feature-flags/feature-flags-spans.md index 8ca86c38b8..de0ded12fb 100644 --- a/docs/feature-flags/feature-flags-spans.md +++ b/docs/feature-flags/feature-flags-spans.md @@ -44,7 +44,7 @@ A flag evaluation SHOULD be recorded as an Event on the span during which it occ ### Evaluation event - + diff --git a/docs/gen-ai/gen-ai-spans.md b/docs/gen-ai/gen-ai-spans.md index 34c09191e1..4bea84e4d5 100644 --- a/docs/gen-ai/gen-ai-spans.md +++ b/docs/gen-ai/gen-ai-spans.md @@ -34,7 +34,7 @@ Semantic conventions for individual GenAI systems and frameworks MAY specify dif These attributes track input data and metadata for a request to an GenAI model. Each attribute represents a concept that is common to most Generative AI clients. - + diff --git a/docs/gen-ai/openai.md b/docs/gen-ai/openai.md index b72d4912d2..7d77082b70 100644 --- a/docs/gen-ai/openai.md +++ b/docs/gen-ai/openai.md @@ -27,7 +27,7 @@ for [Gen AI Spans](gen-ai-spans.md) and [Gen AI Metrics](gen-ai-metrics.md). These attributes track input data and metadata for a request to an OpenAI model. The attributes include general Generative AI attributes and ones specific the OpenAI. - + diff --git a/docs/graphql/graphql-spans.md b/docs/graphql/graphql-spans.md index d4ab893567..6eee813b07 100644 --- a/docs/graphql/graphql-spans.md +++ b/docs/graphql/graphql-spans.md @@ -22,7 +22,7 @@ the span SHOULD be named `GraphQL Operation`. > span name following `{graphql.operation.type} {graphql.operation.name}` format > when `graphql.operation.name` is available. - + diff --git a/docs/http/http-spans.md b/docs/http/http-spans.md index 2073e6891f..9ee978c94f 100644 --- a/docs/http/http-spans.md +++ b/docs/http/http-spans.md @@ -131,7 +131,7 @@ This span type represents an outbound HTTP request. There are two ways this can For an HTTP client span, `SpanKind` MUST be `CLIENT`. - + @@ -369,7 +369,7 @@ This span type represents an inbound HTTP request. For an HTTP server span, `SpanKind` MUST be `SERVER`. - + diff --git a/docs/messaging/messaging-spans.md b/docs/messaging/messaging-spans.md index 489f42ef8a..cb45f8b28c 100644 --- a/docs/messaging/messaging-spans.md +++ b/docs/messaging/messaging-spans.md @@ -356,7 +356,7 @@ Messaging attributes are organized into the following namespaces: Messaging system-specific attributes MUST be defined in the corresponding `messaging.{system}` namespace. - + diff --git a/docs/mobile/events.md b/docs/mobile/events.md index d9aa669fce..df2e4bb7e2 100644 --- a/docs/mobile/events.md +++ b/docs/mobile/events.md @@ -20,7 +20,7 @@ application lifecycle. ### Device app lifecycle event - + diff --git a/docs/object-stores/s3.md b/docs/object-stores/s3.md index f5a6bc714f..cb5a1ec093 100644 --- a/docs/object-stores/s3.md +++ b/docs/object-stores/s3.md @@ -11,7 +11,7 @@ The Semantic Conventions for AWS S3 extend the general that describe common AWS SDK attributes in addition to the Semantic Conventions described on this page. - + diff --git a/docs/resource/README.md b/docs/resource/README.md index dcf0894001..ec6365d9e5 100644 --- a/docs/resource/README.md +++ b/docs/resource/README.md @@ -72,7 +72,7 @@ as specified in the [Resource SDK specification](https://github.com/open-telemet ## Service - + @@ -145,7 +145,7 @@ service.name = Shop.shoppingcart ## Telemetry SDK - + @@ -196,7 +196,7 @@ All custom identifiers SHOULD be stable across different versions of an implemen ## Telemetry Distro - + diff --git a/docs/resource/android.md b/docs/resource/android.md index 9cd4eb0be7..566c707200 100644 --- a/docs/resource/android.md +++ b/docs/resource/android.md @@ -1,6 +1,6 @@ # Android - + diff --git a/docs/resource/browser.md b/docs/resource/browser.md index 4264df66e3..02a356a42e 100644 --- a/docs/resource/browser.md +++ b/docs/resource/browser.md @@ -1,6 +1,6 @@ # Browser - + diff --git a/docs/resource/cloud-provider/aws/ecs.md b/docs/resource/cloud-provider/aws/ecs.md index a926f64352..aacafb958f 100644 --- a/docs/resource/cloud-provider/aws/ecs.md +++ b/docs/resource/cloud-provider/aws/ecs.md @@ -1,6 +1,6 @@ # AWS ECS - + diff --git a/docs/resource/cloud-provider/aws/eks.md b/docs/resource/cloud-provider/aws/eks.md index 6813471103..4511b7e4b3 100644 --- a/docs/resource/cloud-provider/aws/eks.md +++ b/docs/resource/cloud-provider/aws/eks.md @@ -1,6 +1,6 @@ # AWS EKS - + diff --git a/docs/resource/cloud-provider/aws/logs.md b/docs/resource/cloud-provider/aws/logs.md index a3322e49b4..2011ff2d8c 100644 --- a/docs/resource/cloud-provider/aws/logs.md +++ b/docs/resource/cloud-provider/aws/logs.md @@ -1,6 +1,6 @@ # AWS Logs - + diff --git a/docs/resource/cloud-provider/gcp/cloud-run.md b/docs/resource/cloud-provider/gcp/cloud-run.md index fd3529490e..3d85acf964 100644 --- a/docs/resource/cloud-provider/gcp/cloud-run.md +++ b/docs/resource/cloud-provider/gcp/cloud-run.md @@ -4,7 +4,7 @@ These conventions are recommended for resources running on Cloud Run. - + diff --git a/docs/resource/cloud-provider/gcp/gce.md b/docs/resource/cloud-provider/gcp/gce.md index e54735f40a..0175a1357d 100644 --- a/docs/resource/cloud-provider/gcp/gce.md +++ b/docs/resource/cloud-provider/gcp/gce.md @@ -1,6 +1,6 @@ # Google Compute Engine - + diff --git a/docs/resource/cloud-provider/heroku.md b/docs/resource/cloud-provider/heroku.md index f72c344133..aab33c5549 100644 --- a/docs/resource/cloud-provider/heroku.md +++ b/docs/resource/cloud-provider/heroku.md @@ -1,12 +1,6 @@ # Heroku -**Status**: [Experimental][DocumentStatus] - -**type:** `heroku` - -**Description:** [Heroku dyno metadata] - - + @@ -18,7 +12,7 @@ **type:** `heroku` -**Description:** Heroku dyno metadata +**Description:** [Heroku dyno metadata](https://devcenter.heroku.com/articles/dyno-metadata) | Attribute | Type | Description | Examples | [Requirement Level](https://opentelemetry.io/docs/specs/semconv/general/attribute-requirement-level/) | Stability | |---|---|---|---|---|---| @@ -43,7 +37,3 @@ | `HEROKU_SLUG_COMMIT` | `heroku.release.commit` | Additionally, [the `cloud.provider` resource attribute MUST be set to `heroku`](../cloud.md). - -[Heroku dyno metadata]: https://devcenter.heroku.com/articles/dyno-metadata - -[DocumentStatus]: https://opentelemetry.io/docs/specs/otel/document-status diff --git a/docs/resource/cloud.md b/docs/resource/cloud.md index 0749d14a85..13eeaec65f 100644 --- a/docs/resource/cloud.md +++ b/docs/resource/cloud.md @@ -1,6 +1,6 @@ # Cloud - + diff --git a/docs/resource/cloudfoundry.md b/docs/resource/cloudfoundry.md index c13ec457aa..c789076aa2 100644 --- a/docs/resource/cloudfoundry.md +++ b/docs/resource/cloudfoundry.md @@ -22,7 +22,7 @@ They align with the Bosh deployment tool of CloudFoundry. ## Organization - + @@ -56,7 +56,7 @@ reported by `cf orgs`. ## Space - + @@ -90,7 +90,7 @@ reported by `cf spaces`. ## Application - + @@ -124,7 +124,7 @@ as reported by `cf apps`. ## Process - + @@ -159,7 +159,7 @@ tasks or side-cars with different process types. ## Cloud Foundry System Component - + diff --git a/docs/resource/container.md b/docs/resource/container.md index db7158f608..89ffe0b9b4 100644 --- a/docs/resource/container.md +++ b/docs/resource/container.md @@ -1,6 +1,6 @@ # Container - + diff --git a/docs/resource/deployment-environment.md b/docs/resource/deployment-environment.md index 2bb9e07e73..8499e2cf08 100644 --- a/docs/resource/deployment-environment.md +++ b/docs/resource/deployment-environment.md @@ -1,6 +1,6 @@ # Deployment - + diff --git a/docs/resource/device.md b/docs/resource/device.md index b8e4f6cb6c..ae60eb783c 100644 --- a/docs/resource/device.md +++ b/docs/resource/device.md @@ -1,6 +1,6 @@ # Device - + diff --git a/docs/resource/faas.md b/docs/resource/faas.md index accb79298d..2f8ecd5711 100644 --- a/docs/resource/faas.md +++ b/docs/resource/faas.md @@ -7,7 +7,7 @@ See also: ## FaaS resource attributes - + diff --git a/docs/resource/host.md b/docs/resource/host.md index 073a167198..fe08de147b 100644 --- a/docs/resource/host.md +++ b/docs/resource/host.md @@ -3,7 +3,7 @@ The `host.*` namespace SHOULD be exclusively used to capture resource attributes. To report host metrics, the `system.*` namespace SHOULD be used. - + @@ -79,7 +79,7 @@ privileged lookup of `host.id` is required, the value should be injected via the **type:** `host.cpu` - + diff --git a/docs/resource/k8s.md b/docs/resource/k8s.md index efbd40327f..64d01eb13a 100644 --- a/docs/resource/k8s.md +++ b/docs/resource/k8s.md @@ -17,7 +17,7 @@ Kubernetes object, but "name" is usually more user friendly so can be also set. ## Cluster - + @@ -66,7 +66,7 @@ conflict. ## Node - + @@ -95,7 +95,7 @@ conflict. Namespaces provide a scope for names. Names of objects need to be unique within a namespace, but not across namespaces. - + @@ -123,7 +123,7 @@ a namespace, but not across namespaces. The smallest and simplest Kubernetes object. A Pod represents a set of running containers on your cluster. - + @@ -158,7 +158,7 @@ from the name of the running container. Note: This type is different from [container](./container.md), which corresponds to a running container. - + @@ -185,7 +185,7 @@ to a running container. ## ReplicaSet - + @@ -215,7 +215,7 @@ An API object that manages a replicated application, typically by running Pods with no local state. Each replica is represented by a Pod, and the Pods are distributed among the nodes of a cluster. - + @@ -244,7 +244,7 @@ distributed among the nodes of a cluster. Manages the deployment and scaling of a set of Pods, and provides guarantees about the ordering and uniqueness of these Pods. - + @@ -272,7 +272,7 @@ about the ordering and uniqueness of these Pods. A DaemonSet ensures that all (or some) Nodes run a copy of a Pod. - + @@ -301,7 +301,7 @@ A DaemonSet ensures that all (or some) Nodes run a copy of a Pod. A Job creates one or more Pods and ensures that a specified number of them successfully terminate. - + @@ -329,7 +329,7 @@ successfully terminate. A CronJob creates Jobs on a repeating schedule. - + diff --git a/docs/resource/os.md b/docs/resource/os.md index 4ea20d3051..6a5c2c16c0 100644 --- a/docs/resource/os.md +++ b/docs/resource/os.md @@ -2,7 +2,7 @@ In case of virtualized environments, this is the operating system as it is observed by the process, i.e., the virtualized guest rather than the underlying host. - + diff --git a/docs/resource/process.md b/docs/resource/process.md index 8e48ae165c..97bd2e2e64 100644 --- a/docs/resource/process.md +++ b/docs/resource/process.md @@ -21,7 +21,7 @@ ## Process - + @@ -77,7 +77,7 @@ On Windows and other systems where the native format of process commands is a si ## Process runtimes - + diff --git a/docs/resource/webengine.md b/docs/resource/webengine.md index 7c8e7d4ed3..922fcd71fe 100644 --- a/docs/resource/webengine.md +++ b/docs/resource/webengine.md @@ -1,6 +1,6 @@ # Webengine - + diff --git a/docs/rpc/connect-rpc.md b/docs/rpc/connect-rpc.md index 5d85046ab7..062cc07fd7 100644 --- a/docs/rpc/connect-rpc.md +++ b/docs/rpc/connect-rpc.md @@ -16,7 +16,7 @@ described on this page. Below is a table of attributes that SHOULD be included on client and server Connect RPC measurements. - + diff --git a/docs/rpc/grpc.md b/docs/rpc/grpc.md index a21cfdb832..f5e4a92a0c 100644 --- a/docs/rpc/grpc.md +++ b/docs/rpc/grpc.md @@ -16,7 +16,7 @@ described on this page. Below is a table of attributes that SHOULD be included on client and server gRPC measurements. - + diff --git a/docs/rpc/json-rpc.md b/docs/rpc/json-rpc.md index d242d9b8ec..41e1458fb4 100644 --- a/docs/rpc/json-rpc.md +++ b/docs/rpc/json-rpc.md @@ -14,7 +14,7 @@ described on this page. `rpc.system` MUST be set to `"jsonrpc"`. - + diff --git a/docs/rpc/rpc-spans.md b/docs/rpc/rpc-spans.md index 3a34471797..f04c37a118 100644 --- a/docs/rpc/rpc-spans.md +++ b/docs/rpc/rpc-spans.md @@ -95,7 +95,7 @@ Generally, a user SHOULD NOT set `peer.service` to a fully qualified RPC service ### Client attributes - + @@ -166,7 +166,7 @@ different processes could be listening on TCP port 12345 and UDP port 12345. ### Server attributes - + @@ -245,7 +245,7 @@ different processes could be listening on TCP port 12345 and UDP port 12345. #### Message event - + diff --git a/model/android/resources.yaml b/model/android/resources.yaml index 7138bc2902..9070a37688 100644 --- a/model/android/resources.yaml +++ b/model/android/resources.yaml @@ -1,5 +1,5 @@ groups: - - id: android + - id: resource.android type: resource name: android brief: > diff --git a/model/aws/ecs-resources.yaml b/model/aws/ecs-resources.yaml index 7b14ff129c..44cc06b9e6 100644 --- a/model/aws/ecs-resources.yaml +++ b/model/aws/ecs-resources.yaml @@ -1,5 +1,5 @@ groups: - - id: aws.ecs + - id: resource.aws.ecs type: resource name: aws.ecs brief: > diff --git a/model/aws/eks-resources.yaml b/model/aws/eks-resources.yaml index ea849dfed9..5b8d142969 100644 --- a/model/aws/eks-resources.yaml +++ b/model/aws/eks-resources.yaml @@ -1,5 +1,5 @@ groups: - - id: aws.eks + - id: resource.aws.eks type: resource name: aws.eks brief: > diff --git a/model/aws/lambda-spans.yaml b/model/aws/lambda-spans.yaml index 41943ab8cb..934795bc40 100644 --- a/model/aws/lambda-spans.yaml +++ b/model/aws/lambda-spans.yaml @@ -1,5 +1,5 @@ groups: - - id: aws.lambda + - id: span.aws.lambda type: span brief: > Span attributes used by AWS Lambda (in addition to general `faas` attributes). diff --git a/model/aws/logs-resources.yaml b/model/aws/logs-resources.yaml index b5b379dfdf..4c09b07570 100644 --- a/model/aws/logs-resources.yaml +++ b/model/aws/logs-resources.yaml @@ -1,5 +1,5 @@ groups: - - id: aws.log + - id: resource.aws.log type: resource name: aws.log brief: > diff --git a/model/aws/sdk-spans.yml b/model/aws/sdk-spans.yml index 6dbe1d3211..4ac5ccc369 100644 --- a/model/aws/sdk-spans.yml +++ b/model/aws/sdk-spans.yml @@ -1,6 +1,7 @@ groups: - - id: aws + - id: span.aws.client type: span + span_kind: client brief: > The `aws` conventions apply to operations using the AWS SDK. They map request or response parameters in AWS SDK API calls to attributes on a Span. The conventions have been collected over time based @@ -28,53 +29,22 @@ groups: - ref: aws.request_id requirement_level: recommended - - id: dynamodb.shared - extends: aws - type: span - brief: "Attributes that exist for multiple DynamoDB request types." - attributes: - - ref: db.operation.name - brief: "The same value as `rpc.method`." - examples: - - GetItem - - PutItem - - ref: aws.dynamodb.table_names - requirement_level: recommended - - ref: aws.dynamodb.consumed_capacity - requirement_level: recommended - - ref: aws.dynamodb.item_collection_metrics - requirement_level: recommended - - ref: aws.dynamodb.provisioned_read_capacity - requirement_level: recommended - - ref: aws.dynamodb.provisioned_write_capacity - requirement_level: recommended - - ref: aws.dynamodb.consistent_read - requirement_level: recommended - - ref: aws.dynamodb.projection - requirement_level: recommended - - ref: aws.dynamodb.limit - requirement_level: recommended - - ref: aws.dynamodb.attributes_to_get - requirement_level: recommended - - ref: aws.dynamodb.index_name - requirement_level: recommended - - ref: aws.dynamodb.select - requirement_level: recommended - - - id: dynamodb.batchgetitem + - id: span.dynamodb.batchgetitem.client brief: DynamoDB.BatchGetItem - extends: aws + extends: span.aws.client type: span + span_kind: client attributes: - ref: aws.dynamodb.table_names requirement_level: recommended - ref: aws.dynamodb.consumed_capacity requirement_level: recommended - - id: dynamodb.batchwriteitem + - id: span.dynamodb.batchwriteitem.client brief: DynamoDB.BatchWriteItem - extends: aws + extends: span.aws.client type: span + span_kind: client attributes: - ref: aws.dynamodb.table_names requirement_level: recommended @@ -83,10 +53,11 @@ groups: - ref: aws.dynamodb.item_collection_metrics requirement_level: recommended - - id: dynamodb.createtable + - id: span.dynamodb.createtable.client brief: DynamoDB.CreateTable - extends: aws + extends: span.aws.client type: span + span_kind: client attributes: - ref: aws.dynamodb.global_secondary_indexes requirement_level: recommended @@ -106,10 +77,11 @@ groups: - ref: aws.dynamodb.provisioned_write_capacity requirement_level: recommended - - id: dynamodb.deleteitem + - id: span.dynamodb.deleteitem.client brief: DynamoDB.DeleteItem - extends: aws + extends: span.aws.client type: span + span_kind: client attributes: - ref: aws.dynamodb.table_names requirement_level: recommended @@ -121,10 +93,11 @@ groups: - ref: aws.dynamodb.item_collection_metrics requirement_level: recommended - - id: dynamodb.deletetable + - id: span.dynamodb.deletetable.client brief: DynamoDB.DeleteTable - extends: aws + extends: span.aws.client type: span + span_kind: client attributes: - ref: aws.dynamodb.table_names requirement_level: recommended @@ -132,10 +105,11 @@ groups: examples: - Users - - id: dynamodb.describetable + - id: span.dynamodb.describetable.client brief: DynamoDB.DescribeTable - extends: aws + extends: span.aws.client type: span + span_kind: client attributes: - ref: aws.dynamodb.table_names requirement_level: recommended @@ -143,10 +117,11 @@ groups: examples: - Users - - id: dynamodb.getitem + - id: span.dynamodb.getitem.client brief: DynamoDB.GetItem - extends: aws + extends: span.aws.client type: span + span_kind: client attributes: - ref: aws.dynamodb.table_names requirement_level: recommended @@ -160,10 +135,11 @@ groups: - ref: aws.dynamodb.projection requirement_level: recommended - - id: dynamodb.listtables + - id: span.dynamodb.listtables.client brief: DynamoDB.ListTables - extends: aws + extends: span.aws.client type: span + span_kind: client attributes: - ref: aws.dynamodb.exclusive_start_table requirement_level: recommended @@ -172,10 +148,11 @@ groups: - ref: aws.dynamodb.limit requirement_level: recommended - - id: dynamodb.putitem + - id: span.dynamodb.putitem.client brief: DynamoDB.PutItem - extends: aws + extends: span.aws.client type: span + span_kind: client attributes: - ref: aws.dynamodb.table_names requirement_level: recommended @@ -184,10 +161,11 @@ groups: - ref: aws.dynamodb.item_collection_metrics requirement_level: recommended - - id: dynamodb.query + - id: span.dynamodb.query.client brief: DynamoDB.Query - extends: aws + extends: span.aws.client type: span + span_kind: client attributes: - ref: aws.dynamodb.scan_forward requirement_level: recommended @@ -211,10 +189,11 @@ groups: - ref: aws.dynamodb.select requirement_level: recommended - - id: dynamodb.scan + - id: span.dynamodb.scan.client brief: DynamoDB.Scan - extends: aws + extends: span.aws.client type: span + span_kind: client attributes: - ref: aws.dynamodb.segment requirement_level: recommended @@ -244,10 +223,11 @@ groups: - ref: aws.dynamodb.select requirement_level: recommended - - id: dynamodb.updateitem + - id: span.dynamodb.updateitem.client brief: DynamoDB.UpdateItem - extends: aws + extends: span.aws.client type: span + span_kind: client attributes: - ref: aws.dynamodb.table_names requirement_level: recommended @@ -259,10 +239,11 @@ groups: - ref: aws.dynamodb.item_collection_metrics requirement_level: recommended - - id: dynamodb.updatetable + - id: span.dynamodb.updatetable.client brief: DynamoDB.UpdateTable - extends: aws + extends: span.aws.client type: span + span_kind: client attributes: - ref: aws.dynamodb.attribute_definitions requirement_level: recommended @@ -280,9 +261,10 @@ groups: - ref: aws.dynamodb.provisioned_write_capacity requirement_level: recommended - - id: aws.s3 - extends: aws + - id: span.aws.s3.client + extends: span.aws.client type: span + span_kind: client brief: "Attributes that exist for S3 request types." attributes: - ref: aws.s3.bucket diff --git a/model/azure/logs.yaml b/model/azure/events.yaml similarity index 99% rename from model/azure/logs.yaml rename to model/azure/events.yaml index 4a5e3fc22a..ee7b08f2b6 100644 --- a/model/azure/logs.yaml +++ b/model/azure/events.yaml @@ -1,5 +1,5 @@ groups: - - id: az.resource.log + - id: event.az.resource.log stability: experimental type: event name: az.resource.log diff --git a/model/browser/resources.yaml b/model/browser/resources.yaml index df8492cd60..01b31567f7 100644 --- a/model/browser/resources.yaml +++ b/model/browser/resources.yaml @@ -1,5 +1,5 @@ groups: - - id: browser + - id: resource.browser type: resource name: browser brief: > diff --git a/model/cloud/resources.yaml b/model/cloud/resources.yaml index 954ff0ad1b..0daa6fdf9f 100644 --- a/model/cloud/resources.yaml +++ b/model/cloud/resources.yaml @@ -1,5 +1,5 @@ groups: - - id: cloud + - id: resource.cloud type: resource name: cloud brief: > diff --git a/model/cloudevents/spans.yaml b/model/cloudevents/spans.yaml index 604d101c17..8c7dd6039d 100644 --- a/model/cloudevents/spans.yaml +++ b/model/cloudevents/spans.yaml @@ -1,6 +1,6 @@ groups: - id: cloudevents - type: span + type: attribute_group brief: > This document defines attributes for CloudEvents. CloudEvents is a specification on how to define event data in a standard way. diff --git a/model/cloudfoundry/resources.yaml b/model/cloudfoundry/resources.yaml index 95d60abe35..40d8c235bb 100644 --- a/model/cloudfoundry/resources.yaml +++ b/model/cloudfoundry/resources.yaml @@ -1,5 +1,5 @@ groups: - - id: cloudfoundry.system + - id: resource.cloudfoundry.system type: resource name: cloudfoundry.system brief: > @@ -7,7 +7,7 @@ groups: attributes: - ref: cloudfoundry.system.id - ref: cloudfoundry.system.instance.id - - id: cloudfoundry.app + - id: resource.cloudfoundry.app type: resource name: cloudfoundry.app brief: > @@ -15,7 +15,7 @@ groups: attributes: - ref: cloudfoundry.app.id - ref: cloudfoundry.app.name - - id: cloudfoundry.space + - id: resource.cloudfoundry.space type: resource name: cloudfoundry.space brief: > @@ -23,7 +23,7 @@ groups: attributes: - ref: cloudfoundry.space.id - ref: cloudfoundry.space.name - - id: cloudfoundry.org + - id: resource.cloudfoundry.org type: resource name: cloudfoundry.org brief: > @@ -31,7 +31,7 @@ groups: attributes: - ref: cloudfoundry.org.id - ref: cloudfoundry.org.name - - id: cloudfoundry.process + - id: resource.cloudfoundry.process type: resource name: cloudfoundry.process brief: > diff --git a/model/container/resources.yaml b/model/container/resources.yaml index 039faa8616..a3def21acd 100644 --- a/model/container/resources.yaml +++ b/model/container/resources.yaml @@ -1,5 +1,5 @@ groups: - - id: container + - id: resource.container type: resource name: container brief: > diff --git a/model/database/deprecated/metrics-deprecated.yaml b/model/database/deprecated/metrics-deprecated.yaml index 5e6332294f..ebe45355d9 100644 --- a/model/database/deprecated/metrics-deprecated.yaml +++ b/model/database/deprecated/metrics-deprecated.yaml @@ -1,5 +1,5 @@ groups: - - id: metric.db.client.connections.count.deprecated + - id: metric.db.client.connections.usage type: metric metric_name: db.client.connections.usage stability: experimental @@ -13,7 +13,7 @@ groups: - ref: db.client.connections.pool.name requirement_level: required - - id: metric.db.client.connections.idle.max.deprecated + - id: metric.db.client.connections.idle.max type: metric metric_name: db.client.connections.idle.max stability: experimental @@ -25,7 +25,7 @@ groups: - ref: db.client.connections.pool.name requirement_level: required - - id: metric.db.client.connections.idle.min.deprecated + - id: metric.db.client.connections.idle.min type: metric metric_name: db.client.connections.idle.min stability: experimental @@ -37,7 +37,7 @@ groups: - ref: db.client.connections.pool.name requirement_level: required - - id: metric.db.client.connections.max.deprecated + - id: metric.db.client.connections.max type: metric metric_name: db.client.connections.max stability: experimental @@ -49,7 +49,7 @@ groups: - ref: db.client.connections.pool.name requirement_level: required - - id: metric.db.client.connections.pending_requests.deprecated + - id: metric.db.client.connections.pending_requests type: metric metric_name: db.client.connections.pending_requests stability: experimental @@ -61,7 +61,7 @@ groups: - ref: db.client.connections.pool.name requirement_level: required - - id: metric.db.client.connections.timeouts.deprecated + - id: metric.db.client.connections.timeouts type: metric metric_name: db.client.connections.timeouts stability: experimental @@ -73,7 +73,7 @@ groups: - ref: db.client.connections.pool.name requirement_level: required - - id: metric.db.client.connections.create_time.deprecated + - id: metric.db.client.connections.create_time type: metric metric_name: db.client.connections.create_time stability: experimental @@ -85,7 +85,7 @@ groups: - ref: db.client.connections.pool.name requirement_level: required - - id: metric.db.client.connections.wait_time.deprecated + - id: metric.db.client.connections.wait_time type: metric metric_name: db.client.connections.wait_time stability: experimental @@ -97,7 +97,7 @@ groups: - ref: db.client.connections.pool.name requirement_level: required - - id: metric.db.client.connections.use_time.deprecated + - id: metric.db.client.connections.use_time type: metric metric_name: db.client.connections.use_time stability: experimental diff --git a/model/database/spans.yaml b/model/database/spans.yaml index 551b12bed6..33bca315c8 100644 --- a/model/database/spans.yaml +++ b/model/database/spans.yaml @@ -75,17 +75,18 @@ groups: requirement_level: conditionally_required: If available. - - id: db + - id: span.db.client type: span stability: experimental brief: This span defines the attributes used to perform database client calls. span_kind: client extends: trace.db.common.full - - id: db.mssql + - id: span.db.mssql.client type: span stability: experimental - extends: db.sql + extends: span.db.sql.client + span_kind: client brief: > Attributes for Microsoft SQL Server attributes: @@ -116,9 +117,10 @@ groups: Microsoft SQL Server does not report SQLSTATE. examples: ["102", "40020"] - - id: db.postgresql + - id: span.db.postgresql.client type: span - extends: db.sql + extends: span.db.sql.client + span_kind: client brief: > Attributes for PostgreSQL attributes: @@ -149,9 +151,10 @@ groups: [PostgreSQL error code](https://www.postgresql.org/docs/current/errcodes-appendix.html). examples: ["08000", "08P01"] - - id: db.mysql + - id: span.db.mysql.client type: span - extends: db.sql + extends: span.db.sql.client + span_kind: client brief: > Attributes for MySQL attributes: @@ -174,9 +177,10 @@ groups: [MySQL error number](https://dev.mysql.com/doc/mysql-errors/9.0/en/error-reference-introduction.html). examples: ["1005", "MY-010016"] - - id: db.mariadb + - id: span.db.mariadb.client type: span - extends: db.sql + extends: span.db.sql.client + span_kind: client brief: > Attributes for MariaDB attributes: @@ -200,8 +204,9 @@ groups: represented as a string. examples: ["1008", "3058"] - - id: db.cassandra + - id: span.db.cassandra.client type: span + span_kind: client stability: experimental extends: trace.db.common.query_and_collection brief: > @@ -234,8 +239,9 @@ groups: brief: > [Cassandra protocol error code](https://github.com/apache/cassandra/blob/cassandra-5.0/doc/native_protocol_v5.spec) represented as a string. examples: ["102", "40020"] - - id: db.hbase + - id: span.db.hbase.client type: span + span_kind: client stability: experimental extends: trace.db.common.minimal brief: > @@ -264,8 +270,9 @@ groups: examples: ["200", "409", "14"] requirement_level: conditionally_required: If response was received. - - id: db.couchdb + - id: span.db.couchdb.client type: span + span_kind: client stability: experimental extends: trace.db.common.minimal brief: > @@ -296,9 +303,10 @@ groups: requirement_level: conditionally_required: If response was received and the HTTP response code is available. - - id: db.redis + - id: span.db.redis.client type: span stability: experimental + span_kind: client extends: attributes.db.client.minimal brief: > Attributes for Redis @@ -359,9 +367,10 @@ groups: - ref: server.port sampling_relevant: true - - id: db.mongodb + - id: span.db.mongodb.client type: span stability: experimental + span_kind: client extends: trace.db.common.minimal brief: > Attributes for MongoDB @@ -393,9 +402,10 @@ groups: conditionally_required: If the operation failed and error code is available. examples: ["36", "11602"] - - id: db.elasticsearch + - id: span.db.elasticsearch.client type: span stability: experimental + span_kind: client extends: trace.db.common.minimal brief: > Attributes for Elasticsearch @@ -448,8 +458,9 @@ groups: examples: ["200", "201", "429"] requirement_level: conditionally_required: If response was received. - - id: db.sql + - id: span.db.sql.client type: span + span_kind: client stability: experimental extends: trace.db.common.query_and_collection brief: > @@ -531,9 +542,10 @@ groups: examples: ["ORA-17027", "1052", "2201B"] requirement_level: conditionally_required: If response has ended with warning or an error. - - id: db.cosmosdb + - id: span.db.cosmosdb.client type: span stability: experimental + span_kind: client extends: trace.db.common.query_and_collection brief: > Attributes for Cosmos DB. diff --git a/model/deployment/resources.yaml b/model/deployment/resources.yaml index 5e40253d2d..18af6c6c66 100644 --- a/model/deployment/resources.yaml +++ b/model/deployment/resources.yaml @@ -1,5 +1,5 @@ groups: - - id: deployment + - id: resource.deployment type: resource name: deployment brief: > diff --git a/model/device/events.yaml b/model/device/events.yaml index 36f4f9885f..fc4a613202 100644 --- a/model/device/events.yaml +++ b/model/device/events.yaml @@ -1,5 +1,5 @@ groups: - - id: device.app.lifecycle + - id: event.device.app.lifecycle stability: experimental type: event name: device.app.lifecycle diff --git a/model/device/resources.yaml b/model/device/resources.yaml index 45b1cd7a49..179e4726f7 100644 --- a/model/device/resources.yaml +++ b/model/device/resources.yaml @@ -1,5 +1,5 @@ groups: - - id: device + - id: resource.device type: resource name: device brief: > diff --git a/model/exceptions/events.yaml b/model/exceptions/events.yaml index 88ff5f3872..10d9691ebe 100644 --- a/model/exceptions/events.yaml +++ b/model/exceptions/events.yaml @@ -1,5 +1,5 @@ groups: - - id: trace-exception + - id: event.exception name: exception stability: stable type: event diff --git a/model/faas/resources.yaml b/model/faas/resources.yaml index 5f9325ebb1..a197e28ea5 100644 --- a/model/faas/resources.yaml +++ b/model/faas/resources.yaml @@ -1,5 +1,5 @@ groups: - - id: faas_resource + - id: resource.faas type: resource name: faas brief: > diff --git a/model/faas/spans.yaml b/model/faas/spans.yaml index 2531347bff..683181502a 100644 --- a/model/faas/spans.yaml +++ b/model/faas/spans.yaml @@ -1,5 +1,5 @@ groups: - - id: faas_span + - id: span.faas type: span brief: > This semantic convention describes an instance of a function that @@ -20,7 +20,7 @@ groups: - ref: faas.invocation_id - ref: cloud.resource_id - - id: faas_span.datasource + - id: span.faas.datasource type: span brief: > Semantic Convention for FaaS triggered as a response to some data @@ -33,7 +33,7 @@ groups: - ref: faas.document.time - ref: faas.document.name - - id: faas_span.timer + - id: span.faas.timer type: span brief: > Semantic Convention for FaaS scheduled to be executed regularly. @@ -41,7 +41,7 @@ groups: - ref: faas.time - ref: faas.cron - - id: faas_span.in + - id: span.faas.server span_kind: server type: span brief: > @@ -61,7 +61,7 @@ groups: nothing to do with the underlying transport used to make the API call to invoke the lambda, which is often HTTP). - - id: faas_span.out + - id: span.faas.client span_kind: client type: span brief: > diff --git a/model/feature-flag/events.yaml b/model/feature-flag/events.yaml index 0248d07cef..bd2cff8829 100644 --- a/model/feature-flag/events.yaml +++ b/model/feature-flag/events.yaml @@ -1,5 +1,5 @@ groups: - - id: feature_flag + - id: event.feature_flag type: event stability: experimental name: feature_flag diff --git a/model/feature-flag/logs.yaml b/model/feature-flag/logs.yaml deleted file mode 100644 index 030c0c11a4..0000000000 --- a/model/feature-flag/logs.yaml +++ /dev/null @@ -1,11 +0,0 @@ -groups: - - id: log-feature_flag - type: event - stability: experimental - name: feature_flag - brief: > - This event describes feature flag evaluation representation on a Log Record. - attributes: - - ref: feature_flag.key - - ref: feature_flag.provider_name - - ref: feature_flag.variant diff --git a/model/gcp/cloud-run-resources.yaml b/model/gcp/cloud-run-resources.yaml index 0fe12bf28d..86c54cb130 100644 --- a/model/gcp/cloud-run-resources.yaml +++ b/model/gcp/cloud-run-resources.yaml @@ -1,5 +1,5 @@ groups: - - id: gcp.cloud_run + - id: resource.gcp.cloud_run type: resource name: gcp.cloud_run brief: > diff --git a/model/gcp/gce-resources.yaml b/model/gcp/gce-resources.yaml index 05cb24e21c..cac414f2b0 100644 --- a/model/gcp/gce-resources.yaml +++ b/model/gcp/gce-resources.yaml @@ -1,5 +1,5 @@ groups: - - id: gcp.gce + - id: resource.gcp.gce type: resource name: gcp.gce brief: > diff --git a/model/gen-ai/events.yaml b/model/gen-ai/events.yaml index 72a4e692f0..e8e3b40967 100644 --- a/model/gen-ai/events.yaml +++ b/model/gen-ai/events.yaml @@ -7,7 +7,7 @@ groups: attributes: - ref: gen_ai.system - - id: gen_ai.system.message + - id: event.gen_ai.system.message name: gen_ai.system.message type: event stability: experimental @@ -15,7 +15,7 @@ groups: This event describes the instructions passed to the GenAI system inside the prompt. extends: gen_ai.common.event.attributes - - id: gen_ai.user.message + - id: event.gen_ai.user.message name: gen_ai.user.message type: event stability: experimental @@ -23,7 +23,7 @@ groups: This event describes the prompt message specified by the user. extends: gen_ai.common.event.attributes - - id: gen_ai.assistant.message + - id: event.gen_ai.assistant.message name: gen_ai.assistant.message type: event stability: experimental @@ -31,7 +31,7 @@ groups: This event describes the assistant message passed to GenAI system or received from it. extends: gen_ai.common.event.attributes - - id: gen_ai.tool.message + - id: event.gen_ai.tool.message name: gen_ai.tool.message type: event stability: experimental @@ -39,7 +39,7 @@ groups: This event describes the tool or function response message. extends: gen_ai.common.event.attributes - - id: gen_ai.choice + - id: event.gen_ai.choice name: gen_ai.choice type: event stability: experimental diff --git a/model/gen-ai/spans.yaml b/model/gen-ai/spans.yaml index a7c8a0ef5e..69252f6673 100644 --- a/model/gen-ai/spans.yaml +++ b/model/gen-ai/spans.yaml @@ -54,9 +54,10 @@ groups: The `error.type` SHOULD match the error code returned by the Generative AI provider or the client library, the canonical name of exception that occurred, or another low-cardinality error identifier. Instrumentations SHOULD document the list of errors they report. - - id: trace.gen_ai.client.span + - id: span.gen_ai.client type: span stability: experimental + span_kind: client brief: > Describes GenAI operation span. extends: trace.gen_ai.client.common_attributes @@ -70,9 +71,10 @@ groups: - gen_ai.content.prompt - gen_ai.content.completion - - id: trace.gen_ai.openai.client + - id: span.gen_ai.openai.client extends: trace.gen_ai.client.common_attributes stability: experimental + span_kind: client brief: > Describes an OpenAI operation span. attributes: diff --git a/model/graphql/spans.yml b/model/graphql/spans.yml index a14948da0a..7e9e8a494c 100644 --- a/model/graphql/spans.yml +++ b/model/graphql/spans.yml @@ -1,6 +1,7 @@ groups: - - id: graphql + - id: span.graphql.server type: span + span_kind: server brief: > This document defines semantic conventions to apply when instrumenting the GraphQL implementation. They map GraphQL operations to attributes on a Span. diff --git a/model/heroku/resources.yaml b/model/heroku/resources.yaml index cf2e66c233..cfffc3a5b4 100644 --- a/model/heroku/resources.yaml +++ b/model/heroku/resources.yaml @@ -1,9 +1,9 @@ groups: - - id: heroku + - id: resource.heroku type: resource name: heroku brief: > - Heroku dyno metadata + [Heroku dyno metadata](https://devcenter.heroku.com/articles/dyno-metadata) attributes: - ref: heroku.release.creation_timestamp requirement_level: opt_in diff --git a/model/host/resources.yaml b/model/host/resources.yaml index 2954172cd9..088b7c8c2e 100644 --- a/model/host/resources.yaml +++ b/model/host/resources.yaml @@ -1,5 +1,5 @@ groups: - - id: host + - id: resource.host type: resource name: host brief: > @@ -43,7 +43,7 @@ groups: - ref: host.mac requirement_level: opt_in - - id: host.cpu + - id: resource.host.cpu type: resource name: host.cpu brief: > diff --git a/model/http/spans.yaml b/model/http/spans.yaml index 79fa21f22f..2698415ce3 100644 --- a/model/http/spans.yaml +++ b/model/http/spans.yaml @@ -1,5 +1,5 @@ groups: - - id: trace.http.client + - id: span.http.client type: span extends: attributes.http.client span_kind: client @@ -46,7 +46,7 @@ groups: - ref: http.response.body.size requirement_level: opt_in - - id: trace.http.server + - id: span.http.server type: span extends: attributes.http.server span_kind: server diff --git a/model/jvm/deprecated/metrics-deprecated.yaml b/model/jvm/deprecated/metrics-deprecated.yaml index 2641fc1a5c..88c517189b 100644 --- a/model/jvm/deprecated/metrics-deprecated.yaml +++ b/model/jvm/deprecated/metrics-deprecated.yaml @@ -1,5 +1,5 @@ groups: - - id: metric.jvm.buffer.memory.usage.deprecated + - id: metric.jvm.buffer.memory.usage type: metric metric_name: jvm.buffer.memory.usage stability: experimental diff --git a/model/k8s/resources.yaml b/model/k8s/resources.yaml index 50d2e8c254..3e25aff349 100644 --- a/model/k8s/resources.yaml +++ b/model/k8s/resources.yaml @@ -1,5 +1,5 @@ groups: - - id: k8s.cluster + - id: resource.k8s.cluster type: resource name: k8s.cluster brief: > @@ -8,7 +8,7 @@ groups: - ref: k8s.cluster.name - ref: k8s.cluster.uid - - id: k8s.node + - id: resource.k8s.node type: resource name: k8s.node brief: > @@ -17,7 +17,7 @@ groups: - ref: k8s.node.name - ref: k8s.node.uid - - id: k8s.namespace + - id: resource.k8s.namespace type: resource name: k8s.namespace brief: > @@ -25,7 +25,7 @@ groups: attributes: - ref: k8s.namespace.name - - id: k8s.pod + - id: resource.k8s.pod type: resource name: k8s.pod brief: > @@ -37,7 +37,7 @@ groups: - ref: k8s.pod.annotation requirement_level: opt_in - - id: k8s.container + - id: resource.k8s.container type: resource name: k8s.container brief: > @@ -47,7 +47,7 @@ groups: - ref: k8s.container.restart_count - ref: k8s.container.status.last_terminated_reason - - id: k8s.replicaset + - id: resource.k8s.replicaset type: resource name: k8s.replicaset brief: > @@ -56,7 +56,7 @@ groups: - ref: k8s.replicaset.uid - ref: k8s.replicaset.name - - id: k8s.deployment + - id: resource.k8s.deployment type: resource name: k8s.deployment brief: > @@ -65,7 +65,7 @@ groups: - ref: k8s.deployment.uid - ref: k8s.deployment.name - - id: k8s.statefulset + - id: resource.k8s.statefulset type: resource name: k8s.statefulset brief: > @@ -74,7 +74,7 @@ groups: - ref: k8s.statefulset.uid - ref: k8s.statefulset.name - - id: k8s.daemonset + - id: resource.k8s.daemonset type: resource name: k8s.daemonset brief: > @@ -83,7 +83,7 @@ groups: - ref: k8s.daemonset.uid - ref: k8s.daemonset.name - - id: k8s.job + - id: resource.k8s.job type: resource name: k8s.job brief: > @@ -92,7 +92,7 @@ groups: - ref: k8s.job.uid - ref: k8s.job.name - - id: k8s.cronjob + - id: resource.k8s.cronjob type: resource name: k8s.cronjob brief: > diff --git a/model/messaging/spans.yaml b/model/messaging/spans.yaml index 0ad91f4721..1e5dc30413 100644 --- a/model/messaging/spans.yaml +++ b/model/messaging/spans.yaml @@ -28,7 +28,7 @@ groups: # - ref: messaging.system # sampling_relevant: true - - id: messaging + - id: span.messaging type: span stability: experimental brief: > diff --git a/model/os/resources.yaml b/model/os/resources.yaml index da3d241046..fe48ee9c5b 100644 --- a/model/os/resources.yaml +++ b/model/os/resources.yaml @@ -1,5 +1,5 @@ groups: - - id: os + - id: resource.os type: resource name: os brief: > diff --git a/model/otel/resources.yaml b/model/otel/resources.yaml index 2accfa3faf..e07b139778 100644 --- a/model/otel/resources.yaml +++ b/model/otel/resources.yaml @@ -1,5 +1,5 @@ groups: - - id: otel.scope + - id: resource.otel.scope # This should not be a resource, but an attribute group. type: resource name: otel.scope diff --git a/model/process/resources.yaml b/model/process/resources.yaml index f33965fb9b..3c015d607e 100644 --- a/model/process/resources.yaml +++ b/model/process/resources.yaml @@ -1,5 +1,5 @@ groups: - - id: process + - id: resource.process type: resource name: process brief: > @@ -24,7 +24,7 @@ groups: conditionally_required: See [Selecting process attributes](#selecting-process-attributes) for details. - ref: process.owner - - id: process.runtime + - id: resource.process.runtime type: resource name: process.runtime brief: > diff --git a/model/rpc/spans.yaml b/model/rpc/spans.yaml index 07e418d069..ae26b7c256 100644 --- a/model/rpc/spans.yaml +++ b/model/rpc/spans.yaml @@ -1,8 +1,7 @@ groups: - id: rpc - type: span + type: attribute_group brief: 'This document defines semantic conventions for remote procedure calls.' - events: [rpc.message] attributes: - ref: rpc.system requirement_level: required @@ -26,10 +25,12 @@ groups: requirement_level: conditionally_required: if the port is supported by the network transport used for communication. - - id: rpc.client + - id: span.rpc.client type: span brief: 'This document defines semantic conventions for remote procedure call client spans.' extends: rpc + span_kind: client + events: [rpc.message] attributes: - ref: network.peer.address requirement_level: recommended @@ -37,11 +38,12 @@ groups: requirement_level: recommended: If `network.peer.address` is set. - - id: rpc.server + - id: span.rpc.server type: span extends: rpc span_kind: server brief: 'Semantic Convention for RPC server spans' + events: [rpc.message] attributes: - ref: client.address requirement_level: recommended @@ -57,7 +59,7 @@ groups: - ref: network.type requirement_level: recommended - - id: rpc.grpc + - id: span.rpc.grpc type: span extends: rpc brief: 'Tech-specific attributes for gRPC.' @@ -72,7 +74,7 @@ groups: tag: grpc-tech-specific requirement_level: opt_in - - id: rpc.jsonrpc + - id: span.rpc.jsonrpc type: span extends: rpc brief: 'Tech-specific attributes for [JSON RPC](https://www.jsonrpc.org/).' @@ -98,7 +100,7 @@ groups: This is always required for jsonrpc. See the note in the general RPC conventions for more information. - - id: rpc.message + - id: event.rpc.message type: event stability: experimental name: rpc.message @@ -117,7 +119,7 @@ groups: - ref: rpc.message.uncompressed_size requirement_level: recommended - - id: rpc.connect_rpc + - id: span.rpc.connect_rpc type: span extends: rpc brief: 'Tech-specific attributes for Connect RPC.' diff --git a/model/service/resources.yaml b/model/service/resources.yaml index 5e24e377c9..40432c7ece 100644 --- a/model/service/resources.yaml +++ b/model/service/resources.yaml @@ -1,5 +1,5 @@ groups: - - id: service + - id: resource.service type: resource name: service brief: > diff --git a/model/telemetry/resources.yaml b/model/telemetry/resources.yaml index 42511f5cec..6540d2b596 100644 --- a/model/telemetry/resources.yaml +++ b/model/telemetry/resources.yaml @@ -1,6 +1,6 @@ groups: - - id: telemetry.sdk - name: 'telemetry.sdk' + - id: resource.telemetry.sdk + name: telemetry.sdk type: resource stability: stable brief: > @@ -12,7 +12,7 @@ groups: requirement_level: required - ref: telemetry.sdk.version requirement_level: required - - id: telemetry.distro + - id: resource.telemetry.distro name: 'telemetry.distro' type: resource stability: experimental diff --git a/model/webengine/resources.yaml b/model/webengine/resources.yaml index d9026cf2cf..85eac2c52f 100644 --- a/model/webengine/resources.yaml +++ b/model/webengine/resources.yaml @@ -1,5 +1,5 @@ groups: - - id: webengine_resource + - id: resource.webengine type: resource name: webengine brief: > diff --git a/policies/group_stability.rego b/policies/group_stability.rego index c549709bcb..d3cb41718a 100644 --- a/policies/group_stability.rego +++ b/policies/group_stability.rego @@ -11,7 +11,7 @@ deny[group_stability_violation(description, group.id, name)] { # TODO: https://github.com/open-telemetry/semantic-conventions/issues/1514 "metric.kestrel.connection.duration", "metric.kestrel.tls_handshake.duration", # TODO: https://github.com/open-telemetry/semantic-conventions/issues/1519 - "service", + "resource.service", } not exceptions[group.id] diff --git a/policies/yaml_schema.rego b/policies/yaml_schema.rego index c8e40680c6..d8d60471f0 100644 --- a/policies/yaml_schema.rego +++ b/policies/yaml_schema.rego @@ -36,6 +36,18 @@ deny[yaml_schema_violation(description, group.id, name)] { description := sprintf("Metric name '%s' is invalid. Metric name %s'", [name, invalid_name_helper]) } +# checks that metric id matches metric.{metric_name} +deny[yaml_schema_violation(description, group.id, name)] { + group := input.groups[_] + name := group.metric_name + name != null + + expected_id := sprintf("metric.%s", [name]) + expected_id != group.id + + description := sprintf("Metric id '%s' is invalid. Metric id must follow 'metric.{metric_name}' pattern and match '%s'", [group.id, expected_id]) +} + # checks event name format deny[yaml_schema_violation(description, group.id, name)] { group := input.groups[_] @@ -48,6 +60,18 @@ deny[yaml_schema_violation(description, group.id, name)] { description := sprintf("Event name '%s' is invalid. Event name %s'", [name, invalid_name_helper]) } +# checks that event id matches event.{name} +deny[yaml_schema_violation(description, group.id, name)] { + group := input.groups[_] + group.type == "event" + name := group.name + + expected_id := sprintf("event.%s", [name]) + expected_id != group.id + + description := sprintf("Event id '%s' is invalid. Event id must follow 'event.{name}' pattern and match '%s'", [group.id, expected_id]) +} + # checks event.name is not referenced in event attributes deny[yaml_schema_violation(description, group.id, name)] { group := input.groups[_] @@ -80,6 +104,23 @@ deny[yaml_schema_violation(description, group.id, name)] { description := sprintf("Resource name '%s' is invalid. Resource name %s'", [name, invalid_name_helper]) } +# checks that resource group id matches resource.{name} +deny[yaml_schema_violation(description, group.id, name)] { + group := input.groups[_] + group.type == "resource" + + # TODO: remove once https://github.com/open-telemetry/semantic-conventions/pull/1423 is merged + exclusions := {"resource.telemetry.sdk_experimental", "resource.service_experimental"} + not exclusions[group.id] + + name := group.name + + expected_id := sprintf("resource.%s", [name]) + expected_id != group.id + + description := sprintf("Resource id '%s' is invalid. Resource id must follow 'resource.{name}' pattern and match '%s'", [group.id, expected_id]) +} + # checks attribute member id format deny[yaml_schema_violation(description, group.id, attr_name)] { group := input.groups[_] @@ -103,6 +144,30 @@ deny[yaml_schema_violation(description, group.id, "")] { description := sprintf("Group '%s' uses prefix '%s'. All attribute should be fully qualified with their id, prefix is no longer supported.", [group.id, group.prefix]) } +# TODO: remove after span_kind is required https://github.com/open-telemetry/semantic-conventions/issues/1513 +# checks that span id matches span.*. pattern if span_kind is not provided +deny[yaml_schema_violation(description, group.id, "")] { + group := input.groups[_] + group.type == "span" + kind := group.span_kind + + kind == null + not regex.match("^span\\.[a-z0-9_.]+$", group.id) + description := sprintf("Group id '%s' is invalid. Span group 'id' must follow 'span.*' pattern", [group.id]) +} + +# checks that span id matches span.*.{kind} pattern if span_kind is not provided +deny[yaml_schema_violation(description, group.id, "")] { + group := input.groups[_] + group.type == "span" + kind := group.span_kind + + kind != null + pattern := sprintf("^span\\.[a-z0-9_.]+\\.%s$", [kind]) + not regex.match(pattern, group.id) + description := sprintf("Group id '%s' is invalid. Span group 'id' must follow 'span.*.%s' pattern", [group.id, kind]) +} + yaml_schema_violation(description, group, attr) = violation { violation := { "id": description, diff --git a/policies/attribute_name_collisions_test.rego b/policies_test/attribute_name_collisions_test.rego similarity index 100% rename from policies/attribute_name_collisions_test.rego rename to policies_test/attribute_name_collisions_test.rego diff --git a/policies/group_stability_test.rego b/policies_test/group_stability_test.rego similarity index 100% rename from policies/group_stability_test.rego rename to policies_test/group_stability_test.rego diff --git a/policies/yaml_schema_test.rego b/policies_test/yaml_schema_test.rego similarity index 55% rename from policies/yaml_schema_test.rego rename to policies_test/yaml_schema_test.rego index a6d135f9d7..6c5cb4cc89 100644 --- a/policies/yaml_schema_test.rego +++ b/policies_test/yaml_schema_test.rego @@ -18,14 +18,38 @@ test_fails_on_invalid_metric_name if { } } +test_fails_on_invalid_metric_id if { + invalid_ids := [ + "foo.bar", + "metric..foo.bar", + "metric.123", + "metric.foo.bar.deprecated", + ] + every id in invalid_ids { + count(deny) >= 1 with input as {"groups": [{"id": id, "type": "metric", "metric_name": "foo.bar"}]} + } +} + test_fails_on_invalid_event_name if { every name in invalid_names { count(deny) >= 1 with input as {"groups": create_event(name)} } } +test_fails_on_invalid_event_id if { + invalid_ids := [ + "foo.bar", + "event..foo.bar", + "event.123", + "evnt.foo.bar.deprecated", + ] + every id in invalid_ids { + count(deny) >= 1 with input as {"groups": [{"id": id, "type": "event", "name": "foo.bar"}]} + } +} + test_fails_on_referenced_event_name_on_event if { - event := [{ "id": "yaml_schema.test", + event := [{ "id": "event.foo", "type": "event", "name": "foo", "attributes": [{"ref": "event.name"}]}] @@ -39,7 +63,7 @@ test_fails_on_invalid_resource_name if { } test_fails_on_missing_resource_name if { - count(deny) >= 1 with input as {"groups": [{"id": "yaml_schema.test", "type": "resource", "name": null}]} + count(deny) >= 1 with input as {"groups": [{"id": "resource.", "type": "resource", "name": null}]} } test_passes_on_valid_names if { @@ -54,20 +78,45 @@ test_fails_if_prefix_is_present if { count(deny) == 1 with input as {"groups": [{"id": "test", "prefix": "foo"}]} } +test_fails_on_invalid_span_id if { + invalid_ids := [ + "foo.bar", + "span.foo.bar", + "span.foo.bar.client.deprecated", + ] + every id in invalid_ids { + count(deny) >= 1 with input as {"groups": [{"id": id, "type": "span", "span_kind": "client"}]} + } +} + +test_fails_on_invalid_resource_id if { + invalid_ids := [ + "foo.bar", + "resource..foo.bar", + "resource.foo.bar.deprecated", + ] + every id in invalid_ids { + count(deny) >= 1 with input as {"groups": [{"id": id, "type": "resource", "name": "foo.bar"}]} + } +} + create_attribute_group(attr) = json { json := [{"id": "yaml_schema.test", "attributes": [{"id": attr}]}] } create_metric(name) = json { - json := [{"id": "yaml_schema.test", "type": "metric", "metric_name": name}] + id := sprintf("metric.%s", [name]) + json := [{"id": id, "type": "metric", "metric_name": name}] } create_event(name) = json { - json := [{"id": "yaml_schema.test", "type": "event", "name": name}] + id := sprintf("event.%s", [name]) + json := [{"id": id, "type": "event", "name": name}] } create_resource(name) = json { - json := [{"id": "yaml_schema.test", "type": "resource", "name": name}] + id := sprintf("resource.%s", [name]) + json := [{"id": id, "type": "resource", "name": name}] } invalid_names := [