diff --git a/api/include/opentelemetry/semconv/incubating/az_attributes.h b/api/include/opentelemetry/semconv/incubating/az_attributes.h index 5e12c82f7b..2ce360d870 100644 --- a/api/include/opentelemetry/semconv/incubating/az_attributes.h +++ b/api/include/opentelemetry/semconv/incubating/az_attributes.h @@ -19,6 +19,13 @@ namespace semconv namespace az { +/** + * Azure + * Resource Provider Namespace as recognized by the client. + */ +static constexpr const char *kAzNamespace = "az.namespace"; + /** * The unique identifier of the service request. It's generated by the Azure service and returned * with the response. diff --git a/api/include/opentelemetry/semconv/incubating/cloud_attributes.h b/api/include/opentelemetry/semconv/incubating/cloud_attributes.h index cd76489eba..6720eb3edf 100644 --- a/api/include/opentelemetry/semconv/incubating/cloud_attributes.h +++ b/api/include/opentelemetry/semconv/incubating/cloud_attributes.h @@ -77,7 +77,7 @@ static constexpr const char *kCloudRegion = "cloud.region"; * href="https://docs.microsoft.com/rest/api/resources/resources/get-by-id">Fully Qualified Resource * ID of the invoked function, not the function app, having the form * @code - * /subscriptions//resourceGroups//providers/Microsoft.Web/sites//functions/ + * /subscriptions//resourceGroups//providers/Microsoft.Web/sites//functions/ * @endcode. This means that a span attribute MUST be used, as an Azure function app can host * multiple functions that would usually share a TracerProvider. * diff --git a/api/include/opentelemetry/semconv/incubating/cloudfoundry_attributes.h b/api/include/opentelemetry/semconv/incubating/cloudfoundry_attributes.h new file mode 100644 index 0000000000..0eda006baa --- /dev/null +++ b/api/include/opentelemetry/semconv/incubating/cloudfoundry_attributes.h @@ -0,0 +1,138 @@ +/* + * 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 cloudfoundry +{ + +/** + * The guid of the application. + *

+ * Application instrumentation should use the value from environment + * variable @code VCAP_APPLICATION.application_id @endcode. This is the same value as + * reported by @code cf app --guid @endcode. + */ +static constexpr const char *kCloudfoundryAppId = "cloudfoundry.app.id"; + +/** + * The index of the application instance. 0 when just one instance is active. + *

+ * CloudFoundry defines the @code instance_id @endcode in the Loggegator v2 envelope. It + * is used for logs and metrics emitted by CloudFoundry. It is supposed to contain the application + * instance index for applications deployed on the runtime.

Application instrumentation should + * use the value from environment variable @code CF_INSTANCE_INDEX @endcode. + */ +static constexpr const char *kCloudfoundryAppInstanceId = "cloudfoundry.app.instance.id"; + +/** + * The name of the application. + *

+ * Application instrumentation should use the value from environment + * variable @code VCAP_APPLICATION.application_name @endcode. This is the same value + * as reported by @code cf apps @endcode. + */ +static constexpr const char *kCloudfoundryAppName = "cloudfoundry.app.name"; + +/** + * The guid of the CloudFoundry org the application is running in. + *

+ * Application instrumentation should use the value from environment + * variable @code VCAP_APPLICATION.org_id @endcode. This is the same value as + * reported by @code cf org --guid @endcode. + */ +static constexpr const char *kCloudfoundryOrgId = "cloudfoundry.org.id"; + +/** + * The name of the CloudFoundry organization the app is running in. + *

+ * Application instrumentation should use the value from environment + * variable @code VCAP_APPLICATION.org_name @endcode. This is the same value as + * reported by @code cf orgs @endcode. + */ +static constexpr const char *kCloudfoundryOrgName = "cloudfoundry.org.name"; + +/** + * The UID identifying the process. + *

+ * Application instrumentation should use the value from environment + * variable @code VCAP_APPLICATION.process_id @endcode. It is supposed to be equal to + * @code VCAP_APPLICATION.app_id @endcode for applications deployed to the runtime. + * For system components, this could be the actual PID. + */ +static constexpr const char *kCloudfoundryProcessId = "cloudfoundry.process.id"; + +/** + * The type of process. + *

+ * CloudFoundry applications can consist of multiple jobs. Usually the + * main process will be of type @code web @endcode. There can be additional background + * tasks or side-cars with different process types. + */ +static constexpr const char *kCloudfoundryProcessType = "cloudfoundry.process.type"; + +/** + * The guid of the CloudFoundry space the application is running in. + *

+ * Application instrumentation should use the value from environment + * variable @code VCAP_APPLICATION.space_id @endcode. This is the same value as + * reported by @code cf space --guid @endcode. + */ +static constexpr const char *kCloudfoundrySpaceId = "cloudfoundry.space.id"; + +/** + * The name of the CloudFoundry space the application is running in. + *

+ * Application instrumentation should use the value from environment + * variable @code VCAP_APPLICATION.space_name @endcode. This is the same value as + * reported by @code cf spaces @endcode. + */ +static constexpr const char *kCloudfoundrySpaceName = "cloudfoundry.space.name"; + +/** + * A guid or another name describing the event source. + *

+ * CloudFoundry defines the @code source_id @endcode in the Loggregator v2 envelope. + * It is used for logs and metrics emitted by CloudFoundry. It is + * supposed to contain the component name, e.g. "gorouter", for + * CloudFoundry components. + *

+ * When system components are instrumented, values from the + * Bosh spec + * should be used. The @code system.id @endcode should be set to + * @code spec.deployment/spec.name @endcode. + */ +static constexpr const char *kCloudfoundrySystemId = "cloudfoundry.system.id"; + +/** + * A guid describing the concrete instance of the event source. + *

+ * CloudFoundry defines the @code instance_id @endcode in the Loggregator v2 envelope. + * It is used for logs and metrics emitted by CloudFoundry. It is + * supposed to contain the vm id for CloudFoundry components. + *

+ * When system components are instrumented, values from the + * Bosh spec + * should be used. The @code system.instance.id @endcode should be set to @code spec.id @endcode. + */ +static constexpr const char *kCloudfoundrySystemInstanceId = "cloudfoundry.system.instance.id"; + +} // namespace cloudfoundry +} // namespace semconv +OPENTELEMETRY_END_NAMESPACE diff --git a/api/include/opentelemetry/semconv/incubating/container_attributes.h b/api/include/opentelemetry/semconv/incubating/container_attributes.h index 5bd1118c3b..2ea7810b30 100644 --- a/api/include/opentelemetry/semconv/incubating/container_attributes.h +++ b/api/include/opentelemetry/semconv/incubating/container_attributes.h @@ -28,12 +28,12 @@ namespace container static constexpr const char *kContainerCommand = "container.command"; /** - * All the command arguments (including the command/executable itself) run by the container. [2] + * All the command arguments (including the command/executable itself) run by the container. */ static constexpr const char *kContainerCommandArgs = "container.command_args"; /** - * The full command run by the container as a single string representing the full command. [2] + * The full command run by the container as a single string representing the full command. */ static constexpr const char *kContainerCommandLine = "container.command_line"; @@ -46,9 +46,25 @@ static constexpr const char *kContainerCommandLine = "container.command_line"; OPENTELEMETRY_DEPRECATED static constexpr const char *kContainerCpuState = "container.cpu.state"; +/** + * The name of the CSI (Container + * Storage Interface) plugin used by the volume.

This can sometimes be referred to as a + * "driver" in CSI implementations. This should represent the @code name @endcode field of the + * GetPluginInfo RPC. + */ +static constexpr const char *kContainerCsiPluginName = "container.csi.plugin.name"; + +/** + * The unique volume ID returned by the CSI (Container Storage Interface) + * plugin.

This can sometimes be referred to as a "volume handle" in CSI implementations. This + * should represent the @code Volume.volume_id @endcode field in CSI spec. + */ +static constexpr const char *kContainerCsiVolumeId = "container.csi.volume.id"; + /** * Container ID. Usually a UUID, as for example used to identify Docker + * href="https://docs.docker.com/engine/containers/run/#container-identification">identify Docker * containers. The UUID might be abbreviated. */ static constexpr const char *kContainerId = "container.id"; diff --git a/api/include/opentelemetry/semconv/incubating/container_metrics.h b/api/include/opentelemetry/semconv/incubating/container_metrics.h index e670fb3788..8fa2541b32 100644 --- a/api/include/opentelemetry/semconv/incubating/container_metrics.h +++ b/api/include/opentelemetry/semconv/incubating/container_metrics.h @@ -59,6 +59,49 @@ CreateAsyncDoubleMetricContainerCpuTime(metrics::Meter *meter) unitMetricContainerCpuTime); } +/** + * Container's CPU usage, measured in cpus. Range from 0 to the number of allocatable CPUs + *

+ * CPU usage of the specific container on all available CPU cores, averaged over the sample window + *

+ * gauge + */ +static constexpr const char *kMetricContainerCpuUsage = "metric.container.cpu.usage"; +static constexpr const char *descrMetricContainerCpuUsage = + "Container's CPU usage, measured in cpus. Range from 0 to the number of allocatable CPUs"; +static constexpr const char *unitMetricContainerCpuUsage = "{cpu}"; + +#if OPENTELEMETRY_ABI_VERSION_NO >= 2 + +static inline nostd::unique_ptr> CreateSyncInt64MetricContainerCpuUsage( + metrics::Meter *meter) +{ + return meter->CreateInt64Gauge(kMetricContainerCpuUsage, descrMetricContainerCpuUsage, + unitMetricContainerCpuUsage); +} + +static inline nostd::unique_ptr> CreateSyncDoubleMetricContainerCpuUsage( + metrics::Meter *meter) +{ + return meter->CreateDoubleGauge(kMetricContainerCpuUsage, descrMetricContainerCpuUsage, + unitMetricContainerCpuUsage); +} +#endif /* OPENTELEMETRY_ABI_VERSION_NO */ + +static inline nostd::shared_ptr +CreateAsyncInt64MetricContainerCpuUsage(metrics::Meter *meter) +{ + return meter->CreateInt64ObservableGauge(kMetricContainerCpuUsage, descrMetricContainerCpuUsage, + unitMetricContainerCpuUsage); +} + +static inline nostd::shared_ptr +CreateAsyncDoubleMetricContainerCpuUsage(metrics::Meter *meter) +{ + return meter->CreateDoubleObservableGauge(kMetricContainerCpuUsage, descrMetricContainerCpuUsage, + unitMetricContainerCpuUsage); +} + /** * Disk bytes for the container. *

diff --git a/api/include/opentelemetry/semconv/incubating/db_attributes.h b/api/include/opentelemetry/semconv/incubating/db_attributes.h index 940f88b7da..7c5d3304bb 100644 --- a/api/include/opentelemetry/semconv/incubating/db_attributes.h +++ b/api/include/opentelemetry/semconv/incubating/db_attributes.h @@ -102,7 +102,8 @@ static constexpr const char *kDbClientConnectionsState = "db.client.connections. * first collection name found in the query and it SHOULD match the value provided in the query text * including any schema and database name prefix. For batch operations, if the individual operations * are known to have the same collection name then that collection name SHOULD be used, otherwise - * @code db.collection.name @endcode SHOULD NOT be captured. + * @code db.collection.name @endcode SHOULD NOT be captured. This attribute has stability level + * RELEASE CANDIDATE. */ static constexpr const char *kDbCollectionName = "db.collection.name"; @@ -110,7 +111,7 @@ static constexpr const char *kDbCollectionName = "db.collection.name"; * Deprecated, use @code server.address @endcode, @code server.port @endcode attributes instead. *

* @deprecated - * "Replaced by @code server.address @endcode and @code server.port @endcode." + * Replaced by @code server.address @endcode and @code server.port @endcode. */ OPENTELEMETRY_DEPRECATED static constexpr const char *kDbConnectionString = "db.connection_string"; @@ -135,7 +136,7 @@ OPENTELEMETRY_DEPRECATED static constexpr const char *kDbCosmosdbContainer = "db.cosmosdb.container"; /** - * CosmosDB Operation Type. + * Cosmos DB Operation Type. */ static constexpr const char *kDbCosmosdbOperationType = "db.cosmosdb.operation_type"; @@ -150,8 +151,12 @@ static constexpr const char *kDbCosmosdbRequestCharge = "db.cosmosdb.request_cha static constexpr const char *kDbCosmosdbRequestContentLength = "db.cosmosdb.request_content_length"; /** - * Cosmos DB status code. + * Deprecated, use @code db.response.status_code @endcode instead. + *

+ * @deprecated + * Replaced by @code db.response.status_code @endcode. */ +OPENTELEMETRY_DEPRECATED static constexpr const char *kDbCosmosdbStatusCode = "db.cosmosdb.status_code"; /** @@ -239,7 +244,8 @@ static constexpr const char *kDbName = "db.name"; * namespaces, to ensure that "startswith" queries for the more general namespaces will be valid. * Semantic conventions for individual database systems SHOULD document what @code db.namespace * @endcode means in the context of that system. It is RECOMMENDED to capture the value as provided - * by the application without attempting to do any case normalization. + * by the application without attempting to do any case normalization. This attribute has stability + * level RELEASE CANDIDATE. */ static constexpr const char *kDbNamespace = "db.namespace"; @@ -253,10 +259,11 @@ OPENTELEMETRY_DEPRECATED static constexpr const char *kDbOperation = "db.operation"; /** - * The number of queries included in a batch operation.

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. + * The number of queries included in a batch operation. + *

+ * 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. */ static constexpr const char *kDbOperationBatchSize = "db.operation.batch.size"; @@ -268,7 +275,8 @@ static constexpr const char *kDbOperationBatchSize = "db.operation.batch.size"; * first operation name found in the query. For batch operations, if the individual operations are * known to have the same operation name 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. + * some other database system specific term if more applicable. This attribute has stability level + * RELEASE CANDIDATE. */ static constexpr const char *kDbOperationName = "db.operation.name"; @@ -277,7 +285,7 @@ static constexpr const char *kDbOperationName = "db.operation.name"; * parameter name, and the attribute value being a string representation of the parameter value.

* Query parameters should only be captured when @code db.query.text @endcode is parameterized with * placeholders. If a parameter has no name and instead is referenced only by index, then @code - * @endcode SHOULD be the 0-based index. + * @endcode SHOULD be the 0-based index. This attribute has stability level RELEASE CANDIDATE. */ static constexpr const char *kDbQueryParameter = "db.query.parameter"; @@ -292,7 +300,8 @@ static constexpr const char *kDbQueryParameter = "db.query.parameter"; * 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. + * the static part of the query text by default outweighs the risk. This attribute has stability + * level RELEASE CANDIDATE. */ static constexpr const char *kDbQueryText = "db.query.text"; @@ -305,6 +314,17 @@ static constexpr const char *kDbQueryText = "db.query.text"; OPENTELEMETRY_DEPRECATED static constexpr const char *kDbRedisDatabaseIndex = "db.redis.database_index"; +/** + * Database 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 @code + * db.response.status_code @endcode means in the context of that system. This attribute has + * stability level RELEASE CANDIDATE. + */ +static constexpr const char *kDbResponseStatusCode = "db.response.status_code"; + /** * Deprecated, use @code db.collection.name @endcode instead. *

@@ -328,7 +348,8 @@ static constexpr const char *kDbStatement = "db.statement"; *

* 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. + * @code postgresql @endcode based on the instrumentation's best knowledge. This attribute has + * stability level RELEASE CANDIDATE. */ static constexpr const char *kDbSystem = "db.system"; @@ -447,77 +468,77 @@ namespace DbCosmosdbOperationTypeValues /** * none */ -static constexpr const char *kInvalid = "Invalid"; +static constexpr const char *kBatch = "batch"; /** * none */ -static constexpr const char *kCreate = "Create"; +static constexpr const char *kCreate = "create"; /** * none */ -static constexpr const char *kPatch = "Patch"; +static constexpr const char *kDelete = "delete"; /** * none */ -static constexpr const char *kRead = "Read"; +static constexpr const char *kExecute = "execute"; /** * none */ -static constexpr const char *kReadFeed = "ReadFeed"; +static constexpr const char *kExecuteJavascript = "execute_javascript"; /** * none */ -static constexpr const char *kDelete = "Delete"; +static constexpr const char *kInvalid = "invalid"; /** * none */ -static constexpr const char *kReplace = "Replace"; +static constexpr const char *kHead = "head"; /** * none */ -static constexpr const char *kExecute = "Execute"; +static constexpr const char *kHeadFeed = "head_feed"; /** * none */ -static constexpr const char *kQuery = "Query"; +static constexpr const char *kPatch = "patch"; /** * none */ -static constexpr const char *kHead = "Head"; +static constexpr const char *kQuery = "query"; /** * none */ -static constexpr const char *kHeadFeed = "HeadFeed"; +static constexpr const char *kQueryPlan = "query_plan"; /** * none */ -static constexpr const char *kUpsert = "Upsert"; +static constexpr const char *kRead = "read"; /** * none */ -static constexpr const char *kBatch = "Batch"; +static constexpr const char *kReadFeed = "read_feed"; /** * none */ -static constexpr const char *kQueryPlan = "QueryPlan"; +static constexpr const char *kReplace = "replace"; /** * none */ -static constexpr const char *kExecuteJavascript = "ExecuteJavaScript"; +static constexpr const char *kUpsert = "upsert"; } // namespace DbCosmosdbOperationTypeValues @@ -695,7 +716,7 @@ static constexpr const char *kInstantdb = "instantdb"; static constexpr const char *kInterbase = "interbase"; /** - * MariaDB + * MariaDB (This value has stability level RELEASE CANDIDATE) */ static constexpr const char *kMariadb = "mariadb"; @@ -715,7 +736,7 @@ static constexpr const char *kMemcached = "memcached"; static constexpr const char *kMongodb = "mongodb"; /** - * Microsoft SQL Server + * Microsoft SQL Server (This value has stability level RELEASE CANDIDATE) */ static constexpr const char *kMssql = "mssql"; @@ -729,7 +750,7 @@ OPENTELEMETRY_DEPRECATED static constexpr const char *kMssqlcompact = "mssqlcompact"; /** - * MySQL + * MySQL (This value has stability level RELEASE CANDIDATE) */ static constexpr const char *kMysql = "mysql"; @@ -764,7 +785,7 @@ static constexpr const char *kPervasive = "pervasive"; static constexpr const char *kPointbase = "pointbase"; /** - * PostgreSQL + * PostgreSQL (This value has stability level RELEASE CANDIDATE) */ static constexpr const char *kPostgresql = "postgresql"; diff --git a/api/include/opentelemetry/semconv/incubating/db_metrics.h b/api/include/opentelemetry/semconv/incubating/db_metrics.h index 6ea8e095c7..d3dd52190e 100644 --- a/api/include/opentelemetry/semconv/incubating/db_metrics.h +++ b/api/include/opentelemetry/semconv/incubating/db_metrics.h @@ -217,14 +217,14 @@ CreateAsyncDoubleMetricDbClientConnectionMax(metrics::Meter *meter) } /** - * The number of pending requests for an open connection, cumulative for the entire pool + * The number of current pending requests for an open connection *

* updowncounter */ static constexpr const char *kMetricDbClientConnectionPendingRequests = "metric.db.client.connection.pending_requests"; static constexpr const char *descrMetricDbClientConnectionPendingRequests = - "The number of pending requests for an open connection, cumulative for the entire pool"; + "The number of current pending requests for an open connection"; static constexpr const char *unitMetricDbClientConnectionPendingRequests = "{request}"; static inline nostd::unique_ptr> diff --git a/api/include/opentelemetry/semconv/incubating/file_attributes.h b/api/include/opentelemetry/semconv/incubating/file_attributes.h index eb65a811ec..2ac4fc4b55 100644 --- a/api/include/opentelemetry/semconv/incubating/file_attributes.h +++ b/api/include/opentelemetry/semconv/incubating/file_attributes.h @@ -19,6 +19,40 @@ namespace semconv namespace file { +/** + * Time when the file was last accessed, in ISO 8601 format. + *

+ * This attribute might not be supported by some file systems — NFS, FAT32, in embedded OS, etc. + */ +static constexpr const char *kFileAccessed = "file.accessed"; + +/** + * Array of file attributes. + *

+ * Attributes names depend on the OS or file system. Here’s a non-exhaustive list of values expected + * for this attribute: @code archive @endcode, @code compressed @endcode, @code directory @endcode, + * @code encrypted @endcode, @code execute @endcode, @code hidden @endcode, @code immutable + * @endcode, @code journaled @endcode, @code read @endcode, @code readonly @endcode, @code symbolic + * link @endcode, @code system @endcode, @code temporary @endcode, @code write @endcode. + */ +static constexpr const char *kFileAttributes = "file.attributes"; + +/** + * Time when the file attributes or metadata was last changed, in ISO 8601 format. + *

+ * @code file.changed @endcode captures the time when any of the file's properties or attributes + * (including the content) are changed, while @code file.modified @endcode captures the timestamp + * when the file content is modified. + */ +static constexpr const char *kFileChanged = "file.changed"; + +/** + * Time when the file was created, in ISO 8601 format. + *

+ * This attribute might not be supported by some file systems — NFS, FAT32, in embedded OS, etc. + */ +static constexpr const char *kFileCreated = "file.created"; + /** * Directory where the file is located. It should include the drive letter, when appropriate. */ @@ -32,11 +66,61 @@ static constexpr const char *kFileDirectory = "file.directory"; */ static constexpr const char *kFileExtension = "file.extension"; +/** + * Name of the fork. A fork is additional data associated with a filesystem object. + *

+ * On Linux, a resource fork is used to store additional data with a filesystem object. A file + * always has at least one fork for the data portion, and additional forks may exist. On NTFS, this + * is analogous to an Alternate Data Stream (ADS), and the default data stream for a file is just + * called $DATA. Zone.Identifier is commonly used by Windows to track contents downloaded from the + * Internet. An ADS is typically of the form: C:\path\to\filename.extension:some_fork_name, and + * some_fork_name is the value that should populate @code fork_name @endcode. @code + * filename.extension @endcode should populate @code file.name @endcode, and @code extension + * @endcode should populate @code file.extension @endcode. The full path, @code file.path @endcode, + * will include the fork name. + */ +static constexpr const char *kFileForkName = "file.fork_name"; + +/** + * Primary Group ID (GID) of the file. + */ +static constexpr const char *kFileGroupId = "file.group.id"; + +/** + * Primary group name of the file. + */ +static constexpr const char *kFileGroupName = "file.group.name"; + +/** + * Inode representing the file in the filesystem. + */ +static constexpr const char *kFileInode = "file.inode"; + +/** + * Mode of the file in octal representation. + */ +static constexpr const char *kFileMode = "file.mode"; + +/** + * Time when the file content was last modified, in ISO 8601 format. + */ +static constexpr const char *kFileModified = "file.modified"; + /** * Name of the file including the extension, without the directory. */ static constexpr const char *kFileName = "file.name"; +/** + * The user ID (UID) or security identifier (SID) of the file owner. + */ +static constexpr const char *kFileOwnerId = "file.owner.id"; + +/** + * Username of the file owner. + */ +static constexpr const char *kFileOwnerName = "file.owner.name"; + /** * Full path to the file, including the file name. It should include the drive letter, when * appropriate. @@ -48,6 +132,13 @@ static constexpr const char *kFilePath = "file.path"; */ static constexpr const char *kFileSize = "file.size"; +/** + * Path to the target of a symbolic link. + *

+ * This attribute is only applicable to symbolic links. + */ +static constexpr const char *kFileSymbolicLinkTargetPath = "file.symbolic_link.target_path"; + } // namespace file } // namespace semconv OPENTELEMETRY_END_NAMESPACE diff --git a/api/include/opentelemetry/semconv/incubating/gen_ai_attributes.h b/api/include/opentelemetry/semconv/incubating/gen_ai_attributes.h index 03f2eebc2c..ce4a939d07 100644 --- a/api/include/opentelemetry/semconv/incubating/gen_ai_attributes.h +++ b/api/include/opentelemetry/semconv/incubating/gen_ai_attributes.h @@ -20,13 +20,36 @@ namespace gen_ai { /** - * The full response received from the GenAI model. + * Deprecated, use Event API to report completions contents. *

- * It's RECOMMENDED to format completions as JSON string matching OpenAI messages format + * @deprecated + * Removed, no replacement at this time. */ +OPENTELEMETRY_DEPRECATED static constexpr const char *kGenAiCompletion = "gen_ai.completion"; +/** + * The response format that is requested. + */ +static constexpr const char *kGenAiOpenaiRequestResponseFormat = + "gen_ai.openai.request.response_format"; + +/** + * Requests with same seed value more likely to return same result. + */ +static constexpr const char *kGenAiOpenaiRequestSeed = "gen_ai.openai.request.seed"; + +/** + * The service tier requested. May be a specific tier, detault, or auto. + */ +static constexpr const char *kGenAiOpenaiRequestServiceTier = "gen_ai.openai.request.service_tier"; + +/** + * The service tier used for the response. + */ +static constexpr const char *kGenAiOpenaiResponseServiceTier = + "gen_ai.openai.response.service_tier"; + /** * The name of the operation being performed. *

@@ -38,11 +61,12 @@ static constexpr const char *kGenAiCompletion = "gen_ai.completion"; static constexpr const char *kGenAiOperationName = "gen_ai.operation.name"; /** - * The full prompt sent to the GenAI model. + * Deprecated, use Event API to report prompt contents. *

- * It's RECOMMENDED to format prompts as JSON string matching OpenAI messages format + * @deprecated + * Removed, no replacement at this time. */ +OPENTELEMETRY_DEPRECATED static constexpr const char *kGenAiPrompt = "gen_ai.prompt"; /** @@ -146,6 +170,39 @@ static constexpr const char *kGenAiUsageOutputTokens = "gen_ai.usage.output_toke OPENTELEMETRY_DEPRECATED static constexpr const char *kGenAiUsagePromptTokens = "gen_ai.usage.prompt_tokens"; +namespace GenAiOpenaiRequestResponseFormatValues +{ +/** + * Text response format + */ +static constexpr const char *kText = "text"; + +/** + * JSON object response format + */ +static constexpr const char *kJsonObject = "json_object"; + +/** + * JSON schema response format + */ +static constexpr const char *kJsonSchema = "json_schema"; + +} // namespace GenAiOpenaiRequestResponseFormatValues + +namespace GenAiOpenaiRequestServiceTierValues +{ +/** + * The system will utilize scale tier credits until they are exhausted. + */ +static constexpr const char *kAuto = "auto"; + +/** + * The system will utilize the default scale tier. + */ +static constexpr const char *kDefault = "default"; + +} // namespace GenAiOpenaiRequestServiceTierValues + namespace GenAiOperationNameValues { /** diff --git a/api/include/opentelemetry/semconv/incubating/http_attributes.h b/api/include/opentelemetry/semconv/incubating/http_attributes.h index 3e06e4e925..8f909f5297 100644 --- a/api/include/opentelemetry/semconv/incubating/http_attributes.h +++ b/api/include/opentelemetry/semconv/incubating/http_attributes.h @@ -126,10 +126,10 @@ static constexpr const char *kHttpRequestResendCount = "http.request.resend_coun static constexpr const char *kHttpRequestSize = "http.request.size"; /** - * Deprecated, use @code http.request.header.content-length @endcode instead. + * Deprecated, use @code http.request.header. @endcode instead. *

