diff --git a/.chloggen/1734.yaml b/.chloggen/1734.yaml new file mode 100644 index 0000000000..5e9cb2eaa1 --- /dev/null +++ b/.chloggen/1734.yaml @@ -0,0 +1,12 @@ +change_type: breaking + +component: db + +note: | + Rename `db.system` to `db.system.name` and clean up its values. + Rename `db.elasticsearch.*`, `db.cassandra.*`, `db.cosmosdb.*` attributes to `elasticsearch.*`, `cassandra.*`, and `azure.cosmosdb.*` respectively. + Rename `db.client.cosmosdb.*` metrics to `azure.cosmosdb.client.*`. + +issues: [1581, 608] + +subtext: diff --git a/.github/ISSUE_TEMPLATE/bug_report.yaml b/.github/ISSUE_TEMPLATE/bug_report.yaml index 9424ec95d2..4260363443 100644 --- a/.github/ISSUE_TEMPLATE/bug_report.yaml +++ b/.github/ISSUE_TEMPLATE/bug_report.yaml @@ -28,6 +28,7 @@ body: - area:aws - area:azure - area:browser + - area:cassandra - area:cicd - area:client - area:cloud @@ -43,6 +44,7 @@ body: - area:disk - area:dns - area:dotnet + - area:elasticsearch - area:error - area:exception - area:faas diff --git a/.github/ISSUE_TEMPLATE/change_proposal.yaml b/.github/ISSUE_TEMPLATE/change_proposal.yaml index 64ea39cecb..df7f1023c5 100644 --- a/.github/ISSUE_TEMPLATE/change_proposal.yaml +++ b/.github/ISSUE_TEMPLATE/change_proposal.yaml @@ -20,6 +20,7 @@ body: - area:aws - area:azure - area:browser + - area:cassandra - area:cicd - area:client - area:cloud @@ -35,6 +36,7 @@ body: - area:disk - area:dns - area:dotnet + - area:elasticsearch - area:error - area:exception - area:faas diff --git a/docs/attributes-registry/README.md b/docs/attributes-registry/README.md index 9f40561d47..59bf8d7426 100644 --- a/docs/attributes-registry/README.md +++ b/docs/attributes-registry/README.md @@ -38,6 +38,7 @@ Currently, the following namespaces exist: - [AWS](aws.md) - [Azure](azure.md) - [Browser](browser.md) +- [Cassandra](cassandra.md) - [CICD](cicd.md) - [Client](client.md) - [Cloud](cloud.md) @@ -53,6 +54,7 @@ Currently, the following namespaces exist: - [Disk](disk.md) - [DNS](dns.md) - [Dotnet](dotnet.md) +- [Elasticsearch](elasticsearch.md) - [Enduser](enduser.md) - [Error](error.md) - [Event](event.md) diff --git a/docs/attributes-registry/aws.md b/docs/attributes-registry/aws.md index 5ccb0e33b6..bfb309ca35 100644 --- a/docs/attributes-registry/aws.md +++ b/docs/attributes-registry/aws.md @@ -16,7 +16,7 @@ ## General AWS Attributes -This document defines generic attributes for AWS services. +This section defines generic attributes for AWS services. | Attribute | Type | Description | Examples | Stability | |---|---|---|---|---| diff --git a/docs/attributes-registry/azure.md b/docs/attributes-registry/azure.md index 2ebfa58cfc..080b240f03 100644 --- a/docs/attributes-registry/azure.md +++ b/docs/attributes-registry/azure.md @@ -6,11 +6,51 @@ # Azure -## Azure SDK Attributes +- [Azure Client Library Attributes](#azure-client-library-attributes) +- [Azure Cosmos DB Attributes](#azure-cosmos-db-attributes) -This document defines generic attributes for Azure SDK. +## Azure Client Library Attributes + +This section defines generic attributes used by Azure Client Libraries. | Attribute | Type | Description | Examples | Stability | |---|---|---|---|---| | `az.namespace` | string | [Azure Resource Provider Namespace](https://learn.microsoft.com/azure/azure-resource-manager/management/azure-services-resource-providers) as recognized by the client. | `Microsoft.Storage`; `Microsoft.KeyVault`; `Microsoft.ServiceBus` | ![Experimental](https://img.shields.io/badge/-experimental-blue) | | `az.service_request_id` | string | The unique identifier of the service request. It's generated by the Azure service and returned with the response. | `00000000-0000-0000-0000-000000000000` | ![Experimental](https://img.shields.io/badge/-experimental-blue) | +| `azure.client.id` | string | The unique identifier of the client instance. | `3ba4827d-4422-483f-b59f-85b74211c11d`; `storage-client-1` | ![Experimental](https://img.shields.io/badge/-experimental-blue) | + +## Azure Cosmos DB Attributes + +This section defines attributes for Azure Cosmos DB. + +| Attribute | Type | Description | Examples | Stability | +|---|---|---|---|---| +| `azure.cosmosdb.connection.mode` | string | Cosmos client connection mode. | `gateway`; `direct` | ![Experimental](https://img.shields.io/badge/-experimental-blue) | +| `azure.cosmosdb.consistency.level` | string | Account or request [consistency level](https://learn.microsoft.com/azure/cosmos-db/consistency-levels). | `Eventual`; `ConsistentPrefix`; `BoundedStaleness`; `Strong`; `Session` | ![Experimental](https://img.shields.io/badge/-experimental-blue) | +| `azure.cosmosdb.operation.contacted_regions` | string[] | 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. [1] | `["North Central US", "Australia East", "Australia Southeast"]` | ![Experimental](https://img.shields.io/badge/-experimental-blue) | +| `azure.cosmosdb.operation.request_charge` | double | The number of request units consumed by the operation. | `46.18`; `1.0` | ![Experimental](https://img.shields.io/badge/-experimental-blue) | +| `azure.cosmosdb.request.body.size` | int | Request payload size in bytes. | | ![Experimental](https://img.shields.io/badge/-experimental-blue) | +| `azure.cosmosdb.response.sub_status_code` | int | Cosmos DB sub status code. | `1000`; `1002` | ![Experimental](https://img.shields.io/badge/-experimental-blue) | + +**[1] `azure.cosmosdb.operation.contacted_regions`:** 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) + +--- + +`azure.cosmosdb.connection.mode` has the following list of well-known values. If one of them applies, then the respective value MUST be used; otherwise, a custom value MAY be used. + +| Value | Description | Stability | +|---|---|---| +| `direct` | Direct connection. | ![Experimental](https://img.shields.io/badge/-experimental-blue) | +| `gateway` | Gateway (HTTP) connection. | ![Experimental](https://img.shields.io/badge/-experimental-blue) | + +--- + +`azure.cosmosdb.consistency.level` has the following list of well-known values. If one of them applies, then the respective value MUST be used; otherwise, a custom value MAY be used. + +| Value | Description | Stability | +|---|---|---| +| `BoundedStaleness` | bounded_staleness | ![Experimental](https://img.shields.io/badge/-experimental-blue) | +| `ConsistentPrefix` | consistent_prefix | ![Experimental](https://img.shields.io/badge/-experimental-blue) | +| `Eventual` | eventual | ![Experimental](https://img.shields.io/badge/-experimental-blue) | +| `Session` | session | ![Experimental](https://img.shields.io/badge/-experimental-blue) | +| `Strong` | strong | ![Experimental](https://img.shields.io/badge/-experimental-blue) | diff --git a/docs/attributes-registry/cassandra.md b/docs/attributes-registry/cassandra.md new file mode 100644 index 0000000000..03c591ab03 --- /dev/null +++ b/docs/attributes-registry/cassandra.md @@ -0,0 +1,38 @@ + + + + + +# Cassandra + +## Cassandra Attributes + +This section defines attributes for Cassandra. + +| Attribute | Type | Description | Examples | Stability | +|---|---|---|---|---| +| `cassandra.consistency.level` | string | The consistency level of the query. Based on consistency values from [CQL](https://docs.datastax.com/en/cassandra-oss/3.0/cassandra/dml/dmlConfigConsistency.html). | `all`; `each_quorum`; `quorum` | ![Experimental](https://img.shields.io/badge/-experimental-blue) | +| `cassandra.coordinator.dc` | string | The data center of the coordinating node for a query. | `us-west-2` | ![Experimental](https://img.shields.io/badge/-experimental-blue) | +| `cassandra.coordinator.id` | string | The ID of the coordinating node for a query. | `be13faa2-8574-4d71-926d-27f16cf8a7af` | ![Experimental](https://img.shields.io/badge/-experimental-blue) | +| `cassandra.page.size` | int | The fetch size used for paging, i.e. how many rows will be returned at once. | `5000` | ![Experimental](https://img.shields.io/badge/-experimental-blue) | +| `cassandra.query.idempotent` | boolean | Whether or not the query is idempotent. | | ![Experimental](https://img.shields.io/badge/-experimental-blue) | +| `cassandra.speculative_execution.count` | int | The number of times a query was speculatively executed. Not set or `0` if the query was not executed speculatively. | `0`; `2` | ![Experimental](https://img.shields.io/badge/-experimental-blue) | + +--- + +`cassandra.consistency.level` has the following list of well-known values. If one of them applies, then the respective value MUST be used; otherwise, a custom value MAY be used. + +| Value | Description | Stability | +|---|---|---| +| `all` | all | ![Experimental](https://img.shields.io/badge/-experimental-blue) | +| `any` | any | ![Experimental](https://img.shields.io/badge/-experimental-blue) | +| `each_quorum` | each_quorum | ![Experimental](https://img.shields.io/badge/-experimental-blue) | +| `local_one` | local_one | ![Experimental](https://img.shields.io/badge/-experimental-blue) | +| `local_quorum` | local_quorum | ![Experimental](https://img.shields.io/badge/-experimental-blue) | +| `local_serial` | local_serial | ![Experimental](https://img.shields.io/badge/-experimental-blue) | +| `one` | one | ![Experimental](https://img.shields.io/badge/-experimental-blue) | +| `quorum` | quorum | ![Experimental](https://img.shields.io/badge/-experimental-blue) | +| `serial` | serial | ![Experimental](https://img.shields.io/badge/-experimental-blue) | +| `three` | three | ![Experimental](https://img.shields.io/badge/-experimental-blue) | +| `two` | two | ![Experimental](https://img.shields.io/badge/-experimental-blue) | diff --git a/docs/attributes-registry/db.md b/docs/attributes-registry/db.md index 76bebb23a1..fbd8afb950 100644 --- a/docs/attributes-registry/db.md +++ b/docs/attributes-registry/db.md @@ -7,9 +7,6 @@ # DB - [General Database Attributes](#general-database-attributes) -- [Cassandra Attributes](#cassandra-attributes) -- [Azure Cosmos DB Attributes](#azure-cosmos-db-attributes) -- [Elasticsearch Attributes](#elasticsearch-attributes) - [Deprecated Database Attributes](#deprecated-database-attributes) - [Deprecated Database Metrics](#deprecated-database-metrics) @@ -30,7 +27,7 @@ This group defines the attributes used to describe telemetry in the context of d | `db.query.text` | string | The database query being executed. [7] | `SELECT * FROM wuser_table where username = ?`; `SET mykey ?` | ![Release Candidate](https://img.shields.io/badge/-rc-mediumorchid) | | `db.response.returned_rows` | int | Number of rows returned by the operation. | `10`; `30`; `1000` | ![Experimental](https://img.shields.io/badge/-experimental-blue) | | `db.response.status_code` | string | Database response status code. [8] | `102`; `ORA-17002`; `08P01`; `404` | ![Release Candidate](https://img.shields.io/badge/-rc-mediumorchid) | -| `db.system` | string | The database management system (DBMS) product as identified by the client instrumentation. [9] | `other_sql`; `adabas`; `cache` | ![Release Candidate](https://img.shields.io/badge/-rc-mediumorchid) | +| `db.system.name` | string | The database management system (DBMS) product as identified by the client instrumentation. [9] | `other_sql`; `softwareag.adabas`; `actian.ingres` | ![Release Candidate](https://img.shields.io/badge/-rc-mediumorchid) | **[1] `db.collection.name`:** It is RECOMMENDED to capture the value as provided by the application without attempting to do any case normalization. @@ -70,7 +67,7 @@ Even though parameterized query text can potentially have sensitive data, by usi **[8] `db.response.status_code`:** The status code returned by the database. 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 database systems SHOULD document what `db.response.status_code` means in the context of that system. -**[9] `db.system`:** The actual DBMS may differ from the one identified by the client. For example, when using PostgreSQL client libraries to connect to a CockroachDB, the `db.system` is set to `postgresql` based on the instrumentation's best knowledge. +**[9] `db.system.name`:** The actual DBMS may differ from the one identified by the client. For example, when using PostgreSQL client libraries to connect to a CockroachDB, the `db.system.name` is set to `postgresql` based on the instrumentation's best knowledge. --- @@ -83,72 +80,91 @@ Semantic conventions for individual database systems SHOULD document what `db.re --- -`db.system` has the following list of well-known values. If one of them applies, then the respective value MUST be used; otherwise, a custom value MAY be used. +`db.system.name` has the following list of well-known values. If one of them applies, then the respective value MUST be used; otherwise, a custom value MAY be used. | Value | Description | Stability | |---|---|---| -| `adabas` | Adabas (Adaptable Database System) | ![Experimental](https://img.shields.io/badge/-experimental-blue) | -| `cassandra` | Apache Cassandra | ![Experimental](https://img.shields.io/badge/-experimental-blue) | -| `clickhouse` | ClickHouse | ![Experimental](https://img.shields.io/badge/-experimental-blue) | -| `cockroachdb` | CockroachDB | ![Experimental](https://img.shields.io/badge/-experimental-blue) | -| `cosmosdb` | Microsoft Azure Cosmos DB | ![Experimental](https://img.shields.io/badge/-experimental-blue) | -| `couchbase` | Couchbase | ![Experimental](https://img.shields.io/badge/-experimental-blue) | -| `couchdb` | CouchDB | ![Experimental](https://img.shields.io/badge/-experimental-blue) | -| `db2` | IBM Db2 | ![Experimental](https://img.shields.io/badge/-experimental-blue) | -| `derby` | Apache Derby | ![Experimental](https://img.shields.io/badge/-experimental-blue) | -| `dynamodb` | Amazon DynamoDB | ![Experimental](https://img.shields.io/badge/-experimental-blue) | -| `edb` | EnterpriseDB | ![Experimental](https://img.shields.io/badge/-experimental-blue) | -| `elasticsearch` | Elasticsearch | ![Experimental](https://img.shields.io/badge/-experimental-blue) | -| `filemaker` | FileMaker | ![Experimental](https://img.shields.io/badge/-experimental-blue) | -| `firebird` | Firebird | ![Experimental](https://img.shields.io/badge/-experimental-blue) | -| `geode` | Apache Geode | ![Experimental](https://img.shields.io/badge/-experimental-blue) | -| `h2` | H2 | ![Experimental](https://img.shields.io/badge/-experimental-blue) | -| `hanadb` | SAP HANA | ![Experimental](https://img.shields.io/badge/-experimental-blue) | -| `hbase` | Apache HBase | ![Experimental](https://img.shields.io/badge/-experimental-blue) | -| `hive` | Apache Hive | ![Experimental](https://img.shields.io/badge/-experimental-blue) | -| `hsqldb` | HyperSQL DataBase | ![Experimental](https://img.shields.io/badge/-experimental-blue) | -| `influxdb` | InfluxDB | ![Experimental](https://img.shields.io/badge/-experimental-blue) | -| `informix` | Informix | ![Experimental](https://img.shields.io/badge/-experimental-blue) | -| `ingres` | Ingres | ![Experimental](https://img.shields.io/badge/-experimental-blue) | -| `instantdb` | InstantDB | ![Experimental](https://img.shields.io/badge/-experimental-blue) | -| `interbase` | InterBase | ![Experimental](https://img.shields.io/badge/-experimental-blue) | -| `intersystems_cache` | InterSystems Caché | ![Experimental](https://img.shields.io/badge/-experimental-blue) | -| `mariadb` | MariaDB (This value has stability level RELEASE CANDIDATE) | ![Release Candidate](https://img.shields.io/badge/-rc-mediumorchid) | -| `maxdb` | SAP MaxDB | ![Experimental](https://img.shields.io/badge/-experimental-blue) | -| `memcached` | Memcached | ![Experimental](https://img.shields.io/badge/-experimental-blue) | -| `mongodb` | MongoDB | ![Experimental](https://img.shields.io/badge/-experimental-blue) | -| `mssql` | Microsoft SQL Server (This value has stability level RELEASE CANDIDATE) | ![Release Candidate](https://img.shields.io/badge/-rc-mediumorchid) | -| `mysql` | MySQL (This value has stability level RELEASE CANDIDATE) | ![Release Candidate](https://img.shields.io/badge/-rc-mediumorchid) | -| `neo4j` | Neo4j | ![Experimental](https://img.shields.io/badge/-experimental-blue) | -| `netezza` | Netezza | ![Experimental](https://img.shields.io/badge/-experimental-blue) | -| `opensearch` | OpenSearch | ![Experimental](https://img.shields.io/badge/-experimental-blue) | -| `oracle` | Oracle Database | ![Experimental](https://img.shields.io/badge/-experimental-blue) | -| `other_sql` | Some other SQL database. Fallback only. See notes. | ![Experimental](https://img.shields.io/badge/-experimental-blue) | -| `pervasive` | Pervasive PSQL | ![Experimental](https://img.shields.io/badge/-experimental-blue) | -| `pointbase` | PointBase | ![Experimental](https://img.shields.io/badge/-experimental-blue) | -| `postgresql` | PostgreSQL (This value has stability level RELEASE CANDIDATE) | ![Release Candidate](https://img.shields.io/badge/-rc-mediumorchid) | -| `progress` | Progress Database | ![Experimental](https://img.shields.io/badge/-experimental-blue) | -| `redis` | Redis | ![Experimental](https://img.shields.io/badge/-experimental-blue) | -| `redshift` | Amazon Redshift | ![Experimental](https://img.shields.io/badge/-experimental-blue) | -| `spanner` | Cloud Spanner | ![Experimental](https://img.shields.io/badge/-experimental-blue) | -| `sqlite` | SQLite | ![Experimental](https://img.shields.io/badge/-experimental-blue) | -| `sybase` | Sybase | ![Experimental](https://img.shields.io/badge/-experimental-blue) | -| `teradata` | Teradata | ![Experimental](https://img.shields.io/badge/-experimental-blue) | -| `trino` | Trino | ![Experimental](https://img.shields.io/badge/-experimental-blue) | -| `vertica` | Vertica | ![Experimental](https://img.shields.io/badge/-experimental-blue) | +| `actian.ingres` | [Actian Ingres](https://www.actian.com/databases/ingres/) | ![Experimental](https://img.shields.io/badge/-experimental-blue) | +| `aws.dynamodb` | [Amazon DynamoDB](https://aws.amazon.com/pm/dynamodb/) | ![Experimental](https://img.shields.io/badge/-experimental-blue) | +| `aws.redshift` | [Amazon Redshift](https://aws.amazon.com/redshift/) | ![Experimental](https://img.shields.io/badge/-experimental-blue) | +| `azure.cosmosdb` | [Azure Cosmos DB](https://learn.microsoft.com/azure/cosmos-db) | ![Experimental](https://img.shields.io/badge/-experimental-blue) | +| `cassandra` | [Apache Cassandra](https://cassandra.apache.org/) | ![Experimental](https://img.shields.io/badge/-experimental-blue) | +| `clickhouse` | [ClickHouse](https://clickhouse.com/) | ![Experimental](https://img.shields.io/badge/-experimental-blue) | +| `cockroachdb` | [CockroachDB](https://www.cockroachlabs.com/) | ![Experimental](https://img.shields.io/badge/-experimental-blue) | +| `couchbase` | [Couchbase](https://www.couchbase.com/) | ![Experimental](https://img.shields.io/badge/-experimental-blue) | +| `couchdb` | [Apache CouchDB](https://couchdb.apache.org/) | ![Experimental](https://img.shields.io/badge/-experimental-blue) | +| `derby` | [Apache Derby](https://db.apache.org/derby/) | ![Experimental](https://img.shields.io/badge/-experimental-blue) | +| `elasticsearch` | [Elasticsearch](https://www.elastic.co/elasticsearch) | ![Experimental](https://img.shields.io/badge/-experimental-blue) | +| `firebirdsql` | [Firebird](https://www.firebirdsql.org/) | ![Experimental](https://img.shields.io/badge/-experimental-blue) | +| `gcp.spanner` | [Google Cloud Spanner](https://cloud.google.com/spanner) | ![Experimental](https://img.shields.io/badge/-experimental-blue) | +| `geode` | [Apache Geode](https://geode.apache.org/) | ![Experimental](https://img.shields.io/badge/-experimental-blue) | +| `h2database` | [H2 Database](https://h2database.com/) | ![Experimental](https://img.shields.io/badge/-experimental-blue) | +| `hbase` | [Apache HBase](https://hbase.apache.org/) | ![Experimental](https://img.shields.io/badge/-experimental-blue) | +| `hive` | [Apache Hive](https://hive.apache.org/) | ![Experimental](https://img.shields.io/badge/-experimental-blue) | +| `hsqldb` | [HyperSQL Database](https://hsqldb.org/) | ![Experimental](https://img.shields.io/badge/-experimental-blue) | +| `ibm.db2` | [IBM Db2](https://www.ibm.com/db2) | ![Experimental](https://img.shields.io/badge/-experimental-blue) | +| `ibm.informix` | [IBM Informix](https://www.ibm.com/products/informix) | ![Experimental](https://img.shields.io/badge/-experimental-blue) | +| `ibm.netezza` | [IBM Netezza](https://www.ibm.com/products/netezza) | ![Experimental](https://img.shields.io/badge/-experimental-blue) | +| `influxdb` | [InfluxDB](https://www.influxdata.com/) | ![Experimental](https://img.shields.io/badge/-experimental-blue) | +| `instantdb` | [Instant](https://www.instantdb.com/) | ![Experimental](https://img.shields.io/badge/-experimental-blue) | +| `intersystems.cache` | [InterSystems Caché](https://www.intersystems.com/products/cache/) | ![Experimental](https://img.shields.io/badge/-experimental-blue) | +| `mariadb` | [MariaDB](https://mariadb.org/) | ![Release Candidate](https://img.shields.io/badge/-rc-mediumorchid) | +| `memcached` | [Memcached](https://memcached.org/) | ![Experimental](https://img.shields.io/badge/-experimental-blue) | +| `microsoft.sql_server` | [Microsoft SQL Server](https://www.microsoft.com/sql-server) | ![Release Candidate](https://img.shields.io/badge/-rc-mediumorchid) | +| `mongodb` | [MongoDB](https://www.mongodb.com/) | ![Experimental](https://img.shields.io/badge/-experimental-blue) | +| `mysql` | [MySQL](https://www.mysql.com/) | ![Release Candidate](https://img.shields.io/badge/-rc-mediumorchid) | +| `neo4j` | [Neo4j](https://neo4j.com/) | ![Experimental](https://img.shields.io/badge/-experimental-blue) | +| `opensearch` | [OpenSearch](https://opensearch.org/) | ![Experimental](https://img.shields.io/badge/-experimental-blue) | +| `oracle.db` | [Oracle Database](https://www.oracle.com/database/) | ![Experimental](https://img.shields.io/badge/-experimental-blue) | +| `other_sql` | Some other SQL database. Fallback only. | ![Experimental](https://img.shields.io/badge/-experimental-blue) | +| `postgresql` | [PostgreSQL](https://www.postgresql.org/) | ![Release Candidate](https://img.shields.io/badge/-rc-mediumorchid) | +| `redis` | [Redis](https://redis.io/) | ![Experimental](https://img.shields.io/badge/-experimental-blue) | +| `sap.hana` | [SAP HANA](https://www.sap.com/products/technology-platform/hana/what-is-sap-hana.html) | ![Experimental](https://img.shields.io/badge/-experimental-blue) | +| `sap.maxdb` | [SAP MaxDB](https://maxdb.sap.com/) | ![Experimental](https://img.shields.io/badge/-experimental-blue) | +| `softwareag.adabas` | [Adabas (Adaptable Database System)](https://documentation.softwareag.com/?pf=adabas) | ![Experimental](https://img.shields.io/badge/-experimental-blue) | +| `sqlite` | [SQLite](https://www.sqlite.org/) | ![Experimental](https://img.shields.io/badge/-experimental-blue) | +| `teradata` | [Teradata](https://www.teradata.com/) | ![Experimental](https://img.shields.io/badge/-experimental-blue) | +| `trino` | [Trino](https://trino.io/) | ![Experimental](https://img.shields.io/badge/-experimental-blue) | -## Cassandra Attributes +## Deprecated Database Attributes -This group defines attributes for Cassandra. +Describes deprecated database attributes. | Attribute | Type | Description | Examples | Stability | |---|---|---|---|---| -| `db.cassandra.consistency_level` | string | The consistency level of the query. Based on consistency values from [CQL](https://docs.datastax.com/en/cassandra-oss/3.0/cassandra/dml/dmlConfigConsistency.html). | `all`; `each_quorum`; `quorum` | ![Experimental](https://img.shields.io/badge/-experimental-blue) | -| `db.cassandra.coordinator.dc` | string | The data center of the coordinating node for a query. | `us-west-2` | ![Experimental](https://img.shields.io/badge/-experimental-blue) | -| `db.cassandra.coordinator.id` | string | The ID of the coordinating node for a query. | `be13faa2-8574-4d71-926d-27f16cf8a7af` | ![Experimental](https://img.shields.io/badge/-experimental-blue) | -| `db.cassandra.idempotence` | boolean | Whether or not the query is idempotent. | | ![Experimental](https://img.shields.io/badge/-experimental-blue) | -| `db.cassandra.page_size` | int | The fetch size used for paging, i.e. how many rows will be returned at once. | `5000` | ![Experimental](https://img.shields.io/badge/-experimental-blue) | -| `db.cassandra.speculative_execution_count` | int | The number of times a query was speculatively executed. Not set or `0` if the query was not executed speculatively. | `0`; `2` | ![Experimental](https://img.shields.io/badge/-experimental-blue) | +| `db.cassandra.consistency_level` | string | Deprecated, use `cassandra.consistency.level` instead. | `all`; `each_quorum`; `quorum` | ![Deprecated](https://img.shields.io/badge/-deprecated-red)
Replaced by `cassandra.consistency.level`. | +| `db.cassandra.coordinator.dc` | string | Deprecated, use `cassandra.coordinator.dc` instead. | `us-west-2` | ![Deprecated](https://img.shields.io/badge/-deprecated-red)
Replaced by `cassandra.coordinator.dc`. | +| `db.cassandra.coordinator.id` | string | Deprecated, use `cassandra.coordinator.id` instead. | `be13faa2-8574-4d71-926d-27f16cf8a7af` | ![Deprecated](https://img.shields.io/badge/-deprecated-red)
Replaced by `cassandra.coordinator.id`. | +| `db.cassandra.idempotence` | boolean | Deprecated, use `cassandra.query.idempotent` instead. | | ![Deprecated](https://img.shields.io/badge/-deprecated-red)
Replaced by `cassandra.query.idempotent`. | +| `db.cassandra.page_size` | int | Deprecated, use `cassandra.page.size` instead. | `5000` | ![Deprecated](https://img.shields.io/badge/-deprecated-red)
Replaced by `cassandra.page.size`. | +| `db.cassandra.speculative_execution_count` | int | Deprecated, use `cassandra.speculative_execution.count` instead. | `0`; `2` | ![Deprecated](https://img.shields.io/badge/-deprecated-red)
Replaced by `cassandra.speculative_execution.count`. | +| `db.cassandra.table` | string | Deprecated, use `db.collection.name` instead. | `mytable` | ![Deprecated](https://img.shields.io/badge/-deprecated-red)
Replaced by `db.collection.name`. | +| `db.connection_string` | string | Deprecated, use `server.address`, `server.port` attributes instead. | `Server=(localdb)\v11.0;Integrated Security=true;` | ![Deprecated](https://img.shields.io/badge/-deprecated-red)
Replaced by `server.address` and `server.port`. | +| `db.cosmosdb.client_id` | string | Deprecated, use `azure.client.id` instead. | `3ba4827d-4422-483f-b59f-85b74211c11d` | ![Deprecated](https://img.shields.io/badge/-deprecated-red)
Replaced by `azure.client.id`. | +| `db.cosmosdb.connection_mode` | string | Deprecated, use `azure.cosmosdb.connection.mode` instead. | `gateway`; `direct` | ![Deprecated](https://img.shields.io/badge/-deprecated-red)
Replaced by `azure.cosmosdb.connection.mode`. | +| `db.cosmosdb.consistency_level` | string | Deprecated, use `cosmosdb.consistency.level` instead. | `Eventual`; `ConsistentPrefix`; `BoundedStaleness`; `Strong`; `Session` | ![Deprecated](https://img.shields.io/badge/-deprecated-red)
Replaced by `azure.cosmosdb.consistency.level`. | +| `db.cosmosdb.container` | string | Deprecated, use `db.collection.name` instead. | `mytable` | ![Deprecated](https://img.shields.io/badge/-deprecated-red)
Replaced by `db.collection.name`. | +| `db.cosmosdb.operation_type` | string | Deprecated, no replacement at this time. | `batch`; `create`; `delete` | ![Deprecated](https://img.shields.io/badge/-deprecated-red)
No replacement at this time. | +| `db.cosmosdb.regions_contacted` | string[] | Deprecated, use `azure.cosmosdb.operation.contacted_regions` instead. | `["North Central US", "Australia East", "Australia Southeast"]` | ![Deprecated](https://img.shields.io/badge/-deprecated-red)
Replaced by `azure.cosmosdb.operation.contacted_regions`. | +| `db.cosmosdb.request_charge` | double | Deprecated, use `azure.cosmosdb.operation.request_charge` instead. | `46.18`; `1.0` | ![Deprecated](https://img.shields.io/badge/-deprecated-red)
Replaced by `azure.cosmosdb.operation.request_charge`. | +| `db.cosmosdb.request_content_length` | int | Deprecated, use `azure.cosmosdb.request.body.size` instead. | | ![Deprecated](https://img.shields.io/badge/-deprecated-red)
Replaced by `azure.cosmosdb.request.body.size`. | +| `db.cosmosdb.status_code` | int | Deprecated, use `db.response.status_code` instead. | `200`; `201` | ![Deprecated](https://img.shields.io/badge/-deprecated-red)
Replaced by `db.response.status_code`. | +| `db.cosmosdb.sub_status_code` | int | Deprecated, use `azure.cosmosdb.response.sub_status_code` instead. | `1000`; `1002` | ![Deprecated](https://img.shields.io/badge/-deprecated-red)
Replaced by `azure.cosmosdb.response.sub_status_code`. | +| `db.elasticsearch.cluster.name` | string | Deprecated, use `db.namespace` instead. | `e9106fc68e3044f0b1475b04bf4ffd5f` | ![Deprecated](https://img.shields.io/badge/-deprecated-red)
Replaced by `db.namespace`. | +| `db.elasticsearch.node.name` | string | Deprecated, use `elasticsearch.node.name` instead. | `instance-0000000001` | ![Deprecated](https://img.shields.io/badge/-deprecated-red)
Replaced by `elasticsearch.node.name`. | +| `db.elasticsearch.path_parts.` | string | Deprecated, use `db.operation.parameter` instead. | `db.elasticsearch.path_parts.index=test-index`; `db.elasticsearch.path_parts.doc_id=123` | ![Deprecated](https://img.shields.io/badge/-deprecated-red)
Replaced by `db.operation.parameter`. | +| `db.instance.id` | string | Deprecated, no general replacement at this time. For Elasticsearch, use `db.elasticsearch.node.name` instead. | `mysql-e26b99z.example.com` | ![Deprecated](https://img.shields.io/badge/-deprecated-red)
Deprecated, no general replacement at this time. For Elasticsearch, use `db.elasticsearch.node.name` instead. | +| `db.jdbc.driver_classname` | string | Removed, no replacement at this time. | `org.postgresql.Driver`; `com.microsoft.sqlserver.jdbc.SQLServerDriver` | ![Deprecated](https://img.shields.io/badge/-deprecated-red)
Removed as not used. | +| `db.mongodb.collection` | string | Deprecated, use `db.collection.name` instead. | `mytable` | ![Deprecated](https://img.shields.io/badge/-deprecated-red)
Replaced by `db.collection.name`. | +| `db.mssql.instance_name` | string | Deprecated, SQL Server instance is now populated as a part of `db.namespace` attribute. | `MSSQLSERVER` | ![Deprecated](https://img.shields.io/badge/-deprecated-red)
Deprecated, no replacement at this time. | +| `db.name` | string | Deprecated, use `db.namespace` instead. | `customers`; `main` | ![Deprecated](https://img.shields.io/badge/-deprecated-red)
Replaced by `db.namespace`. | +| `db.operation` | string | Deprecated, use `db.operation.name` instead. | `findAndModify`; `HMSET`; `SELECT` | ![Deprecated](https://img.shields.io/badge/-deprecated-red)
Replaced by `db.operation.name`. | +| `db.query.parameter.` | string | A query parameter used in `db.query.text`, with `` being the parameter name, and the attribute value being a string representation of the parameter value. | `someval`; `55` | ![Deprecated](https://img.shields.io/badge/-deprecated-red)
Replaced by `db.operation.parameter`. | +| `db.redis.database_index` | int | Deprecated, use `db.namespace` instead. | `0`; `1`; `15` | ![Deprecated](https://img.shields.io/badge/-deprecated-red)
Replaced by `db.namespace`. | +| `db.sql.table` | string | Deprecated, use `db.collection.name` instead. | `mytable` | ![Deprecated](https://img.shields.io/badge/-deprecated-red)
Replaced by `db.collection.name`. | +| `db.statement` | string | The database statement being executed. | `SELECT * FROM wuser_table`; `SET mykey "WuValue"` | ![Deprecated](https://img.shields.io/badge/-deprecated-red)
Replaced by `db.query.text`. | +| `db.system` | string | Deprecated, use `db.system.name` instead. | `other_sql`; `adabas`; `cache` | ![Deprecated](https://img.shields.io/badge/-deprecated-red)
Replaced by `db.system.name`. | +| `db.user` | string | Deprecated, no replacement at this time. | `readonly_user`; `reporting_user` | ![Deprecated](https://img.shields.io/badge/-deprecated-red)
No replacement at this time. | --- @@ -168,22 +184,6 @@ This group defines attributes for Cassandra. | `three` | three | ![Experimental](https://img.shields.io/badge/-experimental-blue) | | `two` | two | ![Experimental](https://img.shields.io/badge/-experimental-blue) | -## Azure Cosmos DB Attributes - -This group defines attributes for Azure Cosmos DB. - -| Attribute | Type | Description | Examples | Stability | -|---|---|---|---|---| -| `db.cosmosdb.client_id` | string | Unique Cosmos client instance id. | `3ba4827d-4422-483f-b59f-85b74211c11d` | ![Experimental](https://img.shields.io/badge/-experimental-blue) | -| `db.cosmosdb.connection_mode` | string | Cosmos client connection mode. | `gateway`; `direct` | ![Experimental](https://img.shields.io/badge/-experimental-blue) | -| `db.cosmosdb.consistency_level` | string | Account or request [consistency level](https://learn.microsoft.com/azure/cosmos-db/consistency-levels). | `Eventual`; `ConsistentPrefix`; `BoundedStaleness`; `Strong`; `Session` | ![Experimental](https://img.shields.io/badge/-experimental-blue) | -| `db.cosmosdb.regions_contacted` | string[] | 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. [10] | `["North Central US", "Australia East", "Australia Southeast"]` | ![Experimental](https://img.shields.io/badge/-experimental-blue) | -| `db.cosmosdb.request_charge` | double | Request units consumed for the operation. | `46.18`; `1.0` | ![Experimental](https://img.shields.io/badge/-experimental-blue) | -| `db.cosmosdb.request_content_length` | int | Request payload size in bytes. | | ![Experimental](https://img.shields.io/badge/-experimental-blue) | -| `db.cosmosdb.sub_status_code` | int | Cosmos DB sub status code. | `1000`; `1002` | ![Experimental](https://img.shields.io/badge/-experimental-blue) | - -**[10] `db.cosmosdb.regions_contacted`:** 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) - --- `db.cosmosdb.connection_mode` has the following list of well-known values. If one of them applies, then the respective value MUST be used; otherwise, a custom value MAY be used. @@ -205,41 +205,6 @@ This group defines attributes for Azure Cosmos DB. | `Session` | session | ![Experimental](https://img.shields.io/badge/-experimental-blue) | | `Strong` | strong | ![Experimental](https://img.shields.io/badge/-experimental-blue) | -## Elasticsearch Attributes - -This group defines attributes for Elasticsearch. - -| Attribute | Type | Description | Examples | Stability | -|---|---|---|---|---| -| `db.elasticsearch.node.name` | string | Represents the human-readable identifier of the node/instance to which a request was routed. | `instance-0000000001` | ![Experimental](https://img.shields.io/badge/-experimental-blue) | -| `db.elasticsearch.path_parts.` | string | A dynamic value in the url path. [11] | `db.elasticsearch.path_parts.index=test-index`; `db.elasticsearch.path_parts.doc_id=123` | ![Experimental](https://img.shields.io/badge/-experimental-blue) | - -**[11] `db.elasticsearch.path_parts`:** Many Elasticsearch url paths allow dynamic values. These SHOULD be recorded in span attributes in the format `db.elasticsearch.path_parts.`, where `` is the url path part name. The implementation SHOULD reference the [elasticsearch schema](https://raw.githubusercontent.com/elastic/elasticsearch-specification/main/output/schema/schema.json) in order to map the path part values to their names. - -## Deprecated Database Attributes - -"Describes deprecated db attributes." - -| Attribute | Type | Description | Examples | Stability | -|---|---|---|---|---| -| `db.cassandra.table` | string | Deprecated, use `db.collection.name` instead. | `mytable` | ![Deprecated](https://img.shields.io/badge/-deprecated-red)
Replaced by `db.collection.name`. | -| `db.connection_string` | string | Deprecated, use `server.address`, `server.port` attributes instead. | `Server=(localdb)\v11.0;Integrated Security=true;` | ![Deprecated](https://img.shields.io/badge/-deprecated-red)
Replaced by `server.address` and `server.port`. | -| `db.cosmosdb.container` | string | Deprecated, use `db.collection.name` instead. | `mytable` | ![Deprecated](https://img.shields.io/badge/-deprecated-red)
Replaced by `db.collection.name`. | -| `db.cosmosdb.operation_type` | string | Deprecated, no replacement at this time. | `batch`; `create`; `delete` | ![Deprecated](https://img.shields.io/badge/-deprecated-red)
No replacement at this time. | -| `db.cosmosdb.status_code` | int | Deprecated, use `db.response.status_code` instead. | `200`; `201` | ![Deprecated](https://img.shields.io/badge/-deprecated-red)
Replaced by `db.response.status_code`. | -| `db.elasticsearch.cluster.name` | string | Deprecated, use `db.namespace` instead. | `e9106fc68e3044f0b1475b04bf4ffd5f` | ![Deprecated](https://img.shields.io/badge/-deprecated-red)
Replaced by `db.namespace`. | -| `db.instance.id` | string | Deprecated, no general replacement at this time. For Elasticsearch, use `db.elasticsearch.node.name` instead. | `mysql-e26b99z.example.com` | ![Deprecated](https://img.shields.io/badge/-deprecated-red)
Deprecated, no general replacement at this time. For Elasticsearch, use `db.elasticsearch.node.name` instead. | -| `db.jdbc.driver_classname` | string | Removed, no replacement at this time. | `org.postgresql.Driver`; `com.microsoft.sqlserver.jdbc.SQLServerDriver` | ![Deprecated](https://img.shields.io/badge/-deprecated-red)
Removed as not used. | -| `db.mongodb.collection` | string | Deprecated, use `db.collection.name` instead. | `mytable` | ![Deprecated](https://img.shields.io/badge/-deprecated-red)
Replaced by `db.collection.name`. | -| `db.mssql.instance_name` | string | Deprecated, SQL Server instance is now populated as a part of `db.namespace` attribute. | `MSSQLSERVER` | ![Deprecated](https://img.shields.io/badge/-deprecated-red)
Deprecated, no replacement at this time. | -| `db.name` | string | Deprecated, use `db.namespace` instead. | `customers`; `main` | ![Deprecated](https://img.shields.io/badge/-deprecated-red)
Replaced by `db.namespace`. | -| `db.operation` | string | Deprecated, use `db.operation.name` instead. | `findAndModify`; `HMSET`; `SELECT` | ![Deprecated](https://img.shields.io/badge/-deprecated-red)
Replaced by `db.operation.name`. | -| `db.query.parameter.` | string | A query parameter used in `db.query.text`, with `` being the parameter name, and the attribute value being a string representation of the parameter value. | `someval`; `55` | ![Deprecated](https://img.shields.io/badge/-deprecated-red)
Replaced by `db.operation.parameter`. | -| `db.redis.database_index` | int | Deprecated, use `db.namespace` instead. | `0`; `1`; `15` | ![Deprecated](https://img.shields.io/badge/-deprecated-red)
Replaced by `db.namespace`. | -| `db.sql.table` | string | Deprecated, use `db.collection.name` instead. | `mytable` | ![Deprecated](https://img.shields.io/badge/-deprecated-red)
Replaced by `db.collection.name`. | -| `db.statement` | string | The database statement being executed. | `SELECT * FROM wuser_table`; `SET mykey "WuValue"` | ![Deprecated](https://img.shields.io/badge/-deprecated-red)
Replaced by `db.query.text`. | -| `db.user` | string | Deprecated, no replacement at this time. | `readonly_user`; `reporting_user` | ![Deprecated](https://img.shields.io/badge/-deprecated-red)
No replacement at this time. | - --- `db.cosmosdb.operation_type` has the following list of well-known values. If one of them applies, then the respective value MUST be used; otherwise, a custom value MAY be used. @@ -262,6 +227,62 @@ This group defines attributes for Elasticsearch. | `replace` | replace | ![Experimental](https://img.shields.io/badge/-experimental-blue) | | `upsert` | upsert | ![Experimental](https://img.shields.io/badge/-experimental-blue) | +--- + +`db.system` has the following list of well-known values. If one of them applies, then the respective value MUST be used; otherwise, a custom value MAY be used. + +| Value | Description | Stability | +|---|---|---| +| `adabas` | Adabas (Adaptable Database System) | ![Experimental](https://img.shields.io/badge/-experimental-blue) | +| `cassandra` | Apache Cassandra | ![Experimental](https://img.shields.io/badge/-experimental-blue) | +| `clickhouse` | ClickHouse | ![Experimental](https://img.shields.io/badge/-experimental-blue) | +| `cockroachdb` | CockroachDB | ![Experimental](https://img.shields.io/badge/-experimental-blue) | +| `cosmosdb` | Microsoft Azure Cosmos DB | ![Experimental](https://img.shields.io/badge/-experimental-blue) | +| `couchbase` | Couchbase | ![Experimental](https://img.shields.io/badge/-experimental-blue) | +| `couchdb` | CouchDB | ![Experimental](https://img.shields.io/badge/-experimental-blue) | +| `db2` | IBM Db2 | ![Experimental](https://img.shields.io/badge/-experimental-blue) | +| `derby` | Apache Derby | ![Experimental](https://img.shields.io/badge/-experimental-blue) | +| `dynamodb` | Amazon DynamoDB | ![Experimental](https://img.shields.io/badge/-experimental-blue) | +| `edb` | EnterpriseDB | ![Experimental](https://img.shields.io/badge/-experimental-blue) | +| `elasticsearch` | Elasticsearch | ![Experimental](https://img.shields.io/badge/-experimental-blue) | +| `filemaker` | FileMaker | ![Experimental](https://img.shields.io/badge/-experimental-blue) | +| `firebird` | Firebird | ![Experimental](https://img.shields.io/badge/-experimental-blue) | +| `geode` | Apache Geode | ![Experimental](https://img.shields.io/badge/-experimental-blue) | +| `h2` | H2 | ![Experimental](https://img.shields.io/badge/-experimental-blue) | +| `hanadb` | SAP HANA | ![Experimental](https://img.shields.io/badge/-experimental-blue) | +| `hbase` | Apache HBase | ![Experimental](https://img.shields.io/badge/-experimental-blue) | +| `hive` | Apache Hive | ![Experimental](https://img.shields.io/badge/-experimental-blue) | +| `hsqldb` | HyperSQL DataBase | ![Experimental](https://img.shields.io/badge/-experimental-blue) | +| `influxdb` | InfluxDB | ![Experimental](https://img.shields.io/badge/-experimental-blue) | +| `informix` | Informix | ![Experimental](https://img.shields.io/badge/-experimental-blue) | +| `ingres` | Ingres | ![Experimental](https://img.shields.io/badge/-experimental-blue) | +| `instantdb` | InstantDB | ![Experimental](https://img.shields.io/badge/-experimental-blue) | +| `interbase` | InterBase | ![Experimental](https://img.shields.io/badge/-experimental-blue) | +| `intersystems_cache` | InterSystems Caché | ![Experimental](https://img.shields.io/badge/-experimental-blue) | +| `mariadb` | MariaDB (This value has stability level RELEASE CANDIDATE) | ![Release Candidate](https://img.shields.io/badge/-rc-mediumorchid) | +| `maxdb` | SAP MaxDB | ![Experimental](https://img.shields.io/badge/-experimental-blue) | +| `memcached` | Memcached | ![Experimental](https://img.shields.io/badge/-experimental-blue) | +| `mongodb` | MongoDB | ![Experimental](https://img.shields.io/badge/-experimental-blue) | +| `mssql` | Microsoft SQL Server (This value has stability level RELEASE CANDIDATE) | ![Release Candidate](https://img.shields.io/badge/-rc-mediumorchid) | +| `mysql` | MySQL (This value has stability level RELEASE CANDIDATE) | ![Release Candidate](https://img.shields.io/badge/-rc-mediumorchid) | +| `neo4j` | Neo4j | ![Experimental](https://img.shields.io/badge/-experimental-blue) | +| `netezza` | Netezza | ![Experimental](https://img.shields.io/badge/-experimental-blue) | +| `opensearch` | OpenSearch | ![Experimental](https://img.shields.io/badge/-experimental-blue) | +| `oracle` | Oracle Database | ![Experimental](https://img.shields.io/badge/-experimental-blue) | +| `other_sql` | Some other SQL database. Fallback only. See notes. | ![Experimental](https://img.shields.io/badge/-experimental-blue) | +| `pervasive` | Pervasive PSQL | ![Experimental](https://img.shields.io/badge/-experimental-blue) | +| `pointbase` | PointBase | ![Experimental](https://img.shields.io/badge/-experimental-blue) | +| `postgresql` | PostgreSQL (This value has stability level RELEASE CANDIDATE) | ![Release Candidate](https://img.shields.io/badge/-rc-mediumorchid) | +| `progress` | Progress Database | ![Experimental](https://img.shields.io/badge/-experimental-blue) | +| `redis` | Redis | ![Experimental](https://img.shields.io/badge/-experimental-blue) | +| `redshift` | Amazon Redshift | ![Experimental](https://img.shields.io/badge/-experimental-blue) | +| `spanner` | Cloud Spanner | ![Experimental](https://img.shields.io/badge/-experimental-blue) | +| `sqlite` | SQLite | ![Experimental](https://img.shields.io/badge/-experimental-blue) | +| `sybase` | Sybase | ![Experimental](https://img.shields.io/badge/-experimental-blue) | +| `teradata` | Teradata | ![Experimental](https://img.shields.io/badge/-experimental-blue) | +| `trino` | Trino | ![Experimental](https://img.shields.io/badge/-experimental-blue) | +| `vertica` | Vertica | ![Experimental](https://img.shields.io/badge/-experimental-blue) | + ## Deprecated Database Metrics "Describes deprecated db metrics attributes." diff --git a/docs/attributes-registry/elasticsearch.md b/docs/attributes-registry/elasticsearch.md new file mode 100644 index 0000000000..b5b3a9580e --- /dev/null +++ b/docs/attributes-registry/elasticsearch.md @@ -0,0 +1,15 @@ + + + + + +# Elasticsearch + +## Elasticsearch Attributes + +This section defines attributes for Elasticsearch. + +| Attribute | Type | Description | Examples | Stability | +|---|---|---|---|---| +| `elasticsearch.node.name` | string | Represents the human-readable identifier of the node/instance to which a request was routed. | `instance-0000000001` | ![Experimental](https://img.shields.io/badge/-experimental-blue) | diff --git a/docs/database/README.md b/docs/database/README.md index 488621a3d4..0208616e1d 100644 --- a/docs/database/README.md +++ b/docs/database/README.md @@ -47,12 +47,12 @@ Technology specific semantic conventions are defined for the following databases * [AWS DynamoDB](dynamodb.md): Semantic Conventions for *AWS DynamoDB*. * [Cassandra](cassandra.md): Semantic Conventions for *Cassandra*. -* [Cosmos DB](cosmosdb.md): Semantic Conventions for *Microsoft Cosmos DB*. +* [Azure Cosmos DB](cosmosdb.md): Semantic Conventions for *Azure Cosmos DB*. * [CouchDB](couchdb.md): Semantic Conventions for *CouchDB*. * [Elasticsearch](elasticsearch.md): Semantic Conventions for *Elasticsearch*. * [HBase](hbase.md): Semantic Conventions for *HBase*. * [MongoDB](mongodb.md): Semantic Conventions for *MongoDB*. -* [MSSQL](mssql.md): Semantic Conventions for *MSSQL*. +* [Microsoft SQL Server](mssql.md): Semantic Conventions for *Microsoft SQL Server*. * [Redis](redis.md): Semantic Conventions for *Redis*. * [SQL](sql.md): Semantic Conventions for *SQL* databases. diff --git a/docs/database/cassandra.md b/docs/database/cassandra.md index 7c493d00ed..2ca15fb248 100644 --- a/docs/database/cassandra.md +++ b/docs/database/cassandra.md @@ -19,7 +19,7 @@ The Semantic Conventions for [Cassandra](https://cassandra.apache.org/) extend a Spans representing calls to a Cassandra database adhere to the general [Semantic Conventions for Database Client Spans](database-spans.md). -`db.system` MUST be set to `"cassandra"` and SHOULD be provided **at span creation time**. +`db.system.name` MUST be set to `"cassandra"` and SHOULD be provided **at span creation time**. The following table outlines the span attributes applicable to Cassandra. @@ -38,12 +38,12 @@ The following table outlines the span attributes applicable to Cassandra. | [`db.response.status_code`](/docs/attributes-registry/db.md) | string | [Cassandra protocol error code](https://github.com/apache/cassandra/blob/cassandra-5.0/doc/native_protocol_v5.spec) represented as a string. [6] | `102`; `40020` | `Conditionally Required` [7] | ![Release Candidate](https://img.shields.io/badge/-rc-mediumorchid) | | [`error.type`](/docs/attributes-registry/error.md) | string | Describes a class of error the operation ended with. [8] | `timeout`; `java.net.UnknownHostException`; `server_certificate_invalid`; `500` | `Conditionally Required` If and only if the operation failed. | ![Stable](https://img.shields.io/badge/-stable-lightgreen) | | [`server.port`](/docs/attributes-registry/server.md) | int | Server port number. [9] | `80`; `8080`; `443` | `Conditionally Required` [10] | ![Stable](https://img.shields.io/badge/-stable-lightgreen) | -| [`db.cassandra.consistency_level`](/docs/attributes-registry/db.md) | string | The consistency level of the query. Based on consistency values from [CQL](https://docs.datastax.com/en/cassandra-oss/3.0/cassandra/dml/dmlConfigConsistency.html). | `all`; `each_quorum`; `quorum` | `Recommended` | ![Experimental](https://img.shields.io/badge/-experimental-blue) | -| [`db.cassandra.coordinator.dc`](/docs/attributes-registry/db.md) | string | The data center of the coordinating node for a query. | `us-west-2` | `Recommended` | ![Experimental](https://img.shields.io/badge/-experimental-blue) | -| [`db.cassandra.coordinator.id`](/docs/attributes-registry/db.md) | string | The ID of the coordinating node for a query. | `be13faa2-8574-4d71-926d-27f16cf8a7af` | `Recommended` | ![Experimental](https://img.shields.io/badge/-experimental-blue) | -| [`db.cassandra.idempotence`](/docs/attributes-registry/db.md) | boolean | Whether or not the query is idempotent. | | `Recommended` | ![Experimental](https://img.shields.io/badge/-experimental-blue) | -| [`db.cassandra.page_size`](/docs/attributes-registry/db.md) | int | The fetch size used for paging, i.e. how many rows will be returned at once. | `5000` | `Recommended` | ![Experimental](https://img.shields.io/badge/-experimental-blue) | -| [`db.cassandra.speculative_execution_count`](/docs/attributes-registry/db.md) | int | The number of times a query was speculatively executed. Not set or `0` if the query was not executed speculatively. | `0`; `2` | `Recommended` | ![Experimental](https://img.shields.io/badge/-experimental-blue) | +| [`cassandra.consistency.level`](/docs/attributes-registry/cassandra.md) | string | The consistency level of the query. Based on consistency values from [CQL](https://docs.datastax.com/en/cassandra-oss/3.0/cassandra/dml/dmlConfigConsistency.html). | `all`; `each_quorum`; `quorum` | `Recommended` | ![Experimental](https://img.shields.io/badge/-experimental-blue) | +| [`cassandra.coordinator.dc`](/docs/attributes-registry/cassandra.md) | string | The data center of the coordinating node for a query. | `us-west-2` | `Recommended` | ![Experimental](https://img.shields.io/badge/-experimental-blue) | +| [`cassandra.coordinator.id`](/docs/attributes-registry/cassandra.md) | string | The ID of the coordinating node for a query. | `be13faa2-8574-4d71-926d-27f16cf8a7af` | `Recommended` | ![Experimental](https://img.shields.io/badge/-experimental-blue) | +| [`cassandra.page.size`](/docs/attributes-registry/cassandra.md) | int | The fetch size used for paging, i.e. how many rows will be returned at once. | `5000` | `Recommended` | ![Experimental](https://img.shields.io/badge/-experimental-blue) | +| [`cassandra.query.idempotent`](/docs/attributes-registry/cassandra.md) | boolean | Whether or not the query is idempotent. | | `Recommended` | ![Experimental](https://img.shields.io/badge/-experimental-blue) | +| [`cassandra.speculative_execution.count`](/docs/attributes-registry/cassandra.md) | int | The number of times a query was speculatively executed. Not set or `0` if the query was not executed speculatively. | `0`; `2` | `Recommended` | ![Experimental](https://img.shields.io/badge/-experimental-blue) | | [`db.operation.batch.size`](/docs/attributes-registry/db.md) | int | The number of queries included in a batch operation. [11] | `2`; `3`; `4` | `Recommended` | ![Release Candidate](https://img.shields.io/badge/-rc-mediumorchid) | | [`db.query.summary`](/docs/attributes-registry/db.md) | string | Low cardinality representation of a database query text. [12] | `SELECT wuser_table`; `INSERT shipping_details SELECT orders`; `get user by id` | `Recommended` [13] | ![Release Candidate](https://img.shields.io/badge/-rc-mediumorchid) | | [`db.query.text`](/docs/attributes-registry/db.md) | string | The database query being executed. [14] | `SELECT * FROM wuser_table where username = ?`; `SET mykey ?` | `Recommended` [15] | ![Release Candidate](https://img.shields.io/badge/-rc-mediumorchid) | @@ -126,7 +126,7 @@ and SHOULD be provided **at span creation time** (if provided at all): --- -`db.cassandra.consistency_level` has the following list of well-known values. If one of them applies, then the respective value MUST be used; otherwise, a custom value MAY be used. +`cassandra.consistency.level` has the following list of well-known values. If one of them applies, then the respective value MUST be used; otherwise, a custom value MAY be used. | Value | Description | Stability | |---|---|---| diff --git a/docs/database/cosmosdb.md b/docs/database/cosmosdb.md index 5c2ad41dac..f74c18c687 100644 --- a/docs/database/cosmosdb.md +++ b/docs/database/cosmosdb.md @@ -15,8 +15,8 @@ linkTitle: Cosmos DB - [Metrics](#metrics) - [Metric: `db.client.operation.duration`](#metric-dbclientoperationduration) - [Metric: `db.client.response.returned_rows`](#metric-dbclientresponsereturned_rows) - - [Metric: `db.client.cosmosdb.operation.request_charge`](#metric-dbclientcosmosdboperationrequest_charge) - - [Metric: `db.client.cosmosdb.active_instance.count`](#metric-dbclientcosmosdbactive_instancecount) + - [Metric: `azure.cosmosdb.client.operation.request_charge`](#metric-azurecosmosdbclientoperationrequest_charge) + - [Metric: `azure.cosmosdb.client.active_instance.count`](#metric-azurecosmosdbclientactive_instancecount) @@ -32,9 +32,8 @@ Additional spans representing network calls may also be created depending on the The following table outlines the span attributes applicable to Cosmos DB. -`db.system` MUST be set to `"cosmosdb"` and SHOULD be provided **at span creation time**. +`db.system.name` MUST be set to `"azure.cosmosdb"` and SHOULD be provided **at span creation time**. - @@ -43,12 +42,12 @@ The following table outlines the span attributes applicable to Cosmos DB. | Attribute | Type | Description | Examples | [Requirement Level](https://opentelemetry.io/docs/specs/semconv/general/attribute-requirement-level/) | Stability | |---|---|---|---|---|---| -| [`db.collection.name`](/docs/attributes-registry/db.md) | string | Cosmos DB container name. [1] | `public.users`; `customers` | `Conditionally Required` if available | ![Release Candidate](https://img.shields.io/badge/-rc-mediumorchid) | -| [`db.cosmosdb.connection_mode`](/docs/attributes-registry/db.md) | string | Cosmos client connection mode. | `gateway`; `direct` | `Conditionally Required` [2] | ![Experimental](https://img.shields.io/badge/-experimental-blue) | -| [`db.cosmosdb.consistency_level`](/docs/attributes-registry/db.md) | string | Account or request [consistency level](https://learn.microsoft.com/azure/cosmos-db/consistency-levels). | `Eventual`; `ConsistentPrefix`; `BoundedStaleness`; `Strong`; `Session` | `Conditionally Required` If available. | ![Experimental](https://img.shields.io/badge/-experimental-blue) | -| [`db.cosmosdb.regions_contacted`](/docs/attributes-registry/db.md) | string[] | 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. [3] | `["North Central US", "Australia East", "Australia Southeast"]` | `Conditionally Required` If available. | ![Experimental](https://img.shields.io/badge/-experimental-blue) | -| [`db.cosmosdb.request_charge`](/docs/attributes-registry/db.md) | double | Request units consumed for the operation. | `46.18`; `1.0` | `Conditionally Required` when available | ![Experimental](https://img.shields.io/badge/-experimental-blue) | -| [`db.cosmosdb.sub_status_code`](/docs/attributes-registry/db.md) | int | Cosmos DB sub status code. | `1000`; `1002` | `Conditionally Required` when response was received and contained sub-code. | ![Experimental](https://img.shields.io/badge/-experimental-blue) | +| [`azure.cosmosdb.connection.mode`](/docs/attributes-registry/azure.md) | string | Cosmos client connection mode. | `gateway`; `direct` | `Conditionally Required` [1] | ![Experimental](https://img.shields.io/badge/-experimental-blue) | +| [`azure.cosmosdb.consistency.level`](/docs/attributes-registry/azure.md) | string | Account or request [consistency level](https://learn.microsoft.com/azure/cosmos-db/consistency-levels). | `Eventual`; `ConsistentPrefix`; `BoundedStaleness`; `Strong`; `Session` | `Conditionally Required` If available. | ![Experimental](https://img.shields.io/badge/-experimental-blue) | +| [`azure.cosmosdb.operation.contacted_regions`](/docs/attributes-registry/azure.md) | string[] | 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. [2] | `["North Central US", "Australia East", "Australia Southeast"]` | `Conditionally Required` If available. | ![Experimental](https://img.shields.io/badge/-experimental-blue) | +| [`azure.cosmosdb.operation.request_charge`](/docs/attributes-registry/azure.md) | double | The number of request units consumed by the operation. | `46.18`; `1.0` | `Conditionally Required` when available | ![Experimental](https://img.shields.io/badge/-experimental-blue) | +| [`azure.cosmosdb.response.sub_status_code`](/docs/attributes-registry/azure.md) | int | Cosmos DB sub status code. | `1000`; `1002` | `Conditionally Required` when response was received and contained sub-code. | ![Experimental](https://img.shields.io/badge/-experimental-blue) | +| [`db.collection.name`](/docs/attributes-registry/db.md) | string | Cosmos DB container name. [3] | `public.users`; `customers` | `Conditionally Required` if available | ![Release Candidate](https://img.shields.io/badge/-rc-mediumorchid) | | [`db.namespace`](/docs/attributes-registry/db.md) | string | The name of the database, fully qualified within the server address and port. | `customers`; `test.users` | `Conditionally Required` If available. | ![Release Candidate](https://img.shields.io/badge/-rc-mediumorchid) | | [`db.operation.name`](/docs/attributes-registry/db.md) | string | The name of the operation or command being executed. [4] | `create_item`; `query_items`; `read_item` | `Conditionally Required` [5] | ![Release Candidate](https://img.shields.io/badge/-rc-mediumorchid) | | [`db.response.returned_rows`](/docs/attributes-registry/db.md) | int | Cosmos DB row count in result set. | `10`; `20` | `Conditionally Required` if response was received and returned any rows | ![Experimental](https://img.shields.io/badge/-experimental-blue) | @@ -56,8 +55,8 @@ The following table outlines the span attributes applicable to Cosmos DB. | [`error.type`](/docs/attributes-registry/error.md) | string | Describes a class of error the operation ended with. [7] | `timeout`; `java.net.UnknownHostException`; `server_certificate_invalid`; `500` | `Conditionally Required` If and only if the operation failed. | ![Stable](https://img.shields.io/badge/-stable-lightgreen) | | [`server.port`](/docs/attributes-registry/server.md) | int | Server port number. [8] | `80`; `8080`; `443` | `Conditionally Required` If not default (443). | ![Stable](https://img.shields.io/badge/-stable-lightgreen) | | [`az.namespace`](/docs/attributes-registry/azure.md) | string | [Azure Resource Provider Namespace](https://learn.microsoft.com/azure/azure-resource-manager/management/azure-services-resource-providers) as recognized by the client. [9] | `Microsoft.DocumentDB` | `Recommended` | ![Experimental](https://img.shields.io/badge/-experimental-blue) | -| [`db.cosmosdb.client_id`](/docs/attributes-registry/db.md) | string | Unique Cosmos client instance id. | `3ba4827d-4422-483f-b59f-85b74211c11d` | `Recommended` | ![Experimental](https://img.shields.io/badge/-experimental-blue) | -| [`db.cosmosdb.request_content_length`](/docs/attributes-registry/db.md) | int | Request payload size in bytes. | | `Recommended` | ![Experimental](https://img.shields.io/badge/-experimental-blue) | +| [`azure.client.id`](/docs/attributes-registry/azure.md) | string | The unique identifier of the client instance. | `3ba4827d-4422-483f-b59f-85b74211c11d`; `storage-client-1` | `Recommended` | ![Experimental](https://img.shields.io/badge/-experimental-blue) | +| [`azure.cosmosdb.request.body.size`](/docs/attributes-registry/azure.md) | int | Request payload size in bytes. | | `Recommended` | ![Experimental](https://img.shields.io/badge/-experimental-blue) | | [`db.operation.batch.size`](/docs/attributes-registry/db.md) | int | The number of queries included in a batch operation. [10] | `2`; `3`; `4` | `Recommended` | ![Release Candidate](https://img.shields.io/badge/-rc-mediumorchid) | | [`db.query.summary`](/docs/attributes-registry/db.md) | string | Low cardinality representation of a database query text. [11] | `SELECT wuser_table`; `INSERT shipping_details SELECT orders`; `get user by id` | `Recommended` [12] | ![Release Candidate](https://img.shields.io/badge/-rc-mediumorchid) | | [`db.query.text`](/docs/attributes-registry/db.md) | string | The database query being executed. [13] | `SELECT * FROM wuser_table where username = ?`; `SET mykey ?` | `Recommended` [14] | ![Release Candidate](https://img.shields.io/badge/-rc-mediumorchid) | @@ -65,11 +64,11 @@ The following table outlines the span attributes applicable to Cosmos DB. | [`user_agent.original`](/docs/attributes-registry/user-agent.md) | string | Full user-agent string is generated by Cosmos DB SDK [16] | `cosmos-netstandard-sdk/3.23.0\|3.23.1\|1\|X64\|Linux 5.4.0-1098-azure 104 18\|.NET Core 3.1.32\|S\|` | `Recommended` | ![Stable](https://img.shields.io/badge/-stable-lightgreen) | | [`db.operation.parameter.`](/docs/attributes-registry/db.md) | string | A database operation parameter, with `` being the parameter name, and the attribute value being a string representation of the parameter value. [17] | `someval`; `55` | `Opt-In` | ![Release Candidate](https://img.shields.io/badge/-rc-mediumorchid) | -**[1] `db.collection.name`:** It is RECOMMENDED to capture the value as provided by the application without attempting to do any case normalization. +**[1] `azure.cosmosdb.connection.mode`:** if not `gateway` (the default value is assumed to be `gateway`). -**[2] `db.cosmosdb.connection_mode`:** if not `gateway` (the default value is assumed to be `gateway`). +**[2] `azure.cosmosdb.operation.contacted_regions`:** 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) -**[3] `db.cosmosdb.regions_contacted`:** 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) +**[3] `db.collection.name`:** It is RECOMMENDED to capture the value as provided by the application without attempting to do any case normalization. **[4] `db.operation.name`:** The `db.operation.name` has the following list of well-known values. If one of them applies, then the respective value MUST be used. @@ -243,7 +242,7 @@ and SHOULD be provided **at span creation time** (if provided at all): --- -`db.cosmosdb.connection_mode` has the following list of well-known values. If one of them applies, then the respective value MUST be used; otherwise, a custom value MAY be used. +`azure.cosmosdb.connection.mode` has the following list of well-known values. If one of them applies, then the respective value MUST be used; otherwise, a custom value MAY be used. | Value | Description | Stability | |---|---|---| @@ -252,7 +251,7 @@ and SHOULD be provided **at span creation time** (if provided at all): --- -`db.cosmosdb.consistency_level` has the following list of well-known values. If one of them applies, then the respective value MUST be used; otherwise, a custom value MAY be used. +`azure.cosmosdb.consistency.level` has the following list of well-known values. If one of them applies, then the respective value MUST be used; otherwise, a custom value MAY be used. | Value | Description | Stability | |---|---|---| @@ -281,17 +280,17 @@ and SHOULD be provided **at span creation time** (if provided at all): |:-------------------------------------| :------------------- | | Span name | `"read_item orders"` | | `az.namespace` | `"Microsoft.DocumentDB"` | -| `db.system` | `"cosmosdb"` | +| `azure.client.id` | `"3ba4827d-4422-483f-b59f-85b74211c11d"` | +| `azure.cosmosdb.operation.request_charge` | `7.43` | +| `azure.cosmosdb.request.body.size` | `20` | +| `azure.cosmosdb.response.sub_status_code` | `0` | +| `db.system.name` | `"azure.cosmosdb"` | | `db.collection.name` | `"orders"` | | `db.namespace` | `"ShopDb"` | | `db.operation.name` | `"read_item"` | +| `db.response.status_code` | `201` | | `server.address` | `"account.documents.azure.com"` | -| `db.cosmosdb.client_id` | `"3ba4827d-4422-483f-b59f-85b74211c11d"` | | `user_agent.original` | `"cosmos-netstandard-sdk/3.23.0\|3.23.1\|1\|X64\|Linux 5.4.0-1098-azure 104 18\|.NET Core 3.1.32\|S\|"` | -| `db.cosmosdb.request_content_length` | `20` | -| `db.response.status_code` | `201` | -| `db.cosmosdb.sub_status_code` | `0` | -| `db.cosmosdb.request_charge` | `7.43` | ## Metrics @@ -303,17 +302,17 @@ This metric is [required][MetricRequired]. It captures the total time taken by an Azure Cosmos DB operation. This metric follows the common [db.client.operation.duration](/docs/database/database-metrics.md#metric-dbclientoperationduration) definition. -Refer [db.client.cosmosdb.operation.request_charge](#metric-dbclientcosmosdboperationrequest_charge) metrics for dimensions. +Refer [azure.cosmosdb.client.operation.request_charge](#metric-azurecosmosdbclientoperationrequest_charge) metrics for dimensions. ### Metric: `db.client.response.returned_rows` This metric is [required][MetricRequired]. -It captures the number of items returned by a query or feed operation in Azure Cosmos DB. It helps identify response sizes that may contribute to high latency, increased memory/CPU usage, or network call failures. This metric follows the common [db.client.response.returned_rows](/docs/database/database-metrics.md#metric-dbclientresponsereturned_rows) definition. +It captures the number of items returned by a query or feed operation in Azure Cosmos DB. It helps identify response sizes that may contribute to high latency, increased memory/CPU usage, or network call failures. This metric follows the common [`db.client.response.returned_rows`](/docs/database/database-metrics.md#metric-dbclientresponsereturned_rows) definition. -Refer [db.client.cosmosdb.operation.request_charge](#metric-dbclientcosmosdboperationrequest_charge) metrics for dimensions. +Refer [azure.cosmosdb.client.operation.request_charge](#metric-azurecosmosdbclientoperationrequest_charge) metrics for dimensions. -### Metric: `db.client.cosmosdb.operation.request_charge` +### Metric: `azure.cosmosdb.client.operation.request_charge` This metric is [required][MetricRequired]. @@ -330,7 +329,7 @@ Explaining bucket configuration: 3. 100, 250: Higher Usage Levels, These boundaries represent operations that may require significant resources, such as complex queries or larger transactions. Monitoring RUs in these ranges can help identify performance bottlenecks or costly queries that might lead to throttling. 4. 500, 1000: Very High Usage Levels, These buckets capture operations that consume a substantial number of Request Units, which may indicate potentially expensive queries or batch processes. Understanding the frequency and patterns of such high RU usage can be critical in optimizing performance and ensuring the application remains within provisioned throughput limits. - + @@ -339,19 +338,19 @@ Explaining bucket configuration: | Name | Instrument Type | Unit (UCUM) | Description | Stability | | -------- | --------------- | ----------- | -------------- | --------- | -| `db.client.cosmosdb.operation.request_charge` | Histogram | `{request_unit}` | [Request charge](https://learn.microsoft.com/azure/cosmos-db/request-units) consumed by the operation | ![Experimental](https://img.shields.io/badge/-experimental-blue) | +| `azure.cosmosdb.client.operation.request_charge` | Histogram | `{request_unit}` | [Request units](https://learn.microsoft.com/azure/cosmos-db/request-units) consumed by the operation | ![Experimental](https://img.shields.io/badge/-experimental-blue) | | Attribute | Type | Description | Examples | [Requirement Level](https://opentelemetry.io/docs/specs/semconv/general/attribute-requirement-level/) | Stability | |---|---|---|---|---|---| +| [`azure.cosmosdb.consistency.level`](/docs/attributes-registry/azure.md) | string | Account or request [consistency level](https://learn.microsoft.com/azure/cosmos-db/consistency-levels). | `Eventual`; `ConsistentPrefix`; `BoundedStaleness`; `Strong`; `Session` | `Conditionally Required` If available. | ![Experimental](https://img.shields.io/badge/-experimental-blue) | +| [`azure.cosmosdb.response.sub_status_code`](/docs/attributes-registry/azure.md) | int | Cosmos DB sub status code. | `1000`; `1002` | `Conditionally Required` when response was received and contained sub-code. | ![Experimental](https://img.shields.io/badge/-experimental-blue) | | [`db.collection.name`](/docs/attributes-registry/db.md) | string | Cosmos DB container name. [1] | `public.users`; `customers` | `Conditionally Required` If available. | ![Release Candidate](https://img.shields.io/badge/-rc-mediumorchid) | -| [`db.cosmosdb.consistency_level`](/docs/attributes-registry/db.md) | string | Account or request [consistency level](https://learn.microsoft.com/azure/cosmos-db/consistency-levels). | `Eventual`; `ConsistentPrefix`; `BoundedStaleness`; `Strong`; `Session` | `Conditionally Required` If available. | ![Experimental](https://img.shields.io/badge/-experimental-blue) | -| [`db.cosmosdb.sub_status_code`](/docs/attributes-registry/db.md) | int | Cosmos DB sub status code. | `1000`; `1002` | `Conditionally Required` when response was received and contained sub-code. | ![Experimental](https://img.shields.io/badge/-experimental-blue) | | [`db.namespace`](/docs/attributes-registry/db.md) | string | The name of the database, fully qualified within the server address and port. | `customers`; `test.users` | `Conditionally Required` If available. | ![Release Candidate](https://img.shields.io/badge/-rc-mediumorchid) | | [`db.operation.name`](/docs/attributes-registry/db.md) | string | The name of the operation or command being executed. [2] | `findAndModify`; `HMSET`; `SELECT` | `Conditionally Required` [3] | ![Release Candidate](https://img.shields.io/badge/-rc-mediumorchid) | | [`db.response.status_code`](/docs/attributes-registry/db.md) | string | Database response status code. [4] | `102`; `ORA-17002`; `08P01`; `404` | `Conditionally Required` [5] | ![Release Candidate](https://img.shields.io/badge/-rc-mediumorchid) | | [`error.type`](/docs/attributes-registry/error.md) | string | Describes a class of error the operation ended with. [6] | `timeout`; `java.net.UnknownHostException`; `server_certificate_invalid`; `500` | `Conditionally Required` If and only if the operation failed. | ![Stable](https://img.shields.io/badge/-stable-lightgreen) | | [`server.port`](/docs/attributes-registry/server.md) | int | Server port number. [7] | `80`; `8080`; `443` | `Conditionally Required` [8] | ![Stable](https://img.shields.io/badge/-stable-lightgreen) | -| [`db.cosmosdb.regions_contacted`](/docs/attributes-registry/db.md) | string[] | 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. [9] | `["North Central US", "Australia East", "Australia Southeast"]` | `Recommended` If available | ![Experimental](https://img.shields.io/badge/-experimental-blue) | +| [`azure.cosmosdb.operation.contacted_regions`](/docs/attributes-registry/azure.md) | string[] | 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. [9] | `["North Central US", "Australia East", "Australia Southeast"]` | `Recommended` If available | ![Experimental](https://img.shields.io/badge/-experimental-blue) | | [`server.address`](/docs/attributes-registry/server.md) | string | Name of the database host. [10] | `example.com`; `10.1.2.80`; `/tmp/my.sock` | `Recommended` | ![Stable](https://img.shields.io/badge/-stable-lightgreen) | **[1] `db.collection.name`:** It is RECOMMENDED to capture the value as provided by the application without attempting to do any case normalization. @@ -388,13 +387,13 @@ Instrumentations SHOULD document how `error.type` is populated. **[8] `server.port`:** If using a port other than the default port for this DBMS and if `server.address` is set. -**[9] `db.cosmosdb.regions_contacted`:** 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) +**[9] `azure.cosmosdb.operation.contacted_regions`:** 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) **[10] `server.address`:** When observed from the client side, and when communicating through an intermediary, `server.address` SHOULD represent the server address behind any intermediaries, for example proxies, if it's available. --- -`db.cosmosdb.consistency_level` has the following list of well-known values. If one of them applies, then the respective value MUST be used; otherwise, a custom value MAY be used. +`azure.cosmosdb.consistency.level` has the following list of well-known values. If one of them applies, then the respective value MUST be used; otherwise, a custom value MAY be used. | Value | Description | Stability | |---|---|---| @@ -417,13 +416,13 @@ Instrumentations SHOULD document how `error.type` is populated. -### Metric: `db.client.cosmosdb.active_instance.count` +### Metric: `azure.cosmosdb.client.active_instance.count` This metric is [required][MetricRequired]. It captures the number of active instances at any given time. Best practices dictate that there should ideally be only one instance of the SDK client per Azure Cosmos DB account. Having multiple instances of the SDK client for the same account in a single process can lead to CPU or memory-related issues. - + @@ -432,7 +431,7 @@ It captures the number of active instances at any given time. Best practices dic | Name | Instrument Type | Unit (UCUM) | Description | Stability | | -------- | --------------- | ----------- | -------------- | --------- | -| `db.client.cosmosdb.active_instance.count` | UpDownCounter | `{instance}` | Number of active client instances | ![Experimental](https://img.shields.io/badge/-experimental-blue) | +| `azure.cosmosdb.client.active_instance.count` | UpDownCounter | `{instance}` | Number of active client instances | ![Experimental](https://img.shields.io/badge/-experimental-blue) | | Attribute | Type | Description | Examples | [Requirement Level](https://opentelemetry.io/docs/specs/semconv/general/attribute-requirement-level/) | Stability | |---|---|---|---|---|---| diff --git a/docs/database/couchdb.md b/docs/database/couchdb.md index 69c055d8e3..edab344cae 100644 --- a/docs/database/couchdb.md +++ b/docs/database/couchdb.md @@ -19,7 +19,7 @@ The Semantic Conventions for [CouchDB](https://couchdb.apache.org/) extend and o Spans representing calls to CouchDB adhere to the general [Semantic Conventions for Database Client Spans](database-spans.md). -`db.system` MUST be set to `"couchdb"` and SHOULD be provided **at span creation time**. +`db.system.name` MUST be set to `"couchdb"` and SHOULD be provided **at span creation time**. The following table outlines the span attributes applicable to CouchDB. diff --git a/docs/database/database-metrics.md b/docs/database/database-metrics.md index b966d52465..590b0ffe04 100644 --- a/docs/database/database-metrics.md +++ b/docs/database/database-metrics.md @@ -83,7 +83,7 @@ of `[ 0.001, 0.005, 0.01, 0.05, 0.1, 0.5, 1, 5, 10 ]`. | Attribute | Type | Description | Examples | [Requirement Level](https://opentelemetry.io/docs/specs/semconv/general/attribute-requirement-level/) | Stability | |---|---|---|---|---|---| -| [`db.system`](/docs/attributes-registry/db.md) | string | The database management system (DBMS) product as identified by the client instrumentation. [1] | `other_sql`; `adabas`; `cache` | `Required` | ![Release Candidate](https://img.shields.io/badge/-rc-mediumorchid) | +| [`db.system.name`](/docs/attributes-registry/db.md) | string | The database management system (DBMS) product as identified by the client instrumentation. [1] | `other_sql`; `softwareag.adabas`; `actian.ingres` | `Required` | ![Release Candidate](https://img.shields.io/badge/-rc-mediumorchid) | | [`db.collection.name`](/docs/attributes-registry/db.md) | string | The name of a collection (table, container) within the database. [2] | `public.users`; `customers` | `Conditionally Required` [3] | ![Release Candidate](https://img.shields.io/badge/-rc-mediumorchid) | | [`db.namespace`](/docs/attributes-registry/db.md) | string | The name of the database, fully qualified within the server address and port. [4] | `customers`; `test.users` | `Conditionally Required` If available. | ![Release Candidate](https://img.shields.io/badge/-rc-mediumorchid) | | [`db.operation.name`](/docs/attributes-registry/db.md) | string | The name of the operation or command being executed. [5] | `findAndModify`; `HMSET`; `SELECT` | `Conditionally Required` [6] | ![Release Candidate](https://img.shields.io/badge/-rc-mediumorchid) | @@ -96,7 +96,7 @@ of `[ 0.001, 0.005, 0.01, 0.05, 0.1, 0.5, 1, 5, 10 ]`. | [`server.address`](/docs/attributes-registry/server.md) | string | Name of the database host. [15] | `example.com`; `10.1.2.80`; `/tmp/my.sock` | `Recommended` | ![Stable](https://img.shields.io/badge/-stable-lightgreen) | | [`db.query.text`](/docs/attributes-registry/db.md) | string | The database query being executed. [16] | `SELECT * FROM wuser_table where username = ?`; `SET mykey ?` | `Opt-In` | ![Release Candidate](https://img.shields.io/badge/-rc-mediumorchid) | -**[1] `db.system`:** The actual DBMS may differ from the one identified by the client. For example, when using PostgreSQL client libraries to connect to a CockroachDB, the `db.system` is set to `postgresql` based on the instrumentation's best knowledge. +**[1] `db.system.name`:** The actual DBMS may differ from the one identified by the client. For example, when using PostgreSQL client libraries to connect to a CockroachDB, the `db.system.name` is set to `postgresql` based on the instrumentation's best knowledge. **[2] `db.collection.name`:** It is RECOMMENDED to capture the value as provided by the application without attempting to do any case normalization. @@ -154,59 +154,51 @@ Even though parameterized query text can potentially have sensitive data, by usi --- -`db.system` has the following list of well-known values. If one of them applies, then the respective value MUST be used; otherwise, a custom value MAY be used. +`db.system.name` has the following list of well-known values. If one of them applies, then the respective value MUST be used; otherwise, a custom value MAY be used. | Value | Description | Stability | |---|---|---| -| `adabas` | Adabas (Adaptable Database System) | ![Experimental](https://img.shields.io/badge/-experimental-blue) | -| `cassandra` | Apache Cassandra | ![Experimental](https://img.shields.io/badge/-experimental-blue) | -| `clickhouse` | ClickHouse | ![Experimental](https://img.shields.io/badge/-experimental-blue) | -| `cockroachdb` | CockroachDB | ![Experimental](https://img.shields.io/badge/-experimental-blue) | -| `cosmosdb` | Microsoft Azure Cosmos DB | ![Experimental](https://img.shields.io/badge/-experimental-blue) | -| `couchbase` | Couchbase | ![Experimental](https://img.shields.io/badge/-experimental-blue) | -| `couchdb` | CouchDB | ![Experimental](https://img.shields.io/badge/-experimental-blue) | -| `db2` | IBM Db2 | ![Experimental](https://img.shields.io/badge/-experimental-blue) | -| `derby` | Apache Derby | ![Experimental](https://img.shields.io/badge/-experimental-blue) | -| `dynamodb` | Amazon DynamoDB | ![Experimental](https://img.shields.io/badge/-experimental-blue) | -| `edb` | EnterpriseDB | ![Experimental](https://img.shields.io/badge/-experimental-blue) | -| `elasticsearch` | Elasticsearch | ![Experimental](https://img.shields.io/badge/-experimental-blue) | -| `filemaker` | FileMaker | ![Experimental](https://img.shields.io/badge/-experimental-blue) | -| `firebird` | Firebird | ![Experimental](https://img.shields.io/badge/-experimental-blue) | -| `geode` | Apache Geode | ![Experimental](https://img.shields.io/badge/-experimental-blue) | -| `h2` | H2 | ![Experimental](https://img.shields.io/badge/-experimental-blue) | -| `hanadb` | SAP HANA | ![Experimental](https://img.shields.io/badge/-experimental-blue) | -| `hbase` | Apache HBase | ![Experimental](https://img.shields.io/badge/-experimental-blue) | -| `hive` | Apache Hive | ![Experimental](https://img.shields.io/badge/-experimental-blue) | -| `hsqldb` | HyperSQL DataBase | ![Experimental](https://img.shields.io/badge/-experimental-blue) | -| `influxdb` | InfluxDB | ![Experimental](https://img.shields.io/badge/-experimental-blue) | -| `informix` | Informix | ![Experimental](https://img.shields.io/badge/-experimental-blue) | -| `ingres` | Ingres | ![Experimental](https://img.shields.io/badge/-experimental-blue) | -| `instantdb` | InstantDB | ![Experimental](https://img.shields.io/badge/-experimental-blue) | -| `interbase` | InterBase | ![Experimental](https://img.shields.io/badge/-experimental-blue) | -| `intersystems_cache` | InterSystems Caché | ![Experimental](https://img.shields.io/badge/-experimental-blue) | -| `mariadb` | MariaDB (This value has stability level RELEASE CANDIDATE) | ![Release Candidate](https://img.shields.io/badge/-rc-mediumorchid) | -| `maxdb` | SAP MaxDB | ![Experimental](https://img.shields.io/badge/-experimental-blue) | -| `memcached` | Memcached | ![Experimental](https://img.shields.io/badge/-experimental-blue) | -| `mongodb` | MongoDB | ![Experimental](https://img.shields.io/badge/-experimental-blue) | -| `mssql` | Microsoft SQL Server (This value has stability level RELEASE CANDIDATE) | ![Release Candidate](https://img.shields.io/badge/-rc-mediumorchid) | -| `mysql` | MySQL (This value has stability level RELEASE CANDIDATE) | ![Release Candidate](https://img.shields.io/badge/-rc-mediumorchid) | -| `neo4j` | Neo4j | ![Experimental](https://img.shields.io/badge/-experimental-blue) | -| `netezza` | Netezza | ![Experimental](https://img.shields.io/badge/-experimental-blue) | -| `opensearch` | OpenSearch | ![Experimental](https://img.shields.io/badge/-experimental-blue) | -| `oracle` | Oracle Database | ![Experimental](https://img.shields.io/badge/-experimental-blue) | -| `other_sql` | Some other SQL database. Fallback only. See notes. | ![Experimental](https://img.shields.io/badge/-experimental-blue) | -| `pervasive` | Pervasive PSQL | ![Experimental](https://img.shields.io/badge/-experimental-blue) | -| `pointbase` | PointBase | ![Experimental](https://img.shields.io/badge/-experimental-blue) | -| `postgresql` | PostgreSQL (This value has stability level RELEASE CANDIDATE) | ![Release Candidate](https://img.shields.io/badge/-rc-mediumorchid) | -| `progress` | Progress Database | ![Experimental](https://img.shields.io/badge/-experimental-blue) | -| `redis` | Redis | ![Experimental](https://img.shields.io/badge/-experimental-blue) | -| `redshift` | Amazon Redshift | ![Experimental](https://img.shields.io/badge/-experimental-blue) | -| `spanner` | Cloud Spanner | ![Experimental](https://img.shields.io/badge/-experimental-blue) | -| `sqlite` | SQLite | ![Experimental](https://img.shields.io/badge/-experimental-blue) | -| `sybase` | Sybase | ![Experimental](https://img.shields.io/badge/-experimental-blue) | -| `teradata` | Teradata | ![Experimental](https://img.shields.io/badge/-experimental-blue) | -| `trino` | Trino | ![Experimental](https://img.shields.io/badge/-experimental-blue) | -| `vertica` | Vertica | ![Experimental](https://img.shields.io/badge/-experimental-blue) | +| `actian.ingres` | [Actian Ingres](https://www.actian.com/databases/ingres/) | ![Experimental](https://img.shields.io/badge/-experimental-blue) | +| `aws.dynamodb` | [Amazon DynamoDB](https://aws.amazon.com/pm/dynamodb/) | ![Experimental](https://img.shields.io/badge/-experimental-blue) | +| `aws.redshift` | [Amazon Redshift](https://aws.amazon.com/redshift/) | ![Experimental](https://img.shields.io/badge/-experimental-blue) | +| `azure.cosmosdb` | [Azure Cosmos DB](https://learn.microsoft.com/azure/cosmos-db) | ![Experimental](https://img.shields.io/badge/-experimental-blue) | +| `cassandra` | [Apache Cassandra](https://cassandra.apache.org/) | ![Experimental](https://img.shields.io/badge/-experimental-blue) | +| `clickhouse` | [ClickHouse](https://clickhouse.com/) | ![Experimental](https://img.shields.io/badge/-experimental-blue) | +| `cockroachdb` | [CockroachDB](https://www.cockroachlabs.com/) | ![Experimental](https://img.shields.io/badge/-experimental-blue) | +| `couchbase` | [Couchbase](https://www.couchbase.com/) | ![Experimental](https://img.shields.io/badge/-experimental-blue) | +| `couchdb` | [Apache CouchDB](https://couchdb.apache.org/) | ![Experimental](https://img.shields.io/badge/-experimental-blue) | +| `derby` | [Apache Derby](https://db.apache.org/derby/) | ![Experimental](https://img.shields.io/badge/-experimental-blue) | +| `elasticsearch` | [Elasticsearch](https://www.elastic.co/elasticsearch) | ![Experimental](https://img.shields.io/badge/-experimental-blue) | +| `firebirdsql` | [Firebird](https://www.firebirdsql.org/) | ![Experimental](https://img.shields.io/badge/-experimental-blue) | +| `gcp.spanner` | [Google Cloud Spanner](https://cloud.google.com/spanner) | ![Experimental](https://img.shields.io/badge/-experimental-blue) | +| `geode` | [Apache Geode](https://geode.apache.org/) | ![Experimental](https://img.shields.io/badge/-experimental-blue) | +| `h2database` | [H2 Database](https://h2database.com/) | ![Experimental](https://img.shields.io/badge/-experimental-blue) | +| `hbase` | [Apache HBase](https://hbase.apache.org/) | ![Experimental](https://img.shields.io/badge/-experimental-blue) | +| `hive` | [Apache Hive](https://hive.apache.org/) | ![Experimental](https://img.shields.io/badge/-experimental-blue) | +| `hsqldb` | [HyperSQL Database](https://hsqldb.org/) | ![Experimental](https://img.shields.io/badge/-experimental-blue) | +| `ibm.db2` | [IBM Db2](https://www.ibm.com/db2) | ![Experimental](https://img.shields.io/badge/-experimental-blue) | +| `ibm.informix` | [IBM Informix](https://www.ibm.com/products/informix) | ![Experimental](https://img.shields.io/badge/-experimental-blue) | +| `ibm.netezza` | [IBM Netezza](https://www.ibm.com/products/netezza) | ![Experimental](https://img.shields.io/badge/-experimental-blue) | +| `influxdb` | [InfluxDB](https://www.influxdata.com/) | ![Experimental](https://img.shields.io/badge/-experimental-blue) | +| `instantdb` | [Instant](https://www.instantdb.com/) | ![Experimental](https://img.shields.io/badge/-experimental-blue) | +| `intersystems.cache` | [InterSystems Caché](https://www.intersystems.com/products/cache/) | ![Experimental](https://img.shields.io/badge/-experimental-blue) | +| `mariadb` | [MariaDB](https://mariadb.org/) | ![Release Candidate](https://img.shields.io/badge/-rc-mediumorchid) | +| `memcached` | [Memcached](https://memcached.org/) | ![Experimental](https://img.shields.io/badge/-experimental-blue) | +| `microsoft.sql_server` | [Microsoft SQL Server](https://www.microsoft.com/sql-server) | ![Release Candidate](https://img.shields.io/badge/-rc-mediumorchid) | +| `mongodb` | [MongoDB](https://www.mongodb.com/) | ![Experimental](https://img.shields.io/badge/-experimental-blue) | +| `mysql` | [MySQL](https://www.mysql.com/) | ![Release Candidate](https://img.shields.io/badge/-rc-mediumorchid) | +| `neo4j` | [Neo4j](https://neo4j.com/) | ![Experimental](https://img.shields.io/badge/-experimental-blue) | +| `opensearch` | [OpenSearch](https://opensearch.org/) | ![Experimental](https://img.shields.io/badge/-experimental-blue) | +| `oracle.db` | [Oracle Database](https://www.oracle.com/database/) | ![Experimental](https://img.shields.io/badge/-experimental-blue) | +| `other_sql` | Some other SQL database. Fallback only. | ![Experimental](https://img.shields.io/badge/-experimental-blue) | +| `postgresql` | [PostgreSQL](https://www.postgresql.org/) | ![Release Candidate](https://img.shields.io/badge/-rc-mediumorchid) | +| `redis` | [Redis](https://redis.io/) | ![Experimental](https://img.shields.io/badge/-experimental-blue) | +| `sap.hana` | [SAP HANA](https://www.sap.com/products/technology-platform/hana/what-is-sap-hana.html) | ![Experimental](https://img.shields.io/badge/-experimental-blue) | +| `sap.maxdb` | [SAP MaxDB](https://maxdb.sap.com/) | ![Experimental](https://img.shields.io/badge/-experimental-blue) | +| `softwareag.adabas` | [Adabas (Adaptable Database System)](https://documentation.softwareag.com/?pf=adabas) | ![Experimental](https://img.shields.io/badge/-experimental-blue) | +| `sqlite` | [SQLite](https://www.sqlite.org/) | ![Experimental](https://img.shields.io/badge/-experimental-blue) | +| `teradata` | [Teradata](https://www.teradata.com/) | ![Experimental](https://img.shields.io/badge/-experimental-blue) | +| `trino` | [Trino](https://trino.io/) | ![Experimental](https://img.shields.io/badge/-experimental-blue) | --- @@ -255,7 +247,7 @@ Explaining bucket configuration: | Attribute | Type | Description | Examples | [Requirement Level](https://opentelemetry.io/docs/specs/semconv/general/attribute-requirement-level/) | Stability | |---|---|---|---|---|---| -| [`db.system`](/docs/attributes-registry/db.md) | string | The database management system (DBMS) product as identified by the client instrumentation. [1] | `other_sql`; `adabas`; `cache` | `Required` | ![Release Candidate](https://img.shields.io/badge/-rc-mediumorchid) | +| [`db.system.name`](/docs/attributes-registry/db.md) | string | The database management system (DBMS) product as identified by the client instrumentation. [1] | `other_sql`; `softwareag.adabas`; `actian.ingres` | `Required` | ![Release Candidate](https://img.shields.io/badge/-rc-mediumorchid) | | [`db.collection.name`](/docs/attributes-registry/db.md) | string | The name of a collection (table, container) within the database. [2] | `public.users`; `customers` | `Conditionally Required` [3] | ![Release Candidate](https://img.shields.io/badge/-rc-mediumorchid) | | [`db.namespace`](/docs/attributes-registry/db.md) | string | The name of the database, fully qualified within the server address and port. [4] | `customers`; `test.users` | `Conditionally Required` If available. | ![Release Candidate](https://img.shields.io/badge/-rc-mediumorchid) | | [`db.operation.name`](/docs/attributes-registry/db.md) | string | The name of the operation or command being executed. [5] | `findAndModify`; `HMSET`; `SELECT` | `Conditionally Required` [6] | ![Release Candidate](https://img.shields.io/badge/-rc-mediumorchid) | @@ -268,7 +260,7 @@ Explaining bucket configuration: | [`server.address`](/docs/attributes-registry/server.md) | string | Name of the database host. [15] | `example.com`; `10.1.2.80`; `/tmp/my.sock` | `Recommended` | ![Stable](https://img.shields.io/badge/-stable-lightgreen) | | [`db.query.text`](/docs/attributes-registry/db.md) | string | The database query being executed. [16] | `SELECT * FROM wuser_table where username = ?`; `SET mykey ?` | `Opt-In` | ![Release Candidate](https://img.shields.io/badge/-rc-mediumorchid) | -**[1] `db.system`:** The actual DBMS may differ from the one identified by the client. For example, when using PostgreSQL client libraries to connect to a CockroachDB, the `db.system` is set to `postgresql` based on the instrumentation's best knowledge. +**[1] `db.system.name`:** The actual DBMS may differ from the one identified by the client. For example, when using PostgreSQL client libraries to connect to a CockroachDB, the `db.system.name` is set to `postgresql` based on the instrumentation's best knowledge. **[2] `db.collection.name`:** It is RECOMMENDED to capture the value as provided by the application without attempting to do any case normalization. @@ -326,59 +318,51 @@ Even though parameterized query text can potentially have sensitive data, by usi --- -`db.system` has the following list of well-known values. If one of them applies, then the respective value MUST be used; otherwise, a custom value MAY be used. +`db.system.name` has the following list of well-known values. If one of them applies, then the respective value MUST be used; otherwise, a custom value MAY be used. | Value | Description | Stability | |---|---|---| -| `adabas` | Adabas (Adaptable Database System) | ![Experimental](https://img.shields.io/badge/-experimental-blue) | -| `cassandra` | Apache Cassandra | ![Experimental](https://img.shields.io/badge/-experimental-blue) | -| `clickhouse` | ClickHouse | ![Experimental](https://img.shields.io/badge/-experimental-blue) | -| `cockroachdb` | CockroachDB | ![Experimental](https://img.shields.io/badge/-experimental-blue) | -| `cosmosdb` | Microsoft Azure Cosmos DB | ![Experimental](https://img.shields.io/badge/-experimental-blue) | -| `couchbase` | Couchbase | ![Experimental](https://img.shields.io/badge/-experimental-blue) | -| `couchdb` | CouchDB | ![Experimental](https://img.shields.io/badge/-experimental-blue) | -| `db2` | IBM Db2 | ![Experimental](https://img.shields.io/badge/-experimental-blue) | -| `derby` | Apache Derby | ![Experimental](https://img.shields.io/badge/-experimental-blue) | -| `dynamodb` | Amazon DynamoDB | ![Experimental](https://img.shields.io/badge/-experimental-blue) | -| `edb` | EnterpriseDB | ![Experimental](https://img.shields.io/badge/-experimental-blue) | -| `elasticsearch` | Elasticsearch | ![Experimental](https://img.shields.io/badge/-experimental-blue) | -| `filemaker` | FileMaker | ![Experimental](https://img.shields.io/badge/-experimental-blue) | -| `firebird` | Firebird | ![Experimental](https://img.shields.io/badge/-experimental-blue) | -| `geode` | Apache Geode | ![Experimental](https://img.shields.io/badge/-experimental-blue) | -| `h2` | H2 | ![Experimental](https://img.shields.io/badge/-experimental-blue) | -| `hanadb` | SAP HANA | ![Experimental](https://img.shields.io/badge/-experimental-blue) | -| `hbase` | Apache HBase | ![Experimental](https://img.shields.io/badge/-experimental-blue) | -| `hive` | Apache Hive | ![Experimental](https://img.shields.io/badge/-experimental-blue) | -| `hsqldb` | HyperSQL DataBase | ![Experimental](https://img.shields.io/badge/-experimental-blue) | -| `influxdb` | InfluxDB | ![Experimental](https://img.shields.io/badge/-experimental-blue) | -| `informix` | Informix | ![Experimental](https://img.shields.io/badge/-experimental-blue) | -| `ingres` | Ingres | ![Experimental](https://img.shields.io/badge/-experimental-blue) | -| `instantdb` | InstantDB | ![Experimental](https://img.shields.io/badge/-experimental-blue) | -| `interbase` | InterBase | ![Experimental](https://img.shields.io/badge/-experimental-blue) | -| `intersystems_cache` | InterSystems Caché | ![Experimental](https://img.shields.io/badge/-experimental-blue) | -| `mariadb` | MariaDB (This value has stability level RELEASE CANDIDATE) | ![Release Candidate](https://img.shields.io/badge/-rc-mediumorchid) | -| `maxdb` | SAP MaxDB | ![Experimental](https://img.shields.io/badge/-experimental-blue) | -| `memcached` | Memcached | ![Experimental](https://img.shields.io/badge/-experimental-blue) | -| `mongodb` | MongoDB | ![Experimental](https://img.shields.io/badge/-experimental-blue) | -| `mssql` | Microsoft SQL Server (This value has stability level RELEASE CANDIDATE) | ![Release Candidate](https://img.shields.io/badge/-rc-mediumorchid) | -| `mysql` | MySQL (This value has stability level RELEASE CANDIDATE) | ![Release Candidate](https://img.shields.io/badge/-rc-mediumorchid) | -| `neo4j` | Neo4j | ![Experimental](https://img.shields.io/badge/-experimental-blue) | -| `netezza` | Netezza | ![Experimental](https://img.shields.io/badge/-experimental-blue) | -| `opensearch` | OpenSearch | ![Experimental](https://img.shields.io/badge/-experimental-blue) | -| `oracle` | Oracle Database | ![Experimental](https://img.shields.io/badge/-experimental-blue) | -| `other_sql` | Some other SQL database. Fallback only. See notes. | ![Experimental](https://img.shields.io/badge/-experimental-blue) | -| `pervasive` | Pervasive PSQL | ![Experimental](https://img.shields.io/badge/-experimental-blue) | -| `pointbase` | PointBase | ![Experimental](https://img.shields.io/badge/-experimental-blue) | -| `postgresql` | PostgreSQL (This value has stability level RELEASE CANDIDATE) | ![Release Candidate](https://img.shields.io/badge/-rc-mediumorchid) | -| `progress` | Progress Database | ![Experimental](https://img.shields.io/badge/-experimental-blue) | -| `redis` | Redis | ![Experimental](https://img.shields.io/badge/-experimental-blue) | -| `redshift` | Amazon Redshift | ![Experimental](https://img.shields.io/badge/-experimental-blue) | -| `spanner` | Cloud Spanner | ![Experimental](https://img.shields.io/badge/-experimental-blue) | -| `sqlite` | SQLite | ![Experimental](https://img.shields.io/badge/-experimental-blue) | -| `sybase` | Sybase | ![Experimental](https://img.shields.io/badge/-experimental-blue) | -| `teradata` | Teradata | ![Experimental](https://img.shields.io/badge/-experimental-blue) | -| `trino` | Trino | ![Experimental](https://img.shields.io/badge/-experimental-blue) | -| `vertica` | Vertica | ![Experimental](https://img.shields.io/badge/-experimental-blue) | +| `actian.ingres` | [Actian Ingres](https://www.actian.com/databases/ingres/) | ![Experimental](https://img.shields.io/badge/-experimental-blue) | +| `aws.dynamodb` | [Amazon DynamoDB](https://aws.amazon.com/pm/dynamodb/) | ![Experimental](https://img.shields.io/badge/-experimental-blue) | +| `aws.redshift` | [Amazon Redshift](https://aws.amazon.com/redshift/) | ![Experimental](https://img.shields.io/badge/-experimental-blue) | +| `azure.cosmosdb` | [Azure Cosmos DB](https://learn.microsoft.com/azure/cosmos-db) | ![Experimental](https://img.shields.io/badge/-experimental-blue) | +| `cassandra` | [Apache Cassandra](https://cassandra.apache.org/) | ![Experimental](https://img.shields.io/badge/-experimental-blue) | +| `clickhouse` | [ClickHouse](https://clickhouse.com/) | ![Experimental](https://img.shields.io/badge/-experimental-blue) | +| `cockroachdb` | [CockroachDB](https://www.cockroachlabs.com/) | ![Experimental](https://img.shields.io/badge/-experimental-blue) | +| `couchbase` | [Couchbase](https://www.couchbase.com/) | ![Experimental](https://img.shields.io/badge/-experimental-blue) | +| `couchdb` | [Apache CouchDB](https://couchdb.apache.org/) | ![Experimental](https://img.shields.io/badge/-experimental-blue) | +| `derby` | [Apache Derby](https://db.apache.org/derby/) | ![Experimental](https://img.shields.io/badge/-experimental-blue) | +| `elasticsearch` | [Elasticsearch](https://www.elastic.co/elasticsearch) | ![Experimental](https://img.shields.io/badge/-experimental-blue) | +| `firebirdsql` | [Firebird](https://www.firebirdsql.org/) | ![Experimental](https://img.shields.io/badge/-experimental-blue) | +| `gcp.spanner` | [Google Cloud Spanner](https://cloud.google.com/spanner) | ![Experimental](https://img.shields.io/badge/-experimental-blue) | +| `geode` | [Apache Geode](https://geode.apache.org/) | ![Experimental](https://img.shields.io/badge/-experimental-blue) | +| `h2database` | [H2 Database](https://h2database.com/) | ![Experimental](https://img.shields.io/badge/-experimental-blue) | +| `hbase` | [Apache HBase](https://hbase.apache.org/) | ![Experimental](https://img.shields.io/badge/-experimental-blue) | +| `hive` | [Apache Hive](https://hive.apache.org/) | ![Experimental](https://img.shields.io/badge/-experimental-blue) | +| `hsqldb` | [HyperSQL Database](https://hsqldb.org/) | ![Experimental](https://img.shields.io/badge/-experimental-blue) | +| `ibm.db2` | [IBM Db2](https://www.ibm.com/db2) | ![Experimental](https://img.shields.io/badge/-experimental-blue) | +| `ibm.informix` | [IBM Informix](https://www.ibm.com/products/informix) | ![Experimental](https://img.shields.io/badge/-experimental-blue) | +| `ibm.netezza` | [IBM Netezza](https://www.ibm.com/products/netezza) | ![Experimental](https://img.shields.io/badge/-experimental-blue) | +| `influxdb` | [InfluxDB](https://www.influxdata.com/) | ![Experimental](https://img.shields.io/badge/-experimental-blue) | +| `instantdb` | [Instant](https://www.instantdb.com/) | ![Experimental](https://img.shields.io/badge/-experimental-blue) | +| `intersystems.cache` | [InterSystems Caché](https://www.intersystems.com/products/cache/) | ![Experimental](https://img.shields.io/badge/-experimental-blue) | +| `mariadb` | [MariaDB](https://mariadb.org/) | ![Release Candidate](https://img.shields.io/badge/-rc-mediumorchid) | +| `memcached` | [Memcached](https://memcached.org/) | ![Experimental](https://img.shields.io/badge/-experimental-blue) | +| `microsoft.sql_server` | [Microsoft SQL Server](https://www.microsoft.com/sql-server) | ![Release Candidate](https://img.shields.io/badge/-rc-mediumorchid) | +| `mongodb` | [MongoDB](https://www.mongodb.com/) | ![Experimental](https://img.shields.io/badge/-experimental-blue) | +| `mysql` | [MySQL](https://www.mysql.com/) | ![Release Candidate](https://img.shields.io/badge/-rc-mediumorchid) | +| `neo4j` | [Neo4j](https://neo4j.com/) | ![Experimental](https://img.shields.io/badge/-experimental-blue) | +| `opensearch` | [OpenSearch](https://opensearch.org/) | ![Experimental](https://img.shields.io/badge/-experimental-blue) | +| `oracle.db` | [Oracle Database](https://www.oracle.com/database/) | ![Experimental](https://img.shields.io/badge/-experimental-blue) | +| `other_sql` | Some other SQL database. Fallback only. | ![Experimental](https://img.shields.io/badge/-experimental-blue) | +| `postgresql` | [PostgreSQL](https://www.postgresql.org/) | ![Release Candidate](https://img.shields.io/badge/-rc-mediumorchid) | +| `redis` | [Redis](https://redis.io/) | ![Experimental](https://img.shields.io/badge/-experimental-blue) | +| `sap.hana` | [SAP HANA](https://www.sap.com/products/technology-platform/hana/what-is-sap-hana.html) | ![Experimental](https://img.shields.io/badge/-experimental-blue) | +| `sap.maxdb` | [SAP MaxDB](https://maxdb.sap.com/) | ![Experimental](https://img.shields.io/badge/-experimental-blue) | +| `softwareag.adabas` | [Adabas (Adaptable Database System)](https://documentation.softwareag.com/?pf=adabas) | ![Experimental](https://img.shields.io/badge/-experimental-blue) | +| `sqlite` | [SQLite](https://www.sqlite.org/) | ![Experimental](https://img.shields.io/badge/-experimental-blue) | +| `teradata` | [Teradata](https://www.teradata.com/) | ![Experimental](https://img.shields.io/badge/-experimental-blue) | +| `trino` | [Trino](https://trino.io/) | ![Experimental](https://img.shields.io/badge/-experimental-blue) | --- diff --git a/docs/database/database-spans.md b/docs/database/database-spans.md index 957c01fbc9..4e88de089b 100644 --- a/docs/database/database-spans.md +++ b/docs/database/database-spans.md @@ -13,7 +13,7 @@ linkTitle: Client Calls - [Name](#name) - [Status](#status) - [Common attributes](#common-attributes) - - [Notes and well-known identifiers for `db.system`](#notes-and-well-known-identifiers-for-dbsystem) + - [Notes and well-known identifiers for `db.system.name`](#notes-and-well-known-identifiers-for-dbsystemname) - [Sanitization of `db.query.text`](#sanitization-of-dbquerytext) - [Generating a summary of the query text](#generating-a-summary-of-the-query-text) - [Semantic Conventions for specific database technologies](#semantic-conventions-for-specific-database-technologies) @@ -107,7 +107,7 @@ These attributes are commonly used across different database systems. | Attribute | Type | Description | Examples | [Requirement Level](https://opentelemetry.io/docs/specs/semconv/general/attribute-requirement-level/) | Stability | |---|---|---|---|---|---| -| [`db.system`](/docs/attributes-registry/db.md) | string | The database management system (DBMS) product as identified by the client instrumentation. [1] | `other_sql`; `adabas`; `cache` | `Required` | ![Release Candidate](https://img.shields.io/badge/-rc-mediumorchid) | +| [`db.system.name`](/docs/attributes-registry/db.md) | string | The database management system (DBMS) product as identified by the client instrumentation. [1] | `other_sql`; `softwareag.adabas`; `actian.ingres` | `Required` | ![Release Candidate](https://img.shields.io/badge/-rc-mediumorchid) | | [`db.collection.name`](/docs/attributes-registry/db.md) | string | The name of a collection (table, container) within the database. [2] | `public.users`; `customers` | `Conditionally Required` [3] | ![Release Candidate](https://img.shields.io/badge/-rc-mediumorchid) | | [`db.namespace`](/docs/attributes-registry/db.md) | string | The name of the database, fully qualified within the server address and port. [4] | `customers`; `test.users` | `Conditionally Required` If available. | ![Release Candidate](https://img.shields.io/badge/-rc-mediumorchid) | | [`db.operation.name`](/docs/attributes-registry/db.md) | string | The name of the operation or command being executed. [5] | `findAndModify`; `HMSET`; `SELECT` | `Conditionally Required` [6] | ![Release Candidate](https://img.shields.io/badge/-rc-mediumorchid) | @@ -123,7 +123,7 @@ These attributes are commonly used across different database systems. | [`server.address`](/docs/attributes-registry/server.md) | string | Name of the database host. [18] | `example.com`; `10.1.2.80`; `/tmp/my.sock` | `Recommended` | ![Stable](https://img.shields.io/badge/-stable-lightgreen) | | [`db.operation.parameter.`](/docs/attributes-registry/db.md) | string | A database operation parameter, with `` being the parameter name, and the attribute value being a string representation of the parameter value. [19] | `someval`; `55` | `Opt-In` | ![Release Candidate](https://img.shields.io/badge/-rc-mediumorchid) | -**[1] `db.system`:** The actual DBMS may differ from the one identified by the client. For example, when using PostgreSQL client libraries to connect to a CockroachDB, the `db.system` is set to `postgresql` based on the instrumentation's best knowledge. +**[1] `db.system.name`:** The actual DBMS may differ from the one identified by the client. For example, when using PostgreSQL client libraries to connect to a CockroachDB, the `db.system.name` is set to `postgresql` based on the instrumentation's best knowledge. **[2] `db.collection.name`:** It is RECOMMENDED to capture the value as provided by the application without attempting to do any case normalization. @@ -195,65 +195,57 @@ and SHOULD be provided **at span creation time** (if provided at all): * [`db.operation.name`](/docs/attributes-registry/db.md) * [`db.query.summary`](/docs/attributes-registry/db.md) * [`db.query.text`](/docs/attributes-registry/db.md) -* [`db.system`](/docs/attributes-registry/db.md) +* [`db.system.name`](/docs/attributes-registry/db.md) * [`server.address`](/docs/attributes-registry/server.md) * [`server.port`](/docs/attributes-registry/server.md) --- -`db.system` has the following list of well-known values. If one of them applies, then the respective value MUST be used; otherwise, a custom value MAY be used. +`db.system.name` has the following list of well-known values. If one of them applies, then the respective value MUST be used; otherwise, a custom value MAY be used. | Value | Description | Stability | |---|---|---| -| `adabas` | Adabas (Adaptable Database System) | ![Experimental](https://img.shields.io/badge/-experimental-blue) | -| `cassandra` | Apache Cassandra | ![Experimental](https://img.shields.io/badge/-experimental-blue) | -| `clickhouse` | ClickHouse | ![Experimental](https://img.shields.io/badge/-experimental-blue) | -| `cockroachdb` | CockroachDB | ![Experimental](https://img.shields.io/badge/-experimental-blue) | -| `cosmosdb` | Microsoft Azure Cosmos DB | ![Experimental](https://img.shields.io/badge/-experimental-blue) | -| `couchbase` | Couchbase | ![Experimental](https://img.shields.io/badge/-experimental-blue) | -| `couchdb` | CouchDB | ![Experimental](https://img.shields.io/badge/-experimental-blue) | -| `db2` | IBM Db2 | ![Experimental](https://img.shields.io/badge/-experimental-blue) | -| `derby` | Apache Derby | ![Experimental](https://img.shields.io/badge/-experimental-blue) | -| `dynamodb` | Amazon DynamoDB | ![Experimental](https://img.shields.io/badge/-experimental-blue) | -| `edb` | EnterpriseDB | ![Experimental](https://img.shields.io/badge/-experimental-blue) | -| `elasticsearch` | Elasticsearch | ![Experimental](https://img.shields.io/badge/-experimental-blue) | -| `filemaker` | FileMaker | ![Experimental](https://img.shields.io/badge/-experimental-blue) | -| `firebird` | Firebird | ![Experimental](https://img.shields.io/badge/-experimental-blue) | -| `geode` | Apache Geode | ![Experimental](https://img.shields.io/badge/-experimental-blue) | -| `h2` | H2 | ![Experimental](https://img.shields.io/badge/-experimental-blue) | -| `hanadb` | SAP HANA | ![Experimental](https://img.shields.io/badge/-experimental-blue) | -| `hbase` | Apache HBase | ![Experimental](https://img.shields.io/badge/-experimental-blue) | -| `hive` | Apache Hive | ![Experimental](https://img.shields.io/badge/-experimental-blue) | -| `hsqldb` | HyperSQL DataBase | ![Experimental](https://img.shields.io/badge/-experimental-blue) | -| `influxdb` | InfluxDB | ![Experimental](https://img.shields.io/badge/-experimental-blue) | -| `informix` | Informix | ![Experimental](https://img.shields.io/badge/-experimental-blue) | -| `ingres` | Ingres | ![Experimental](https://img.shields.io/badge/-experimental-blue) | -| `instantdb` | InstantDB | ![Experimental](https://img.shields.io/badge/-experimental-blue) | -| `interbase` | InterBase | ![Experimental](https://img.shields.io/badge/-experimental-blue) | -| `intersystems_cache` | InterSystems Caché | ![Experimental](https://img.shields.io/badge/-experimental-blue) | -| `mariadb` | MariaDB (This value has stability level RELEASE CANDIDATE) | ![Release Candidate](https://img.shields.io/badge/-rc-mediumorchid) | -| `maxdb` | SAP MaxDB | ![Experimental](https://img.shields.io/badge/-experimental-blue) | -| `memcached` | Memcached | ![Experimental](https://img.shields.io/badge/-experimental-blue) | -| `mongodb` | MongoDB | ![Experimental](https://img.shields.io/badge/-experimental-blue) | -| `mssql` | Microsoft SQL Server (This value has stability level RELEASE CANDIDATE) | ![Release Candidate](https://img.shields.io/badge/-rc-mediumorchid) | -| `mysql` | MySQL (This value has stability level RELEASE CANDIDATE) | ![Release Candidate](https://img.shields.io/badge/-rc-mediumorchid) | -| `neo4j` | Neo4j | ![Experimental](https://img.shields.io/badge/-experimental-blue) | -| `netezza` | Netezza | ![Experimental](https://img.shields.io/badge/-experimental-blue) | -| `opensearch` | OpenSearch | ![Experimental](https://img.shields.io/badge/-experimental-blue) | -| `oracle` | Oracle Database | ![Experimental](https://img.shields.io/badge/-experimental-blue) | -| `other_sql` | Some other SQL database. Fallback only. See notes. | ![Experimental](https://img.shields.io/badge/-experimental-blue) | -| `pervasive` | Pervasive PSQL | ![Experimental](https://img.shields.io/badge/-experimental-blue) | -| `pointbase` | PointBase | ![Experimental](https://img.shields.io/badge/-experimental-blue) | -| `postgresql` | PostgreSQL (This value has stability level RELEASE CANDIDATE) | ![Release Candidate](https://img.shields.io/badge/-rc-mediumorchid) | -| `progress` | Progress Database | ![Experimental](https://img.shields.io/badge/-experimental-blue) | -| `redis` | Redis | ![Experimental](https://img.shields.io/badge/-experimental-blue) | -| `redshift` | Amazon Redshift | ![Experimental](https://img.shields.io/badge/-experimental-blue) | -| `spanner` | Cloud Spanner | ![Experimental](https://img.shields.io/badge/-experimental-blue) | -| `sqlite` | SQLite | ![Experimental](https://img.shields.io/badge/-experimental-blue) | -| `sybase` | Sybase | ![Experimental](https://img.shields.io/badge/-experimental-blue) | -| `teradata` | Teradata | ![Experimental](https://img.shields.io/badge/-experimental-blue) | -| `trino` | Trino | ![Experimental](https://img.shields.io/badge/-experimental-blue) | -| `vertica` | Vertica | ![Experimental](https://img.shields.io/badge/-experimental-blue) | +| `actian.ingres` | [Actian Ingres](https://www.actian.com/databases/ingres/) | ![Experimental](https://img.shields.io/badge/-experimental-blue) | +| `aws.dynamodb` | [Amazon DynamoDB](https://aws.amazon.com/pm/dynamodb/) | ![Experimental](https://img.shields.io/badge/-experimental-blue) | +| `aws.redshift` | [Amazon Redshift](https://aws.amazon.com/redshift/) | ![Experimental](https://img.shields.io/badge/-experimental-blue) | +| `azure.cosmosdb` | [Azure Cosmos DB](https://learn.microsoft.com/azure/cosmos-db) | ![Experimental](https://img.shields.io/badge/-experimental-blue) | +| `cassandra` | [Apache Cassandra](https://cassandra.apache.org/) | ![Experimental](https://img.shields.io/badge/-experimental-blue) | +| `clickhouse` | [ClickHouse](https://clickhouse.com/) | ![Experimental](https://img.shields.io/badge/-experimental-blue) | +| `cockroachdb` | [CockroachDB](https://www.cockroachlabs.com/) | ![Experimental](https://img.shields.io/badge/-experimental-blue) | +| `couchbase` | [Couchbase](https://www.couchbase.com/) | ![Experimental](https://img.shields.io/badge/-experimental-blue) | +| `couchdb` | [Apache CouchDB](https://couchdb.apache.org/) | ![Experimental](https://img.shields.io/badge/-experimental-blue) | +| `derby` | [Apache Derby](https://db.apache.org/derby/) | ![Experimental](https://img.shields.io/badge/-experimental-blue) | +| `elasticsearch` | [Elasticsearch](https://www.elastic.co/elasticsearch) | ![Experimental](https://img.shields.io/badge/-experimental-blue) | +| `firebirdsql` | [Firebird](https://www.firebirdsql.org/) | ![Experimental](https://img.shields.io/badge/-experimental-blue) | +| `gcp.spanner` | [Google Cloud Spanner](https://cloud.google.com/spanner) | ![Experimental](https://img.shields.io/badge/-experimental-blue) | +| `geode` | [Apache Geode](https://geode.apache.org/) | ![Experimental](https://img.shields.io/badge/-experimental-blue) | +| `h2database` | [H2 Database](https://h2database.com/) | ![Experimental](https://img.shields.io/badge/-experimental-blue) | +| `hbase` | [Apache HBase](https://hbase.apache.org/) | ![Experimental](https://img.shields.io/badge/-experimental-blue) | +| `hive` | [Apache Hive](https://hive.apache.org/) | ![Experimental](https://img.shields.io/badge/-experimental-blue) | +| `hsqldb` | [HyperSQL Database](https://hsqldb.org/) | ![Experimental](https://img.shields.io/badge/-experimental-blue) | +| `ibm.db2` | [IBM Db2](https://www.ibm.com/db2) | ![Experimental](https://img.shields.io/badge/-experimental-blue) | +| `ibm.informix` | [IBM Informix](https://www.ibm.com/products/informix) | ![Experimental](https://img.shields.io/badge/-experimental-blue) | +| `ibm.netezza` | [IBM Netezza](https://www.ibm.com/products/netezza) | ![Experimental](https://img.shields.io/badge/-experimental-blue) | +| `influxdb` | [InfluxDB](https://www.influxdata.com/) | ![Experimental](https://img.shields.io/badge/-experimental-blue) | +| `instantdb` | [Instant](https://www.instantdb.com/) | ![Experimental](https://img.shields.io/badge/-experimental-blue) | +| `intersystems.cache` | [InterSystems Caché](https://www.intersystems.com/products/cache/) | ![Experimental](https://img.shields.io/badge/-experimental-blue) | +| `mariadb` | [MariaDB](https://mariadb.org/) | ![Release Candidate](https://img.shields.io/badge/-rc-mediumorchid) | +| `memcached` | [Memcached](https://memcached.org/) | ![Experimental](https://img.shields.io/badge/-experimental-blue) | +| `microsoft.sql_server` | [Microsoft SQL Server](https://www.microsoft.com/sql-server) | ![Release Candidate](https://img.shields.io/badge/-rc-mediumorchid) | +| `mongodb` | [MongoDB](https://www.mongodb.com/) | ![Experimental](https://img.shields.io/badge/-experimental-blue) | +| `mysql` | [MySQL](https://www.mysql.com/) | ![Release Candidate](https://img.shields.io/badge/-rc-mediumorchid) | +| `neo4j` | [Neo4j](https://neo4j.com/) | ![Experimental](https://img.shields.io/badge/-experimental-blue) | +| `opensearch` | [OpenSearch](https://opensearch.org/) | ![Experimental](https://img.shields.io/badge/-experimental-blue) | +| `oracle.db` | [Oracle Database](https://www.oracle.com/database/) | ![Experimental](https://img.shields.io/badge/-experimental-blue) | +| `other_sql` | Some other SQL database. Fallback only. | ![Experimental](https://img.shields.io/badge/-experimental-blue) | +| `postgresql` | [PostgreSQL](https://www.postgresql.org/) | ![Release Candidate](https://img.shields.io/badge/-rc-mediumorchid) | +| `redis` | [Redis](https://redis.io/) | ![Experimental](https://img.shields.io/badge/-experimental-blue) | +| `sap.hana` | [SAP HANA](https://www.sap.com/products/technology-platform/hana/what-is-sap-hana.html) | ![Experimental](https://img.shields.io/badge/-experimental-blue) | +| `sap.maxdb` | [SAP MaxDB](https://maxdb.sap.com/) | ![Experimental](https://img.shields.io/badge/-experimental-blue) | +| `softwareag.adabas` | [Adabas (Adaptable Database System)](https://documentation.softwareag.com/?pf=adabas) | ![Experimental](https://img.shields.io/badge/-experimental-blue) | +| `sqlite` | [SQLite](https://www.sqlite.org/) | ![Experimental](https://img.shields.io/badge/-experimental-blue) | +| `teradata` | [Teradata](https://www.teradata.com/) | ![Experimental](https://img.shields.io/badge/-experimental-blue) | +| `trino` | [Trino](https://trino.io/) | ![Experimental](https://img.shields.io/badge/-experimental-blue) | --- @@ -268,9 +260,9 @@ and SHOULD be provided **at span creation time** (if provided at all): -### Notes and well-known identifiers for `db.system` +### Notes and well-known identifiers for `db.system.name` -The list above is a non-exhaustive list of well-known identifiers to be specified for `db.system`. +The list above is a non-exhaustive list of well-known identifiers to be specified for `db.system.name`. If a value defined in this list applies to the DBMS to which the request is sent, this value MUST be used. If no value defined in this list is suitable, a custom value MUST be provided. @@ -407,12 +399,12 @@ More specific Semantic Conventions are defined for the following database techno * [AWS DynamoDB](dynamodb.md): Semantic Conventions for *AWS DynamoDB*. * [Cassandra](cassandra.md): Semantic Conventions for *Cassandra*. -* [Cosmos DB](cosmosdb.md): Semantic Conventions for *Microsoft Cosmos DB*. +* [Azure Cosmos DB](cosmosdb.md): Semantic Conventions for *Azure Cosmos DB*. * [CouchDB](couchdb.md): Semantic Conventions for *CouchDB*. * [Elasticsearch](elasticsearch.md): Semantic Conventions for *Elasticsearch*. * [HBase](hbase.md): Semantic Conventions for *HBase*. * [MongoDB](mongodb.md): Semantic Conventions for *MongoDB*. -* [MSSQL](mssql.md): Semantic Conventions for *MSSQL*. +* [Microsoft SQL Server](mssql.md): Semantic Conventions for *Microsoft SQL Server*. * [Redis](redis.md): Semantic Conventions for *Redis*. * [SQL](sql.md): Semantic Conventions for *SQL* databases. diff --git a/docs/database/dynamodb.md b/docs/database/dynamodb.md index 8f68f6834a..803355d7dc 100644 --- a/docs/database/dynamodb.md +++ b/docs/database/dynamodb.md @@ -35,7 +35,7 @@ Spans representing calls to AWS DynamoDB adhere to the general [Semantic Convent The following table outlines the span attributes applicable to DynamoDB. -`db.system` MUST be set to `"dynamodb"` and SHOULD be provided **at span creation time**. +`db.system.name` MUST be set to `"aws.dynamodb"` and SHOULD be provided **at span creation time**. ### DynamoDB.BatchGetItem diff --git a/docs/database/elasticsearch.md b/docs/database/elasticsearch.md index ae6c202f57..a438aa5ef4 100644 --- a/docs/database/elasticsearch.md +++ b/docs/database/elasticsearch.md @@ -38,15 +38,15 @@ The following table outlines the span attributes applicable to Elasticsearch. | [`db.operation.name`](/docs/attributes-registry/db.md) | string | The name of the operation or command being executed. [1] | `search`; `ml.close_job`; `cat.aliases` | `Required` | ![Release Candidate](https://img.shields.io/badge/-rc-mediumorchid) | | [`http.request.method`](/docs/attributes-registry/http.md) | string | HTTP request method. [2] | `GET`; `POST`; `HEAD` | `Required` | ![Stable](https://img.shields.io/badge/-stable-lightgreen) | | [`url.full`](/docs/attributes-registry/url.md) | string | Absolute URL describing a network resource according to [RFC3986](https://www.rfc-editor.org/rfc/rfc3986) [3] | `https://localhost:9200/index/_search?q=user.id:kimchy` | `Required` | ![Stable](https://img.shields.io/badge/-stable-lightgreen) | -| [`db.elasticsearch.path_parts.`](/docs/attributes-registry/db.md) | string | A dynamic value in the url path. [4] | `db.elasticsearch.path_parts.index=test-index`; `db.elasticsearch.path_parts.doc_id=123` | `Conditionally Required` when the url has dynamic values | ![Experimental](https://img.shields.io/badge/-experimental-blue) | +| [`db.operation.parameter.`](/docs/attributes-registry/db.md) | string | A dynamic value in the url path. [4] | `db.operation.parameter.index="test-index"`; `db.operation.parameter="123"` | `Conditionally Required` when the url has path parameters | ![Experimental](https://img.shields.io/badge/-experimental-blue) | | [`db.response.status_code`](/docs/attributes-registry/db.md) | string | The HTTP response code returned by the Elasticsearch cluster. [5] | `200`; `201`; `429` | `Conditionally Required` If response was received. | ![Release Candidate](https://img.shields.io/badge/-rc-mediumorchid) | | [`error.type`](/docs/attributes-registry/error.md) | string | Describes a class of error the operation ended with. [6] | `timeout`; `java.net.UnknownHostException`; `server_certificate_invalid`; `500` | `Conditionally Required` If and only if the operation failed. | ![Stable](https://img.shields.io/badge/-stable-lightgreen) | | [`server.port`](/docs/attributes-registry/server.md) | int | Server port number. [7] | `80`; `8080`; `443` | `Conditionally Required` [8] | ![Stable](https://img.shields.io/badge/-stable-lightgreen) | | [`db.collection.name`](/docs/attributes-registry/db.md) | string | The index or data stream against which the query is executed. [9] | `my_index`; `index1, index2` | `Recommended` | ![Release Candidate](https://img.shields.io/badge/-rc-mediumorchid) | -| [`db.elasticsearch.node.name`](/docs/attributes-registry/db.md) | string | Represents the human-readable identifier of the node/instance to which a request was routed. [10] | `instance-0000000001` | `Recommended` | ![Experimental](https://img.shields.io/badge/-experimental-blue) | -| [`db.namespace`](/docs/attributes-registry/db.md) | string | The name of the Elasticsearch cluster which the client connects to. [11] | `customers`; `test.users` | `Recommended` | ![Release Candidate](https://img.shields.io/badge/-rc-mediumorchid) | -| [`db.operation.batch.size`](/docs/attributes-registry/db.md) | int | The number of queries included in a batch operation. [12] | `2`; `3`; `4` | `Recommended` | ![Release Candidate](https://img.shields.io/badge/-rc-mediumorchid) | -| [`db.query.text`](/docs/attributes-registry/db.md) | string | The request body for a [search-type query](https://www.elastic.co/guide/en/elasticsearch/reference/current/search.html), as a json string. [13] | `"{\"query\":{\"term\":{\"user.id\":\"kimchy\"}}}"` | `Recommended` [14] | ![Release Candidate](https://img.shields.io/badge/-rc-mediumorchid) | +| [`db.namespace`](/docs/attributes-registry/db.md) | string | The name of the Elasticsearch cluster which the client connects to. [10] | `customers`; `test.users` | `Recommended` | ![Release Candidate](https://img.shields.io/badge/-rc-mediumorchid) | +| [`db.operation.batch.size`](/docs/attributes-registry/db.md) | int | The number of queries included in a batch operation. [11] | `2`; `3`; `4` | `Recommended` | ![Release Candidate](https://img.shields.io/badge/-rc-mediumorchid) | +| [`db.query.text`](/docs/attributes-registry/db.md) | string | The request body for a [search-type query](https://www.elastic.co/guide/en/elasticsearch/reference/current/search.html), as a json string. [12] | `"{\"query\":{\"term\":{\"user.id\":\"kimchy\"}}}"` | `Recommended` [13] | ![Release Candidate](https://img.shields.io/badge/-rc-mediumorchid) | +| [`elasticsearch.node.name`](/docs/attributes-registry/elasticsearch.md) | string | Represents the human-readable identifier of the node/instance to which a request was routed. [14] | `instance-0000000001` | `Recommended` | ![Experimental](https://img.shields.io/badge/-experimental-blue) | | [`server.address`](/docs/attributes-registry/server.md) | string | Name of the database host. [15] | `example.com`; `10.1.2.80`; `/tmp/my.sock` | `Recommended` | ![Stable](https://img.shields.io/badge/-stable-lightgreen) | **[1] `db.operation.name`:** The `db.operation.name` SHOULD match the endpoint identifier provided in the request (see the [Elasticsearch schema](https://raw.githubusercontent.com/elastic/elasticsearch-specification/main/output/schema/schema.json)). @@ -90,7 +90,7 @@ This list is subject to change over time. When a query string value is redacted, the query string key SHOULD still be preserved, e.g. `https://www.example.com/path?color=blue&sig=REDACTED`. -**[4] `db.elasticsearch.path_parts`:** Many Elasticsearch url paths allow dynamic values. These SHOULD be recorded in span attributes in the format `db.elasticsearch.path_parts.`, where `` is the url path part name. The implementation SHOULD reference the [elasticsearch schema](https://raw.githubusercontent.com/elastic/elasticsearch-specification/main/output/schema/schema.json) in order to map the path part values to their names. +**[4] `db.operation.parameter`:** Many Elasticsearch url paths allow dynamic values. These SHOULD be recorded in span attributes in the format `db.operation.parameter.`, where `` is the path parameter name. The implementation SHOULD reference the [elasticsearch schema](https://raw.githubusercontent.com/elastic/elasticsearch-specification/main/output/schema/schema.json) in order to map the path parameter values to their names. **[5] `db.response.status_code`:** HTTP response codes in the 4xx and 5xx range SHOULD be considered errors. @@ -104,17 +104,17 @@ Instrumentations SHOULD document how `error.type` is populated. **[9] `db.collection.name`:** The query may target multiple indices or data streams, in which case it SHOULD be a comma separated list of those. If the query doesn't target a specific index, this field MUST NOT be set. -**[10] `db.elasticsearch.node.name`:** When communicating with an Elastic Cloud deployment, this should be collected from the "X-Found-Handling-Instance" HTTP response header. +**[10] `db.namespace`:** When communicating with an Elastic Cloud deployment, this should be collected from the "X-Found-Handling-Cluster" HTTP response header. -**[11] `db.namespace`:** When communicating with an Elastic Cloud deployment, this should be collected from the "X-Found-Handling-Cluster" HTTP response header. +**[11] `db.operation.batch.size`:** Operations are only considered batches when they contain two or more operations, and so `db.operation.batch.size` SHOULD never be `1`. -**[12] `db.operation.batch.size`:** Operations are only considered batches when they contain two or more operations, and so `db.operation.batch.size` SHOULD never be `1`. - -**[13] `db.query.text`:** For sanitization see [Sanitization of `db.query.text`](../../docs/database/database-spans.md#sanitization-of-dbquerytext). +**[12] `db.query.text`:** For sanitization see [Sanitization of `db.query.text`](../../docs/database/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. 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. -**[14] `db.query.text`:** Should be collected by default for search-type queries and only if there is sanitization that excludes sensitive information. +**[13] `db.query.text`:** Should be collected by default for search-type queries and only if there is sanitization that excludes sensitive information. + +**[14] `elasticsearch.node.name`:** When communicating with an Elastic Cloud deployment, this should be collected from the "X-Found-Handling-Instance" HTTP response header. **[15] `server.address`:** When observed from the client side, and when communicating through an intermediary, `server.address` SHOULD represent the server address behind any intermediaries, for example proxies, if it's available. @@ -165,7 +165,7 @@ and SHOULD be provided **at span creation time** (if provided at all): | Key | Value | |:------------------------------------|:------------------------------------------------------------------------------------------------------------------------------------| | Span name | `"search my-index"` | -| `db.system` | `"elasticsearch"` | +| `db.system.name` | `"elasticsearch"` | | `server.address` | `"elasticsearch.mydomain.com"` | | `server.port` | `9200` | | `http.request.method` | `"GET"` | @@ -173,9 +173,9 @@ and SHOULD be provided **at span creation time** (if provided at all): | `db.operation.name` | `"search"` | | `db.collection.name` | `"my-index"` | | `url.full` | `"https://elasticsearch.mydomain.com:9200/my-index-000001/_search?from=40&size=20"` | -| `db.elasticsearch.path_parts.index` | `"my-index-000001"` | | `db.namespace` | `"my-cluster"` | -| `db.elasticsearch.node.name` | `"instance-0000000001"` | +| `elasticsearch.node.name` | `"instance-0000000001"` | +| `db.operation.parameter.index` | `"my-index-000001"` | ## Metrics diff --git a/docs/database/hbase.md b/docs/database/hbase.md index 70a06b2dfa..9d0152f9f3 100644 --- a/docs/database/hbase.md +++ b/docs/database/hbase.md @@ -19,7 +19,7 @@ The Semantic Conventions for [HBase](https://hbase.apache.org/) extend and overr Spans representing calls to an HBase database adhere to the general [Semantic Conventions for Database Client Spans](database-spans.md). -`db.system` MUST be set to `"hbase"` and SHOULD be provided **at span creation time**. +`db.system.name` MUST be set to `"hbase"` and SHOULD be provided **at span creation time**. The following table outlines the span attributes applicable to HBase. diff --git a/docs/database/mariadb.md b/docs/database/mariadb.md index e6c52a5d43..c2d3591f65 100644 --- a/docs/database/mariadb.md +++ b/docs/database/mariadb.md @@ -19,7 +19,7 @@ The Semantic Conventions for *MariaDB* extend and override the [Database Semanti Spans representing calls to MariaDB adhere to the general [Semantic Conventions for Database Client Spans](database-spans.md). -`db.system` MUST be set to `"mariadb"` and SHOULD be provided **at span creation time**. +`db.system.name` MUST be set to `"mariadb"` and SHOULD be provided **at span creation time**. The following table outlines the span attributes applicable to MariaDB. diff --git a/docs/database/mongodb.md b/docs/database/mongodb.md index b463d1b271..da42c8dcfd 100644 --- a/docs/database/mongodb.md +++ b/docs/database/mongodb.md @@ -21,7 +21,7 @@ The Semantic Conventions for [MongoDB](https://www.mongodb.com/) extend and over Spans representing calls to MongoDB adhere to the general [Semantic Conventions for Database Client Spans](database-spans.md). -`db.system` MUST be set to `"mongodb"` and SHOULD be provided **at span creation time**. +`db.system.name` MUST be set to `"mongodb"` and SHOULD be provided **at span creation time**. The following table outlines the span attributes applicable to MongoDB. @@ -98,7 +98,7 @@ and SHOULD be provided **at span creation time** (if provided at all): | Key | Value | |:------------------------| :----------------------------------------------------------- | | Span name | `"findAndModify products"` | -| `db.system` | `"mongodb"` | +| `db.system.name` | `"mongodb"` | | `server.address` | `"mongodb0.example.com"` | | `server.port` | `27017` | | `network.peer.address` | `"192.0.2.14"` | diff --git a/docs/database/mssql.md b/docs/database/mssql.md index 432054d351..8b13653a9b 100644 --- a/docs/database/mssql.md +++ b/docs/database/mssql.md @@ -19,7 +19,7 @@ The Semantic Conventions for *Microsoft SQL Server* extend and override the [Dat Spans representing calls to Microsoft SQL Server adhere to the general [Semantic Conventions for Database Client Spans](database-spans.md). -`db.system` MUST be set to `"mssql"` and SHOULD be provided **at span creation time**. +`db.system.name` MUST be set to `"microsoft.sql_server"` and SHOULD be provided **at span creation time**. The following table outlines the span attributes applicable to Microsoft SQL Server. diff --git a/docs/database/mysql.md b/docs/database/mysql.md index 9090f6e239..07a303d21b 100644 --- a/docs/database/mysql.md +++ b/docs/database/mysql.md @@ -19,7 +19,7 @@ The Semantic Conventions for *MySQL* extend and override the [Database Semantic Spans representing calls to a MySQL database adhere to the general [Semantic Conventions for Database Client Spans](database-spans.md). -`db.system` MUST be set to `"mysql"` and SHOULD be provided **at span creation time**. +`db.system.name` MUST be set to `"mysql"` and SHOULD be provided **at span creation time**. The following table outlines the span attributes applicable to MySQL. diff --git a/docs/database/postgresql.md b/docs/database/postgresql.md index 29dadd2e61..55e1190a5b 100644 --- a/docs/database/postgresql.md +++ b/docs/database/postgresql.md @@ -19,7 +19,7 @@ The Semantic Conventions for *PostgreSQL* extend and override the [Database Sema Spans representing calls to a PostgreSQL database adhere to the general [Semantic Conventions for Database Client Spans](database-spans.md). -`db.system` MUST be set to `"postgresql"` and SHOULD be provided **at span creation time**. +`db.system.name` MUST be set to `"postgresql"` and SHOULD be provided **at span creation time**. The following table outlines the span attributes applicable to PostgreSQL. diff --git a/docs/database/redis.md b/docs/database/redis.md index e0f85218a7..4dc079bfd5 100644 --- a/docs/database/redis.md +++ b/docs/database/redis.md @@ -8,7 +8,7 @@ linkTitle: Redis The Semantic Conventions for [Redis](https://redis.com/) extend and override the [Database Semantic Conventions](database-spans.md). -`db.system` MUST be set to `"redis"` and SHOULD be provided **at span creation time**. +`db.system.name` MUST be set to `"redis"` and SHOULD be provided **at span creation time**. ## Span name @@ -116,7 +116,7 @@ In this example, Redis is connected using a unix domain socket and therefore the | Key | Value | |:--------------------------| :-------------------------------------------- | | Span name | `"HMSET 15"` | -| `db.system` | `"redis"` | +| `db.system.name` | `"redis"` | | `network.peer.address` | `"/tmp/redis.sock"` | | `network.transport` | `"unix"` | | `db.namespace` | `"15"` | diff --git a/docs/database/sql.md b/docs/database/sql.md index b935d68ee7..f3486f69b4 100644 --- a/docs/database/sql.md +++ b/docs/database/sql.md @@ -8,26 +8,22 @@ linkTitle: SQL The SQL databases Semantic Conventions describes how common [Database Semantic Conventions](database-spans.md) apply to SQL databases. -The following database systems (defined in the [`db.system`](./database-spans.md#notes-and-well-known-identifiers-for-dbsystem) set) are known to use SQL as their primary query language: +The following database systems (defined in the [`db.system.name`](./database-spans.md#notes-and-well-known-identifiers-for-dbsystemname) set) are known to use SQL as their primary query language: +- `actian.ingres` - `cockroachdb` -- `db2` - `derby` -- `edb` -- `firebird` -- `h2` +- `firebirdsql` +- `h2database` - `hsqldb` -- `ingres` -- `interbase` +- `ibm.db2` - `mariadb` -- `maxdb` -- `mssql` -- `mssqlcompact` +- `microsoft.sql_server` - `mysql` -- `oracle` +- `oracle.db` - `other_sql` -- `pervasive` - `postgresql` +- `sap.maxdb` - `sqlite` - `trino` @@ -166,7 +162,7 @@ This is an example of attributes for a MySQL database span: |:-----------------------| :----------------------------------------------------------- | | Span name | `"SELECT orders"` | | `db.namespace` | `"ShopDb"` | -| `db.system` | `"mysql"` | +| `db.system.name` | `"mysql"` | | `server.address` | `"shopdb.example.com"` | | `server.port` | `3306` | | `db.query.text` | `"SELECT * FROM orders WHERE order_id = 'o4711'"` | diff --git a/docs/general/attribute-requirement-level.md b/docs/general/attribute-requirement-level.md index 3a962bef7d..39c96791ee 100644 --- a/docs/general/attribute-requirement-level.md +++ b/docs/general/attribute-requirement-level.md @@ -59,7 +59,7 @@ example of a Required attribute. _Note: Consumers of telemetry can detect if a telemetry item follows a specific semantic convention by checking for the presence of a `Required` attribute -defined by such convention. For example, the presence of the `db.system` +defined by such convention. For example, the presence of the `db.system.name` attribute on a span can be used as an indication that the span follows database semantics._ diff --git a/internal/tools/scripts/registry/areas.md.j2 b/internal/tools/scripts/registry/areas.md.j2 index f10bdea506..974f2fc3f7 100644 --- a/internal/tools/scripts/registry/areas.md.j2 +++ b/internal/tools/scripts/registry/areas.md.j2 @@ -1,5 +1,5 @@ {{- template.set_file_name("areas.txt") -}} -{% for item in ctx | map('map_text', 'areas') | sort %} +{% for item in ctx | map('map_text', 'areas') | unique | sort %} area:{{ item | kebab_case }} {% endfor %} \ No newline at end of file diff --git a/model/aws/registry.yaml b/model/aws/registry.yaml index 092ef48d9b..49144c3d0f 100644 --- a/model/aws/registry.yaml +++ b/model/aws/registry.yaml @@ -3,7 +3,7 @@ groups: type: attribute_group display_name: General AWS Attributes brief: > - This document defines generic attributes for AWS services. + This section defines generic attributes for AWS services. attributes: - id: aws.request_id type: string diff --git a/model/database/cosmosdb-metrics.yaml b/model/azure/cosmosdb-metrics.yaml similarity index 57% rename from model/database/cosmosdb-metrics.yaml rename to model/azure/cosmosdb-metrics.yaml index bd2a548eed..05996fe462 100644 --- a/model/database/cosmosdb-metrics.yaml +++ b/model/azure/cosmosdb-metrics.yaml @@ -1,27 +1,27 @@ groups: - - id: metric.db.client.cosmosdb.operation.request_charge + - id: metric.azure.cosmosdb.client.operation.request_charge type: metric - metric_name: db.client.cosmosdb.operation.request_charge - brief: "[Request charge](https://learn.microsoft.com/azure/cosmos-db/request-units) consumed by the operation" + metric_name: azure.cosmosdb.client.operation.request_charge + brief: "[Request units](https://learn.microsoft.com/azure/cosmos-db/request-units) consumed by the operation" instrument: histogram unit: "{request_unit}" - stability: experimental - extends: attributes.db.cosmosdb.minimal + stability: development + extends: attributes.azure.cosmosdb.minimal attributes: - - ref: db.cosmosdb.regions_contacted + - ref: azure.cosmosdb.operation.contacted_regions requirement_level: recommended: If available - - id: metric.db.client.cosmosdb.active_instance.count + - id: metric.azure.cosmosdb.client.active_instance.count type: metric - metric_name: db.client.cosmosdb.active_instance.count + metric_name: azure.cosmosdb.client.active_instance.count brief: "Number of active client instances" instrument: updowncounter unit: "{instance}" - stability: experimental + stability: development attributes: # TODO: add db.system once https://github.com/open-telemetry/build-tools/issues/192 is possible - # - ref: db.system + # - ref: db.system.name # requirement_level: # conditionally_required: if available - ref: server.address diff --git a/model/azure/registry.yaml b/model/azure/registry.yaml index dea2e1dd83..6687b9d8a0 100644 --- a/model/azure/registry.yaml +++ b/model/azure/registry.yaml @@ -1,20 +1,92 @@ groups: - - id: registry.azure.sdk + - id: registry.azure.client.sdk type: attribute_group - display_name: Azure SDK Attributes + display_name: Azure Client Library Attributes brief: > - This document defines generic attributes for Azure SDK. + This section defines generic attributes used by Azure Client Libraries. attributes: - id: az.service_request_id type: string - stability: experimental + stability: development brief: "The unique identifier of the service request. It's generated by the Azure service and returned with the response." examples: - "00000000-0000-0000-0000-000000000000" - id: az.namespace type: string - stability: experimental + stability: development brief: > [Azure Resource Provider Namespace](https://learn.microsoft.com/azure/azure-resource-manager/management/azure-services-resource-providers) as recognized by the client. examples: ["Microsoft.Storage", "Microsoft.KeyVault", "Microsoft.ServiceBus"] + - id: azure.client.id + type: string + stability: development + brief: The unique identifier of the client instance. + examples: ["3ba4827d-4422-483f-b59f-85b74211c11d", "storage-client-1"] + - id: registry.azure.cosmosdb + type: attribute_group + display_name: Azure Cosmos DB Attributes + stability: development + brief: > + This section defines attributes for Azure Cosmos DB. + attributes: + - id: azure.cosmosdb.connection.mode + type: + members: + - id: gateway + value: "gateway" + brief: Gateway (HTTP) connection. + stability: development + - id: direct + value: "direct" + brief: Direct connection. + stability: development + stability: development + brief: Cosmos client connection mode. + - id: azure.cosmosdb.operation.request_charge + type: double + stability: development + brief: > + The number of request units consumed by the operation. + examples: [46.18, 1.0] + - id: azure.cosmosdb.request.body.size + type: int + stability: development + brief: Request payload size in bytes. + - id: azure.cosmosdb.operation.contacted_regions + type: string[] + stability: development + brief: > + 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. + note: > + 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) + examples: + - ["North Central US", "Australia East", "Australia Southeast"] + - id: azure.cosmosdb.response.sub_status_code + type: int + stability: development + brief: Cosmos DB sub status code. + examples: [1000, 1002] + - id: azure.cosmosdb.consistency.level + type: + members: + - id: strong + value: "Strong" + stability: development + - id: bounded_staleness + value: "BoundedStaleness" + stability: development + - id: session + value: "Session" + stability: development + - id: eventual + value: "Eventual" + stability: development + - id: consistent_prefix + value: "ConsistentPrefix" + stability: development + stability: development + brief: Account or request [consistency level](https://learn.microsoft.com/azure/cosmos-db/consistency-levels). + examples: ["Eventual", "ConsistentPrefix", "BoundedStaleness", "Strong", "Session"] diff --git a/model/cassandra/registry.yaml b/model/cassandra/registry.yaml new file mode 100644 index 0000000000..fbfba03c4f --- /dev/null +++ b/model/cassandra/registry.yaml @@ -0,0 +1,75 @@ +groups: + - id: registry.cassandra + type: attribute_group + display_name: Cassandra Attributes + brief: > + This section defines attributes for Cassandra. + attributes: + - id: cassandra.coordinator.dc + type: string + stability: development + brief: > + The data center of the coordinating node for a query. + examples: "us-west-2" + - id: cassandra.coordinator.id + type: string + stability: development + brief: > + The ID of the coordinating node for a query. + examples: "be13faa2-8574-4d71-926d-27f16cf8a7af" + - id: cassandra.consistency.level + brief: > + The consistency level of the query. Based on consistency values from [CQL](https://docs.datastax.com/en/cassandra-oss/3.0/cassandra/dml/dmlConfigConsistency.html). + type: + members: + - id: all + value: "all" + stability: development + - id: each_quorum + value: "each_quorum" + stability: development + - id: quorum + value: "quorum" + stability: development + - id: local_quorum + value: "local_quorum" + stability: development + - id: one + value: "one" + stability: development + - id: two + value: "two" + stability: development + - id: three + value: "three" + stability: development + - id: local_one + value: "local_one" + stability: development + - id: any + value: "any" + stability: development + - id: serial + value: "serial" + stability: development + - id: local_serial + value: "local_serial" + stability: development + stability: development + - id: cassandra.query.idempotent + type: boolean + stability: development + brief: > + Whether or not the query is idempotent. + - id: cassandra.page.size + type: int + stability: development + brief: > + The fetch size used for paging, i.e. how many rows will be returned at once. + examples: [5000] + - id: cassandra.speculative_execution.count + type: int + stability: development + brief: > + The number of times a query was speculatively executed. Not set or `0` if the query was not executed speculatively. + examples: [0, 2] diff --git a/model/database/common.yaml b/model/database/common.yaml index 2e8fe7b188..4aebe26a68 100644 --- a/model/database/common.yaml +++ b/model/database/common.yaml @@ -26,14 +26,14 @@ groups: Instrumentations SHOULD document how `error.type` is populated. - - id: attributes.db.cosmosdb.minimal + - id: attributes.azure.cosmosdb.minimal type: attribute_group brief: 'Azure Cosmos DB Client attributes' - stability: experimental + stability: development extends: attributes.db.client.minimal attributes: # TODO: add db.system once https://github.com/open-telemetry/build-tools/issues/192 is possible - # - ref: db.system + # - ref: db.system.name # requirement_level: # conditionally_required: if available - ref: db.operation.name @@ -50,10 +50,10 @@ groups: requirement_level: conditionally_required: If available. note: "" # overriding the base note - - ref: db.cosmosdb.sub_status_code + - ref: azure.cosmosdb.response.sub_status_code requirement_level: conditionally_required: when response was received and contained sub-code. - - ref: db.cosmosdb.consistency_level + - ref: azure.cosmosdb.consistency.level requirement_level: conditionally_required: If available. diff --git a/model/database/deprecated/metrics-deprecated.yaml b/model/database/deprecated/metrics-deprecated.yaml index ebe45355d9..f0d2fcec2d 100644 --- a/model/database/deprecated/metrics-deprecated.yaml +++ b/model/database/deprecated/metrics-deprecated.yaml @@ -108,3 +108,52 @@ groups: attributes: - ref: db.client.connections.pool.name requirement_level: required + + - id: metric.db.client.cosmosdb.operation.request_charge + type: metric + metric_name: db.client.cosmosdb.operation.request_charge + brief: "Deprecated, use `azure.cosmosdb.client.operation.request_charge` instead." + deprecated: "Replaced by `azure.cosmosdb.client.operation.request_charge`." + instrument: histogram + unit: "{request_unit}" + stability: experimental + attributes: + - ref: db.operation.name + requirement_level: + conditionally_required: > + If readily available and if there is a single operation name that describes the + database call. The operation name MAY be parsed from the query text, + in which case it SHOULD be the single operation name found in the query. + - ref: db.collection.name + brief: Cosmos DB container name. + requirement_level: + conditionally_required: If available. + - ref: db.namespace + requirement_level: + conditionally_required: If available. + note: "" + - ref: db.cosmosdb.sub_status_code + requirement_level: + conditionally_required: when response was received and contained sub-code. + - ref: db.cosmosdb.consistency_level + requirement_level: + conditionally_required: If available. + - ref: db.cosmosdb.regions_contacted + requirement_level: + recommended: If available + + - id: metric.db.client.cosmosdb.active_instance.count + type: metric + metric_name: db.client.cosmosdb.active_instance.count + brief: "Deprecated, use `azure.cosmosdb.client.active_instance.count` instead." + deprecated: "Replaced by `azure.cosmosdb.client.active_instance.count`." + instrument: updowncounter + unit: "{instance}" + stability: experimental + attributes: + - ref: server.address + brief: > + Name of the database host. + - ref: server.port + requirement_level: + conditionally_required: If using a port other than the default port for this DBMS and if `server.address` is set. diff --git a/model/database/deprecated/registry-deprecated.yaml b/model/database/deprecated/registry-deprecated.yaml index ce41bced8f..1dc1a06c2f 100644 --- a/model/database/deprecated/registry-deprecated.yaml +++ b/model/database/deprecated/registry-deprecated.yaml @@ -3,7 +3,7 @@ groups: type: attribute_group display_name: Deprecated Database Attributes brief: > - "Describes deprecated db attributes." + Describes deprecated database attributes. stability: experimental attributes: - id: db.connection_string @@ -157,6 +157,386 @@ groups: deprecated: "No replacement at this time." brief: Deprecated, no replacement at this time. + - id: db.cassandra.coordinator.dc + type: string + stability: experimental + brief: "Deprecated, use `cassandra.coordinator.dc` instead." + deprecated: "Replaced by `cassandra.coordinator.dc`." + examples: "us-west-2" + - id: db.cassandra.coordinator.id + type: string + stability: experimental + brief: "Deprecated, use `cassandra.coordinator.id` instead." + deprecated: "Replaced by `cassandra.coordinator.id`." + examples: "be13faa2-8574-4d71-926d-27f16cf8a7af" + - id: db.cassandra.consistency_level + brief: "Deprecated, use `cassandra.consistency.level` instead." + deprecated: "Replaced by `cassandra.consistency.level`." + type: + members: + - id: all + value: "all" + stability: experimental + - id: each_quorum + value: "each_quorum" + stability: experimental + - id: quorum + value: "quorum" + stability: experimental + - id: local_quorum + value: "local_quorum" + stability: experimental + - id: one + value: "one" + stability: experimental + - id: two + value: "two" + stability: experimental + - id: three + value: "three" + stability: experimental + - id: local_one + value: "local_one" + stability: experimental + - id: any + value: "any" + stability: experimental + - id: serial + value: "serial" + stability: experimental + - id: local_serial + value: "local_serial" + stability: experimental + stability: experimental + - id: db.cassandra.idempotence + type: boolean + stability: experimental + brief: "Deprecated, use `cassandra.query.idempotent` instead." + deprecated: "Replaced by `cassandra.query.idempotent`." + - id: db.cassandra.page_size + type: int + stability: experimental + brief: "Deprecated, use `cassandra.page.size` instead." + deprecated: "Replaced by `cassandra.page.size`." + examples: [5000] + - id: db.cassandra.speculative_execution_count + type: int + stability: experimental + brief: "Deprecated, use `cassandra.speculative_execution.count` instead." + deprecated: "Replaced by `cassandra.speculative_execution.count`." + examples: [0, 2] + - id: db.cosmosdb.client_id + type: string + stability: experimental + brief: "Deprecated, use `azure.client.id` instead." + deprecated: "Replaced by `azure.client.id`." + examples: "3ba4827d-4422-483f-b59f-85b74211c11d" + - id: db.cosmosdb.connection_mode + type: + members: + - id: gateway + value: "gateway" + brief: Gateway (HTTP) connection. + stability: experimental + - id: direct + value: "direct" + brief: Direct connection. + stability: experimental + stability: experimental + brief: "Deprecated, use `azure.cosmosdb.connection.mode` instead." + deprecated: "Replaced by `azure.cosmosdb.connection.mode`." + - id: db.cosmosdb.request_charge + type: double + stability: experimental + brief: "Deprecated, use `azure.cosmosdb.operation.request_charge` instead." + deprecated: "Replaced by `azure.cosmosdb.operation.request_charge`." + examples: [46.18, 1.0] + - id: db.cosmosdb.request_content_length + type: int + stability: experimental + brief: "Deprecated, use `azure.cosmosdb.request.body.size` instead." + deprecated: "Replaced by `azure.cosmosdb.request.body.size`." + - id: db.cosmosdb.sub_status_code + type: int + stability: experimental + brief: "Deprecated, use `azure.cosmosdb.response.sub_status_code` instead." + deprecated: "Replaced by `azure.cosmosdb.response.sub_status_code`." + examples: [1000, 1002] + - id: db.cosmosdb.consistency_level + type: + members: + - id: strong + value: "Strong" + stability: experimental + - id: bounded_staleness + value: "BoundedStaleness" + stability: experimental + - id: session + value: "Session" + stability: experimental + - id: eventual + value: "Eventual" + stability: experimental + - id: consistent_prefix + value: "ConsistentPrefix" + stability: experimental + stability: experimental + brief: "Deprecated, use `cosmosdb.consistency.level` instead." + deprecated: "Replaced by `azure.cosmosdb.consistency.level`." + examples: ["Eventual", "ConsistentPrefix", "BoundedStaleness", "Strong", "Session"] + - id: db.cosmosdb.regions_contacted + type: string[] + stability: experimental + brief: "Deprecated, use `azure.cosmosdb.operation.contacted_regions` instead." + deprecated: "Replaced by `azure.cosmosdb.operation.contacted_regions`." + examples: + - ["North Central US", "Australia East", "Australia Southeast"] + - id: db.elasticsearch.node.name + type: string + stability: experimental + brief: > + Deprecated, use `elasticsearch.node.name` instead. + deprecated: "Replaced by `elasticsearch.node.name`." + examples: ["instance-0000000001"] + - id: db.elasticsearch.path_parts + type: template[string] + stability: experimental + brief: > + Deprecated, use `db.operation.parameter` instead. + deprecated: "Replaced by `db.operation.parameter`." + examples: + [ + "db.elasticsearch.path_parts.index=test-index", + "db.elasticsearch.path_parts.doc_id=123", + ] + - id: db.system + brief: "Deprecated, use `db.system.name` instead." + deprecated: "Replaced by `db.system.name`." + type: + members: + - id: other_sql + value: "other_sql" + brief: "Some other SQL database. Fallback only. See notes." + stability: experimental + - id: adabas + value: "adabas" + brief: "Adabas (Adaptable Database System)" + stability: experimental + - id: cache + value: "cache" + deprecated: "Replaced by `intersystems_cache`." + brief: "Deprecated, use `intersystems_cache` instead." + stability: experimental + - id: intersystems_cache + value: "intersystems_cache" + brief: "InterSystems Caché" + stability: experimental + - id: cassandra + value: "cassandra" + brief: "Apache Cassandra" + stability: experimental + - id: clickhouse + value: "clickhouse" + brief: "ClickHouse" + stability: experimental + - id: cloudscape + value: "cloudscape" + deprecated: "Replaced by `other_sql`." + brief: "Deprecated, use `other_sql` instead." + stability: experimental + - id: cockroachdb + value: "cockroachdb" + brief: "CockroachDB" + stability: experimental + - id: coldfusion + value: "coldfusion" + deprecated: "Removed." + brief: "Deprecated, no replacement at this time." + stability: experimental + - id: cosmosdb + value: "cosmosdb" + brief: "Microsoft Azure Cosmos DB" + stability: experimental + - id: couchbase + value: "couchbase" + brief: "Couchbase" + stability: experimental + - id: couchdb + value: "couchdb" + brief: "CouchDB" + stability: experimental + - id: db2 + value: "db2" + brief: "IBM Db2" + stability: experimental + - id: derby + value: "derby" + brief: "Apache Derby" + stability: experimental + - id: dynamodb + value: "dynamodb" + brief: "Amazon DynamoDB" + stability: experimental + - id: edb + value: "edb" + brief: "EnterpriseDB" + stability: experimental + - id: elasticsearch + value: "elasticsearch" + brief: "Elasticsearch" + stability: experimental + - id: filemaker + value: "filemaker" + brief: "FileMaker" + stability: experimental + - id: firebird + value: "firebird" + brief: "Firebird" + stability: experimental + - id: firstsql + value: "firstsql" + deprecated: "Replaced by `other_sql`." + brief: "Deprecated, use `other_sql` instead." + stability: experimental + - id: geode + value: "geode" + brief: "Apache Geode" + stability: experimental + - id: h2 + value: "h2" + brief: "H2" + stability: experimental + - id: hanadb + value: "hanadb" + brief: "SAP HANA" + stability: experimental + - id: hbase + value: "hbase" + brief: "Apache HBase" + stability: experimental + - id: hive + value: "hive" + brief: "Apache Hive" + stability: experimental + - id: hsqldb + value: "hsqldb" + brief: "HyperSQL DataBase" + stability: experimental + - id: influxdb + value: "influxdb" + brief: "InfluxDB" + stability: experimental + - id: informix + value: "informix" + brief: "Informix" + stability: experimental + - id: ingres + value: "ingres" + brief: "Ingres" + stability: experimental + - id: instantdb + value: "instantdb" + brief: "InstantDB" + stability: experimental + - id: interbase + value: "interbase" + brief: "InterBase" + stability: experimental + - id: mariadb + value: "mariadb" + brief: "MariaDB (This value has stability level RELEASE CANDIDATE)" + stability: release_candidate + - id: maxdb + value: "maxdb" + brief: "SAP MaxDB" + stability: experimental + - id: memcached + value: "memcached" + brief: "Memcached" + stability: experimental + - id: mongodb + value: "mongodb" + brief: "MongoDB" + stability: experimental + - id: mssql + value: "mssql" + brief: "Microsoft SQL Server (This value has stability level RELEASE CANDIDATE)" + stability: release_candidate + - id: mssqlcompact + value: "mssqlcompact" + deprecated: "Removed, use `other_sql` instead." + brief: "Deprecated, Microsoft SQL Server Compact is discontinued." + stability: experimental + - id: mysql + value: "mysql" + brief: "MySQL (This value has stability level RELEASE CANDIDATE)" + stability: release_candidate + - id: neo4j + value: "neo4j" + brief: "Neo4j" + stability: experimental + - id: netezza + value: "netezza" + brief: "Netezza" + stability: experimental + - id: opensearch + value: "opensearch" + brief: "OpenSearch" + stability: experimental + - id: oracle + value: "oracle" + brief: "Oracle Database" + stability: experimental + - id: pervasive + value: "pervasive" + brief: "Pervasive PSQL" + stability: experimental + - id: pointbase + value: "pointbase" + brief: "PointBase" + stability: experimental + - id: postgresql + value: "postgresql" + brief: "PostgreSQL (This value has stability level RELEASE CANDIDATE)" + stability: release_candidate + - id: progress + value: "progress" + brief: "Progress Database" + stability: experimental + - id: redis + value: "redis" + brief: "Redis" + stability: experimental + - id: redshift + value: "redshift" + brief: "Amazon Redshift" + stability: experimental + - id: spanner + value: "spanner" + brief: "Cloud Spanner" + stability: experimental + - id: sqlite + value: "sqlite" + brief: "SQLite" + stability: experimental + - id: sybase + value: "sybase" + brief: "Sybase" + stability: experimental + - id: teradata + value: "teradata" + brief: "Teradata" + stability: experimental + - id: trino + value: "trino" + brief: "Trino" + stability: experimental + - id: vertica + value: "vertica" + brief: "Vertica" + stability: experimental + stability: release_candidate + - id: registry.db.metrics.deprecated type: attribute_group display_name: Deprecated Database Metrics diff --git a/model/database/metrics.yaml b/model/database/metrics.yaml index e73476722d..2bcdebf1e8 100644 --- a/model/database/metrics.yaml +++ b/model/database/metrics.yaml @@ -10,7 +10,7 @@ groups: stability: release_candidate extends: attributes.db.client.with_query_and_collection attributes: - - ref: db.system + - ref: db.system.name # TODO: Not adding to the minimal because of https://github.com/open-telemetry/build-tools/issues/192 requirement_level: required - ref: network.peer.address @@ -141,7 +141,7 @@ groups: stability: experimental extends: attributes.db.client.with_query_and_collection attributes: - - ref: db.system + - ref: db.system.name # TODO: Not adding to the minimal because of https://github.com/open-telemetry/build-tools/issues/192 requirement_level: required - ref: network.peer.address diff --git a/model/database/registry.yaml b/model/database/registry.yaml index 77dc009f4c..0a8de8c4ee 100644 --- a/model/database/registry.yaml +++ b/model/database/registry.yaml @@ -127,238 +127,181 @@ groups: examples: ["102", "ORA-17002", "08P01", "404"] - id: db.response.returned_rows type: int - stability: experimental + stability: development brief: Number of rows returned by the operation. examples: [10, 30, 1000] - - id: db.system + - id: db.system.name brief: The database management system (DBMS) product as identified by the client instrumentation. note: > The actual DBMS may differ from the one identified by the client. - For example, when using PostgreSQL client libraries to connect to a CockroachDB, the `db.system` + For example, when using PostgreSQL client libraries to connect to a CockroachDB, the `db.system.name` is set to `postgresql` based on the instrumentation's best knowledge. type: members: - id: other_sql value: "other_sql" - brief: "Some other SQL database. Fallback only. See notes." - stability: experimental - - id: adabas - value: "adabas" - brief: "Adabas (Adaptable Database System)" - stability: experimental - - id: cache - value: "cache" - deprecated: "Replaced by `intersystems_cache`." - brief: "Deprecated, use `intersystems_cache` instead." - stability: experimental - - id: intersystems_cache - value: "intersystems_cache" - brief: "InterSystems Caché" - stability: experimental + brief: "Some other SQL database. Fallback only." + stability: development + - id: softwareag.adabas + value: "softwareag.adabas" + brief: "[Adabas (Adaptable Database System)](https://documentation.softwareag.com/?pf=adabas)" + stability: development + - id: actian.ingres + value: "actian.ingres" + brief: "[Actian Ingres](https://www.actian.com/databases/ingres/)" + stability: development + - id: aws.dynamodb + value: "aws.dynamodb" + brief: "[Amazon DynamoDB](https://aws.amazon.com/pm/dynamodb/)" + stability: development + - id: aws.redshift + value: "aws.redshift" + brief: "[Amazon Redshift](https://aws.amazon.com/redshift/)" + stability: development + - id: azure.cosmosdb + value: "azure.cosmosdb" + brief: "[Azure Cosmos DB](https://learn.microsoft.com/azure/cosmos-db)" + stability: development + - id: intersystems.cache + value: "intersystems.cache" + brief: "[InterSystems Caché](https://www.intersystems.com/products/cache/)" + stability: development - id: cassandra value: "cassandra" - brief: "Apache Cassandra" - stability: experimental + brief: "[Apache Cassandra](https://cassandra.apache.org/)" + stability: development - id: clickhouse value: "clickhouse" - brief: "ClickHouse" - stability: experimental - - id: cloudscape - value: "cloudscape" - deprecated: "Replaced by `other_sql`." - brief: "Deprecated, use `other_sql` instead." - stability: experimental + brief: "[ClickHouse](https://clickhouse.com/)" + stability: development - id: cockroachdb value: "cockroachdb" - brief: "CockroachDB" - stability: experimental - - id: coldfusion - value: "coldfusion" - deprecated: "Removed." - brief: "Deprecated, no replacement at this time." - stability: experimental - - id: cosmosdb - value: "cosmosdb" - brief: "Microsoft Azure Cosmos DB" - stability: experimental + brief: "[CockroachDB](https://www.cockroachlabs.com/)" + stability: development - id: couchbase value: "couchbase" - brief: "Couchbase" - stability: experimental + brief: "[Couchbase](https://www.couchbase.com/)" + stability: development - id: couchdb value: "couchdb" - brief: "CouchDB" - stability: experimental - - id: db2 - value: "db2" - brief: "IBM Db2" - stability: experimental + brief: "[Apache CouchDB](https://couchdb.apache.org/)" + stability: development - id: derby value: "derby" - brief: "Apache Derby" - stability: experimental - - id: dynamodb - value: "dynamodb" - brief: "Amazon DynamoDB" - stability: experimental - - id: edb - value: "edb" - brief: "EnterpriseDB" - stability: experimental + brief: "[Apache Derby](https://db.apache.org/derby/)" + stability: development - id: elasticsearch value: "elasticsearch" - brief: "Elasticsearch" - stability: experimental - - id: filemaker - value: "filemaker" - brief: "FileMaker" - stability: experimental - - id: firebird - value: "firebird" - brief: "Firebird" - stability: experimental - - id: firstsql - value: "firstsql" - deprecated: "Replaced by `other_sql`." - brief: "Deprecated, use `other_sql` instead." - stability: experimental + brief: "[Elasticsearch](https://www.elastic.co/elasticsearch)" + stability: development + - id: firebirdsql + value: "firebirdsql" + brief: "[Firebird](https://www.firebirdsql.org/)" + stability: development + - id: gcp.spanner + value: "gcp.spanner" + brief: "[Google Cloud Spanner](https://cloud.google.com/spanner)" + stability: development - id: geode value: "geode" - brief: "Apache Geode" - stability: experimental - - id: h2 - value: "h2" - brief: "H2" - stability: experimental - - id: hanadb - value: "hanadb" - brief: "SAP HANA" - stability: experimental + brief: "[Apache Geode](https://geode.apache.org/)" + stability: development + - id: h2database + value: "h2database" + brief: "[H2 Database](https://h2database.com/)" + stability: development - id: hbase value: "hbase" - brief: "Apache HBase" - stability: experimental + brief: "[Apache HBase](https://hbase.apache.org/)" + stability: development - id: hive value: "hive" - brief: "Apache Hive" - stability: experimental + brief: "[Apache Hive](https://hive.apache.org/)" + stability: development - id: hsqldb value: "hsqldb" - brief: "HyperSQL DataBase" - stability: experimental + brief: "[HyperSQL Database](https://hsqldb.org/)" + stability: development + - id: ibm.db2 + value: "ibm.db2" + brief: "[IBM Db2](https://www.ibm.com/db2)" + stability: development + - id: ibm.informix + value: "ibm.informix" + brief: "[IBM Informix](https://www.ibm.com/products/informix)" + stability: development + - id: ibm.netezza + value: "ibm.netezza" + brief: "[IBM Netezza](https://www.ibm.com/products/netezza)" + stability: development - id: influxdb value: "influxdb" - brief: "InfluxDB" - stability: experimental - - id: informix - value: "informix" - brief: "Informix" - stability: experimental - - id: ingres - value: "ingres" - brief: "Ingres" - stability: experimental + brief: "[InfluxDB](https://www.influxdata.com/)" + stability: development - id: instantdb value: "instantdb" - brief: "InstantDB" - stability: experimental - - id: interbase - value: "interbase" - brief: "InterBase" - stability: experimental + brief: "[Instant](https://www.instantdb.com/)" + stability: development - id: mariadb value: "mariadb" - brief: "MariaDB (This value has stability level RELEASE CANDIDATE)" + brief: "[MariaDB](https://mariadb.org/)" stability: release_candidate - - id: maxdb - value: "maxdb" - brief: "SAP MaxDB" - stability: experimental - id: memcached value: "memcached" - brief: "Memcached" - stability: experimental + brief: "[Memcached](https://memcached.org/)" + stability: development - id: mongodb value: "mongodb" - brief: "MongoDB" - stability: experimental - - id: mssql - value: "mssql" - brief: "Microsoft SQL Server (This value has stability level RELEASE CANDIDATE)" + brief: "[MongoDB](https://www.mongodb.com/)" + stability: development + - id: microsoft.sql_server + value: "microsoft.sql_server" + brief: "[Microsoft SQL Server](https://www.microsoft.com/sql-server)" stability: release_candidate - - id: mssqlcompact - value: "mssqlcompact" - deprecated: "Removed, use `other_sql` instead." - brief: "Deprecated, Microsoft SQL Server Compact is discontinued." - stability: experimental - id: mysql value: "mysql" - brief: "MySQL (This value has stability level RELEASE CANDIDATE)" + brief: "[MySQL](https://www.mysql.com/)" stability: release_candidate - id: neo4j value: "neo4j" - brief: "Neo4j" - stability: experimental - - id: netezza - value: "netezza" - brief: "Netezza" - stability: experimental + brief: "[Neo4j](https://neo4j.com/)" + stability: development - id: opensearch value: "opensearch" - brief: "OpenSearch" - stability: experimental - - id: oracle - value: "oracle" - brief: "Oracle Database" - stability: experimental - - id: pervasive - value: "pervasive" - brief: "Pervasive PSQL" - stability: experimental - - id: pointbase - value: "pointbase" - brief: "PointBase" - stability: experimental + brief: "[OpenSearch](https://opensearch.org/)" + stability: development + - id: oracle.db + value: "oracle.db" + brief: "[Oracle Database](https://www.oracle.com/database/)" + stability: development - id: postgresql value: "postgresql" - brief: "PostgreSQL (This value has stability level RELEASE CANDIDATE)" + brief: "[PostgreSQL](https://www.postgresql.org/)" stability: release_candidate - - id: progress - value: "progress" - brief: "Progress Database" - stability: experimental - id: redis value: "redis" - brief: "Redis" - stability: experimental - - id: redshift - value: "redshift" - brief: "Amazon Redshift" - stability: experimental - - id: spanner - value: "spanner" - brief: "Cloud Spanner" - stability: experimental + brief: "[Redis](https://redis.io/)" + stability: development + - id: sap.hana + value: "sap.hana" + brief: "[SAP HANA](https://www.sap.com/products/technology-platform/hana/what-is-sap-hana.html)" + stability: development + - id: sap.maxdb + value: "sap.maxdb" + brief: "[SAP MaxDB](https://maxdb.sap.com/)" + stability: development - id: sqlite value: "sqlite" - brief: "SQLite" - stability: experimental - - id: sybase - value: "sybase" - brief: "Sybase" - stability: experimental + brief: "[SQLite](https://www.sqlite.org/)" + stability: development - id: teradata value: "teradata" - brief: "Teradata" - stability: experimental + brief: "[Teradata](https://www.teradata.com/)" + stability: development - id: trino value: "trino" - brief: "Trino" - stability: experimental - - id: vertica - value: "vertica" - brief: "Vertica" - stability: experimental + brief: "[Trino](https://trino.io/)" + stability: development stability: release_candidate - id: db.client.connection.state stability: experimental @@ -384,175 +327,3 @@ groups: Instrumentations that generate connection pool name following different patterns SHOULD document it. examples: ["myDataSource"] - - id: registry.db.cassandra - type: attribute_group - display_name: Cassandra Attributes - brief: > - This group defines attributes for Cassandra. - attributes: - - id: db.cassandra.coordinator.dc - type: string - stability: experimental - brief: > - The data center of the coordinating node for a query. - examples: "us-west-2" - - id: db.cassandra.coordinator.id - type: string - stability: experimental - brief: > - The ID of the coordinating node for a query. - examples: "be13faa2-8574-4d71-926d-27f16cf8a7af" - - id: db.cassandra.consistency_level - brief: > - The consistency level of the query. Based on consistency values from [CQL](https://docs.datastax.com/en/cassandra-oss/3.0/cassandra/dml/dmlConfigConsistency.html). - type: - members: - - id: all - value: "all" - stability: experimental - - id: each_quorum - value: "each_quorum" - stability: experimental - - id: quorum - value: "quorum" - stability: experimental - - id: local_quorum - value: "local_quorum" - stability: experimental - - id: one - value: "one" - stability: experimental - - id: two - value: "two" - stability: experimental - - id: three - value: "three" - stability: experimental - - id: local_one - value: "local_one" - stability: experimental - - id: any - value: "any" - stability: experimental - - id: serial - value: "serial" - stability: experimental - - id: local_serial - value: "local_serial" - stability: experimental - stability: experimental - - id: db.cassandra.idempotence - type: boolean - stability: experimental - brief: > - Whether or not the query is idempotent. - - id: db.cassandra.page_size - type: int - stability: experimental - brief: > - The fetch size used for paging, i.e. how many rows will be returned at once. - examples: [5000] - - id: db.cassandra.speculative_execution_count - type: int - stability: experimental - brief: > - The number of times a query was speculatively executed. Not set or `0` if the query was not executed speculatively. - examples: [0, 2] - - id: registry.db.cosmosdb - type: attribute_group - display_name: Azure Cosmos DB Attributes - stability: experimental - brief: > - This group defines attributes for Azure Cosmos DB. - attributes: - - id: db.cosmosdb.client_id - type: string - stability: experimental - brief: Unique Cosmos client instance id. - examples: "3ba4827d-4422-483f-b59f-85b74211c11d" - - id: db.cosmosdb.connection_mode - type: - members: - - id: gateway - value: "gateway" - brief: Gateway (HTTP) connection. - stability: experimental - - id: direct - value: "direct" - brief: Direct connection. - stability: experimental - stability: experimental - brief: Cosmos client connection mode. - - id: db.cosmosdb.request_charge - type: double - stability: experimental - brief: Request units consumed for the operation. - examples: [46.18, 1.0] - - id: db.cosmosdb.request_content_length - type: int - stability: experimental - brief: Request payload size in bytes. - - id: db.cosmosdb.sub_status_code - type: int - stability: experimental - brief: Cosmos DB sub status code. - examples: [1000, 1002] - - id: db.cosmosdb.consistency_level - type: - members: - - id: strong - value: "Strong" - stability: experimental - - id: bounded_staleness - value: "BoundedStaleness" - stability: experimental - - id: session - value: "Session" - stability: experimental - - id: eventual - value: "Eventual" - stability: experimental - - id: consistent_prefix - value: "ConsistentPrefix" - stability: experimental - stability: experimental - brief: Account or request [consistency level](https://learn.microsoft.com/azure/cosmos-db/consistency-levels). - examples: ["Eventual", "ConsistentPrefix", "BoundedStaleness", "Strong", "Session"] - - id: db.cosmosdb.regions_contacted - type: string[] - stability: experimental - brief: > - 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. - note: > - 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) - examples: - - ["North Central US", "Australia East", "Australia Southeast"] - - id: registry.db.elasticsearch - type: attribute_group - display_name: Elasticsearch Attributes - brief: > - This group defines attributes for Elasticsearch. - attributes: - - id: db.elasticsearch.node.name - type: string - stability: experimental - brief: > - Represents the human-readable identifier of the node/instance to which a request was routed. - examples: ["instance-0000000001"] - - id: db.elasticsearch.path_parts - type: template[string] - stability: experimental - brief: > - A dynamic value in the url path. - note: > - Many Elasticsearch url paths allow dynamic values. These SHOULD be recorded in span attributes in the format - `db.elasticsearch.path_parts.`, where `` is the url path part name. The implementation SHOULD - reference the [elasticsearch schema](https://raw.githubusercontent.com/elastic/elasticsearch-specification/main/output/schema/schema.json) - in order to map the path part values to their names. - examples: - [ - "db.elasticsearch.path_parts.index=test-index", - "db.elasticsearch.path_parts.doc_id=123", - ] diff --git a/model/database/spans.yaml b/model/database/spans.yaml index 5fd82cef9f..9edef9bc3e 100644 --- a/model/database/spans.yaml +++ b/model/database/spans.yaml @@ -6,7 +6,7 @@ groups: brief: This group defines the attributes used to perform database client calls. attributes: # TODO: add db.system once https://github.com/open-telemetry/build-tools/issues/192 is possible - # - ref: db.system + # - ref: db.system.name # sampling_relevant: true - ref: db.operation.name sampling_relevant: true @@ -99,7 +99,7 @@ groups: - ref: network.peer.port requirement_level: recommended: if and only if `network.peer.address` is set. - - ref: db.system + - ref: db.system.name sampling_relevant: true # TODO: Not adding to the minimal because of https://github.com/open-telemetry/build-tools/issues/192 requirement_level: required @@ -272,14 +272,14 @@ groups: examples: ["mykeyspace"] requirement_level: conditionally_required: If available. - - ref: db.cassandra.page_size - - ref: db.cassandra.consistency_level + - ref: cassandra.page.size + - ref: cassandra.consistency.level - ref: db.collection.name brief: The name of the Cassandra table that the operation is acting upon. - - ref: db.cassandra.idempotence - - ref: db.cassandra.speculative_execution_count - - ref: db.cassandra.coordinator.id - - ref: db.cassandra.coordinator.dc + - ref: cassandra.query.idempotent + - ref: cassandra.speculative_execution.count + - ref: cassandra.coordinator.id + - ref: cassandra.coordinator.dc - ref: network.peer.address brief: Peer address of the database node where the operation was performed. requirement_level: @@ -507,13 +507,26 @@ groups: When communicating with an Elastic Cloud deployment, this should be collected from the "X-Found-Handling-Cluster" HTTP response header. brief: The name of the Elasticsearch cluster which the client connects to. requirement_level: recommended - - ref: db.elasticsearch.node.name + - ref: elasticsearch.node.name note: > When communicating with an Elastic Cloud deployment, this should be collected from the "X-Found-Handling-Instance" HTTP response header. requirement_level: recommended - - ref: db.elasticsearch.path_parts - requirement_level: - conditionally_required: when the url has dynamic values + - ref: db.operation.parameter + stability: development + brief: > + A dynamic value in the url path. + note: > + Many Elasticsearch url paths allow dynamic values. These SHOULD be recorded in span attributes in the format + `db.operation.parameter.`, where `` is the path parameter name. The implementation SHOULD + reference the [elasticsearch schema](https://raw.githubusercontent.com/elastic/elasticsearch-specification/main/output/schema/schema.json) + in order to map the path parameter values to their names. + examples: + [ + 'db.operation.parameter.index="test-index"', + 'db.operation.parameter="123"', + ] + requirement_level: + conditionally_required: when the url has path parameters - ref: db.response.status_code brief: > The HTTP response code returned by the Elasticsearch cluster. @@ -597,15 +610,15 @@ groups: examples: ["ORA-17027", "1052", "2201B"] requirement_level: conditionally_required: If response has ended with warning or an error. - - id: span.db.cosmosdb.client + - id: span.azure.cosmosdb.client type: span - stability: experimental + stability: development span_kind: client extends: trace.db.common.query_and_collection brief: > Attributes for Cosmos DB. attributes: - - ref: db.cosmosdb.client_id + - ref: azure.client.id - ref: user_agent.original brief: 'Full user-agent string is generated by Cosmos DB SDK' note: > @@ -620,7 +633,7 @@ groups: Format Reg-{D (Disabled discovery)}-S(application region)|L(List of preferred regions)|N(None, user did not configure it). Default value is "NS". examples: ['cosmos-netstandard-sdk/3.23.0\|3.23.1\|1\|X64\|Linux 5.4.0-1098-azure 104 18\|.NET Core 3.1.32\|S\|'] - - ref: db.cosmosdb.connection_mode + - ref: azure.cosmosdb.connection.mode requirement_level: conditionally_required: if not `gateway` (the default value is assumed to be `gateway`). - ref: db.collection.name @@ -630,7 +643,7 @@ groups: It is RECOMMENDED to capture the value as provided by the application without attempting to do any case normalization. requirement_level: conditionally_required: if available - - ref: db.cosmosdb.request_content_length + - ref: azure.cosmosdb.request.body.size - ref: db.response.status_code brief: > Cosmos DB status code. @@ -645,10 +658,10 @@ groups: examples: [10, 20] requirement_level: conditionally_required: if response was received and returned any rows - - ref: db.cosmosdb.sub_status_code + - ref: azure.cosmosdb.response.sub_status_code requirement_level: conditionally_required: when response was received and contained sub-code. - - ref: db.cosmosdb.request_charge + - ref: azure.cosmosdb.operation.request_charge requirement_level: conditionally_required: when available - ref: db.namespace @@ -791,9 +804,9 @@ groups: - ref: server.port requirement_level: conditionally_required: If not default (443). - - ref: db.cosmosdb.consistency_level + - ref: azure.cosmosdb.consistency.level requirement_level: conditionally_required: If available. - - ref: db.cosmosdb.regions_contacted + - ref: azure.cosmosdb.operation.contacted_regions requirement_level: conditionally_required: If available. diff --git a/model/elasticsearch/registry.yaml b/model/elasticsearch/registry.yaml new file mode 100644 index 0000000000..68119c6a89 --- /dev/null +++ b/model/elasticsearch/registry.yaml @@ -0,0 +1,13 @@ +groups: + - id: registry.elasticsearch + type: attribute_group + display_name: Elasticsearch Attributes + brief: > + This section defines attributes for Elasticsearch. + attributes: + - id: elasticsearch.node.name + type: string + stability: development + brief: > + Represents the human-readable identifier of the node/instance to which a request was routed. + examples: ["instance-0000000001"] diff --git a/schema-next.yaml b/schema-next.yaml index 8ebce284ac..c708565d5e 100644 --- a/schema-next.yaml +++ b/schema-next.yaml @@ -16,6 +16,31 @@ versions: code.filepath: code.file.path code.lineno: code.line.number code.column: code.column.number + # https://github.com/open-telemetry/semantic-conventions/pull/TODO + - rename_attributes: + attribute_map: + db.system: db.system.name + db.cassandra.coordinator.dc: cassandra.coordinator.dc + db.cassandra.coordinator.id: cassandra.coordinator.id + db.cassandra.consistency_level: cassandra.consistency.level + db.cassandra.idempotence: cassandra.query.idempotent + db.cassandra.page_size: cassandra.page.size + db.cassandra.speculative_execution_count: cassandra.speculative_execution.count + db.cosmosdb.client_id: azure.client.id + db.cosmosdb.connection_mode: azure.cosmosdb.connection.mode + db.cosmosdb.consistency_level: azure.cosmosdb.consistency.level + db.cosmosdb.request_charge: azure.cosmosdb.operation.request_charge + db.cosmosdb.request_content_length: azure.cosmosdb.request.body.size + db.cosmosdb.regions_contacted: azure.cosmosdb.operation.contacted_regions + db.cosmosdb.sub_status_code: azure.cosmosdb.response.sub_status_code + db.elasticsearch.node.name: elasticsearch.node.name + # db.elasticsearch.path_parts is a template attribute, schema transformation + # does not support it, adding as a comment for consistency + # db.elasticsearch.path_parts. -> db.operation.parameter. + - rename_metrics: + db.client.cosmosdb.operation.request_charge: azure.cosmosdb.client.operation.request_charge + db.client.cosmosdb.active_instance.count: azure.cosmosdb.client.active_instance.count + 1.29.0: all: changes: