diff --git a/api/include/opentelemetry/semconv/exception_attributes.h b/api/include/opentelemetry/semconv/exception_attributes.h index fdc19ac6d0..1ad6988833 100644 --- a/api/include/opentelemetry/semconv/exception_attributes.h +++ b/api/include/opentelemetry/semconv/exception_attributes.h @@ -20,21 +20,13 @@ namespace exception { /** - * SHOULD be set to true if the exception event is recorded at a point where it is known that the - * exception is escaping the scope of the span.
An exception is considered to have escaped (or - * left) the scope of a span, if that span is ended while the exception is still logically "in - * flight". This may be actually "in flight" in some languages (e.g. if the exception is passed to a - * Context manager's @code __exit__ @endcode method in Python) but will usually be caught at the - * point of recording the exception in most languages.
It is usually not possible to determine - * at the point where an exception is thrown whether it will escape the scope of a span. However, it - * is trivial to know that an exception will escape, if one checks for an active exception just - * before ending the span, as done in the example - * for recording span exceptions.
It follows that an exception may still escape the scope of - * the span even if the @code exception.escaped @endcode attribute was not set or set to false, - * since the event might have been recorded at a time where it was not - * clear whether the exception will escape. + * Indicates that the exception is escaping the scope of the span. + *
+ * @deprecated + * It's no longer recommended to record exceptions that are handled and do not escape the scope of a + * span. */ +OPENTELEMETRY_DEPRECATED static constexpr const char *kExceptionEscaped = "exception.escaped"; /** diff --git a/api/include/opentelemetry/semconv/incubating/artifact_attributes.h b/api/include/opentelemetry/semconv/incubating/artifact_attributes.h index d3bb99f6e5..9d52c9bb38 100644 --- a/api/include/opentelemetry/semconv/incubating/artifact_attributes.h +++ b/api/include/opentelemetry/semconv/incubating/artifact_attributes.h @@ -29,9 +29,9 @@ static constexpr const char *kArtifactAttestationFilename = "artifact.attestatio /** * The full hash value (see - * glossary), of the built attestation. Some envelopes in the software attestation space also - * refer to this as the digest. + * glossary), of the built attestation. Some envelopes in the software attestation space also + * refer to this as the digest. */ static constexpr const char *kArtifactAttestationHash = "artifact.attestation.hash"; diff --git a/api/include/opentelemetry/semconv/incubating/aws_attributes.h b/api/include/opentelemetry/semconv/incubating/aws_attributes.h index b17493879f..9544844e9c 100644 --- a/api/include/opentelemetry/semconv/incubating/aws_attributes.h +++ b/api/include/opentelemetry/semconv/incubating/aws_attributes.h @@ -186,6 +186,11 @@ static constexpr const char *kAwsEcsTaskRevision = "aws.ecs.task.revision"; */ static constexpr const char *kAwsEksClusterArn = "aws.eks.cluster.arn"; +/** + * The AWS extended request ID as returned in the response header @code x-amz-id-2 @endcode. + */ +static constexpr const char *kAwsExtendedRequestId = "aws.extended_request_id"; + /** * The full invoked ARN as provided on the @code Context @endcode passed to the function (@code * Lambda-Runtime-Invoked-Function-Arn @endcode header on the @code /runtime/invocation/next @@ -227,8 +232,8 @@ static constexpr const char *kAwsLogStreamArns = "aws.log.stream.arns"; static constexpr const char *kAwsLogStreamNames = "aws.log.stream.names"; /** - * The AWS request ID as returned in the response headers @code x-amz-request-id @endcode or @code - * x-amz-requestid @endcode. + * The AWS request ID as returned in the response headers @code x-amzn-requestid @endcode, @code + * x-amzn-request-id @endcode or @code x-amz-request-id @endcode. */ static constexpr const char *kAwsRequestId = "aws.request_id"; diff --git a/api/include/opentelemetry/semconv/incubating/azure_attributes.h b/api/include/opentelemetry/semconv/incubating/azure_attributes.h new file mode 100644 index 0000000000..529265efe1 --- /dev/null +++ b/api/include/opentelemetry/semconv/incubating/azure_attributes.h @@ -0,0 +1,110 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + +/* + * DO NOT EDIT, this is an Auto-generated file from: + * buildscripts/semantic-convention/templates/registry/semantic_attributes-h.j2 + */ + +#pragma once + +#include "opentelemetry/common/macros.h" +#include "opentelemetry/version.h" + +OPENTELEMETRY_BEGIN_NAMESPACE +namespace semconv +{ +namespace azure +{ + +/** + * The unique identifier of the client instance. + */ +static constexpr const char *kAzureClientId = "azure.client.id"; + +/** + * Cosmos client connection mode. + */ +static constexpr const char *kAzureCosmosdbConnectionMode = "azure.cosmosdb.connection.mode"; + +/** + * Account or request consistency level. + */ +static constexpr const char *kAzureCosmosdbConsistencyLevel = "azure.cosmosdb.consistency.level"; + +/** + * List of regions contacted during operation in the order that they were contacted. If there is + * more than one region listed, it indicates that the operation was performed on multiple regions + * i.e. cross-regional call.
Region name matches the format of @code displayName @endcode in Azure + * Location API + */ +static constexpr const char *kAzureCosmosdbOperationContactedRegions = + "azure.cosmosdb.operation.contacted_regions"; + +/** + * The number of request units consumed by the operation. + */ +static constexpr const char *kAzureCosmosdbOperationRequestCharge = + "azure.cosmosdb.operation.request_charge"; + +/** + * Request payload size in bytes. + */ +static constexpr const char *kAzureCosmosdbRequestBodySize = "azure.cosmosdb.request.body.size"; + +/** + * Cosmos DB sub status code. + */ +static constexpr const char *kAzureCosmosdbResponseSubStatusCode = + "azure.cosmosdb.response.sub_status_code"; + +namespace AzureCosmosdbConnectionModeValues +{ +/** + * Gateway (HTTP) connection. + */ +static constexpr const char *kGateway = "gateway"; + +/** + * Direct connection. + */ +static constexpr const char *kDirect = "direct"; + +} // namespace AzureCosmosdbConnectionModeValues + +namespace AzureCosmosdbConsistencyLevelValues +{ +/** + * none + */ +static constexpr const char *kStrong = "Strong"; + +/** + * none + */ +static constexpr const char *kBoundedStaleness = "BoundedStaleness"; + +/** + * none + */ +static constexpr const char *kSession = "Session"; + +/** + * none + */ +static constexpr const char *kEventual = "Eventual"; + +/** + * none + */ +static constexpr const char *kConsistentPrefix = "ConsistentPrefix"; + +} // namespace AzureCosmosdbConsistencyLevelValues + +} // namespace azure +} // namespace semconv +OPENTELEMETRY_END_NAMESPACE diff --git a/api/include/opentelemetry/semconv/incubating/azure_metrics.h b/api/include/opentelemetry/semconv/incubating/azure_metrics.h new file mode 100644 index 0000000000..63f4556b0b --- /dev/null +++ b/api/include/opentelemetry/semconv/incubating/azure_metrics.h @@ -0,0 +1,97 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + +/* + * DO NOT EDIT, this is an Auto-generated file from: + * buildscripts/semantic-convention/templates/registry/semantic_metrics-h.j2 + */ + +#pragma once + +#include "opentelemetry/common/macros.h" +#include "opentelemetry/metrics/meter.h" +#include "opentelemetry/version.h" + +OPENTELEMETRY_BEGIN_NAMESPACE +namespace semconv +{ +namespace azure +{ + +/** + * Number of active client instances + *
+ * updowncounter
+ */
+static constexpr const char *kMetricAzureCosmosdbClientActiveInstanceCount =
+ "azure.cosmosdb.client.active_instance.count";
+static constexpr const char *descrMetricAzureCosmosdbClientActiveInstanceCount =
+ "Number of active client instances";
+static constexpr const char *unitMetricAzureCosmosdbClientActiveInstanceCount = "{instance}";
+
+static inline nostd::unique_ptr histogram
+ */
+static constexpr const char *kMetricAzureCosmosdbClientOperationRequestCharge =
+ "azure.cosmosdb.client.operation.request_charge";
+static constexpr const char *descrMetricAzureCosmosdbClientOperationRequestCharge =
+ "[Request units](https://learn.microsoft.com/azure/cosmos-db/request-units) consumed by the "
+ "operation";
+static constexpr const char *unitMetricAzureCosmosdbClientOperationRequestCharge = "{request_unit}";
+
+static inline nostd::unique_ptr
+ * updowncounter
+ */
+static constexpr const char *kMetricCicdPipelineRunActive = "cicd.pipeline.run.active";
+static constexpr const char *descrMetricCicdPipelineRunActive =
+ "The number of pipeline runs currently active in the system by state.";
+static constexpr const char *unitMetricCicdPipelineRunActive = "{run}";
+
+static inline nostd::unique_ptr
+ * histogram
+ */
+static constexpr const char *kMetricCicdPipelineRunDuration = "cicd.pipeline.run.duration";
+static constexpr const char *descrMetricCicdPipelineRunDuration =
+ "Duration of a pipeline run grouped by pipeline, state and result.";
+static constexpr const char *unitMetricCicdPipelineRunDuration = "s";
+
+static inline nostd::unique_ptr
+ * There might be errors in a pipeline run that are non fatal (eg. they are suppressed) or in a
+ * parallel stage multiple stages could have a fatal error. This means that this error count might
+ * not be the same as the count of metric @code cicd.pipeline.run.duration @endcode with run result
+ * @code failure @endcode. counter
+ */
+static constexpr const char *kMetricCicdPipelineRunErrors = "cicd.pipeline.run.errors";
+static constexpr const char *descrMetricCicdPipelineRunErrors =
+ "The number of errors encountered in pipeline runs (eg. compile, test failures).";
+static constexpr const char *unitMetricCicdPipelineRunErrors = "{error}";
+
+static inline nostd::unique_ptr
+ * Errors in pipeline run execution are explicitly excluded. Ie a test failure is not counted in
+ * this metric. counter
+ */
+static constexpr const char *kMetricCicdSystemErrors = "cicd.system.errors";
+static constexpr const char *descrMetricCicdSystemErrors =
+ "The number of errors in a component of the CICD system (eg. controller, scheduler, agent).";
+static constexpr const char *unitMetricCicdSystemErrors = "{error}";
+
+static inline nostd::unique_ptr
+ * updowncounter
+ */
+static constexpr const char *kMetricCicdWorkerCount = "cicd.worker.count";
+static constexpr const char *descrMetricCicdWorkerCount =
+ "The number of workers on the CICD system by state.";
+static constexpr const char *unitMetricCicdWorkerCount = "{count}";
+
+static inline nostd::unique_ptr
+ * @deprecated
+ * Replaced by @code code.column.number @endcode
*/
+OPENTELEMETRY_DEPRECATED
static constexpr const char *kCodeColumn = "code.column";
+/**
+ * The column number in @code code.file.path @endcode best representing the operation. It SHOULD
+ * point within the code unit named in @code code.function.name @endcode.
+ */
+static constexpr const char *kCodeColumnNumber = "code.column.number";
+
/**
* The source code file name that identifies the code unit as uniquely as possible (preferably an
* absolute file path).
*/
+static constexpr const char *kCodeFilePath = "code.file.path";
+
+/**
+ * Deprecated, use @code code.file.path @endcode instead
+ */
static constexpr const char *kCodeFilepath = "code.filepath";
/**
- * The method or function name, or equivalent (usually rightmost part of the code unit's name).
+ * Deprecated, use @code code.function.name @endcode instead
+ *
+ * @deprecated
+ * Replaced by @code code.function.name @endcode
*/
+OPENTELEMETRY_DEPRECATED
static constexpr const char *kCodeFunction = "code.function";
/**
- * The line number in @code code.filepath @endcode best representing the operation. It SHOULD point
- * within the code unit named in @code code.function @endcode.
+ * The method or function name, or equivalent (usually rightmost part of the code unit's name).
+ */
+static constexpr const char *kCodeFunctionName = "code.function.name";
+
+/**
+ * The line number in @code code.file.path @endcode best representing the operation. It SHOULD point
+ * within the code unit named in @code code.function.name @endcode.
+ */
+static constexpr const char *kCodeLineNumber = "code.line.number";
+
+/**
+ * Deprecated, use @code code.line.number @endcode instead
+ *
+ * @deprecated
+ * Replaced by @code code.line.number @endcode
*/
+OPENTELEMETRY_DEPRECATED
static constexpr const char *kCodeLineno = "code.lineno";
/**
- * The "namespace" within which @code code.function @endcode is defined. Usually the qualified class
- * or module name, such that @code code.namespace @endcode + some separator + @code code.function
- * @endcode form a unique identifier for the code unit.
+ * The "namespace" within which @code code.function.name @endcode is defined. Usually the qualified
+ * class or module name, such that @code code.namespace @endcode + some separator + @code
+ * code.function.name @endcode form a unique identifier for the code unit.
*/
static constexpr const char *kCodeNamespace = "code.namespace";
diff --git a/api/include/opentelemetry/semconv/incubating/db_attributes.h b/api/include/opentelemetry/semconv/incubating/db_attributes.h
index 22148fed13..b85e508940 100644
--- a/api/include/opentelemetry/semconv/incubating/db_attributes.h
+++ b/api/include/opentelemetry/semconv/incubating/db_attributes.h
@@ -20,35 +20,57 @@ namespace db
{
/**
- * The consistency level of the query. Based on consistency values from CQL.
+ * Deprecated, use @code cassandra.consistency.level @endcode instead.
+ *
+ * @deprecated
+ * Replaced by @code cassandra.consistency.level @endcode.
*/
+OPENTELEMETRY_DEPRECATED
static constexpr const char *kDbCassandraConsistencyLevel = "db.cassandra.consistency_level";
/**
- * The data center of the coordinating node for a query.
+ * Deprecated, use @code cassandra.coordinator.dc @endcode instead.
+ *
+ * @deprecated
+ * Replaced by @code cassandra.coordinator.dc @endcode.
*/
+OPENTELEMETRY_DEPRECATED
static constexpr const char *kDbCassandraCoordinatorDc = "db.cassandra.coordinator.dc";
/**
- * The ID of the coordinating node for a query.
+ * Deprecated, use @code cassandra.coordinator.id @endcode instead.
+ *
+ * @deprecated
+ * Replaced by @code cassandra.coordinator.id @endcode.
*/
+OPENTELEMETRY_DEPRECATED
static constexpr const char *kDbCassandraCoordinatorId = "db.cassandra.coordinator.id";
/**
- * Whether or not the query is idempotent.
+ * Deprecated, use @code cassandra.query.idempotent @endcode instead.
+ *
+ * @deprecated
+ * Replaced by @code cassandra.query.idempotent @endcode.
*/
+OPENTELEMETRY_DEPRECATED
static constexpr const char *kDbCassandraIdempotence = "db.cassandra.idempotence";
/**
- * The fetch size used for paging, i.e. how many rows will be returned at once.
+ * Deprecated, use @code cassandra.page.size @endcode instead.
+ *
+ * @deprecated
+ * Replaced by @code cassandra.page.size @endcode.
*/
+OPENTELEMETRY_DEPRECATED
static constexpr const char *kDbCassandraPageSize = "db.cassandra.page_size";
/**
- * The number of times a query was speculatively executed. Not set or @code 0 @endcode if the query
- * was not executed speculatively.
+ * Deprecated, use @code cassandra.speculative_execution.count @endcode instead.
+ *
+ * @deprecated
+ * Replaced by @code cassandra.speculative_execution.count @endcode.
*/
+OPENTELEMETRY_DEPRECATED
static constexpr const char *kDbCassandraSpeculativeExecutionCount =
"db.cassandra.speculative_execution_count";
@@ -103,8 +125,6 @@ static constexpr const char *kDbClientConnectionsState = "db.client.connections.
*
* For batch operations, if the individual operations are known to have the same collection name
* then that collection name SHOULD be used.
- *
- * This attribute has stability level RELEASE CANDIDATE.
*/
static constexpr const char *kDbCollectionName = "db.collection.name";
@@ -118,19 +138,30 @@ OPENTELEMETRY_DEPRECATED
static constexpr const char *kDbConnectionString = "db.connection_string";
/**
- * Unique Cosmos client instance id.
+ * Deprecated, use @code azure.client.id @endcode instead.
+ *
+ * @deprecated
+ * Replaced by @code azure.client.id @endcode.
*/
+OPENTELEMETRY_DEPRECATED
static constexpr const char *kDbCosmosdbClientId = "db.cosmosdb.client_id";
/**
- * Cosmos client connection mode.
+ * Deprecated, use @code azure.cosmosdb.connection.mode @endcode instead.
+ *
+ * @deprecated
+ * Replaced by @code azure.cosmosdb.connection.mode @endcode.
*/
+OPENTELEMETRY_DEPRECATED
static constexpr const char *kDbCosmosdbConnectionMode = "db.cosmosdb.connection_mode";
/**
- * Account or request consistency level.
+ * Deprecated, use @code cosmosdb.consistency.level @endcode instead.
+ *
+ * @deprecated
+ * Replaced by @code azure.cosmosdb.consistency.level @endcode.
*/
+OPENTELEMETRY_DEPRECATED
static constexpr const char *kDbCosmosdbConsistencyLevel = "db.cosmosdb.consistency_level";
/**
@@ -152,22 +183,30 @@ OPENTELEMETRY_DEPRECATED
static constexpr const char *kDbCosmosdbOperationType = "db.cosmosdb.operation_type";
/**
- * List of regions contacted during operation in the order that they were contacted. If there is
- * more than one region listed, it indicates that the operation was performed on multiple regions
- * i.e. cross-regional call. Region name matches the format of @code displayName @endcode in Azure
- * Location API
+ * Deprecated, use @code azure.cosmosdb.operation.contacted_regions @endcode instead.
+ *
+ * @deprecated
+ * Replaced by @code azure.cosmosdb.operation.contacted_regions @endcode.
*/
+OPENTELEMETRY_DEPRECATED
static constexpr const char *kDbCosmosdbRegionsContacted = "db.cosmosdb.regions_contacted";
/**
- * Request units consumed for the operation.
+ * Deprecated, use @code azure.cosmosdb.operation.request_charge @endcode instead.
+ *
+ * @deprecated
+ * Replaced by @code azure.cosmosdb.operation.request_charge @endcode.
*/
+OPENTELEMETRY_DEPRECATED
static constexpr const char *kDbCosmosdbRequestCharge = "db.cosmosdb.request_charge";
/**
- * Request payload size in bytes.
+ * Deprecated, use @code azure.cosmosdb.request.body.size @endcode instead.
+ *
+ * @deprecated
+ * Replaced by @code azure.cosmosdb.request.body.size @endcode.
*/
+OPENTELEMETRY_DEPRECATED
static constexpr const char *kDbCosmosdbRequestContentLength = "db.cosmosdb.request_content_length";
/**
@@ -180,8 +219,12 @@ OPENTELEMETRY_DEPRECATED
static constexpr const char *kDbCosmosdbStatusCode = "db.cosmosdb.status_code";
/**
- * Cosmos DB sub status code.
+ * Deprecated, use @code azure.cosmosdb.response.sub_status_code @endcode instead.
+ *
+ * @deprecated
+ * Replaced by @code azure.cosmosdb.response.sub_status_code @endcode.
*/
+OPENTELEMETRY_DEPRECATED
static constexpr const char *kDbCosmosdbSubStatusCode = "db.cosmosdb.sub_status_code";
/**
@@ -194,19 +237,21 @@ OPENTELEMETRY_DEPRECATED
static constexpr const char *kDbElasticsearchClusterName = "db.elasticsearch.cluster.name";
/**
- * Represents the human-readable identifier of the node/instance to which a request was routed.
+ * Deprecated, use @code elasticsearch.node.name @endcode instead.
+ *
+ * @deprecated
+ * Replaced by @code elasticsearch.node.name @endcode.
*/
+OPENTELEMETRY_DEPRECATED
static constexpr const char *kDbElasticsearchNodeName = "db.elasticsearch.node.name";
/**
- * A dynamic value in the url path.
+ * Deprecated, use @code db.operation.parameter @endcode instead.
*
- * Many Elasticsearch url paths allow dynamic values. These SHOULD be recorded in span attributes in
- * the format @code db.elasticsearch.path_parts.
* Operations are only considered batches when they contain two or more operations, and so @code
- * db.operation.batch.size @endcode SHOULD never be @code 1 @endcode. This attribute has stability
- * level RELEASE CANDIDATE.
+ * db.operation.batch.size @endcode SHOULD never be @code 1 @endcode.
*/
static constexpr const char *kDbOperationBatchSize = "db.operation.batch.size";
@@ -300,8 +343,6 @@ static constexpr const char *kDbOperationBatchSize = "db.operation.batch.size";
* then that operation name SHOULD be used prepended by @code BATCH @endcode,
* otherwise @code db.operation.name @endcode SHOULD be @code BATCH @endcode or some other database
* system specific term if more applicable.
- *
- * This attribute has stability level RELEASE CANDIDATE.
*/
static constexpr const char *kDbOperationName = "db.operation.name";
@@ -311,7 +352,7 @@ static constexpr const char *kDbOperationName = "db.operation.name";
* name and instead is referenced only by index, then @code
+ * @deprecated
+ * Replaced by @code db.system.name @endcode.
+ */
+OPENTELEMETRY_DEPRECATED
+static constexpr const char *kDbSystem = "db.system";
+
/**
* The database management system (DBMS) product as identified by the client instrumentation.
*
* 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 @code db.system @endcode is set to
- * @code postgresql @endcode based on the instrumentation's best knowledge. This attribute has
- * stability level RELEASE CANDIDATE.
+ * PostgreSQL client libraries to connect to a CockroachDB, the @code db.system.name @endcode is set
+ * to @code postgresql @endcode based on the instrumentation's best knowledge.
*/
-static constexpr const char *kDbSystem = "db.system";
+static constexpr const char *kDbSystemName = "db.system.name";
/**
* Deprecated, no replacement at this time.
@@ -918,6 +965,216 @@ static constexpr const char *kVertica = "vertica";
} // namespace DbSystemValues
+namespace DbSystemNameValues
+{
+/**
+ * Some other SQL database. Fallback only.
+ */
+static constexpr const char *kOtherSql = "other_sql";
+
+/**
+ * Adabas (Adaptable Database System)
+ */
+static constexpr const char *kSoftwareagAdabas = "softwareag.adabas";
+
+/**
+ * Actian Ingres
+ */
+static constexpr const char *kActianIngres = "actian.ingres";
+
+/**
+ * Amazon DynamoDB
+ */
+static constexpr const char *kAwsDynamodb = "aws.dynamodb";
+
+/**
+ * Amazon Redshift
+ */
+static constexpr const char *kAwsRedshift = "aws.redshift";
+
+/**
+ * Azure Cosmos DB
+ */
+static constexpr const char *kAzureCosmosdb = "azure.cosmosdb";
+
+/**
+ * InterSystems Caché
+ */
+static constexpr const char *kIntersystemsCache = "intersystems.cache";
+
+/**
+ * Apache Cassandra
+ */
+static constexpr const char *kCassandra = "cassandra";
+
+/**
+ * ClickHouse
+ */
+static constexpr const char *kClickhouse = "clickhouse";
+
+/**
+ * CockroachDB
+ */
+static constexpr const char *kCockroachdb = "cockroachdb";
+
+/**
+ * Couchbase
+ */
+static constexpr const char *kCouchbase = "couchbase";
+
+/**
+ * Apache CouchDB
+ */
+static constexpr const char *kCouchdb = "couchdb";
+
+/**
+ * Apache Derby
+ */
+static constexpr const char *kDerby = "derby";
+
+/**
+ * Elasticsearch
+ */
+static constexpr const char *kElasticsearch = "elasticsearch";
+
+/**
+ * Firebird
+ */
+static constexpr const char *kFirebirdsql = "firebirdsql";
+
+/**
+ * Google Cloud Spanner
+ */
+static constexpr const char *kGcpSpanner = "gcp.spanner";
+
+/**
+ * Apache Geode
+ */
+static constexpr const char *kGeode = "geode";
+
+/**
+ * H2 Database
+ */
+static constexpr const char *kH2database = "h2database";
+
+/**
+ * Apache HBase
+ */
+static constexpr const char *kHbase = "hbase";
+
+/**
+ * Apache Hive
+ */
+static constexpr const char *kHive = "hive";
+
+/**
+ * HyperSQL Database
+ */
+static constexpr const char *kHsqldb = "hsqldb";
+
+/**
+ * IBM Db2
+ */
+static constexpr const char *kIbmDb2 = "ibm.db2";
+
+/**
+ * IBM Informix
+ */
+static constexpr const char *kIbmInformix = "ibm.informix";
+
+/**
+ * IBM Netezza
+ */
+static constexpr const char *kIbmNetezza = "ibm.netezza";
+
+/**
+ * InfluxDB
+ */
+static constexpr const char *kInfluxdb = "influxdb";
+
+/**
+ * Instant
+ */
+static constexpr const char *kInstantdb = "instantdb";
+
+/**
+ * MariaDB
+ */
+static constexpr const char *kMariadb = "mariadb";
+
+/**
+ * Memcached
+ */
+static constexpr const char *kMemcached = "memcached";
+
+/**
+ * MongoDB
+ */
+static constexpr const char *kMongodb = "mongodb";
+
+/**
+ * Microsoft SQL Server
+ */
+static constexpr const char *kMicrosoftSqlServer = "microsoft.sql_server";
+
+/**
+ * MySQL
+ */
+static constexpr const char *kMysql = "mysql";
+
+/**
+ * Neo4j
+ */
+static constexpr const char *kNeo4j = "neo4j";
+
+/**
+ * OpenSearch
+ */
+static constexpr const char *kOpensearch = "opensearch";
+
+/**
+ * Oracle Database
+ */
+static constexpr const char *kOracleDb = "oracle.db";
+
+/**
+ * PostgreSQL
+ */
+static constexpr const char *kPostgresql = "postgresql";
+
+/**
+ * Redis
+ */
+static constexpr const char *kRedis = "redis";
+
+/**
+ * SAP
+ * HANA
+ */
+static constexpr const char *kSapHana = "sap.hana";
+
+/**
+ * SAP MaxDB
+ */
+static constexpr const char *kSapMaxdb = "sap.maxdb";
+
+/**
+ * SQLite
+ */
+static constexpr const char *kSqlite = "sqlite";
+
+/**
+ * Teradata
+ */
+static constexpr const char *kTeradata = "teradata";
+
+/**
+ * Trino
+ */
+static constexpr const char *kTrino = "trino";
+
+} // namespace DbSystemNameValues
+
} // namespace db
} // namespace semconv
OPENTELEMETRY_END_NAMESPACE
diff --git a/api/include/opentelemetry/semconv/incubating/db_metrics.h b/api/include/opentelemetry/semconv/incubating/db_metrics.h
index 991a7cfd88..643b5cf403 100644
--- a/api/include/opentelemetry/semconv/incubating/db_metrics.h
+++ b/api/include/opentelemetry/semconv/incubating/db_metrics.h
@@ -769,16 +769,23 @@ CreateSyncDoubleMetricDbClientConnectionsWaitTime(metrics::Meter *meter)
}
/**
- * Number of active client instances
+ * Deprecated, use @code azure.cosmosdb.client.active_instance.count @endcode instead.
+ *
+ * @deprecated
+ * Replaced by @code azure.cosmosdb.client.active_instance.count @endcode.
*
* updowncounter
*/
+OPENTELEMETRY_DEPRECATED
static constexpr const char *kMetricDbClientCosmosdbActiveInstanceCount =
"db.client.cosmosdb.active_instance.count";
+OPENTELEMETRY_DEPRECATED
static constexpr const char *descrMetricDbClientCosmosdbActiveInstanceCount =
- "Number of active client instances";
+ "Deprecated, use `azure.cosmosdb.client.active_instance.count` instead.";
+OPENTELEMETRY_DEPRECATED
static constexpr const char *unitMetricDbClientCosmosdbActiveInstanceCount = "{instance}";
+OPENTELEMETRY_DEPRECATED
static inline nostd::unique_ptr histogram
+ * Deprecated, use @code azure.cosmosdb.client.operation.request_charge @endcode instead.
+ *
+ * @deprecated
+ * Replaced by @code azure.cosmosdb.client.operation.request_charge @endcode.
+ *
+ * histogram
*/
+OPENTELEMETRY_DEPRECATED
static constexpr const char *kMetricDbClientCosmosdbOperationRequestCharge =
"db.client.cosmosdb.operation.request_charge";
+OPENTELEMETRY_DEPRECATED
static constexpr const char *descrMetricDbClientCosmosdbOperationRequestCharge =
- "[Request charge](https://learn.microsoft.com/azure/cosmos-db/request-units) consumed by the "
- "operation";
+ "Deprecated, use `azure.cosmosdb.client.operation.request_charge` instead.";
+OPENTELEMETRY_DEPRECATED
static constexpr const char *unitMetricDbClientCosmosdbOperationRequestCharge = "{request_unit}";
+OPENTELEMETRY_DEPRECATED
static inline nostd::unique_ptr
- * Event names are subject to the same rules as attribute names. Notably, event names are namespaced
- * to avoid collisions and provide a clean separation of semantics for events in separate domains
- * like browser, mobile, and kubernetes.
+ * @deprecated
+ * Replaced by EventName top-level field on the LogRecord
*/
+OPENTELEMETRY_DEPRECATED
static constexpr const char *kEventName = "event.name";
} // namespace event
diff --git a/api/include/opentelemetry/semconv/incubating/exception_attributes.h b/api/include/opentelemetry/semconv/incubating/exception_attributes.h
index fdc19ac6d0..1ad6988833 100644
--- a/api/include/opentelemetry/semconv/incubating/exception_attributes.h
+++ b/api/include/opentelemetry/semconv/incubating/exception_attributes.h
@@ -20,21 +20,13 @@ namespace exception
{
/**
- * SHOULD be set to true if the exception event is recorded at a point where it is known that the
- * exception is escaping the scope of the span. An exception is considered to have escaped (or
- * left) the scope of a span, if that span is ended while the exception is still logically "in
- * flight". This may be actually "in flight" in some languages (e.g. if the exception is passed to a
- * Context manager's @code __exit__ @endcode method in Python) but will usually be caught at the
- * point of recording the exception in most languages. It is usually not possible to determine
- * at the point where an exception is thrown whether it will escape the scope of a span. However, it
- * is trivial to know that an exception will escape, if one checks for an active exception just
- * before ending the span, as done in the example
- * for recording span exceptions. It follows that an exception may still escape the scope of
- * the span even if the @code exception.escaped @endcode attribute was not set or set to false,
- * since the event might have been recorded at a time where it was not
- * clear whether the exception will escape.
+ * Indicates that the exception is escaping the scope of the span.
+ *
+ * @deprecated
+ * It's no longer recommended to record exceptions that are handled and do not escape the scope of a
+ * span.
*/
+OPENTELEMETRY_DEPRECATED
static constexpr const char *kExceptionEscaped = "exception.escaped";
/**
diff --git a/api/include/opentelemetry/semconv/incubating/faas_attributes.h b/api/include/opentelemetry/semconv/incubating/faas_attributes.h
index ade74d610a..7fb929800f 100644
--- a/api/include/opentelemetry/semconv/incubating/faas_attributes.h
+++ b/api/include/opentelemetry/semconv/incubating/faas_attributes.h
@@ -107,9 +107,9 @@ static constexpr const char *kFaasMaxMemory = "faas.max_memory";
* platform and is usually different from the name of the callback
* function (which may be stored in the
* @code code.namespace @endcode/@code
- * code.function @endcode span attributes). For some cloud providers, the above definition
- * is ambiguous. The following definition of function name MUST be used for this attribute (and
- * consequently the span name) for the listed cloud providers/products: For some cloud providers, the above
+ * definition is ambiguous. The following definition of function name MUST be used for this
+ * attribute (and consequently the span name) for the listed cloud providers/products:
+ * @deprecated
+ * Replaced by @code gen_ai.request.seed @endcode attribute.
*/
+OPENTELEMETRY_DEPRECATED
static constexpr const char *kGenAiOpenaiRequestSeed = "gen_ai.openai.request.seed";
/**
@@ -103,6 +107,11 @@ static constexpr const char *kGenAiRequestModel = "gen_ai.request.model";
*/
static constexpr const char *kGenAiRequestPresencePenalty = "gen_ai.request.presence_penalty";
+/**
+ * Requests with same seed value more likely to return same result.
+ */
+static constexpr const char *kGenAiRequestSeed = "gen_ai.request.seed";
+
/**
* List of sequences that the model will use to stop generating further tokens.
*/
@@ -143,9 +152,11 @@ static constexpr const char *kGenAiResponseModel = "gen_ai.response.model";
*
* The @code gen_ai.system @endcode describes a family of GenAI models with specific model
* identified by @code gen_ai.request.model @endcode and @code gen_ai.response.model @endcode
- * attributes. The actual GenAI product may differ from the one identified by the client. For
- * example, when using OpenAI client libraries to communicate with Mistral, the @code gen_ai.system
- * @endcode is set to @code openai @endcode based on the instrumentation's best knowledge. For
+ * attributes. The actual GenAI product may differ from the one identified by the client.
+ * Multiple systems, including Azure OpenAI and Gemini, are accessible by OpenAI client
+ * libraries. In such cases, the @code gen_ai.system @endcode is set to @code openai @endcode based
+ * on the instrumentation's best knowledge, instead of the actual system. The @code server.address
+ * @endcode attribute may help identify the actual system in use for @code openai @endcode. For
* custom model, a custom friendly name SHOULD be used. If none of these options apply, the @code
* gen_ai.system @endcode SHOULD be set to @code _OTHER @endcode.
*/
@@ -253,6 +264,11 @@ static constexpr const char *kOpenai = "openai";
*/
static constexpr const char *kVertexAi = "vertex_ai";
+/**
+ * Gemini
+ */
+static constexpr const char *kGemini = "gemini";
+
/**
* Anthropic
*/
@@ -268,6 +284,11 @@ static constexpr const char *kCohere = "cohere";
*/
static constexpr const char *kAzAiInference = "az.ai.inference";
+/**
+ * Azure OpenAI
+ */
+static constexpr const char *kAzAiOpenai = "az.ai.openai";
+
/**
* IBM Watsonx AI
*/
@@ -278,6 +299,31 @@ static constexpr const char *kIbmWatsonxAi = "ibm.watsonx.ai";
*/
static constexpr const char *kAwsBedrock = "aws.bedrock";
+/**
+ * Perplexity
+ */
+static constexpr const char *kPerplexity = "perplexity";
+
+/**
+ * xAI
+ */
+static constexpr const char *kXai = "xai";
+
+/**
+ * DeepSeek
+ */
+static constexpr const char *kDeepseek = "deepseek";
+
+/**
+ * Groq
+ */
+static constexpr const char *kGroq = "groq";
+
+/**
+ * Mistral AI
+ */
+static constexpr const char *kMistralAi = "mistral_ai";
+
} // namespace GenAiSystemValues
namespace GenAiTokenTypeValues
diff --git a/api/include/opentelemetry/semconv/incubating/k8s_attributes.h b/api/include/opentelemetry/semconv/incubating/k8s_attributes.h
index ba40b45409..e10e71eafb 100644
--- a/api/include/opentelemetry/semconv/incubating/k8s_attributes.h
+++ b/api/include/opentelemetry/semconv/incubating/k8s_attributes.h
@@ -40,14 +40,11 @@ static constexpr const char *kK8sClusterName = "k8s.cluster.name";
* change if the cluster is rebuilt. Furthermore, Kubernetes UIDs are
* UUIDs as standardized by
* ISO/IEC 9834-8 and ITU-T
- * X.667. Which states:
- * Therefore, UIDs between clusters should be extremely unlikely to
- * conflict.
+ * mechanism chosen). Therefore, UIDs between clusters should be extremely unlikely
+ * to conflict.
*/
static constexpr const char *kK8sClusterUid = "k8s.cluster.uid";
@@ -114,6 +111,16 @@ static constexpr const char *kK8sJobUid = "k8s.job.uid";
*/
static constexpr const char *kK8sNamespaceName = "k8s.namespace.name";
+/**
+ * The phase of the K8s namespace.
+ *
+ * This attribute aligns with the @code phase @endcode field of the
+ * K8s
+ * NamespaceStatus
+ */
+static constexpr const char *kK8sNamespacePhase = "k8s.namespace.phase";
+
/**
* The name of the Node.
*/
@@ -185,44 +192,60 @@ static constexpr const char *kK8sVolumeName = "k8s.volume.name";
*/
static constexpr const char *kK8sVolumeType = "k8s.volume.type";
+namespace K8sNamespacePhaseValues
+{
+/**
+ * Active namespace phase as described by K8s API
+ */
+static constexpr const char *kActive = "active";
+
+/**
+ * Terminating namespace phase as described by K8s API
+ */
+static constexpr const char *kTerminating = "terminating";
+
+} // namespace K8sNamespacePhaseValues
+
namespace K8sVolumeTypeValues
{
/**
* A persistentVolumeClaim
+ * href="https://v1-30.docs.kubernetes.io/docs/concepts/storage/volumes/#persistentvolumeclaim">persistentVolumeClaim
* volume
*/
static constexpr const char *kPersistentVolumeClaim = "persistentVolumeClaim";
/**
* A configMap
+ * href="https://v1-30.docs.kubernetes.io/docs/concepts/storage/volumes/#configmap">configMap
* volume
*/
static constexpr const char *kConfigMap = "configMap";
/**
* A downwardAPI
+ * href="https://v1-30.docs.kubernetes.io/docs/concepts/storage/volumes/#downwardapi">downwardAPI
* volume
*/
static constexpr const char *kDownwardApi = "downwardAPI";
/**
* An emptyDir
+ * href="https://v1-30.docs.kubernetes.io/docs/concepts/storage/volumes/#emptydir">emptyDir
* volume
*/
static constexpr const char *kEmptyDir = "emptyDir";
/**
- * A secret
+ * A secret
* volume
*/
static constexpr const char *kSecret = "secret";
/**
- * A local
+ * A local
* volume
*/
static constexpr const char *kLocal = "local";
diff --git a/api/include/opentelemetry/semconv/incubating/k8s_metrics.h b/api/include/opentelemetry/semconv/incubating/k8s_metrics.h
index 21f54c3838..05f9a5126b 100644
--- a/api/include/opentelemetry/semconv/incubating/k8s_metrics.h
+++ b/api/include/opentelemetry/semconv/incubating/k8s_metrics.h
@@ -20,6 +20,750 @@ namespace semconv
namespace k8s
{
+/**
+ * The number of actively running jobs for a cronjob
+ *
+ * This metric aligns with the @code active @endcode field of the
+ * K8s
+ * CronJobStatus. This metric SHOULD, at a minimum, be reported against a @code k8s.cronjob @endcode resource. updowncounter
+ */
+static constexpr const char *kMetricK8sCronjobActiveJobs = "k8s.cronjob.active_jobs";
+static constexpr const char *descrMetricK8sCronjobActiveJobs =
+ "The number of actively running jobs for a cronjob";
+static constexpr const char *unitMetricK8sCronjobActiveJobs = "{job}";
+
+static inline nostd::unique_ptr
+ * This metric aligns with the @code currentNumberScheduled @endcode field of the
+ * K8s
+ * DaemonSetStatus. This metric SHOULD, at a minimum, be reported against a @code k8s.daemonset @endcode resource. updowncounter
+ */
+static constexpr const char *kMetricK8sDaemonsetCurrentScheduledNodes =
+ "k8s.daemonset.current_scheduled_nodes";
+static constexpr const char *descrMetricK8sDaemonsetCurrentScheduledNodes =
+ "Number of nodes that are running at least 1 daemon pod and are supposed to run the daemon pod";
+static constexpr const char *unitMetricK8sDaemonsetCurrentScheduledNodes = "{node}";
+
+static inline nostd::unique_ptr This metric aligns with the @code desiredNumberScheduled @endcode field of the K8s
+ * DaemonSetStatus. This metric SHOULD, at a minimum, be reported against a @code k8s.daemonset @endcode resource. updowncounter
+ */
+static constexpr const char *kMetricK8sDaemonsetDesiredScheduledNodes =
+ "k8s.daemonset.desired_scheduled_nodes";
+static constexpr const char *descrMetricK8sDaemonsetDesiredScheduledNodes =
+ "Number of nodes that should be running the daemon pod (including nodes currently running the "
+ "daemon pod)";
+static constexpr const char *unitMetricK8sDaemonsetDesiredScheduledNodes = "{node}";
+
+static inline nostd::unique_ptr
+ * This metric aligns with the @code numberMisscheduled @endcode field of the
+ * K8s
+ * DaemonSetStatus. This metric SHOULD, at a minimum, be reported against a @code k8s.daemonset @endcode resource. updowncounter
+ */
+static constexpr const char *kMetricK8sDaemonsetMisscheduledNodes =
+ "k8s.daemonset.misscheduled_nodes";
+static constexpr const char *descrMetricK8sDaemonsetMisscheduledNodes =
+ "Number of nodes that are running the daemon pod, but are not supposed to run the daemon pod";
+static constexpr const char *unitMetricK8sDaemonsetMisscheduledNodes = "{node}";
+
+static inline nostd::unique_ptr This metric aligns with the @code numberReady @endcode field of the K8s
+ * DaemonSetStatus. This metric SHOULD, at a minimum, be reported against a @code k8s.daemonset @endcode resource. updowncounter
+ */
+static constexpr const char *kMetricK8sDaemonsetReadyNodes = "k8s.daemonset.ready_nodes";
+static constexpr const char *descrMetricK8sDaemonsetReadyNodes =
+ "Number of nodes that should be running the daemon pod and have one or more of the daemon pod "
+ "running and ready";
+static constexpr const char *unitMetricK8sDaemonsetReadyNodes = "{node}";
+
+static inline nostd::unique_ptr This metric aligns with the @code availableReplicas @endcode field of the K8s
+ * DeploymentStatus. This metric SHOULD, at a minimum, be reported against a @code k8s.deployment @endcode resource.
+ * updowncounter
+ */
+static constexpr const char *kMetricK8sDeploymentAvailablePods = "k8s.deployment.available_pods";
+static constexpr const char *descrMetricK8sDeploymentAvailablePods =
+ "Total number of available replica pods (ready for at least minReadySeconds) targeted by this "
+ "deployment";
+static constexpr const char *unitMetricK8sDeploymentAvailablePods = "{pod}";
+
+static inline nostd::unique_ptr
+ * This metric aligns with the @code replicas @endcode field of the
+ * K8s
+ * DeploymentSpec. This metric SHOULD, at a minimum, be reported against a @code k8s.deployment @endcode resource.
+ * updowncounter
+ */
+static constexpr const char *kMetricK8sDeploymentDesiredPods = "k8s.deployment.desired_pods";
+static constexpr const char *descrMetricK8sDeploymentDesiredPods =
+ "Number of desired replica pods in this deployment";
+static constexpr const char *unitMetricK8sDeploymentDesiredPods = "{pod}";
+
+static inline nostd::unique_ptr This metric aligns with the @code currentReplicas @endcode field of the K8s
+ * HorizontalPodAutoscalerStatus updowncounter
+ */
+static constexpr const char *kMetricK8sHpaCurrentPods = "k8s.hpa.current_pods";
+static constexpr const char *descrMetricK8sHpaCurrentPods =
+ "Current number of replica pods managed by this horizontal pod autoscaler, as last seen by the "
+ "autoscaler";
+static constexpr const char *unitMetricK8sHpaCurrentPods = "{pod}";
+
+static inline nostd::unique_ptr This metric aligns with the @code desiredReplicas @endcode field of the K8s
+ * HorizontalPodAutoscalerStatus updowncounter
+ */
+static constexpr const char *kMetricK8sHpaDesiredPods = "k8s.hpa.desired_pods";
+static constexpr const char *descrMetricK8sHpaDesiredPods =
+ "Desired number of replica pods managed by this horizontal pod autoscaler, as last calculated "
+ "by the autoscaler";
+static constexpr const char *unitMetricK8sHpaDesiredPods = "{pod}";
+
+static inline nostd::unique_ptr
+ * This metric aligns with the @code maxReplicas @endcode field of the
+ * K8s
+ * HorizontalPodAutoscalerSpec updowncounter
+ */
+static constexpr const char *kMetricK8sHpaMaxPods = "k8s.hpa.max_pods";
+static constexpr const char *descrMetricK8sHpaMaxPods =
+ "The upper limit for the number of replica pods to which the autoscaler can scale up";
+static constexpr const char *unitMetricK8sHpaMaxPods = "{pod}";
+
+static inline nostd::unique_ptr
+ * This metric aligns with the @code minReplicas @endcode field of the
+ * K8s
+ * HorizontalPodAutoscalerSpec updowncounter
+ */
+static constexpr const char *kMetricK8sHpaMinPods = "k8s.hpa.min_pods";
+static constexpr const char *descrMetricK8sHpaMinPods =
+ "The lower limit for the number of replica pods to which the autoscaler can scale down";
+static constexpr const char *unitMetricK8sHpaMinPods = "{pod}";
+
+static inline nostd::unique_ptr
+ * This metric aligns with the @code active @endcode field of the
+ * K8s
+ * JobStatus. This metric SHOULD, at a minimum, be reported against a @code k8s.job @endcode resource. updowncounter
+ */
+static constexpr const char *kMetricK8sJobActivePods = "k8s.job.active_pods";
+static constexpr const char *descrMetricK8sJobActivePods =
+ "The number of pending and actively running pods for a job";
+static constexpr const char *unitMetricK8sJobActivePods = "{pod}";
+
+static inline nostd::unique_ptr
+ * This metric aligns with the @code completions @endcode field of the
+ * K8s
+ * JobSpec. This metric SHOULD, at a minimum, be reported against a @code k8s.job @endcode resource. updowncounter
+ */
+static constexpr const char *kMetricK8sJobDesiredSuccessfulPods = "k8s.job.desired_successful_pods";
+static constexpr const char *descrMetricK8sJobDesiredSuccessfulPods =
+ "The desired number of successfully finished pods the job should be run with";
+static constexpr const char *unitMetricK8sJobDesiredSuccessfulPods = "{pod}";
+
+static inline nostd::unique_ptr
+ * This metric aligns with the @code failed @endcode field of the
+ * K8s
+ * JobStatus. This metric SHOULD, at a minimum, be reported against a @code k8s.job @endcode resource. updowncounter
+ */
+static constexpr const char *kMetricK8sJobFailedPods = "k8s.job.failed_pods";
+static constexpr const char *descrMetricK8sJobFailedPods =
+ "The number of pods which reached phase Failed for a job";
+static constexpr const char *unitMetricK8sJobFailedPods = "{pod}";
+
+static inline nostd::unique_ptr
+ * This metric aligns with the @code parallelism @endcode field of the
+ * [K8s
+ * JobSpec](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#jobspec-v1-batch.
+ *
+ * This metric SHOULD, at a minimum, be reported against a
+ * @code k8s.job @endcode resource.
+ *
+ * updowncounter
+ */
+static constexpr const char *kMetricK8sJobMaxParallelPods = "k8s.job.max_parallel_pods";
+static constexpr const char *descrMetricK8sJobMaxParallelPods =
+ "The max desired number of pods the job should run at any given time";
+static constexpr const char *unitMetricK8sJobMaxParallelPods = "{pod}";
+
+static inline nostd::unique_ptr
+ * This metric aligns with the @code succeeded @endcode field of the
+ * K8s
+ * JobStatus. This metric SHOULD, at a minimum, be reported against a @code k8s.job @endcode resource. updowncounter
+ */
+static constexpr const char *kMetricK8sJobSuccessfulPods = "k8s.job.successful_pods";
+static constexpr const char *descrMetricK8sJobSuccessfulPods =
+ "The number of pods which reached phase Succeeded for a job";
+static constexpr const char *unitMetricK8sJobSuccessfulPods = "{pod}";
+
+static inline nostd::unique_ptr
+ * This metric SHOULD, at a minimum, be reported against a
+ * @code k8s.namespace @endcode resource.
+ *
+ * updowncounter
+ */
+static constexpr const char *kMetricK8sNamespacePhase = "k8s.namespace.phase";
+static constexpr const char *descrMetricK8sNamespacePhase =
+ "Describes number of K8s namespaces that are currently in a given phase.";
+static constexpr const char *unitMetricK8sNamespacePhase = "{namespace}";
+
+static inline nostd::unique_ptr
@@ -500,6 +1244,380 @@ static inline nostd::shared_ptr This metric aligns with the @code availableReplicas @endcode field of the K8s
+ * ReplicaSetStatus. This metric SHOULD, at a minimum, be reported against a @code k8s.replicaset @endcode resource.
+ * updowncounter
+ */
+static constexpr const char *kMetricK8sReplicasetAvailablePods = "k8s.replicaset.available_pods";
+static constexpr const char *descrMetricK8sReplicasetAvailablePods =
+ "Total number of available replica pods (ready for at least minReadySeconds) targeted by this "
+ "replicaset";
+static constexpr const char *unitMetricK8sReplicasetAvailablePods = "{pod}";
+
+static inline nostd::unique_ptr
+ * This metric aligns with the @code replicas @endcode field of the
+ * K8s
+ * ReplicaSetSpec. This metric SHOULD, at a minimum, be reported against a @code k8s.replicaset @endcode resource.
+ * updowncounter
+ */
+static constexpr const char *kMetricK8sReplicasetDesiredPods = "k8s.replicaset.desired_pods";
+static constexpr const char *descrMetricK8sReplicasetDesiredPods =
+ "Number of desired replica pods in this replicaset";
+static constexpr const char *unitMetricK8sReplicasetDesiredPods = "{pod}";
+
+static inline nostd::unique_ptr This metric aligns with the @code availableReplicas @endcode field of
+ * the K8s
+ * ReplicationControllerStatus updowncounter
+ */
+static constexpr const char *kMetricK8sReplicationControllerAvailablePods =
+ "k8s.replication_controller.available_pods";
+static constexpr const char *descrMetricK8sReplicationControllerAvailablePods =
+ "Total number of available replica pods (ready for at least minReadySeconds) targeted by this "
+ "replication controller";
+static constexpr const char *unitMetricK8sReplicationControllerAvailablePods = "{pod}";
+
+static inline nostd::unique_ptr
+ * This metric aligns with the @code replicas @endcode field of the
+ * K8s
+ * ReplicationControllerSpec updowncounter
+ */
+static constexpr const char *kMetricK8sReplicationControllerDesiredPods =
+ "k8s.replication_controller.desired_pods";
+static constexpr const char *descrMetricK8sReplicationControllerDesiredPods =
+ "Number of desired replica pods in this replication controller";
+static constexpr const char *unitMetricK8sReplicationControllerDesiredPods = "{pod}";
+
+static inline nostd::unique_ptr This metric aligns with the @code currentReplicas @endcode field
+ * of the K8s
+ * StatefulSetStatus. This metric SHOULD, at a minimum, be reported against a @code k8s.statefulset @endcode resource.
+ * updowncounter
+ */
+static constexpr const char *kMetricK8sStatefulsetCurrentPods = "k8s.statefulset.current_pods";
+static constexpr const char *descrMetricK8sStatefulsetCurrentPods =
+ "The number of replica pods created by the statefulset controller from the statefulset version "
+ "indicated by currentRevision";
+static constexpr const char *unitMetricK8sStatefulsetCurrentPods = "{pod}";
+
+static inline nostd::unique_ptr
+ * This metric aligns with the @code replicas @endcode field of the
+ * K8s
+ * StatefulSetSpec. This metric SHOULD, at a minimum, be reported against a @code k8s.statefulset @endcode resource.
+ * updowncounter
+ */
+static constexpr const char *kMetricK8sStatefulsetDesiredPods = "k8s.statefulset.desired_pods";
+static constexpr const char *descrMetricK8sStatefulsetDesiredPods =
+ "Number of desired replica pods in this statefulset";
+static constexpr const char *unitMetricK8sStatefulsetDesiredPods = "{pod}";
+
+static inline nostd::unique_ptr
+ * This metric aligns with the @code readyReplicas @endcode field of the
+ * K8s
+ * StatefulSetStatus. This metric SHOULD, at a minimum, be reported against a @code k8s.statefulset @endcode resource.
+ * updowncounter
+ */
+static constexpr const char *kMetricK8sStatefulsetReadyPods = "k8s.statefulset.ready_pods";
+static constexpr const char *descrMetricK8sStatefulsetReadyPods =
+ "The number of replica pods created for this statefulset with a Ready Condition";
+static constexpr const char *unitMetricK8sStatefulsetReadyPods = "{pod}";
+
+static inline nostd::unique_ptr This metric aligns with the @code updatedReplicas @endcode field
+ * of the K8s
+ * StatefulSetStatus. This metric SHOULD, at a minimum, be reported against a @code k8s.statefulset @endcode resource.
+ * updowncounter
+ */
+static constexpr const char *kMetricK8sStatefulsetUpdatedPods = "k8s.statefulset.updated_pods";
+static constexpr const char *descrMetricK8sStatefulsetUpdatedPods =
+ "Number of replica pods created by the statefulset controller from the statefulset version "
+ "indicated by updateRevision";
+static constexpr const char *unitMetricK8sStatefulsetUpdatedPods = "{pod}";
+
+static inline nostd::unique_ptr
+ * Connection states are defined as part of the rfc9293
+ */
+static constexpr const char *kNetworkConnectionState = "network.connection.state";
+
/**
* This describes more details regarding the connection.type. It may be the type of cell technology
* connection, but it could be used for describing details about a wifi connection.
@@ -113,6 +121,65 @@ static constexpr const char *kNetworkTransport = "network.transport";
*/
static constexpr const char *kNetworkType = "network.type";
+namespace NetworkConnectionStateValues
+{
+/**
+ * none
+ */
+static constexpr const char *kClosed = "closed";
+
+/**
+ * none
+ */
+static constexpr const char *kCloseWait = "close_wait";
+
+/**
+ * none
+ */
+static constexpr const char *kClosing = "closing";
+
+/**
+ * none
+ */
+static constexpr const char *kEstablished = "established";
+
+/**
+ * none
+ */
+static constexpr const char *kFinWait1 = "fin_wait_1";
+
+/**
+ * none
+ */
+static constexpr const char *kFinWait2 = "fin_wait_2";
+
+/**
+ * none
+ */
+static constexpr const char *kLastAck = "last_ack";
+
+/**
+ * none
+ */
+static constexpr const char *kListen = "listen";
+
+/**
+ * none
+ */
+static constexpr const char *kSynReceived = "syn_received";
+
+/**
+ * none
+ */
+static constexpr const char *kSynSent = "syn_sent";
+
+/**
+ * none
+ */
+static constexpr const char *kTimeWait = "time_wait";
+
+} // namespace NetworkConnectionStateValues
+
namespace NetworkConnectionSubtypeValues
{
/**
diff --git a/api/include/opentelemetry/semconv/incubating/process_attributes.h b/api/include/opentelemetry/semconv/incubating/process_attributes.h
index f211c3e41a..e6850778d8 100644
--- a/api/include/opentelemetry/semconv/incubating/process_attributes.h
+++ b/api/include/opentelemetry/semconv/incubating/process_attributes.h
@@ -135,7 +135,7 @@ static constexpr const char *kProcessInteractive = "process.interactive";
* Control groups (cgroups) are a kernel feature used to organize and manage process resources. This
* attribute provides the path(s) to the cgroup(s) associated with the process, which should match
* the contents of the /proc/ This is the logical name of the method from the RPC interface perspective, which can be
- * different from the name of any implementing method/function. The @code code.function @endcode
- * attribute may be used to store the latter (e.g., method actually executing the call on the server
- * side, RPC client stub method on the client side).
+ * different from the name of any implementing method/function. The @code code.function.name
+ * @endcode attribute may be used to store the latter (e.g., method actually executing the call on
+ * the server side, RPC client stub method on the client side).
*/
static constexpr const char *kRpcMethod = "rpc.method";
diff --git a/api/include/opentelemetry/semconv/incubating/security_rule_attributes.h b/api/include/opentelemetry/semconv/incubating/security_rule_attributes.h
new file mode 100644
index 0000000000..036cea7bf1
--- /dev/null
+++ b/api/include/opentelemetry/semconv/incubating/security_rule_attributes.h
@@ -0,0 +1,69 @@
+/*
+ * Copyright The OpenTelemetry Authors
+ * SPDX-License-Identifier: Apache-2.0
+ */
+
+/*
+ * DO NOT EDIT, this is an Auto-generated file from:
+ * buildscripts/semantic-convention/templates/registry/semantic_attributes-h.j2
+ */
+
+#pragma once
+
+#include "opentelemetry/common/macros.h"
+#include "opentelemetry/version.h"
+
+OPENTELEMETRY_BEGIN_NAMESPACE
+namespace semconv
+{
+namespace security_rule
+{
+
+/**
+ * A categorization value keyword used by the entity using the rule for detection of this event
+ */
+static constexpr const char *kSecurityRuleCategory = "security_rule.category";
+
+/**
+ * The description of the rule generating the event.
+ */
+static constexpr const char *kSecurityRuleDescription = "security_rule.description";
+
+/**
+ * Name of the license under which the rule used to generate this event is made available.
+ */
+static constexpr const char *kSecurityRuleLicense = "security_rule.license";
+
+/**
+ * The name of the rule or signature generating the event.
+ */
+static constexpr const char *kSecurityRuleName = "security_rule.name";
+
+/**
+ * Reference URL to additional information about the rule used to generate this event.
+ *
+ * The URL can point to the vendor’s documentation about the rule. If that’s not available, it can
+ * also be a link to a more general page describing this type of alert.
+ */
+static constexpr const char *kSecurityRuleReference = "security_rule.reference";
+
+/**
+ * Name of the ruleset, policy, group, or parent category in which the rule used to generate this
+ * event is a member.
+ */
+static constexpr const char *kSecurityRuleRulesetName = "security_rule.ruleset.name";
+
+/**
+ * A rule ID that is unique within the scope of a set or group of agents, observers, or other
+ * entities using the rule for detection of this event.
+ */
+static constexpr const char *kSecurityRuleUuid = "security_rule.uuid";
+
+/**
+ * The version / revision of the rule being used for analysis.
+ */
+static constexpr const char *kSecurityRuleVersion = "security_rule.version";
+
+} // namespace security_rule
+} // namespace semconv
+OPENTELEMETRY_END_NAMESPACE
diff --git a/api/include/opentelemetry/semconv/incubating/system_attributes.h b/api/include/opentelemetry/semconv/incubating/system_attributes.h
index be7ec80186..673b18f91c 100644
--- a/api/include/opentelemetry/semconv/incubating/system_attributes.h
+++ b/api/include/opentelemetry/semconv/incubating/system_attributes.h
@@ -64,8 +64,12 @@ static constexpr const char *kSystemFilesystemType = "system.filesystem.type";
static constexpr const char *kSystemMemoryState = "system.memory.state";
/**
- * A stateless protocol MUST NOT set this attribute
+ * Deprecated, use @code network.connection.state @endcode instead.
+ *
+ * @deprecated
+ * Removed, report network connection state with @code network.connection.state @endcode attribute
*/
+OPENTELEMETRY_DEPRECATED
static constexpr const char *kSystemNetworkState = "system.network.state";
/**
diff --git a/api/include/opentelemetry/semconv/incubating/system_metrics.h b/api/include/opentelemetry/semconv/incubating/system_metrics.h
index 0590c048da..ba787a86d0 100644
--- a/api/include/opentelemetry/semconv/incubating/system_metrics.h
+++ b/api/include/opentelemetry/semconv/incubating/system_metrics.h
@@ -63,7 +63,8 @@ CreateAsyncDoubleMetricSystemCpuFrequency(metrics::Meter *meter)
/**
* Reports the number of logical (virtual) processor cores created by the operating system to manage
- * multitasking updowncounter
+ * multitasking Calculated by multiplying the number of sockets by the number of cores per
+ * socket, and then by the number of threads per core updowncounter
*/
static constexpr const char *kMetricSystemCpuLogicalCount = "system.cpu.logical.count";
static constexpr const char *descrMetricSystemCpuLogicalCount =
@@ -106,6 +107,8 @@ CreateAsyncDoubleMetricSystemCpuLogicalCount(metrics::Meter *meter)
/**
* Reports the number of actual physical processor cores on the hardware
*
+ * Calculated by multiplying the number of sockets by the number of cores per socket
+ *
* updowncounter
*/
static constexpr const char *kMetricSystemCpuPhysicalCount = "system.cpu.physical.count";
@@ -270,6 +273,7 @@ static inline nostd::shared_ptr
* counter
*/
static constexpr const char *kMetricSystemDiskIoTime = "system.disk.io_time";
@@ -385,6 +389,7 @@ CreateAsyncDoubleMetricSystemDiskMerged(metrics::Meter *meter)
*
* counter
*/
static constexpr const char *kMetricSystemDiskOperationTime = "system.disk.operation_time";
@@ -894,6 +899,7 @@ CreateAsyncDoubleMetricSystemNetworkConnections(metrics::Meter *meter)
* href="https://docs.microsoft.com/windows/win32/api/netioapi/nf-netioapi-getifentry2">@code
* GetIfEntry2 @endcode
*
+ *
* counter
*/
static constexpr const char *kMetricSystemNetworkDropped = "system.network.dropped";
@@ -942,6 +948,7 @@ CreateAsyncDoubleMetricSystemNetworkDropped(metrics::Meter *meter)
* href="https://docs.microsoft.com/windows/win32/api/netioapi/nf-netioapi-getifentry2">@code
* GetIfEntry2 @endcode.
*
+ *
* counter
*/
static constexpr const char *kMetricSystemNetworkErrors = "system.network.errors";
diff --git a/api/include/opentelemetry/semconv/incubating/url_attributes.h b/api/include/opentelemetry/semconv/incubating/url_attributes.h
index 65b78911d7..96ea78cfe9 100644
--- a/api/include/opentelemetry/semconv/incubating/url_attributes.h
+++ b/api/include/opentelemetry/semconv/incubating/url_attributes.h
@@ -70,6 +70,7 @@ static constexpr const char *kUrlFragment = "url.fragment";
* href="https://cloud.google.com/storage/docs/access-control/signed-urls">@code X-Goog-Signature
* @endcode
*
+ *
* 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.
@@ -119,6 +120,7 @@ static constexpr const char *kUrlPort = "url.port";
* href="https://cloud.google.com/storage/docs/access-control/signed-urls">@code X-Goog-Signature
* @endcode
*
+ *
* 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.
diff --git a/api/include/opentelemetry/semconv/incubating/vcs_attributes.h b/api/include/opentelemetry/semconv/incubating/vcs_attributes.h
index b5f05d38da..5422a1af54 100644
--- a/api/include/opentelemetry/semconv/incubating/vcs_attributes.h
+++ b/api/include/opentelemetry/semconv/incubating/vcs_attributes.h
@@ -43,57 +43,72 @@ static constexpr const char *kVcsLineChangeType = "vcs.line_change.type";
/**
* The name of the reference such as
- * branch or tag in the repository.
+ * branch or tag in the repository.
+ * @code base @endcode refers to the starting point of a change. For example, @code main @endcode
+ * would be the base reference of type branch if you've created a new
+ * reference of type branch from it and created new commits.
*/
static constexpr const char *kVcsRefBaseName = "vcs.ref.base.name";
/**
* The revision, literally revised
* version, The revision most often refers to a commit object in Git, or a revision number in
- * SVN. The revision can be a full hash value (see glossary),
- * of the recorded change to a ref within a repository pointing to a
+ * SVN.
+ * @code base @endcode refers to the starting point of a change. For example, @code main @endcode
+ * would be the base reference of type branch if you've created a new
+ * reference of type branch from it and created new commits. The
+ * revision can be a full hash
+ * value (see glossary), of the recorded change to a ref within a repository pointing to a
* commit commit object. It does
- * not necessarily have to be a hash; it can simply define a
- * revision number
+ * not necessarily have to be a hash; it can simply define a revision number
* which is an integer that is monotonically increasing. In cases where
- * it is identical to the @code ref.base.name @endcode, it SHOULD still be included. It is
- * up to the implementer to decide which value to set as the revision
- * based on the VCS system and situational context.
+ * it is identical to the @code ref.base.name @endcode, it SHOULD still be included.
+ * It is up to the implementer to decide which value to set as the
+ * revision based on the VCS system and situational context.
*/
static constexpr const char *kVcsRefBaseRevision = "vcs.ref.base.revision";
/**
* The type of the reference in the
- * repository.
+ * repository.
+ * @code base @endcode refers to the starting point of a change. For example, @code main @endcode
+ * would be the base reference of type branch if you've created a new
+ * reference of type branch from it and created new commits.
*/
static constexpr const char *kVcsRefBaseType = "vcs.ref.base.type";
/**
* The name of the reference such as
- * branch or tag in the repository.
+ * branch or tag in the repository.
+ * @code head @endcode refers to where you are right now; the current reference at a
+ * given time.
*/
static constexpr const char *kVcsRefHeadName = "vcs.ref.head.name";
/**
* The revision, literally revised
* version, The revision most often refers to a commit object in Git, or a revision number in
- * SVN. The revision can be a full
+ * @code head @endcode refers to where you are right now; the current reference at a
+ * given time.The revision can be a full hash value (see glossary),
* of the recorded change to a ref within a repository pointing to a
* commit commit object. It does
- * not necessarily have to be a hash; it can simply define a
- * revision number
+ * not necessarily have to be a hash; it can simply define a revision number
* which is an integer that is monotonically increasing. In cases where
- * it is identical to the @code ref.head.name @endcode, it SHOULD still be included. It is
- * up to the implementer to decide which value to set as the revision
- * based on the VCS system and situational context.
+ * it is identical to the @code ref.head.name @endcode, it SHOULD still be included.
+ * It is up to the implementer to decide which value to set as the
+ * revision based on the VCS system and situational context.
*/
static constexpr const char *kVcsRefHeadRevision = "vcs.ref.head.revision";
/**
* The type of the reference in the
- * repository.
+ * repository.
+ * @code head @endcode refers to where you are right now; the current reference at a
+ * given time.
*/
static constexpr const char *kVcsRefHeadType = "vcs.ref.head.type";
@@ -121,6 +136,14 @@ static constexpr const char *kVcsRepositoryChangeId = "vcs.repository.change.id"
OPENTELEMETRY_DEPRECATED
static constexpr const char *kVcsRepositoryChangeTitle = "vcs.repository.change.title";
+/**
+ * The human readable name of the repository. It SHOULD NOT include any additional identifier like
+ * Group/SubGroup in GitLab or organization in GitHub. Due to it only being the name, it can
+ * clash with forks of the same repository if collecting telemetry across multiple orgs or groups in
+ * the same backends.
+ */
+static constexpr const char *kVcsRepositoryName = "vcs.repository.name";
+
/**
* Deprecated, use @code vcs.ref.head.name @endcode instead.
*
@@ -149,8 +172,11 @@ OPENTELEMETRY_DEPRECATED
static constexpr const char *kVcsRepositoryRefType = "vcs.repository.ref.type";
/**
- * The URL of the repository providing the complete
- * address in order to locate and identify the repository.
+ * The canonical
+ * URL of the repository providing the complete HTTP(S) address in order to locate and identify
+ * the repository through a browser. In Git Version Control Systems, the canonical URL SHOULD
+ * NOT include the @code .git @endcode extension.
*/
static constexpr const char *kVcsRepositoryUrlFull = "vcs.repository.url.full";
diff --git a/api/include/opentelemetry/semconv/incubating/vcs_metrics.h b/api/include/opentelemetry/semconv/incubating/vcs_metrics.h
index 769770b7bb..1f2885b8fe 100644
--- a/api/include/opentelemetry/semconv/incubating/vcs_metrics.h
+++ b/api/include/opentelemetry/semconv/incubating/vcs_metrics.h
@@ -101,12 +101,12 @@ CreateAsyncDoubleMetricVcsChangeDuration(metrics::Meter *meter)
/**
* The amount of time since its creation it took a change (pull request/merge request/changelist) to
- * get the first approval gauge
+ * get the first approval. gauge
*/
static constexpr const char *kMetricVcsChangeTimeToApproval = "vcs.change.time_to_approval";
static constexpr const char *descrMetricVcsChangeTimeToApproval =
"The amount of time since its creation it took a change (pull request/merge "
- "request/changelist) to get the first approval";
+ "request/changelist) to get the first approval.";
static constexpr const char *unitMetricVcsChangeTimeToApproval = "s";
#if OPENTELEMETRY_ABI_VERSION_NO >= 2
@@ -143,6 +143,47 @@ CreateAsyncDoubleMetricVcsChangeTimeToApproval(metrics::Meter *meter)
unitMetricVcsChangeTimeToApproval);
}
+/**
+ * The amount of time since its creation it took a change (pull request/merge request/changelist) to
+ * get merged into the target(base) ref. gauge
+ */
+static constexpr const char *kMetricVcsChangeTimeToMerge = "vcs.change.time_to_merge";
+static constexpr const char *descrMetricVcsChangeTimeToMerge =
+ "The amount of time since its creation it took a change (pull request/merge "
+ "request/changelist) to get merged into the target(base) ref.";
+static constexpr const char *unitMetricVcsChangeTimeToMerge = "s";
+
+#if OPENTELEMETRY_ABI_VERSION_NO >= 2
+
+static inline nostd::unique_ptr
@@ -185,13 +226,13 @@ CreateAsyncDoubleMetricVcsContributorCount(metrics::Meter *meter)
}
/**
- * The number of refs of type branch or tag in a repository
+ * The number of refs of type branch or tag in a repository.
*
* updowncounter
*/
static constexpr const char *kMetricVcsRefCount = "vcs.ref.count";
static constexpr const char *descrMetricVcsRefCount =
- "The number of refs of type branch or tag in a repository";
+ "The number of refs of type branch or tag in a repository.";
static constexpr const char *unitMetricVcsRefCount = "{ref}";
static inline nostd::unique_ptr This metric should be reported for each @code
+ * vcs.ref.base.name @endcode attribute. This metric should be reported for each @code
* vcs.line_change.type @endcode value. For example if a ref added 3 lines and removed 2 lines,
* instrumentation SHOULD report two measurements: 3 and 2 (both positive numbers).
* If number of lines added/removed should be calculated from the start of time, then @code
@@ -233,7 +274,7 @@ static inline nostd::shared_ptr
* updowncounter
*/
static constexpr const char *kMetricVcsRepositoryCount = "vcs.repository.count";
static constexpr const char *descrMetricVcsRepositoryCount =
- "The number of repositories in an organization";
+ "The number of repositories in an organization.";
static constexpr const char *unitMetricVcsRepositoryCount = "{repository}";
static inline nostd::unique_ptr
* 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.
@@ -82,6 +83,7 @@ static constexpr const char *kUrlPath = "url.path";
* href="https://cloud.google.com/storage/docs/access-control/signed-urls">@code X-Goog-Signature
* @endcode
*
+ *
* 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.
diff --git a/buildscripts/semantic-convention/generate.sh b/buildscripts/semantic-convention/generate.sh
index f20f5e5af7..aa09991454 100755
--- a/buildscripts/semantic-convention/generate.sh
+++ b/buildscripts/semantic-convention/generate.sh
@@ -16,10 +16,10 @@ ROOT_DIR="${SCRIPT_DIR}/../../"
# freeze the spec & generator tools versions to make the generation reproducible
# repository: https://github.com/open-telemetry/semantic-conventions
-SEMCONV_VERSION=1.29.0
+SEMCONV_VERSION=1.30.0
# repository: https://github.com/open-telemetry/weaver
-WEAVER_VERSION=0.11.0
+WEAVER_VERSION=0.12.0
SEMCONV_VERSION_TAG=v$SEMCONV_VERSION
WEAVER_VERSION_TAG=v$WEAVER_VERSION
+ * code.function.name @endcode span attributes).
+ *
*
+ * If generated according to one of the mechanisms defined
- * in Rec. ITU-T X.667 | ISO/IEC 9834-8, a UUID is either guaranteed to be different from all other
+ * X.667. Which states:
If generated according to one of the mechanisms defined in
+ * Rec. ITU-T X.667 | ISO/IEC 9834-8, a UUID is either guaranteed to be different from all other
* UUIDs generated before 3603 A.D., or is extremely likely to be different (depending on the
- * mechanism chosen).
- *
- *