* @deprecated - * Replaced by @code http.request.header.content-length @endcode. + * Replaced by @code http.request.header. @endcode. */ OPENTELEMETRY_DEPRECATED static constexpr const char *kHttpRequestContentLength = "http.request_content_length"; @@ -177,10 +177,10 @@ static constexpr const char *kHttpResponseSize = "http.response.size"; static constexpr const char *kHttpResponseStatusCode = "http.response.status_code"; /** - * Deprecated, use @code http.response.header.content-length @endcode instead. + * Deprecated, use @code http.response.header. @endcode instead. *

* @deprecated - * Replaced by @code http.response.header.content-length @endcode. + * Replaced by @code http.response.header. @endcode. */ OPENTELEMETRY_DEPRECATED static constexpr const char *kHttpResponseContentLength = "http.response_content_length"; diff --git a/api/include/opentelemetry/semconv/incubating/hw_attributes.h b/api/include/opentelemetry/semconv/incubating/hw_attributes.h new file mode 100644 index 0000000000..d87fe1f3db --- /dev/null +++ b/api/include/opentelemetry/semconv/incubating/hw_attributes.h @@ -0,0 +1,148 @@ +/* + * 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 hw +{ + +/** + * An identifier for the hardware component, unique within the monitored host + */ +static constexpr const char *kHwId = "hw.id"; + +/** + * An easily-recognizable name for the hardware component + */ +static constexpr const char *kHwName = "hw.name"; + +/** + * Unique identifier of the parent component (typically the @code hw.id @endcode attribute of the + * enclosure, or disk controller) + */ +static constexpr const char *kHwParent = "hw.parent"; + +/** + * The current state of the component + */ +static constexpr const char *kHwState = "hw.state"; + +/** + * Type of the component + *

+ * Describes the category of the hardware component for which @code hw.state @endcode is being + * reported. For example, @code hw.type=temperature @endcode along with @code hw.state=degraded + * @endcode would indicate that the temperature of the hardware component has been reported as @code + * degraded @endcode. + */ +static constexpr const char *kHwType = "hw.type"; + +namespace HwStateValues +{ +/** + * Ok + */ +static constexpr const char *kOk = "ok"; + +/** + * Degraded + */ +static constexpr const char *kDegraded = "degraded"; + +/** + * Failed + */ +static constexpr const char *kFailed = "failed"; + +} // namespace HwStateValues + +namespace HwTypeValues +{ +/** + * Battery + */ +static constexpr const char *kBattery = "battery"; + +/** + * CPU + */ +static constexpr const char *kCpu = "cpu"; + +/** + * Disk controller + */ +static constexpr const char *kDiskController = "disk_controller"; + +/** + * Enclosure + */ +static constexpr const char *kEnclosure = "enclosure"; + +/** + * Fan + */ +static constexpr const char *kFan = "fan"; + +/** + * GPU + */ +static constexpr const char *kGpu = "gpu"; + +/** + * Logical disk + */ +static constexpr const char *kLogicalDisk = "logical_disk"; + +/** + * Memory + */ +static constexpr const char *kMemory = "memory"; + +/** + * Network + */ +static constexpr const char *kNetwork = "network"; + +/** + * Physical disk + */ +static constexpr const char *kPhysicalDisk = "physical_disk"; + +/** + * Power supply + */ +static constexpr const char *kPowerSupply = "power_supply"; + +/** + * Tape drive + */ +static constexpr const char *kTapeDrive = "tape_drive"; + +/** + * Temperature + */ +static constexpr const char *kTemperature = "temperature"; + +/** + * Voltage + */ +static constexpr const char *kVoltage = "voltage"; + +} // namespace HwTypeValues + +} // namespace hw +} // namespace semconv +OPENTELEMETRY_END_NAMESPACE diff --git a/api/include/opentelemetry/semconv/incubating/hw_metrics.h b/api/include/opentelemetry/semconv/incubating/hw_metrics.h new file mode 100644 index 0000000000..3a87fd2506 --- /dev/null +++ b/api/include/opentelemetry/semconv/incubating/hw_metrics.h @@ -0,0 +1,174 @@ +/* + * 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 hw +{ + +/** + * Energy consumed by the component + *

+ * counter + */ +static constexpr const char *kMetricHwEnergy = "metric.hw.energy"; +static constexpr const char *descrMetricHwEnergy = "Energy consumed by the component"; +static constexpr const char *unitMetricHwEnergy = "J"; + +static inline nostd::unique_ptr> CreateSyncInt64MetricHwEnergy( + metrics::Meter *meter) +{ + return meter->CreateUInt64Counter(kMetricHwEnergy, descrMetricHwEnergy, unitMetricHwEnergy); +} + +static inline nostd::unique_ptr> CreateSyncDoubleMetricHwEnergy( + metrics::Meter *meter) +{ + return meter->CreateDoubleCounter(kMetricHwEnergy, descrMetricHwEnergy, unitMetricHwEnergy); +} + +static inline nostd::shared_ptr CreateAsyncInt64MetricHwEnergy( + metrics::Meter *meter) +{ + return meter->CreateInt64ObservableCounter(kMetricHwEnergy, descrMetricHwEnergy, + unitMetricHwEnergy); +} + +static inline nostd::shared_ptr CreateAsyncDoubleMetricHwEnergy( + metrics::Meter *meter) +{ + return meter->CreateDoubleObservableCounter(kMetricHwEnergy, descrMetricHwEnergy, + unitMetricHwEnergy); +} + +/** + * Number of errors encountered by the component + *

+ * counter + */ +static constexpr const char *kMetricHwErrors = "metric.hw.errors"; +static constexpr const char *descrMetricHwErrors = "Number of errors encountered by the component"; +static constexpr const char *unitMetricHwErrors = "{error}"; + +static inline nostd::unique_ptr> CreateSyncInt64MetricHwErrors( + metrics::Meter *meter) +{ + return meter->CreateUInt64Counter(kMetricHwErrors, descrMetricHwErrors, unitMetricHwErrors); +} + +static inline nostd::unique_ptr> CreateSyncDoubleMetricHwErrors( + metrics::Meter *meter) +{ + return meter->CreateDoubleCounter(kMetricHwErrors, descrMetricHwErrors, unitMetricHwErrors); +} + +static inline nostd::shared_ptr CreateAsyncInt64MetricHwErrors( + metrics::Meter *meter) +{ + return meter->CreateInt64ObservableCounter(kMetricHwErrors, descrMetricHwErrors, + unitMetricHwErrors); +} + +static inline nostd::shared_ptr CreateAsyncDoubleMetricHwErrors( + metrics::Meter *meter) +{ + return meter->CreateDoubleObservableCounter(kMetricHwErrors, descrMetricHwErrors, + unitMetricHwErrors); +} + +/** + * Instantaneous power consumed by the component + *

+ * It is recommended to report @code hw.energy @endcode instead of @code hw.power @endcode when + * possible.

gauge + */ +static constexpr const char *kMetricHwPower = "metric.hw.power"; +static constexpr const char *descrMetricHwPower = "Instantaneous power consumed by the component"; +static constexpr const char *unitMetricHwPower = "W"; + +#if OPENTELEMETRY_ABI_VERSION_NO >= 2 + +static inline nostd::unique_ptr> CreateSyncInt64MetricHwPower( + metrics::Meter *meter) +{ + return meter->CreateInt64Gauge(kMetricHwPower, descrMetricHwPower, unitMetricHwPower); +} + +static inline nostd::unique_ptr> CreateSyncDoubleMetricHwPower( + metrics::Meter *meter) +{ + return meter->CreateDoubleGauge(kMetricHwPower, descrMetricHwPower, unitMetricHwPower); +} +#endif /* OPENTELEMETRY_ABI_VERSION_NO */ + +static inline nostd::shared_ptr CreateAsyncInt64MetricHwPower( + metrics::Meter *meter) +{ + return meter->CreateInt64ObservableGauge(kMetricHwPower, descrMetricHwPower, unitMetricHwPower); +} + +static inline nostd::shared_ptr CreateAsyncDoubleMetricHwPower( + metrics::Meter *meter) +{ + return meter->CreateDoubleObservableGauge(kMetricHwPower, descrMetricHwPower, unitMetricHwPower); +} + +/** + * Operational status: @code 1 @endcode (true) or @code 0 @endcode (false) for each of the possible + * states

+ * @code hw.status @endcode is currently specified as an UpDownCounter but would ideally be + * represented using a StateSet + * as defined in OpenMetrics. This semantic convention will be updated once StateSet is + * specified in OpenTelemetry. This planned change is not expected to have any consequence on the + * way users query their timeseries backend to retrieve the values of @code hw.status @endcode over + * time.

updowncounter + */ +static constexpr const char *kMetricHwStatus = "metric.hw.status"; +static constexpr const char *descrMetricHwStatus = + "Operational status: `1` (true) or `0` (false) for each of the possible states"; +static constexpr const char *unitMetricHwStatus = "1"; + +static inline nostd::unique_ptr> CreateSyncInt64MetricHwStatus( + metrics::Meter *meter) +{ + return meter->CreateInt64UpDownCounter(kMetricHwStatus, descrMetricHwStatus, unitMetricHwStatus); +} + +static inline nostd::unique_ptr> CreateSyncDoubleMetricHwStatus( + metrics::Meter *meter) +{ + return meter->CreateDoubleUpDownCounter(kMetricHwStatus, descrMetricHwStatus, unitMetricHwStatus); +} + +static inline nostd::shared_ptr CreateAsyncInt64MetricHwStatus( + metrics::Meter *meter) +{ + return meter->CreateInt64ObservableUpDownCounter(kMetricHwStatus, descrMetricHwStatus, + unitMetricHwStatus); +} + +static inline nostd::shared_ptr CreateAsyncDoubleMetricHwStatus( + metrics::Meter *meter) +{ + return meter->CreateDoubleObservableUpDownCounter(kMetricHwStatus, descrMetricHwStatus, + unitMetricHwStatus); +} + +} // namespace hw +} // namespace semconv +OPENTELEMETRY_END_NAMESPACE diff --git a/api/include/opentelemetry/semconv/incubating/k8s_attributes.h b/api/include/opentelemetry/semconv/incubating/k8s_attributes.h index 2d51d057c7..ba40b45409 100644 --- a/api/include/opentelemetry/semconv/incubating/k8s_attributes.h +++ b/api/include/opentelemetry/semconv/incubating/k8s_attributes.h @@ -175,6 +175,60 @@ static constexpr const char *kK8sStatefulsetName = "k8s.statefulset.name"; */ static constexpr const char *kK8sStatefulsetUid = "k8s.statefulset.uid"; +/** + * The name of the K8s volume. + */ +static constexpr const char *kK8sVolumeName = "k8s.volume.name"; + +/** + * The type of the K8s volume. + */ +static constexpr const char *kK8sVolumeType = "k8s.volume.type"; + +namespace K8sVolumeTypeValues +{ +/** + * A persistentVolumeClaim + * volume + */ +static constexpr const char *kPersistentVolumeClaim = "persistentVolumeClaim"; + +/** + * A configMap + * volume + */ +static constexpr const char *kConfigMap = "configMap"; + +/** + * A downwardAPI + * volume + */ +static constexpr const char *kDownwardApi = "downwardAPI"; + +/** + * An emptyDir + * volume + */ +static constexpr const char *kEmptyDir = "emptyDir"; + +/** + * A secret + * volume + */ +static constexpr const char *kSecret = "secret"; + +/** + * A local + * volume + */ +static constexpr const char *kLocal = "local"; + +} // namespace K8sVolumeTypeValues + } // namespace k8s } // namespace semconv OPENTELEMETRY_END_NAMESPACE diff --git a/api/include/opentelemetry/semconv/incubating/k8s_metrics.h b/api/include/opentelemetry/semconv/incubating/k8s_metrics.h new file mode 100644 index 0000000000..2753ba4be1 --- /dev/null +++ b/api/include/opentelemetry/semconv/incubating/k8s_metrics.h @@ -0,0 +1,273 @@ +/* + * 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 k8s +{ + +/** + * Total CPU time consumed + *

+ * Total CPU time consumed by the specific Node on all available CPU cores + *

+ * counter + */ +static constexpr const char *kMetricK8sNodeCpuTime = "metric.k8s.node.cpu.time"; +static constexpr const char *descrMetricK8sNodeCpuTime = "Total CPU time consumed"; +static constexpr const char *unitMetricK8sNodeCpuTime = "s"; + +static inline nostd::unique_ptr> CreateSyncInt64MetricK8sNodeCpuTime( + metrics::Meter *meter) +{ + return meter->CreateUInt64Counter(kMetricK8sNodeCpuTime, descrMetricK8sNodeCpuTime, + unitMetricK8sNodeCpuTime); +} + +static inline nostd::unique_ptr> CreateSyncDoubleMetricK8sNodeCpuTime( + metrics::Meter *meter) +{ + return meter->CreateDoubleCounter(kMetricK8sNodeCpuTime, descrMetricK8sNodeCpuTime, + unitMetricK8sNodeCpuTime); +} + +static inline nostd::shared_ptr CreateAsyncInt64MetricK8sNodeCpuTime( + metrics::Meter *meter) +{ + return meter->CreateInt64ObservableCounter(kMetricK8sNodeCpuTime, descrMetricK8sNodeCpuTime, + unitMetricK8sNodeCpuTime); +} + +static inline nostd::shared_ptr +CreateAsyncDoubleMetricK8sNodeCpuTime(metrics::Meter *meter) +{ + return meter->CreateDoubleObservableCounter(kMetricK8sNodeCpuTime, descrMetricK8sNodeCpuTime, + unitMetricK8sNodeCpuTime); +} + +/** + * Node's CPU usage, measured in cpus. Range from 0 to the number of allocatable CPUs + *

+ * CPU usage of the specific Node on all available CPU cores, averaged over the sample window + *

+ * gauge + */ +static constexpr const char *kMetricK8sNodeCpuUsage = "metric.k8s.node.cpu.usage"; +static constexpr const char *descrMetricK8sNodeCpuUsage = + "Node's CPU usage, measured in cpus. Range from 0 to the number of allocatable CPUs"; +static constexpr const char *unitMetricK8sNodeCpuUsage = "{cpu}"; + +#if OPENTELEMETRY_ABI_VERSION_NO >= 2 + +static inline nostd::unique_ptr> CreateSyncInt64MetricK8sNodeCpuUsage( + metrics::Meter *meter) +{ + return meter->CreateInt64Gauge(kMetricK8sNodeCpuUsage, descrMetricK8sNodeCpuUsage, + unitMetricK8sNodeCpuUsage); +} + +static inline nostd::unique_ptr> CreateSyncDoubleMetricK8sNodeCpuUsage( + metrics::Meter *meter) +{ + return meter->CreateDoubleGauge(kMetricK8sNodeCpuUsage, descrMetricK8sNodeCpuUsage, + unitMetricK8sNodeCpuUsage); +} +#endif /* OPENTELEMETRY_ABI_VERSION_NO */ + +static inline nostd::shared_ptr +CreateAsyncInt64MetricK8sNodeCpuUsage(metrics::Meter *meter) +{ + return meter->CreateInt64ObservableGauge(kMetricK8sNodeCpuUsage, descrMetricK8sNodeCpuUsage, + unitMetricK8sNodeCpuUsage); +} + +static inline nostd::shared_ptr +CreateAsyncDoubleMetricK8sNodeCpuUsage(metrics::Meter *meter) +{ + return meter->CreateDoubleObservableGauge(kMetricK8sNodeCpuUsage, descrMetricK8sNodeCpuUsage, + unitMetricK8sNodeCpuUsage); +} + +/** + * Memory usage of the Node + *

+ * Total memory usage of the Node + *

+ * gauge + */ +static constexpr const char *kMetricK8sNodeMemoryUsage = "metric.k8s.node.memory.usage"; +static constexpr const char *descrMetricK8sNodeMemoryUsage = "Memory usage of the Node"; +static constexpr const char *unitMetricK8sNodeMemoryUsage = "By"; + +#if OPENTELEMETRY_ABI_VERSION_NO >= 2 + +static inline nostd::unique_ptr> CreateSyncInt64MetricK8sNodeMemoryUsage( + metrics::Meter *meter) +{ + return meter->CreateInt64Gauge(kMetricK8sNodeMemoryUsage, descrMetricK8sNodeMemoryUsage, + unitMetricK8sNodeMemoryUsage); +} + +static inline nostd::unique_ptr> CreateSyncDoubleMetricK8sNodeMemoryUsage( + metrics::Meter *meter) +{ + return meter->CreateDoubleGauge(kMetricK8sNodeMemoryUsage, descrMetricK8sNodeMemoryUsage, + unitMetricK8sNodeMemoryUsage); +} +#endif /* OPENTELEMETRY_ABI_VERSION_NO */ + +static inline nostd::shared_ptr +CreateAsyncInt64MetricK8sNodeMemoryUsage(metrics::Meter *meter) +{ + return meter->CreateInt64ObservableGauge(kMetricK8sNodeMemoryUsage, descrMetricK8sNodeMemoryUsage, + unitMetricK8sNodeMemoryUsage); +} + +static inline nostd::shared_ptr +CreateAsyncDoubleMetricK8sNodeMemoryUsage(metrics::Meter *meter) +{ + return meter->CreateDoubleObservableGauge( + kMetricK8sNodeMemoryUsage, descrMetricK8sNodeMemoryUsage, unitMetricK8sNodeMemoryUsage); +} + +/** + * Total CPU time consumed + *

+ * Total CPU time consumed by the specific Pod on all available CPU cores + *

+ * counter + */ +static constexpr const char *kMetricK8sPodCpuTime = "metric.k8s.pod.cpu.time"; +static constexpr const char *descrMetricK8sPodCpuTime = "Total CPU time consumed"; +static constexpr const char *unitMetricK8sPodCpuTime = "s"; + +static inline nostd::unique_ptr> CreateSyncInt64MetricK8sPodCpuTime( + metrics::Meter *meter) +{ + return meter->CreateUInt64Counter(kMetricK8sPodCpuTime, descrMetricK8sPodCpuTime, + unitMetricK8sPodCpuTime); +} + +static inline nostd::unique_ptr> CreateSyncDoubleMetricK8sPodCpuTime( + metrics::Meter *meter) +{ + return meter->CreateDoubleCounter(kMetricK8sPodCpuTime, descrMetricK8sPodCpuTime, + unitMetricK8sPodCpuTime); +} + +static inline nostd::shared_ptr CreateAsyncInt64MetricK8sPodCpuTime( + metrics::Meter *meter) +{ + return meter->CreateInt64ObservableCounter(kMetricK8sPodCpuTime, descrMetricK8sPodCpuTime, + unitMetricK8sPodCpuTime); +} + +static inline nostd::shared_ptr CreateAsyncDoubleMetricK8sPodCpuTime( + metrics::Meter *meter) +{ + return meter->CreateDoubleObservableCounter(kMetricK8sPodCpuTime, descrMetricK8sPodCpuTime, + unitMetricK8sPodCpuTime); +} + +/** + * Pod's CPU usage, measured in cpus. Range from 0 to the number of allocatable CPUs + *

+ * CPU usage of the specific Pod on all available CPU cores, averaged over the sample window + *

+ * gauge + */ +static constexpr const char *kMetricK8sPodCpuUsage = "metric.k8s.pod.cpu.usage"; +static constexpr const char *descrMetricK8sPodCpuUsage = + "Pod's CPU usage, measured in cpus. Range from 0 to the number of allocatable CPUs"; +static constexpr const char *unitMetricK8sPodCpuUsage = "{cpu}"; + +#if OPENTELEMETRY_ABI_VERSION_NO >= 2 + +static inline nostd::unique_ptr> CreateSyncInt64MetricK8sPodCpuUsage( + metrics::Meter *meter) +{ + return meter->CreateInt64Gauge(kMetricK8sPodCpuUsage, descrMetricK8sPodCpuUsage, + unitMetricK8sPodCpuUsage); +} + +static inline nostd::unique_ptr> CreateSyncDoubleMetricK8sPodCpuUsage( + metrics::Meter *meter) +{ + return meter->CreateDoubleGauge(kMetricK8sPodCpuUsage, descrMetricK8sPodCpuUsage, + unitMetricK8sPodCpuUsage); +} +#endif /* OPENTELEMETRY_ABI_VERSION_NO */ + +static inline nostd::shared_ptr CreateAsyncInt64MetricK8sPodCpuUsage( + metrics::Meter *meter) +{ + return meter->CreateInt64ObservableGauge(kMetricK8sPodCpuUsage, descrMetricK8sPodCpuUsage, + unitMetricK8sPodCpuUsage); +} + +static inline nostd::shared_ptr +CreateAsyncDoubleMetricK8sPodCpuUsage(metrics::Meter *meter) +{ + return meter->CreateDoubleObservableGauge(kMetricK8sPodCpuUsage, descrMetricK8sPodCpuUsage, + unitMetricK8sPodCpuUsage); +} + +/** + * Memory usage of the Pod + *

+ * Total memory usage of the Pod + *

+ * gauge + */ +static constexpr const char *kMetricK8sPodMemoryUsage = "metric.k8s.pod.memory.usage"; +static constexpr const char *descrMetricK8sPodMemoryUsage = "Memory usage of the Pod"; +static constexpr const char *unitMetricK8sPodMemoryUsage = "By"; + +#if OPENTELEMETRY_ABI_VERSION_NO >= 2 + +static inline nostd::unique_ptr> CreateSyncInt64MetricK8sPodMemoryUsage( + metrics::Meter *meter) +{ + return meter->CreateInt64Gauge(kMetricK8sPodMemoryUsage, descrMetricK8sPodMemoryUsage, + unitMetricK8sPodMemoryUsage); +} + +static inline nostd::unique_ptr> CreateSyncDoubleMetricK8sPodMemoryUsage( + metrics::Meter *meter) +{ + return meter->CreateDoubleGauge(kMetricK8sPodMemoryUsage, descrMetricK8sPodMemoryUsage, + unitMetricK8sPodMemoryUsage); +} +#endif /* OPENTELEMETRY_ABI_VERSION_NO */ + +static inline nostd::shared_ptr +CreateAsyncInt64MetricK8sPodMemoryUsage(metrics::Meter *meter) +{ + return meter->CreateInt64ObservableGauge(kMetricK8sPodMemoryUsage, descrMetricK8sPodMemoryUsage, + unitMetricK8sPodMemoryUsage); +} + +static inline nostd::shared_ptr +CreateAsyncDoubleMetricK8sPodMemoryUsage(metrics::Meter *meter) +{ + return meter->CreateDoubleObservableGauge(kMetricK8sPodMemoryUsage, descrMetricK8sPodMemoryUsage, + unitMetricK8sPodMemoryUsage); +} + +} // namespace k8s +} // namespace semconv +OPENTELEMETRY_END_NAMESPACE diff --git a/api/include/opentelemetry/semconv/incubating/log_attributes.h b/api/include/opentelemetry/semconv/incubating/log_attributes.h index 6bda8a4d31..f9224f1bba 100644 --- a/api/include/opentelemetry/semconv/incubating/log_attributes.h +++ b/api/include/opentelemetry/semconv/incubating/log_attributes.h @@ -45,7 +45,7 @@ static constexpr const char *kLogFilePathResolved = "log.file.path_resolved"; static constexpr const char *kLogIostream = "log.iostream"; /** - * The complete orignal Log Record. + * The complete original Log Record. *

* This value MAY be added when processing a Log Record which was originally transmitted as a string * or equivalent data type AND the Body field of the Log Record does not contain the same value. diff --git a/api/include/opentelemetry/semconv/incubating/messaging_attributes.h b/api/include/opentelemetry/semconv/incubating/messaging_attributes.h index c5f07fe241..4cf20365ab 100644 --- a/api/include/opentelemetry/semconv/incubating/messaging_attributes.h +++ b/api/include/opentelemetry/semconv/incubating/messaging_attributes.h @@ -328,10 +328,10 @@ static constexpr const char *kMessagingRocketmqMessageType = "messaging.rocketmq static constexpr const char *kMessagingRocketmqNamespace = "messaging.rocketmq.namespace"; /** - * Deprecated, use @code messaging.servicebus.destination.subscription_name @endcode instead. + * Deprecated, use @code messaging.destination.subscription.name @endcode instead. *

* @deprecated - * Replaced by @code messaging.servicebus.destination.subscription_name @endcode. + * Replaced by @code messaging.destination.subscription.name @endcode. */ OPENTELEMETRY_DEPRECATED static constexpr const char *kMessagingServicebusDestinationSubscriptionName = @@ -369,17 +369,17 @@ static constexpr const char *kMessagingSystem = "messaging.system"; namespace MessagingOperationTypeValues { /** - * One or more messages are provided for publishing to an intermediary. If a single message is - * published, the context of the "Publish" span can be used as the creation context and no "Create" - * span needs to be created. + * A message is created. "Create" spans always refer to a single message and are used to provide a + * unique creation context for messages in batch sending scenarios. */ -static constexpr const char *kPublish = "publish"; +static constexpr const char *kCreate = "create"; /** - * A message is created. "Create" spans always refer to a single message and are used to provide a - * unique creation context for messages in batch publishing scenarios. + * One or more messages are provided for sending to an intermediary. If a single message is sent, + * the context of the "Send" span can be used as the creation context and no "Create" span needs to + * be created. */ -static constexpr const char *kCreate = "create"; +static constexpr const char *kSend = "send"; /** * One or more messages are requested by a consumer. This operation refers to pull-based scenarios, @@ -406,6 +406,15 @@ static constexpr const char *kSettle = "settle"; OPENTELEMETRY_DEPRECATED static constexpr const char *kDeliver = "deliver"; +/** + * Deprecated. Use @code send @endcode instead. + *

+ * @deprecated + * Replaced by @code send @endcode. + */ +OPENTELEMETRY_DEPRECATED +static constexpr const char *kPublish = "publish"; + } // namespace MessagingOperationTypeValues namespace MessagingRocketmqConsumptionModelValues diff --git a/api/include/opentelemetry/semconv/incubating/messaging_metrics.h b/api/include/opentelemetry/semconv/incubating/messaging_metrics.h index 5da042da2d..9c29fb86b3 100644 --- a/api/include/opentelemetry/semconv/incubating/messaging_metrics.h +++ b/api/include/opentelemetry/semconv/incubating/messaging_metrics.h @@ -96,18 +96,23 @@ CreateSyncDoubleMetricMessagingClientOperationDuration(metrics::Meter *meter) } /** - * Number of messages producer attempted to publish to the broker. + * Deprecated. Use @code messaging.client.sent.messages @endcode instead. *

- * This metric MUST NOT count messages that were created haven't yet been attempted to be published. + * @deprecated + * Replaced by @code messaging.client.sent.messages @endcode. *

* counter */ +OPENTELEMETRY_DEPRECATED static constexpr const char *kMetricMessagingClientPublishedMessages = "metric.messaging.client.published.messages"; +OPENTELEMETRY_DEPRECATED static constexpr const char *descrMetricMessagingClientPublishedMessages = - "Number of messages producer attempted to publish to the broker."; + "Deprecated. Use `messaging.client.sent.messages` instead."; +OPENTELEMETRY_DEPRECATED static constexpr const char *unitMetricMessagingClientPublishedMessages = "{message}"; +OPENTELEMETRY_DEPRECATED static inline nostd::unique_ptr> CreateSyncInt64MetricMessagingClientPublishedMessages(metrics::Meter *meter) { @@ -116,6 +121,7 @@ CreateSyncInt64MetricMessagingClientPublishedMessages(metrics::Meter *meter) unitMetricMessagingClientPublishedMessages); } +OPENTELEMETRY_DEPRECATED static inline nostd::unique_ptr> CreateSyncDoubleMetricMessagingClientPublishedMessages(metrics::Meter *meter) { @@ -124,6 +130,7 @@ CreateSyncDoubleMetricMessagingClientPublishedMessages(metrics::Meter *meter) unitMetricMessagingClientPublishedMessages); } +OPENTELEMETRY_DEPRECATED static inline nostd::shared_ptr CreateAsyncInt64MetricMessagingClientPublishedMessages(metrics::Meter *meter) { @@ -132,6 +139,7 @@ CreateAsyncInt64MetricMessagingClientPublishedMessages(metrics::Meter *meter) unitMetricMessagingClientPublishedMessages); } +OPENTELEMETRY_DEPRECATED static inline nostd::shared_ptr CreateAsyncDoubleMetricMessagingClientPublishedMessages(metrics::Meter *meter) { @@ -140,6 +148,51 @@ CreateAsyncDoubleMetricMessagingClientPublishedMessages(metrics::Meter *meter) unitMetricMessagingClientPublishedMessages); } +/** + * Number of messages producer attempted to send to the broker. + *

+ * This metric MUST NOT count messages that were created but haven't yet been sent. + *

+ * counter + */ +static constexpr const char *kMetricMessagingClientSentMessages = + "metric.messaging.client.sent.messages"; +static constexpr const char *descrMetricMessagingClientSentMessages = + "Number of messages producer attempted to send to the broker."; +static constexpr const char *unitMetricMessagingClientSentMessages = "{message}"; + +static inline nostd::unique_ptr> +CreateSyncInt64MetricMessagingClientSentMessages(metrics::Meter *meter) +{ + return meter->CreateUInt64Counter(kMetricMessagingClientSentMessages, + descrMetricMessagingClientSentMessages, + unitMetricMessagingClientSentMessages); +} + +static inline nostd::unique_ptr> +CreateSyncDoubleMetricMessagingClientSentMessages(metrics::Meter *meter) +{ + return meter->CreateDoubleCounter(kMetricMessagingClientSentMessages, + descrMetricMessagingClientSentMessages, + unitMetricMessagingClientSentMessages); +} + +static inline nostd::shared_ptr +CreateAsyncInt64MetricMessagingClientSentMessages(metrics::Meter *meter) +{ + return meter->CreateInt64ObservableCounter(kMetricMessagingClientSentMessages, + descrMetricMessagingClientSentMessages, + unitMetricMessagingClientSentMessages); +} + +static inline nostd::shared_ptr +CreateAsyncDoubleMetricMessagingClientSentMessages(metrics::Meter *meter) +{ + return meter->CreateDoubleObservableCounter(kMetricMessagingClientSentMessages, + descrMetricMessagingClientSentMessages, + unitMetricMessagingClientSentMessages); +} + /** * Duration of processing operation. *

diff --git a/api/include/opentelemetry/semconv/incubating/otel_attributes.h b/api/include/opentelemetry/semconv/incubating/otel_attributes.h index 241e07d1aa..e3a3251005 100644 --- a/api/include/opentelemetry/semconv/incubating/otel_attributes.h +++ b/api/include/opentelemetry/semconv/incubating/otel_attributes.h @@ -20,15 +20,19 @@ namespace otel { /** + * Deprecated. Use the @code otel.scope.name @endcode attribute + *

* @deprecated - * use the @code otel.scope.name @endcode attribute. + * Use the @code otel.scope.name @endcode attribute. */ OPENTELEMETRY_DEPRECATED static constexpr const char *kOtelLibraryName = "otel.library.name"; /** + * Deprecated. Use the @code otel.scope.version @endcode attribute. + *

* @deprecated - * use the @code otel.scope.version @endcode attribute. + * Use the @code otel.scope.version @endcode attribute. */ OPENTELEMETRY_DEPRECATED static constexpr const char *kOtelLibraryVersion = "otel.library.version"; diff --git a/api/include/opentelemetry/semconv/incubating/process_attributes.h b/api/include/opentelemetry/semconv/incubating/process_attributes.h index 392ef869d1..de81b12c38 100644 --- a/api/include/opentelemetry/semconv/incubating/process_attributes.h +++ b/api/include/opentelemetry/semconv/incubating/process_attributes.h @@ -19,6 +19,14 @@ namespace semconv namespace process { +/** + * Length of the process.command_args array + *

+ * This field can be useful for querying or performing bucket analysis on how many arguments were + * provided to start a process. More arguments may be an indication of suspicious activity. + */ +static constexpr const char *kProcessArgsCount = "process.args_count"; + /** * The command used to launch the process (i.e. the command name). On Linux based systems, can be * set to the zeroth string in @code proc/[pid]/cmdline @endcode. On Windows, can be set to the @@ -60,6 +68,23 @@ static constexpr const char *kProcessCpuState = "process.cpu.state"; */ static constexpr const char *kProcessCreationTime = "process.creation.time"; +/** + * The GNU build ID as found in the @code .note.gnu.build-id @endcode ELF section (hex string). + */ +static constexpr const char *kProcessExecutableBuildIdGnu = "process.executable.build_id.gnu"; + +/** + * The Go build ID as retrieved by @code go tool buildid @endcode. + */ +static constexpr const char *kProcessExecutableBuildIdGo = "process.executable.build_id.go"; + +/** + * Profiling specific build ID for executables. See the OTel specification for Profiles for more + * information. + */ +static constexpr const char *kProcessExecutableBuildIdProfiling = + "process.executable.build_id.profiling"; + /** * The name of the process executable. On Linux based systems, can be set to the @code Name @endcode * in @code proc/[pid]/status @endcode. On Windows, can be set to the base name of @code @@ -156,6 +181,14 @@ static constexpr const char *kProcessSavedUserName = "process.saved_user.name"; */ static constexpr const char *kProcessSessionLeaderPid = "process.session_leader.pid"; +/** + * Process title (proctitle) + *

+ * In many Unix-like systems, process title (proctitle), is the string that represents the name or + * command line of a running process, displayed by system monitoring tools like ps, top, and htop. + */ +static constexpr const char *kProcessTitle = "process.title"; + /** * The effective user ID (EUID) of the process. */ @@ -174,6 +207,11 @@ static constexpr const char *kProcessUserName = "process.user.name"; */ static constexpr const char *kProcessVpid = "process.vpid"; +/** + * The working directory of the process. + */ +static constexpr const char *kProcessWorkingDirectory = "process.working_directory"; + namespace ProcessContextSwitchTypeValues { /** diff --git a/api/include/opentelemetry/semconv/incubating/process_metrics.h b/api/include/opentelemetry/semconv/incubating/process_metrics.h index 95a1853ccb..5f851a2d41 100644 --- a/api/include/opentelemetry/semconv/incubating/process_metrics.h +++ b/api/include/opentelemetry/semconv/incubating/process_metrics.h @@ -411,6 +411,44 @@ CreateAsyncDoubleMetricProcessThreadCount(metrics::Meter *meter) kMetricProcessThreadCount, descrMetricProcessThreadCount, unitMetricProcessThreadCount); } +/** + * The time the process has been running. + *

+ * Instrumentations SHOULD use counter with type @code double @endcode and measure uptime with at + * least millisecond precision

counter + */ +static constexpr const char *kMetricProcessUptime = "metric.process.uptime"; +static constexpr const char *descrMetricProcessUptime = "The time the process has been running."; +static constexpr const char *unitMetricProcessUptime = "s"; + +static inline nostd::unique_ptr> CreateSyncInt64MetricProcessUptime( + metrics::Meter *meter) +{ + return meter->CreateUInt64Counter(kMetricProcessUptime, descrMetricProcessUptime, + unitMetricProcessUptime); +} + +static inline nostd::unique_ptr> CreateSyncDoubleMetricProcessUptime( + metrics::Meter *meter) +{ + return meter->CreateDoubleCounter(kMetricProcessUptime, descrMetricProcessUptime, + unitMetricProcessUptime); +} + +static inline nostd::shared_ptr CreateAsyncInt64MetricProcessUptime( + metrics::Meter *meter) +{ + return meter->CreateInt64ObservableCounter(kMetricProcessUptime, descrMetricProcessUptime, + unitMetricProcessUptime); +} + +static inline nostd::shared_ptr CreateAsyncDoubleMetricProcessUptime( + metrics::Meter *meter) +{ + return meter->CreateDoubleObservableCounter(kMetricProcessUptime, descrMetricProcessUptime, + unitMetricProcessUptime); +} + } // namespace process } // namespace semconv OPENTELEMETRY_END_NAMESPACE diff --git a/api/include/opentelemetry/semconv/incubating/profile_attributes.h b/api/include/opentelemetry/semconv/incubating/profile_attributes.h new file mode 100644 index 0000000000..076177904f --- /dev/null +++ b/api/include/opentelemetry/semconv/incubating/profile_attributes.h @@ -0,0 +1,81 @@ +/* + * 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 profile +{ + +/** + * Describes the interpreter or compiler of a single frame. + */ +static constexpr const char *kProfileFrameType = "profile.frame.type"; + +namespace ProfileFrameTypeValues +{ +/** + * .NET + */ +static constexpr const char *kDotnet = "dotnet"; + +/** + * JVM + */ +static constexpr const char *kJvm = "jvm"; + +/** + * Kernel + */ +static constexpr const char *kKernel = "kernel"; + +/** + * C, C++, Go, Rust + */ +static constexpr const char *kNative = "native"; + +/** + * Perl + */ +static constexpr const char *kPerl = "perl"; + +/** + * PHP + */ +static constexpr const char *kPhp = "php"; + +/** + * Python + */ +static constexpr const char *kCpython = "cpython"; + +/** + * Ruby + */ +static constexpr const char *kRuby = "ruby"; + +/** + * V8JS + */ +static constexpr const char *kV8js = "v8js"; + +} // namespace ProfileFrameTypeValues + +} // namespace profile +} // namespace semconv +OPENTELEMETRY_END_NAMESPACE diff --git a/api/include/opentelemetry/semconv/incubating/system_metrics.h b/api/include/opentelemetry/semconv/incubating/system_metrics.h index b896015372..a23a8ae4d0 100644 --- a/api/include/opentelemetry/semconv/incubating/system_metrics.h +++ b/api/include/opentelemetry/semconv/incubating/system_metrics.h @@ -304,6 +304,43 @@ CreateAsyncDoubleMetricSystemDiskIoTime(metrics::Meter *meter) unitMetricSystemDiskIoTime); } +/** + * The total storage capacity of the disk + *

+ * updowncounter + */ +static constexpr const char *kMetricSystemDiskLimit = "metric.system.disk.limit"; +static constexpr const char *descrMetricSystemDiskLimit = "The total storage capacity of the disk"; +static constexpr const char *unitMetricSystemDiskLimit = "By"; + +static inline nostd::unique_ptr> +CreateSyncInt64MetricSystemDiskLimit(metrics::Meter *meter) +{ + return meter->CreateInt64UpDownCounter(kMetricSystemDiskLimit, descrMetricSystemDiskLimit, + unitMetricSystemDiskLimit); +} + +static inline nostd::unique_ptr> +CreateSyncDoubleMetricSystemDiskLimit(metrics::Meter *meter) +{ + return meter->CreateDoubleUpDownCounter(kMetricSystemDiskLimit, descrMetricSystemDiskLimit, + unitMetricSystemDiskLimit); +} + +static inline nostd::shared_ptr +CreateAsyncInt64MetricSystemDiskLimit(metrics::Meter *meter) +{ + return meter->CreateInt64ObservableUpDownCounter( + kMetricSystemDiskLimit, descrMetricSystemDiskLimit, unitMetricSystemDiskLimit); +} + +static inline nostd::shared_ptr +CreateAsyncDoubleMetricSystemDiskLimit(metrics::Meter *meter) +{ + return meter->CreateDoubleObservableUpDownCounter( + kMetricSystemDiskLimit, descrMetricSystemDiskLimit, unitMetricSystemDiskLimit); +} + /** * counter */ @@ -423,11 +460,58 @@ CreateAsyncDoubleMetricSystemDiskOperations(metrics::Meter *meter) } /** + * The total storage capacity of the filesystem + *

* updowncounter */ -static constexpr const char *kMetricSystemFilesystemUsage = "metric.system.filesystem.usage"; -static constexpr const char *descrMetricSystemFilesystemUsage = ""; -static constexpr const char *unitMetricSystemFilesystemUsage = "By"; +static constexpr const char *kMetricSystemFilesystemLimit = "metric.system.filesystem.limit"; +static constexpr const char *descrMetricSystemFilesystemLimit = + "The total storage capacity of the filesystem"; +static constexpr const char *unitMetricSystemFilesystemLimit = "By"; + +static inline nostd::unique_ptr> +CreateSyncInt64MetricSystemFilesystemLimit(metrics::Meter *meter) +{ + return meter->CreateInt64UpDownCounter(kMetricSystemFilesystemLimit, + descrMetricSystemFilesystemLimit, + unitMetricSystemFilesystemLimit); +} + +static inline nostd::unique_ptr> +CreateSyncDoubleMetricSystemFilesystemLimit(metrics::Meter *meter) +{ + return meter->CreateDoubleUpDownCounter(kMetricSystemFilesystemLimit, + descrMetricSystemFilesystemLimit, + unitMetricSystemFilesystemLimit); +} + +static inline nostd::shared_ptr +CreateAsyncInt64MetricSystemFilesystemLimit(metrics::Meter *meter) +{ + return meter->CreateInt64ObservableUpDownCounter(kMetricSystemFilesystemLimit, + descrMetricSystemFilesystemLimit, + unitMetricSystemFilesystemLimit); +} + +static inline nostd::shared_ptr +CreateAsyncDoubleMetricSystemFilesystemLimit(metrics::Meter *meter) +{ + return meter->CreateDoubleObservableUpDownCounter(kMetricSystemFilesystemLimit, + descrMetricSystemFilesystemLimit, + unitMetricSystemFilesystemLimit); +} + +/** + * Reports a filesystem's space usage across different states. + *

+ * The sum of all @code system.filesystem.usage @endcode values over the different @code + * system.filesystem.state @endcode attributes SHOULD equal the total storage capacity of the + * filesystem, that is @code system.filesystem.limit @endcode.

updowncounter + */ +static constexpr const char *kMetricSystemFilesystemUsage = "metric.system.filesystem.usage"; +static constexpr const char *descrMetricSystemFilesystemUsage = + "Reports a filesystem's space usage across different states."; +static constexpr const char *unitMetricSystemFilesystemUsage = "By"; static inline nostd::unique_ptr> CreateSyncInt64MetricSystemFilesystemUsage(metrics::Meter *meter) diff --git a/api/include/opentelemetry/semconv/incubating/tls_attributes.h b/api/include/opentelemetry/semconv/incubating/tls_attributes.h index 5e14b6d3f0..89449453ec 100644 --- a/api/include/opentelemetry/semconv/incubating/tls_attributes.h +++ b/api/include/opentelemetry/semconv/incubating/tls_attributes.h @@ -89,7 +89,7 @@ static constexpr const char *kTlsClientNotBefore = "tls.client.not_before"; * Deprecated, use @code server.address @endcode instead. *

* @deprecated - * Replaced by `server.address. + * Replaced by @code server.address @endcode. */ OPENTELEMETRY_DEPRECATED static constexpr const char *kTlsClientServerName = "tls.client.server_name"; diff --git a/api/include/opentelemetry/semconv/schema_url.h b/api/include/opentelemetry/semconv/schema_url.h index 62d040e40b..a25e28b5ea 100644 --- a/api/include/opentelemetry/semconv/schema_url.h +++ b/api/include/opentelemetry/semconv/schema_url.h @@ -19,6 +19,6 @@ namespace semconv /** * The URL of the OpenTelemetry schema for these keys and values. */ -static constexpr const char *kSchemaUrl = "https://opentelemetry.io/schemas/1.27.0"; +static constexpr const char *kSchemaUrl = "https://opentelemetry.io/schemas/1.28.0"; } // namespace semconv OPENTELEMETRY_END_NAMESPACE diff --git a/buildscripts/semantic-convention/generate.sh b/buildscripts/semantic-convention/generate.sh index 79becfefbd..b6fecb4459 100755 --- a/buildscripts/semantic-convention/generate.sh +++ b/buildscripts/semantic-convention/generate.sh @@ -16,7 +16,7 @@ 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.27.0 +SEMCONV_VERSION=1.28.0 # repository: https://github.com/open-telemetry/weaver WEAVER_VERSION=0.10.0