From 355f2bea63d6a3258578f635b1ee7d992c29b31b Mon Sep 17 00:00:00 2001 From: Brett McBride Date: Tue, 28 Jan 2025 15:48:28 +1100 Subject: [PATCH 1/2] generate semconv 1.28 --- script/semantic-conventions/semconv.sh | 4 +- src/SemConv/ResourceAttributeValues.php | 23 +- src/SemConv/ResourceAttributes.php | 12 +- src/SemConv/TraceAttributeValues.php | 976 +++++++++++++++++++++++- src/SemConv/TraceAttributes.php | 672 +++++++++++++--- 5 files changed, 1567 insertions(+), 120 deletions(-) diff --git a/script/semantic-conventions/semconv.sh b/script/semantic-conventions/semconv.sh index 4ebfd31b5..ee43989a4 100755 --- a/script/semantic-conventions/semconv.sh +++ b/script/semantic-conventions/semconv.sh @@ -17,10 +17,10 @@ SPEC_DIR="${ROOT_DIR}/var/semantic-conventions" CODE_DIR="${ROOT_DIR}/src/SemConv" # freeze the spec & generator tools versions to make SemanticAttributes generation reproducible -SEMCONV_VERSION=1.27.0 +SEMCONV_VERSION=1.28.0 SPEC_VERSION=v$SEMCONV_VERSION SCHEMA_URL=https://opentelemetry.io/schemas/$SEMCONV_VERSION -OTEL_WEAVER_IMG_VERSION=v0.10.0 +OTEL_WEAVER_IMG_VERSION=v0.12.0 rm -rf "${SPEC_DIR}" mkdir "${SPEC_DIR}" diff --git a/src/SemConv/ResourceAttributeValues.php b/src/SemConv/ResourceAttributeValues.php index 54386b963..e8c741fef 100644 --- a/src/SemConv/ResourceAttributeValues.php +++ b/src/SemConv/ResourceAttributeValues.php @@ -11,7 +11,7 @@ interface ResourceAttributeValues /** * The URL of the OpenTelemetry schema for these values. */ - public const SCHEMA_URL = 'https://opentelemetry.io/schemas/1.27.0'; + public const SCHEMA_URL = 'https://opentelemetry.io/schemas/1.28.0'; /** * ec2 @@ -202,6 +202,20 @@ interface ResourceAttributeValues */ public const CLOUD_PLATFORM_IBM_CLOUD_OPENSHIFT = 'ibm_cloud_openshift'; + /** + * Compute on Oracle Cloud Infrastructure (OCI) + * + * @see ResourceAttributes::CLOUD_PLATFORM + */ + public const CLOUD_PLATFORM_ORACLE_CLOUD_COMPUTE = 'oracle_cloud_compute'; + + /** + * Kubernetes Engine (OKE) on Oracle Cloud Infrastructure (OCI) + * + * @see ResourceAttributes::CLOUD_PLATFORM + */ + public const CLOUD_PLATFORM_ORACLE_CLOUD_OKE = 'oracle_cloud_oke'; + /** * Tencent Cloud Cloud Virtual Machine (CVM) * @@ -265,6 +279,13 @@ interface ResourceAttributeValues */ public const CLOUD_PROVIDER_IBM_CLOUD = 'ibm_cloud'; + /** + * Oracle Cloud Infrastructure (OCI) + * + * @see ResourceAttributes::CLOUD_PROVIDER + */ + public const CLOUD_PROVIDER_ORACLE_CLOUD = 'oracle_cloud'; + /** * Tencent Cloud * diff --git a/src/SemConv/ResourceAttributes.php b/src/SemConv/ResourceAttributes.php index 8f6ca4e7c..d7bd37c05 100644 --- a/src/SemConv/ResourceAttributes.php +++ b/src/SemConv/ResourceAttributes.php @@ -11,7 +11,7 @@ interface ResourceAttributes /** * The URL of the OpenTelemetry schema for these keys and values. */ - public const SCHEMA_URL = 'https://opentelemetry.io/schemas/1.27.0'; + public const SCHEMA_URL = 'https://opentelemetry.io/schemas/1.28.0'; /** * Uniquely identifies the framework API revision offered by a version (`os.version`) of the android operating system. More information can be found [here](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels). @@ -388,7 +388,7 @@ interface ResourceAttributes * This is the name of the function as configured/deployed on the FaaS * platform and is usually different from the name of the callback * function (which may be stored in the - * [`code.namespace`/`code.function`](/docs/general/attributes.md#source-code-attributes) + * [`code.namespace`/`code.function.name`](/docs/general/attributes.md#source-code-attributes) * span attributes). * * For some cloud providers, the above definition is ambiguous. The following @@ -778,6 +778,12 @@ interface ResourceAttributes */ public const PROCESS_EXECUTABLE_PATH = 'process.executable.path'; + /** + * The control group associated with the process. + * 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/[PID]/cgroup](https://man7.org/linux/man-pages/man7/cgroups.7.html) file. + */ + public const PROCESS_LINUX_CGROUP = 'process.linux.cgroup'; + /** * The username of the user that owns the process. */ @@ -823,7 +829,7 @@ interface ResourceAttributes * * UUIDs are typically recommended, as only an opaque value for the purposes of identifying a service instance is * needed. Similar to what can be seen in the man page for the - * [`/etc/machine-id`](https://www.freedesktop.org/software/systemd/man/machine-id.html) file, the underlying + * [`/etc/machine-id`](https://www.freedesktop.org/software/systemd/man/latest/machine-id.html) file, the underlying * data, such as pod name and namespace should be treated as confidential, being the user's choice to expose it * or not via another resource attribute. * diff --git a/src/SemConv/TraceAttributeValues.php b/src/SemConv/TraceAttributeValues.php index 2587127d9..ac332edb4 100644 --- a/src/SemConv/TraceAttributeValues.php +++ b/src/SemConv/TraceAttributeValues.php @@ -11,7 +11,7 @@ interface TraceAttributeValues /** * The URL of the OpenTelemetry schema for these values. */ - public const SCHEMA_URL = 'https://opentelemetry.io/schemas/1.27.0'; + public const SCHEMA_URL = 'https://opentelemetry.io/schemas/1.28.0'; /** * Any time before Activity.onResume() or, if the app has no Activity, Context.startService() has been called in the app for the first time. * @@ -117,6 +117,195 @@ interface TraceAttributeValues */ public const AWS_ECS_LAUNCHTYPE_FARGATE = 'fargate'; + /** + * Gateway (HTTP) connection. + * + * @see TraceAttributes::AZURE_COSMOSDB_CONNECTION_MODE + */ + public const AZURE_COSMOSDB_CONNECTION_MODE_GATEWAY = 'gateway'; + + /** + * Direct connection. + * + * @see TraceAttributes::AZURE_COSMOSDB_CONNECTION_MODE + */ + public const AZURE_COSMOSDB_CONNECTION_MODE_DIRECT = 'direct'; + + /** + * strong + * + * @see TraceAttributes::AZURE_COSMOSDB_CONSISTENCY_LEVEL + */ + public const AZURE_COSMOSDB_CONSISTENCY_LEVEL_STRONG = 'Strong'; + + /** + * bounded_staleness + * + * @see TraceAttributes::AZURE_COSMOSDB_CONSISTENCY_LEVEL + */ + public const AZURE_COSMOSDB_CONSISTENCY_LEVEL_BOUNDED_STALENESS = 'BoundedStaleness'; + + /** + * session + * + * @see TraceAttributes::AZURE_COSMOSDB_CONSISTENCY_LEVEL + */ + public const AZURE_COSMOSDB_CONSISTENCY_LEVEL_SESSION = 'Session'; + + /** + * eventual + * + * @see TraceAttributes::AZURE_COSMOSDB_CONSISTENCY_LEVEL + */ + public const AZURE_COSMOSDB_CONSISTENCY_LEVEL_EVENTUAL = 'Eventual'; + + /** + * consistent_prefix + * + * @see TraceAttributes::AZURE_COSMOSDB_CONSISTENCY_LEVEL + */ + public const AZURE_COSMOSDB_CONSISTENCY_LEVEL_CONSISTENT_PREFIX = 'ConsistentPrefix'; + + /** + * all + * + * @see TraceAttributes::CASSANDRA_CONSISTENCY_LEVEL + */ + public const CASSANDRA_CONSISTENCY_LEVEL_ALL = 'all'; + + /** + * each_quorum + * + * @see TraceAttributes::CASSANDRA_CONSISTENCY_LEVEL + */ + public const CASSANDRA_CONSISTENCY_LEVEL_EACH_QUORUM = 'each_quorum'; + + /** + * quorum + * + * @see TraceAttributes::CASSANDRA_CONSISTENCY_LEVEL + */ + public const CASSANDRA_CONSISTENCY_LEVEL_QUORUM = 'quorum'; + + /** + * local_quorum + * + * @see TraceAttributes::CASSANDRA_CONSISTENCY_LEVEL + */ + public const CASSANDRA_CONSISTENCY_LEVEL_LOCAL_QUORUM = 'local_quorum'; + + /** + * one + * + * @see TraceAttributes::CASSANDRA_CONSISTENCY_LEVEL + */ + public const CASSANDRA_CONSISTENCY_LEVEL_ONE = 'one'; + + /** + * two + * + * @see TraceAttributes::CASSANDRA_CONSISTENCY_LEVEL + */ + public const CASSANDRA_CONSISTENCY_LEVEL_TWO = 'two'; + + /** + * three + * + * @see TraceAttributes::CASSANDRA_CONSISTENCY_LEVEL + */ + public const CASSANDRA_CONSISTENCY_LEVEL_THREE = 'three'; + + /** + * local_one + * + * @see TraceAttributes::CASSANDRA_CONSISTENCY_LEVEL + */ + public const CASSANDRA_CONSISTENCY_LEVEL_LOCAL_ONE = 'local_one'; + + /** + * any + * + * @see TraceAttributes::CASSANDRA_CONSISTENCY_LEVEL + */ + public const CASSANDRA_CONSISTENCY_LEVEL_ANY = 'any'; + + /** + * serial + * + * @see TraceAttributes::CASSANDRA_CONSISTENCY_LEVEL + */ + public const CASSANDRA_CONSISTENCY_LEVEL_SERIAL = 'serial'; + + /** + * local_serial + * + * @see TraceAttributes::CASSANDRA_CONSISTENCY_LEVEL + */ + public const CASSANDRA_CONSISTENCY_LEVEL_LOCAL_SERIAL = 'local_serial'; + + /** + * The pipeline run finished successfully. + * + * @see TraceAttributes::CICD_PIPELINE_RESULT + */ + public const CICD_PIPELINE_RESULT_SUCCESS = 'success'; + + /** + * The pipeline run did not finish successfully, eg. due to a compile error or a failing test. Such failures are usually detected by non-zero exit codes of the tools executed in the pipeline run. + * + * @see TraceAttributes::CICD_PIPELINE_RESULT + */ + public const CICD_PIPELINE_RESULT_FAILURE = 'failure'; + + /** + * The pipeline run failed due to an error in the CICD system, eg. due to the worker being killed. + * + * @see TraceAttributes::CICD_PIPELINE_RESULT + */ + public const CICD_PIPELINE_RESULT_ERROR = 'error'; + + /** + * A timeout caused the pipeline run to be interrupted. + * + * @see TraceAttributes::CICD_PIPELINE_RESULT + */ + public const CICD_PIPELINE_RESULT_TIMEOUT = 'timeout'; + + /** + * The pipeline run was cancelled, eg. by a user manually cancelling the pipeline run. + * + * @see TraceAttributes::CICD_PIPELINE_RESULT + */ + public const CICD_PIPELINE_RESULT_CANCELLATION = 'cancellation'; + + /** + * The pipeline run was skipped, eg. due to a precondition not being met. + * + * @see TraceAttributes::CICD_PIPELINE_RESULT + */ + public const CICD_PIPELINE_RESULT_SKIP = 'skip'; + + /** + * The run pending state spans from the event triggering the pipeline run until the execution of the run starts (eg. time spent in a queue, provisioning agents, creating run resources). + * + * @see TraceAttributes::CICD_PIPELINE_RUN_STATE + */ + public const CICD_PIPELINE_RUN_STATE_PENDING = 'pending'; + + /** + * The executing state spans the execution of any run tasks (eg. build, test). + * + * @see TraceAttributes::CICD_PIPELINE_RUN_STATE + */ + public const CICD_PIPELINE_RUN_STATE_EXECUTING = 'executing'; + + /** + * The finalizing state spans from when the run has finished executing (eg. cleanup of run resources). + * + * @see TraceAttributes::CICD_PIPELINE_RUN_STATE + */ + public const CICD_PIPELINE_RUN_STATE_FINALIZING = 'finalizing'; + /** * build * @@ -138,6 +327,27 @@ interface TraceAttributeValues */ public const CICD_PIPELINE_TASK_TYPE_DEPLOY = 'deploy'; + /** + * The worker is not performing work for the CICD system. It is available to the CICD system to perform work on (online / idle). + * + * @see TraceAttributes::CICD_WORKER_STATE + */ + public const CICD_WORKER_STATE_AVAILABLE = 'available'; + + /** + * The worker is performing work for the CICD system. + * + * @see TraceAttributes::CICD_WORKER_STATE + */ + public const CICD_WORKER_STATE_BUSY = 'busy'; + + /** + * The worker is not available to the CICD system (disconnected / down). + * + * @see TraceAttributes::CICD_WORKER_STATE + */ + public const CICD_WORKER_STATE_OFFLINE = 'offline'; + /** * Alibaba Cloud Elastic Compute Service * @@ -313,6 +523,20 @@ interface TraceAttributeValues */ public const CLOUD_PLATFORM_IBM_CLOUD_OPENSHIFT = 'ibm_cloud_openshift'; + /** + * Compute on Oracle Cloud Infrastructure (OCI) + * + * @see TraceAttributes::CLOUD_PLATFORM + */ + public const CLOUD_PLATFORM_ORACLE_CLOUD_COMPUTE = 'oracle_cloud_compute'; + + /** + * Kubernetes Engine (OKE) on Oracle Cloud Infrastructure (OCI) + * + * @see TraceAttributes::CLOUD_PLATFORM + */ + public const CLOUD_PLATFORM_ORACLE_CLOUD_OKE = 'oracle_cloud_oke'; + /** * Tencent Cloud Cloud Virtual Machine (CVM) * @@ -376,6 +600,13 @@ interface TraceAttributeValues */ public const CLOUD_PROVIDER_IBM_CLOUD = 'ibm_cloud'; + /** + * Oracle Cloud Infrastructure (OCI) + * + * @see TraceAttributes::CLOUD_PROVIDER + */ + public const CLOUD_PROVIDER_ORACLE_CLOUD = 'oracle_cloud'; + /** * Tencent Cloud * @@ -566,7 +797,7 @@ interface TraceAttributeValues public const DB_CLIENT_CONNECTIONS_STATE_USED = 'used'; /** - * Gateway (HTTP) connections mode + * Gateway (HTTP) connection. * * @see TraceAttributes::DB_COSMOSDB_CONNECTION_MODE */ @@ -579,6 +810,41 @@ interface TraceAttributeValues */ public const DB_COSMOSDB_CONNECTION_MODE_DIRECT = 'direct'; + /** + * strong + * + * @see TraceAttributes::DB_COSMOSDB_CONSISTENCY_LEVEL + */ + public const DB_COSMOSDB_CONSISTENCY_LEVEL_STRONG = 'Strong'; + + /** + * bounded_staleness + * + * @see TraceAttributes::DB_COSMOSDB_CONSISTENCY_LEVEL + */ + public const DB_COSMOSDB_CONSISTENCY_LEVEL_BOUNDED_STALENESS = 'BoundedStaleness'; + + /** + * session + * + * @see TraceAttributes::DB_COSMOSDB_CONSISTENCY_LEVEL + */ + public const DB_COSMOSDB_CONSISTENCY_LEVEL_SESSION = 'Session'; + + /** + * eventual + * + * @see TraceAttributes::DB_COSMOSDB_CONSISTENCY_LEVEL + */ + public const DB_COSMOSDB_CONSISTENCY_LEVEL_EVENTUAL = 'Eventual'; + + /** + * consistent_prefix + * + * @see TraceAttributes::DB_COSMOSDB_CONSISTENCY_LEVEL + */ + public const DB_COSMOSDB_CONSISTENCY_LEVEL_CONSISTENT_PREFIX = 'ConsistentPrefix'; + /** * batch * @@ -1042,30 +1308,317 @@ interface TraceAttributeValues /** * Sybase * - * @see TraceAttributes::DB_SYSTEM + * @see TraceAttributes::DB_SYSTEM + */ + public const DB_SYSTEM_SYBASE = 'sybase'; + + /** + * Teradata + * + * @see TraceAttributes::DB_SYSTEM + */ + public const DB_SYSTEM_TERADATA = 'teradata'; + + /** + * Trino + * + * @see TraceAttributes::DB_SYSTEM + */ + public const DB_SYSTEM_TRINO = 'trino'; + + /** + * Vertica + * + * @see TraceAttributes::DB_SYSTEM + */ + public const DB_SYSTEM_VERTICA = 'vertica'; + + /** + * Some other SQL database. Fallback only. + * + * @see TraceAttributes::DB_SYSTEM_NAME + */ + public const DB_SYSTEM_NAME_OTHER_SQL = 'other_sql'; + + /** + * [Adabas (Adaptable Database System)](https://documentation.softwareag.com/?pf=adabas) + * + * @see TraceAttributes::DB_SYSTEM_NAME + */ + public const DB_SYSTEM_NAME_SOFTWAREAG_ADABAS = 'softwareag.adabas'; + + /** + * [Actian Ingres](https://www.actian.com/databases/ingres/) + * + * @see TraceAttributes::DB_SYSTEM_NAME + */ + public const DB_SYSTEM_NAME_ACTIAN_INGRES = 'actian.ingres'; + + /** + * [Amazon DynamoDB](https://aws.amazon.com/pm/dynamodb/) + * + * @see TraceAttributes::DB_SYSTEM_NAME + */ + public const DB_SYSTEM_NAME_AWS_DYNAMODB = 'aws.dynamodb'; + + /** + * [Amazon Redshift](https://aws.amazon.com/redshift/) + * + * @see TraceAttributes::DB_SYSTEM_NAME + */ + public const DB_SYSTEM_NAME_AWS_REDSHIFT = 'aws.redshift'; + + /** + * [Azure Cosmos DB](https://learn.microsoft.com/azure/cosmos-db) + * + * @see TraceAttributes::DB_SYSTEM_NAME + */ + public const DB_SYSTEM_NAME_AZURE_COSMOSDB = 'azure.cosmosdb'; + + /** + * [InterSystems Caché](https://www.intersystems.com/products/cache/) + * + * @see TraceAttributes::DB_SYSTEM_NAME + */ + public const DB_SYSTEM_NAME_INTERSYSTEMS_CACHE = 'intersystems.cache'; + + /** + * [Apache Cassandra](https://cassandra.apache.org/) + * + * @see TraceAttributes::DB_SYSTEM_NAME + */ + public const DB_SYSTEM_NAME_CASSANDRA = 'cassandra'; + + /** + * [ClickHouse](https://clickhouse.com/) + * + * @see TraceAttributes::DB_SYSTEM_NAME + */ + public const DB_SYSTEM_NAME_CLICKHOUSE = 'clickhouse'; + + /** + * [CockroachDB](https://www.cockroachlabs.com/) + * + * @see TraceAttributes::DB_SYSTEM_NAME + */ + public const DB_SYSTEM_NAME_COCKROACHDB = 'cockroachdb'; + + /** + * [Couchbase](https://www.couchbase.com/) + * + * @see TraceAttributes::DB_SYSTEM_NAME + */ + public const DB_SYSTEM_NAME_COUCHBASE = 'couchbase'; + + /** + * [Apache CouchDB](https://couchdb.apache.org/) + * + * @see TraceAttributes::DB_SYSTEM_NAME + */ + public const DB_SYSTEM_NAME_COUCHDB = 'couchdb'; + + /** + * [Apache Derby](https://db.apache.org/derby/) + * + * @see TraceAttributes::DB_SYSTEM_NAME + */ + public const DB_SYSTEM_NAME_DERBY = 'derby'; + + /** + * [Elasticsearch](https://www.elastic.co/elasticsearch) + * + * @see TraceAttributes::DB_SYSTEM_NAME + */ + public const DB_SYSTEM_NAME_ELASTICSEARCH = 'elasticsearch'; + + /** + * [Firebird](https://www.firebirdsql.org/) + * + * @see TraceAttributes::DB_SYSTEM_NAME + */ + public const DB_SYSTEM_NAME_FIREBIRDSQL = 'firebirdsql'; + + /** + * [Google Cloud Spanner](https://cloud.google.com/spanner) + * + * @see TraceAttributes::DB_SYSTEM_NAME + */ + public const DB_SYSTEM_NAME_GCP_SPANNER = 'gcp.spanner'; + + /** + * [Apache Geode](https://geode.apache.org/) + * + * @see TraceAttributes::DB_SYSTEM_NAME + */ + public const DB_SYSTEM_NAME_GEODE = 'geode'; + + /** + * [H2 Database](https://h2database.com/) + * + * @see TraceAttributes::DB_SYSTEM_NAME + */ + public const DB_SYSTEM_NAME_H2DATABASE = 'h2database'; + + /** + * [Apache HBase](https://hbase.apache.org/) + * + * @see TraceAttributes::DB_SYSTEM_NAME + */ + public const DB_SYSTEM_NAME_HBASE = 'hbase'; + + /** + * [Apache Hive](https://hive.apache.org/) + * + * @see TraceAttributes::DB_SYSTEM_NAME + */ + public const DB_SYSTEM_NAME_HIVE = 'hive'; + + /** + * [HyperSQL Database](https://hsqldb.org/) + * + * @see TraceAttributes::DB_SYSTEM_NAME + */ + public const DB_SYSTEM_NAME_HSQLDB = 'hsqldb'; + + /** + * [IBM Db2](https://www.ibm.com/db2) + * + * @see TraceAttributes::DB_SYSTEM_NAME + */ + public const DB_SYSTEM_NAME_IBM_DB2 = 'ibm.db2'; + + /** + * [IBM Informix](https://www.ibm.com/products/informix) + * + * @see TraceAttributes::DB_SYSTEM_NAME + */ + public const DB_SYSTEM_NAME_IBM_INFORMIX = 'ibm.informix'; + + /** + * [IBM Netezza](https://www.ibm.com/products/netezza) + * + * @see TraceAttributes::DB_SYSTEM_NAME + */ + public const DB_SYSTEM_NAME_IBM_NETEZZA = 'ibm.netezza'; + + /** + * [InfluxDB](https://www.influxdata.com/) + * + * @see TraceAttributes::DB_SYSTEM_NAME + */ + public const DB_SYSTEM_NAME_INFLUXDB = 'influxdb'; + + /** + * [Instant](https://www.instantdb.com/) + * + * @see TraceAttributes::DB_SYSTEM_NAME + */ + public const DB_SYSTEM_NAME_INSTANTDB = 'instantdb'; + + /** + * [MariaDB](https://mariadb.org/) + * + * @see TraceAttributes::DB_SYSTEM_NAME + */ + public const DB_SYSTEM_NAME_MARIADB = 'mariadb'; + + /** + * [Memcached](https://memcached.org/) + * + * @see TraceAttributes::DB_SYSTEM_NAME + */ + public const DB_SYSTEM_NAME_MEMCACHED = 'memcached'; + + /** + * [MongoDB](https://www.mongodb.com/) + * + * @see TraceAttributes::DB_SYSTEM_NAME + */ + public const DB_SYSTEM_NAME_MONGODB = 'mongodb'; + + /** + * [Microsoft SQL Server](https://www.microsoft.com/sql-server) + * + * @see TraceAttributes::DB_SYSTEM_NAME + */ + public const DB_SYSTEM_NAME_MICROSOFT_SQL_SERVER = 'microsoft.sql_server'; + + /** + * [MySQL](https://www.mysql.com/) + * + * @see TraceAttributes::DB_SYSTEM_NAME + */ + public const DB_SYSTEM_NAME_MYSQL = 'mysql'; + + /** + * [Neo4j](https://neo4j.com/) + * + * @see TraceAttributes::DB_SYSTEM_NAME + */ + public const DB_SYSTEM_NAME_NEO4J = 'neo4j'; + + /** + * [OpenSearch](https://opensearch.org/) + * + * @see TraceAttributes::DB_SYSTEM_NAME + */ + public const DB_SYSTEM_NAME_OPENSEARCH = 'opensearch'; + + /** + * [Oracle Database](https://www.oracle.com/database/) + * + * @see TraceAttributes::DB_SYSTEM_NAME + */ + public const DB_SYSTEM_NAME_ORACLE_DB = 'oracle.db'; + + /** + * [PostgreSQL](https://www.postgresql.org/) + * + * @see TraceAttributes::DB_SYSTEM_NAME + */ + public const DB_SYSTEM_NAME_POSTGRESQL = 'postgresql'; + + /** + * [Redis](https://redis.io/) + * + * @see TraceAttributes::DB_SYSTEM_NAME + */ + public const DB_SYSTEM_NAME_REDIS = 'redis'; + + /** + * [SAP HANA](https://www.sap.com/products/technology-platform/hana/what-is-sap-hana.html) + * + * @see TraceAttributes::DB_SYSTEM_NAME + */ + public const DB_SYSTEM_NAME_SAP_HANA = 'sap.hana'; + + /** + * [SAP MaxDB](https://maxdb.sap.com/) + * + * @see TraceAttributes::DB_SYSTEM_NAME */ - public const DB_SYSTEM_SYBASE = 'sybase'; + public const DB_SYSTEM_NAME_SAP_MAXDB = 'sap.maxdb'; /** - * Teradata + * [SQLite](https://www.sqlite.org/) * - * @see TraceAttributes::DB_SYSTEM + * @see TraceAttributes::DB_SYSTEM_NAME */ - public const DB_SYSTEM_TERADATA = 'teradata'; + public const DB_SYSTEM_NAME_SQLITE = 'sqlite'; /** - * Trino + * [Teradata](https://www.teradata.com/) * - * @see TraceAttributes::DB_SYSTEM + * @see TraceAttributes::DB_SYSTEM_NAME */ - public const DB_SYSTEM_TRINO = 'trino'; + public const DB_SYSTEM_NAME_TERADATA = 'teradata'; /** - * Vertica + * [Trino](https://trino.io/) * - * @see TraceAttributes::DB_SYSTEM + * @see TraceAttributes::DB_SYSTEM_NAME */ - public const DB_SYSTEM_VERTICA = 'vertica'; + public const DB_SYSTEM_NAME_TRINO = 'trino'; /** * failed @@ -1193,6 +1746,69 @@ interface TraceAttributeValues */ public const FAAS_TRIGGER_OTHER = 'other'; + /** + * The resolved value is static (no dynamic evaluation). + * + * @see TraceAttributes::FEATURE_FLAG_EVALUATION_REASON + */ + public const FEATURE_FLAG_EVALUATION_REASON_STATIC = 'static'; + + /** + * The resolved value fell back to a pre-configured value (no dynamic evaluation occurred or dynamic evaluation yielded no result). + * + * @see TraceAttributes::FEATURE_FLAG_EVALUATION_REASON + */ + public const FEATURE_FLAG_EVALUATION_REASON_DEFAULT = 'default'; + + /** + * The resolved value was the result of a dynamic evaluation, such as a rule or specific user-targeting. + * + * @see TraceAttributes::FEATURE_FLAG_EVALUATION_REASON + */ + public const FEATURE_FLAG_EVALUATION_REASON_TARGETING_MATCH = 'targeting_match'; + + /** + * The resolved value was the result of pseudorandom assignment. + * + * @see TraceAttributes::FEATURE_FLAG_EVALUATION_REASON + */ + public const FEATURE_FLAG_EVALUATION_REASON_SPLIT = 'split'; + + /** + * The resolved value was retrieved from cache. + * + * @see TraceAttributes::FEATURE_FLAG_EVALUATION_REASON + */ + public const FEATURE_FLAG_EVALUATION_REASON_CACHED = 'cached'; + + /** + * The resolved value was the result of the flag being disabled in the management system. + * + * @see TraceAttributes::FEATURE_FLAG_EVALUATION_REASON + */ + public const FEATURE_FLAG_EVALUATION_REASON_DISABLED = 'disabled'; + + /** + * The reason for the resolved value could not be determined. + * + * @see TraceAttributes::FEATURE_FLAG_EVALUATION_REASON + */ + public const FEATURE_FLAG_EVALUATION_REASON_UNKNOWN = 'unknown'; + + /** + * The resolved value is non-authoritative or possibly out of date + * + * @see TraceAttributes::FEATURE_FLAG_EVALUATION_REASON + */ + public const FEATURE_FLAG_EVALUATION_REASON_STALE = 'stale'; + + /** + * The resolved value was the result of an error. + * + * @see TraceAttributes::FEATURE_FLAG_EVALUATION_REASON + */ + public const FEATURE_FLAG_EVALUATION_REASON_ERROR = 'error'; + /** * Text response format * @@ -1242,6 +1858,13 @@ interface TraceAttributeValues */ public const GEN_AI_OPERATION_NAME_TEXT_COMPLETION = 'text_completion'; + /** + * Embeddings operation such as [OpenAI Create embeddings API](https://platform.openai.com/docs/api-reference/embeddings/create) + * + * @see TraceAttributes::GEN_AI_OPERATION_NAME + */ + public const GEN_AI_OPERATION_NAME_EMBEDDINGS = 'embeddings'; + /** * OpenAI * @@ -1256,6 +1879,13 @@ interface TraceAttributeValues */ public const GEN_AI_SYSTEM_VERTEX_AI = 'vertex_ai'; + /** + * Gemini + * + * @see TraceAttributes::GEN_AI_SYSTEM + */ + public const GEN_AI_SYSTEM_GEMINI = 'gemini'; + /** * Anthropic * @@ -1277,6 +1907,62 @@ interface TraceAttributeValues */ public const GEN_AI_SYSTEM_AZ_AI_INFERENCE = 'az.ai.inference'; + /** + * Azure OpenAI + * + * @see TraceAttributes::GEN_AI_SYSTEM + */ + public const GEN_AI_SYSTEM_AZ_AI_OPENAI = 'az.ai.openai'; + + /** + * IBM Watsonx AI + * + * @see TraceAttributes::GEN_AI_SYSTEM + */ + public const GEN_AI_SYSTEM_IBM_WATSONX_AI = 'ibm.watsonx.ai'; + + /** + * AWS Bedrock + * + * @see TraceAttributes::GEN_AI_SYSTEM + */ + public const GEN_AI_SYSTEM_AWS_BEDROCK = 'aws.bedrock'; + + /** + * Perplexity + * + * @see TraceAttributes::GEN_AI_SYSTEM + */ + public const GEN_AI_SYSTEM_PERPLEXITY = 'perplexity'; + + /** + * xAI + * + * @see TraceAttributes::GEN_AI_SYSTEM + */ + public const GEN_AI_SYSTEM_XAI = 'xai'; + + /** + * DeepSeek + * + * @see TraceAttributes::GEN_AI_SYSTEM + */ + public const GEN_AI_SYSTEM_DEEPSEEK = 'deepseek'; + + /** + * Groq + * + * @see TraceAttributes::GEN_AI_SYSTEM + */ + public const GEN_AI_SYSTEM_GROQ = 'groq'; + + /** + * Mistral AI + * + * @see TraceAttributes::GEN_AI_SYSTEM + */ + public const GEN_AI_SYSTEM_MISTRAL_AI = 'mistral_ai'; + /** * Input tokens (prompt, input, etc.) * @@ -1291,6 +1977,55 @@ interface TraceAttributeValues */ public const GEN_AI_TOKEN_TYPE_COMPLETION = 'output'; + /** + * Africa + * + * @see TraceAttributes::GEO_CONTINENT_CODE + */ + public const GEO_CONTINENT_CODE_AF = 'AF'; + + /** + * Antarctica + * + * @see TraceAttributes::GEO_CONTINENT_CODE + */ + public const GEO_CONTINENT_CODE_AN = 'AN'; + + /** + * Asia + * + * @see TraceAttributes::GEO_CONTINENT_CODE + */ + public const GEO_CONTINENT_CODE_AS = 'AS'; + + /** + * Europe + * + * @see TraceAttributes::GEO_CONTINENT_CODE + */ + public const GEO_CONTINENT_CODE_EU = 'EU'; + + /** + * North America + * + * @see TraceAttributes::GEO_CONTINENT_CODE + */ + public const GEO_CONTINENT_CODE_NA = 'NA'; + + /** + * Oceania + * + * @see TraceAttributes::GEO_CONTINENT_CODE + */ + public const GEO_CONTINENT_CODE_OC = 'OC'; + + /** + * South America + * + * @see TraceAttributes::GEO_CONTINENT_CODE + */ + public const GEO_CONTINENT_CODE_SA = 'SA'; + /** * Memory allocated from the heap that is reserved for stack space, whether or not it is currently in-use. * @@ -1600,42 +2335,56 @@ interface TraceAttributeValues public const JVM_THREAD_STATE_TERMINATED = 'terminated'; /** - * A [persistentVolumeClaim](https://v1-29.docs.kubernetes.io/docs/concepts/storage/volumes/#persistentvolumeclaim) volume + * Active namespace phase as described by [K8s API](https://pkg.go.dev/k8s.io/api@v0.31.3/core/v1#NamespacePhase) + * + * @see TraceAttributes::K8S_NAMESPACE_PHASE + */ + public const K8S_NAMESPACE_PHASE_ACTIVE = 'active'; + + /** + * Terminating namespace phase as described by [K8s API](https://pkg.go.dev/k8s.io/api@v0.31.3/core/v1#NamespacePhase) + * + * @see TraceAttributes::K8S_NAMESPACE_PHASE + */ + public const K8S_NAMESPACE_PHASE_TERMINATING = 'terminating'; + + /** + * A [persistentVolumeClaim](https://v1-30.docs.kubernetes.io/docs/concepts/storage/volumes/#persistentvolumeclaim) volume * * @see TraceAttributes::K8S_VOLUME_TYPE */ public const K8S_VOLUME_TYPE_PERSISTENT_VOLUME_CLAIM = 'persistentVolumeClaim'; /** - * A [configMap](https://v1-29.docs.kubernetes.io/docs/concepts/storage/volumes/#configmap) volume + * A [configMap](https://v1-30.docs.kubernetes.io/docs/concepts/storage/volumes/#configmap) volume * * @see TraceAttributes::K8S_VOLUME_TYPE */ public const K8S_VOLUME_TYPE_CONFIG_MAP = 'configMap'; /** - * A [downwardAPI](https://v1-29.docs.kubernetes.io/docs/concepts/storage/volumes/#downwardapi) volume + * A [downwardAPI](https://v1-30.docs.kubernetes.io/docs/concepts/storage/volumes/#downwardapi) volume * * @see TraceAttributes::K8S_VOLUME_TYPE */ public const K8S_VOLUME_TYPE_DOWNWARD_API = 'downwardAPI'; /** - * An [emptyDir](https://v1-29.docs.kubernetes.io/docs/concepts/storage/volumes/#emptydir) volume + * An [emptyDir](https://v1-30.docs.kubernetes.io/docs/concepts/storage/volumes/#emptydir) volume * * @see TraceAttributes::K8S_VOLUME_TYPE */ public const K8S_VOLUME_TYPE_EMPTY_DIR = 'emptyDir'; /** - * A [secret](https://v1-29.docs.kubernetes.io/docs/concepts/storage/volumes/#secret) volume + * A [secret](https://v1-30.docs.kubernetes.io/docs/concepts/storage/volumes/#secret) volume * * @see TraceAttributes::K8S_VOLUME_TYPE */ public const K8S_VOLUME_TYPE_SECRET = 'secret'; /** - * A [local](https://v1-29.docs.kubernetes.io/docs/concepts/storage/volumes/#local) volume + * A [local](https://v1-30.docs.kubernetes.io/docs/concepts/storage/volumes/#local) volume * * @see TraceAttributes::K8S_VOLUME_TYPE */ @@ -1937,6 +2686,83 @@ interface TraceAttributeValues */ public const NET_TRANSPORT_OTHER = 'other'; + /** + * closed + * + * @see TraceAttributes::NETWORK_CONNECTION_STATE + */ + public const NETWORK_CONNECTION_STATE_CLOSED = 'closed'; + + /** + * close_wait + * + * @see TraceAttributes::NETWORK_CONNECTION_STATE + */ + public const NETWORK_CONNECTION_STATE_CLOSE_WAIT = 'close_wait'; + + /** + * closing + * + * @see TraceAttributes::NETWORK_CONNECTION_STATE + */ + public const NETWORK_CONNECTION_STATE_CLOSING = 'closing'; + + /** + * established + * + * @see TraceAttributes::NETWORK_CONNECTION_STATE + */ + public const NETWORK_CONNECTION_STATE_ESTABLISHED = 'established'; + + /** + * fin_wait_1 + * + * @see TraceAttributes::NETWORK_CONNECTION_STATE + */ + public const NETWORK_CONNECTION_STATE_FIN_WAIT_1 = 'fin_wait_1'; + + /** + * fin_wait_2 + * + * @see TraceAttributes::NETWORK_CONNECTION_STATE + */ + public const NETWORK_CONNECTION_STATE_FIN_WAIT_2 = 'fin_wait_2'; + + /** + * last_ack + * + * @see TraceAttributes::NETWORK_CONNECTION_STATE + */ + public const NETWORK_CONNECTION_STATE_LAST_ACK = 'last_ack'; + + /** + * listen + * + * @see TraceAttributes::NETWORK_CONNECTION_STATE + */ + public const NETWORK_CONNECTION_STATE_LISTEN = 'listen'; + + /** + * syn_received + * + * @see TraceAttributes::NETWORK_CONNECTION_STATE + */ + public const NETWORK_CONNECTION_STATE_SYN_RECEIVED = 'syn_received'; + + /** + * syn_sent + * + * @see TraceAttributes::NETWORK_CONNECTION_STATE + */ + public const NETWORK_CONNECTION_STATE_SYN_SENT = 'syn_sent'; + + /** + * time_wait + * + * @see TraceAttributes::NETWORK_CONNECTION_STATE + */ + public const NETWORK_CONNECTION_STATE_TIME_WAIT = 'time_wait'; + /** * GPRS * @@ -3156,6 +3982,20 @@ interface TraceAttributeValues */ public const TLS_PROTOCOL_NAME_TLS = 'tls'; + /** + * Bot source. + * + * @see TraceAttributes::USER_AGENT_SYNTHETIC_TYPE + */ + public const USER_AGENT_SYNTHETIC_TYPE_BOT = 'bot'; + + /** + * Synthetic test source. + * + * @see TraceAttributes::USER_AGENT_SYNTHETIC_TYPE + */ + public const USER_AGENT_SYNTHETIC_TYPE_TEST = 'test'; + /** * Major (Mark Sweep Compact). * @@ -3219,6 +4059,90 @@ interface TraceAttributeValues */ public const V8JS_HEAP_SPACE_NAME_LARGE_OBJECT_SPACE = 'large_object_space'; + /** + * Open means the change is currently active and under review. It hasn't been merged into the target branch yet, and it's still possible to make changes or add comments. + * + * @see TraceAttributes::VCS_CHANGE_STATE + */ + public const VCS_CHANGE_STATE_OPEN = 'open'; + + /** + * WIP (work-in-progress, draft) means the change is still in progress and not yet ready for a full review. It might still undergo significant changes. + * + * @see TraceAttributes::VCS_CHANGE_STATE + */ + public const VCS_CHANGE_STATE_WIP = 'wip'; + + /** + * Closed means the merge request has been closed without merging. This can happen for various reasons, such as the changes being deemed unnecessary, the issue being resolved in another way, or the author deciding to withdraw the request. + * + * @see TraceAttributes::VCS_CHANGE_STATE + */ + public const VCS_CHANGE_STATE_CLOSED = 'closed'; + + /** + * Merged indicates that the change has been successfully integrated into the target codebase. + * + * @see TraceAttributes::VCS_CHANGE_STATE + */ + public const VCS_CHANGE_STATE_MERGED = 'merged'; + + /** + * How many lines were added. + * + * @see TraceAttributes::VCS_LINE_CHANGE_TYPE + */ + public const VCS_LINE_CHANGE_TYPE_ADDED = 'added'; + + /** + * How many lines were removed. + * + * @see TraceAttributes::VCS_LINE_CHANGE_TYPE + */ + public const VCS_LINE_CHANGE_TYPE_REMOVED = 'removed'; + + /** + * [branch](https://git-scm.com/docs/gitglossary#Documentation/gitglossary.txt-aiddefbranchabranch) + * + * @see TraceAttributes::VCS_REF_BASE_TYPE + */ + public const VCS_REF_BASE_TYPE_BRANCH = 'branch'; + + /** + * [tag](https://git-scm.com/docs/gitglossary#Documentation/gitglossary.txt-aiddeftagatag) + * + * @see TraceAttributes::VCS_REF_BASE_TYPE + */ + public const VCS_REF_BASE_TYPE_TAG = 'tag'; + + /** + * [branch](https://git-scm.com/docs/gitglossary#Documentation/gitglossary.txt-aiddefbranchabranch) + * + * @see TraceAttributes::VCS_REF_HEAD_TYPE + */ + public const VCS_REF_HEAD_TYPE_BRANCH = 'branch'; + + /** + * [tag](https://git-scm.com/docs/gitglossary#Documentation/gitglossary.txt-aiddeftagatag) + * + * @see TraceAttributes::VCS_REF_HEAD_TYPE + */ + public const VCS_REF_HEAD_TYPE_TAG = 'tag'; + + /** + * [branch](https://git-scm.com/docs/gitglossary#Documentation/gitglossary.txt-aiddefbranchabranch) + * + * @see TraceAttributes::VCS_REF_TYPE + */ + public const VCS_REF_TYPE_BRANCH = 'branch'; + + /** + * [tag](https://git-scm.com/docs/gitglossary#Documentation/gitglossary.txt-aiddeftagatag) + * + * @see TraceAttributes::VCS_REF_TYPE + */ + public const VCS_REF_TYPE_TAG = 'tag'; + /** * [branch](https://git-scm.com/docs/gitglossary#Documentation/gitglossary.txt-aiddefbranchabranch) * @@ -3233,4 +4157,18 @@ interface TraceAttributeValues */ public const VCS_REPOSITORY_REF_TYPE_TAG = 'tag'; + /** + * How many revisions the change is behind the target ref. + * + * @see TraceAttributes::VCS_REVISION_DELTA_DIRECTION + */ + public const VCS_REVISION_DELTA_DIRECTION_BEHIND = 'behind'; + + /** + * How many revisions the change is ahead of the target ref. + * + * @see TraceAttributes::VCS_REVISION_DELTA_DIRECTION + */ + public const VCS_REVISION_DELTA_DIRECTION_AHEAD = 'ahead'; + } diff --git a/src/SemConv/TraceAttributes.php b/src/SemConv/TraceAttributes.php index 1a2afda14..f3e160c09 100644 --- a/src/SemConv/TraceAttributes.php +++ b/src/SemConv/TraceAttributes.php @@ -11,7 +11,7 @@ interface TraceAttributes /** * The URL of the OpenTelemetry schema for these keys and values. */ - public const SCHEMA_URL = 'https://opentelemetry.io/schemas/1.27.0'; + public const SCHEMA_URL = 'https://opentelemetry.io/schemas/1.28.0'; /** * Uniquely identifies the framework API revision offered by a version (`os.version`) of the android operating system. More information can be found [here](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels). @@ -33,7 +33,7 @@ interface TraceAttributes public const ARTIFACT_ATTESTATION_FILENAME = 'artifact.attestation.filename'; /** - * The full [hash value (see glossary)](https://nvlpubs.nist.gov/nistpubs/FIPS/NIST.FIPS.186-5.pdf), of the built attestation. Some envelopes in the software attestation space also refer to this as the [digest](https://github.com/in-toto/attestation/blob/main/spec/README.md#in-toto-attestation-framework-spec). + * The full [hash value (see glossary)](https://nvlpubs.nist.gov/nistpubs/FIPS/NIST.FIPS.186-5.pdf), of the built attestation. Some envelopes in the [software attestation space](https://github.com/in-toto/attestation/tree/main/spec) also refer to this as the **digest**. */ public const ARTIFACT_ATTESTATION_HASH = 'artifact.attestation.hash'; @@ -261,6 +261,11 @@ interface TraceAttributes */ public const AWS_EKS_CLUSTER_ARN = 'aws.eks.cluster.arn'; + /** + * The AWS extended request ID as returned in the response header `x-amz-id-2`. + */ + public const AWS_EXTENDED_REQUEST_ID = 'aws.extended_request_id'; + /** * The full invoked ARN as provided on the `Context` passed to the function (`Lambda-Runtime-Invoked-Function-Arn` header on the `/runtime/invocation/next` applicable). * @@ -295,7 +300,7 @@ interface TraceAttributes public const AWS_LOG_STREAM_NAMES = 'aws.log.stream.names'; /** - * The AWS request ID as returned in the response headers `x-amz-request-id` or `x-amz-requestid`. + * The AWS request ID as returned in the response headers `x-amzn-requestid`, `x-amzn-request-id` or `x-amz-request-id`. */ public const AWS_REQUEST_ID = 'aws.request_id'; @@ -379,6 +384,43 @@ interface TraceAttributes */ public const AZ_SERVICE_REQUEST_ID = 'az.service_request_id'; + /** + * The unique identifier of the client instance. + */ + public const AZURE_CLIENT_ID = 'azure.client.id'; + + /** + * Cosmos client connection mode. + */ + public const AZURE_COSMOSDB_CONNECTION_MODE = 'azure.cosmosdb.connection.mode'; + + /** + * Account or request [consistency level](https://learn.microsoft.com/azure/cosmos-db/consistency-levels). + */ + public const AZURE_COSMOSDB_CONSISTENCY_LEVEL = '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 `displayName` in [Azure Location API](https://learn.microsoft.com/rest/api/subscription/subscriptions/list-locations?view=rest-subscription-2021-10-01&tabs=HTTP#location) + */ + public const AZURE_COSMOSDB_OPERATION_CONTACTED_REGIONS = 'azure.cosmosdb.operation.contacted_regions'; + + /** + * The number of request units consumed by the operation. + */ + public const AZURE_COSMOSDB_OPERATION_REQUEST_CHARGE = 'azure.cosmosdb.operation.request_charge'; + + /** + * Request payload size in bytes. + */ + public const AZURE_COSMOSDB_REQUEST_BODY_SIZE = 'azure.cosmosdb.request.body.size'; + + /** + * Cosmos DB sub status code. + */ + public const AZURE_COSMOSDB_RESPONSE_SUB_STATUS_CODE = 'azure.cosmosdb.response.sub_status_code'; + /** * Array of brand name and version separated by a space * This value is intended to be taken from the [UA client hints API](https://wicg.github.io/ua-client-hints/#interface) (`navigator.userAgentData.brands`). @@ -404,18 +446,58 @@ interface TraceAttributes */ public const BROWSER_PLATFORM = 'browser.platform'; + /** + * The consistency level of the query. Based on consistency values from [CQL](https://docs.datastax.com/en/cassandra-oss/3.0/cassandra/dml/dmlConfigConsistency.html). + */ + public const CASSANDRA_CONSISTENCY_LEVEL = 'cassandra.consistency.level'; + + /** + * The data center of the coordinating node for a query. + */ + public const CASSANDRA_COORDINATOR_DC = 'cassandra.coordinator.dc'; + + /** + * The ID of the coordinating node for a query. + */ + public const CASSANDRA_COORDINATOR_ID = 'cassandra.coordinator.id'; + + /** + * The fetch size used for paging, i.e. how many rows will be returned at once. + */ + public const CASSANDRA_PAGE_SIZE = 'cassandra.page.size'; + + /** + * Whether or not the query is idempotent. + */ + public const CASSANDRA_QUERY_IDEMPOTENT = 'cassandra.query.idempotent'; + + /** + * The number of times a query was speculatively executed. Not set or `0` if the query was not executed speculatively. + */ + public const CASSANDRA_SPECULATIVE_EXECUTION_COUNT = 'cassandra.speculative_execution.count'; + /** * The human readable name of the pipeline within a CI/CD system. */ public const CICD_PIPELINE_NAME = 'cicd.pipeline.name'; + /** + * The result of a pipeline run. + */ + public const CICD_PIPELINE_RESULT = 'cicd.pipeline.result'; + /** * The unique identifier of a pipeline run within a CI/CD system. */ public const CICD_PIPELINE_RUN_ID = 'cicd.pipeline.run.id'; /** - * The human readable name of a task within a pipeline. Task here most closely aligns with a [computing process](https://en.wikipedia.org/wiki/Pipeline_(computing)) in a pipeline. Other terms for tasks include commands, steps, and procedures. + * The pipeline run goes through these states during its lifecycle. + */ + public const CICD_PIPELINE_RUN_STATE = 'cicd.pipeline.run.state'; + + /** + * The human readable name of a task within a pipeline. Task here most closely aligns with a [computing process](https://wikipedia.org/wiki/Pipeline_(computing)) in a pipeline. Other terms for tasks include commands, steps, and procedures. */ public const CICD_PIPELINE_TASK_NAME = 'cicd.pipeline.task.name'; @@ -425,7 +507,7 @@ interface TraceAttributes public const CICD_PIPELINE_TASK_RUN_ID = 'cicd.pipeline.task.run.id'; /** - * The [URL](https://en.wikipedia.org/wiki/URL) of the pipeline run providing the complete address in order to locate and identify the pipeline run. + * The [URL](https://wikipedia.org/wiki/URL) of the pipeline run providing the complete address in order to locate and identify the pipeline run. */ public const CICD_PIPELINE_TASK_RUN_URL_FULL = 'cicd.pipeline.task.run.url.full'; @@ -434,6 +516,16 @@ interface TraceAttributes */ public const CICD_PIPELINE_TASK_TYPE = 'cicd.pipeline.task.type'; + /** + * The name of a component of the CICD system. + */ + public const CICD_SYSTEM_COMPONENT = 'cicd.system.component'; + + /** + * The state of a CICD worker / agent. + */ + public const CICD_WORKER_STATE = 'cicd.worker.state'; + /** * Client address - domain name if available without reverse DNS lookup; otherwise, IP address or Unix domain socket name. * When observed from the server side, and when communicating through an intermediary, `client.address` SHOULD represent the client address behind any intermediaries, for example proxies, if it's available. @@ -526,27 +618,53 @@ interface TraceAttributes public const CLOUDEVENTS_EVENT_TYPE = 'cloudevents.event_type'; /** - * The column number in `code.filepath` best representing the operation. It SHOULD point within the code unit named in `code.function`. + * Deprecated, use `code.column.number` + * + * @deprecated Replaced by `code.column.number` */ public const CODE_COLUMN = 'code.column'; + /** + * The column number in `code.file.path` best representing the operation. It SHOULD point within the code unit named in `code.function.name`. + */ + public const CODE_COLUMN_NUMBER = 'code.column.number'; + /** * The source code file name that identifies the code unit as uniquely as possible (preferably an absolute file path). */ + public const CODE_FILE_PATH = 'code.file.path'; + + /** + * Deprecated, use `code.file.path` instead + */ public const CODE_FILEPATH = 'code.filepath'; /** - * The method or function name, or equivalent (usually rightmost part of the code unit's name). + * Deprecated, use `code.function.name` instead + * + * @deprecated Replaced by `code.function.name` */ public const CODE_FUNCTION = 'code.function'; /** - * The line number in `code.filepath` best representing the operation. It SHOULD point within the code unit named in `code.function`. + * The method or function name, or equivalent (usually rightmost part of the code unit's name). + */ + public const CODE_FUNCTION_NAME = 'code.function.name'; + + /** + * The line number in `code.file.path` best representing the operation. It SHOULD point within the code unit named in `code.function.name`. + */ + public const CODE_LINE_NUMBER = 'code.line.number'; + + /** + * Deprecated, use `code.line.number` instead + * + * @deprecated Replaced by `code.line.number` */ public const CODE_LINENO = 'code.lineno'; /** - * The "namespace" within which `code.function` is defined. Usually the qualified class or module name, such that `code.namespace` + some separator + `code.function` form a unique identifier for the code unit. + * The "namespace" within which `code.function.name` is defined. Usually the qualified class or module name, such that `code.namespace` + some separator + `code.function.name` form a unique identifier for the code unit. */ public const CODE_NAMESPACE = 'code.namespace'; @@ -652,32 +770,44 @@ interface TraceAttributes public const CPU_MODE = 'cpu.mode'; /** - * The consistency level of the query. Based on consistency values from [CQL](https://docs.datastax.com/en/cassandra-oss/3.0/cassandra/dml/dmlConfigConsistency.html). + * Deprecated, use `cassandra.consistency.level` instead. + * + * @deprecated Replaced by `cassandra.consistency.level`. */ public const DB_CASSANDRA_CONSISTENCY_LEVEL = 'db.cassandra.consistency_level'; /** - * The data center of the coordinating node for a query. + * Deprecated, use `cassandra.coordinator.dc` instead. + * + * @deprecated Replaced by `cassandra.coordinator.dc`. */ public const DB_CASSANDRA_COORDINATOR_DC = 'db.cassandra.coordinator.dc'; /** - * The ID of the coordinating node for a query. + * Deprecated, use `cassandra.coordinator.id` instead. + * + * @deprecated Replaced by `cassandra.coordinator.id`. */ public const DB_CASSANDRA_COORDINATOR_ID = 'db.cassandra.coordinator.id'; /** - * Whether or not the query is idempotent. + * Deprecated, use `cassandra.query.idempotent` instead. + * + * @deprecated Replaced by `cassandra.query.idempotent`. */ public const DB_CASSANDRA_IDEMPOTENCE = 'db.cassandra.idempotence'; /** - * The fetch size used for paging, i.e. how many rows will be returned at once. + * Deprecated, use `cassandra.page.size` instead. + * + * @deprecated Replaced by `cassandra.page.size`. */ public const DB_CASSANDRA_PAGE_SIZE = 'db.cassandra.page_size'; /** - * The number of times a query was speculatively executed. Not set or `0` if the query was not executed speculatively. + * Deprecated, use `cassandra.speculative_execution.count` instead. + * + * @deprecated Replaced by `cassandra.speculative_execution.count`. */ public const DB_CASSANDRA_SPECULATIVE_EXECUTION_COUNT = 'db.cassandra.speculative_execution_count'; @@ -715,9 +845,12 @@ interface TraceAttributes /** * The name of a collection (table, container) within the database. * It is RECOMMENDED to capture the value as provided by the application without attempting to do any case normalization. - * If the collection name is parsed from the query text, it SHOULD be the 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 `db.collection.name` SHOULD NOT be captured. - * This attribute has stability level RELEASE CANDIDATE. + * + * The collection name SHOULD NOT be extracted from `db.query.text`, + * unless the query format is known to only ever have a single collection name present. + * + * For batch operations, if the individual operations are known to have the same collection name + * then that collection name SHOULD be used. */ public const DB_COLLECTION_NAME = 'db.collection.name'; @@ -729,15 +862,26 @@ interface TraceAttributes public const DB_CONNECTION_STRING = 'db.connection_string'; /** - * Unique Cosmos client instance id. + * Deprecated, use `azure.client.id` instead. + * + * @deprecated Replaced by `azure.client.id`. */ public const DB_COSMOSDB_CLIENT_ID = 'db.cosmosdb.client_id'; /** - * Cosmos client connection mode. + * Deprecated, use `azure.cosmosdb.connection.mode` instead. + * + * @deprecated Replaced by `azure.cosmosdb.connection.mode`. */ public const DB_COSMOSDB_CONNECTION_MODE = 'db.cosmosdb.connection_mode'; + /** + * Deprecated, use `cosmosdb.consistency.level` instead. + * + * @deprecated Replaced by `azure.cosmosdb.consistency.level`. + */ + public const DB_COSMOSDB_CONSISTENCY_LEVEL = 'db.cosmosdb.consistency_level'; + /** * Deprecated, use `db.collection.name` instead. * @@ -746,17 +890,30 @@ interface TraceAttributes public const DB_COSMOSDB_CONTAINER = 'db.cosmosdb.container'; /** - * Cosmos DB Operation Type. + * Deprecated, no replacement at this time. + * + * @deprecated No replacement at this time. */ public const DB_COSMOSDB_OPERATION_TYPE = 'db.cosmosdb.operation_type'; /** - * RU consumed for that operation + * Deprecated, use `azure.cosmosdb.operation.contacted_regions` instead. + * + * @deprecated Replaced by `azure.cosmosdb.operation.contacted_regions`. + */ + public const DB_COSMOSDB_REGIONS_CONTACTED = 'db.cosmosdb.regions_contacted'; + + /** + * Deprecated, use `azure.cosmosdb.operation.request_charge` instead. + * + * @deprecated Replaced by `azure.cosmosdb.operation.request_charge`. */ public const DB_COSMOSDB_REQUEST_CHARGE = 'db.cosmosdb.request_charge'; /** - * Request payload size in bytes + * Deprecated, use `azure.cosmosdb.request.body.size` instead. + * + * @deprecated Replaced by `azure.cosmosdb.request.body.size`. */ public const DB_COSMOSDB_REQUEST_CONTENT_LENGTH = 'db.cosmosdb.request_content_length'; @@ -768,7 +925,9 @@ interface TraceAttributes public const DB_COSMOSDB_STATUS_CODE = 'db.cosmosdb.status_code'; /** - * Cosmos DB sub status code. + * Deprecated, use `azure.cosmosdb.response.sub_status_code` instead. + * + * @deprecated Replaced by `azure.cosmosdb.response.sub_status_code`. */ public const DB_COSMOSDB_SUB_STATUS_CODE = 'db.cosmosdb.sub_status_code'; @@ -780,14 +939,16 @@ interface TraceAttributes public const DB_ELASTICSEARCH_CLUSTER_NAME = 'db.elasticsearch.cluster.name'; /** - * Represents the human-readable identifier of the node/instance to which a request was routed. + * Deprecated, use `elasticsearch.node.name` instead. + * + * @deprecated Replaced by `elasticsearch.node.name`. */ public const DB_ELASTICSEARCH_NODE_NAME = 'db.elasticsearch.node.name'; /** - * A dynamic value in the url path. + * Deprecated, use `db.operation.parameter` instead. * - * Many Elasticsearch url paths allow dynamic values. These SHOULD be recorded in span attributes in the format `db.elasticsearch.path_parts.`, where `` is the url path part name. The implementation SHOULD reference the [elasticsearch schema](https://raw.githubusercontent.com/elastic/elasticsearch-specification/main/output/schema/schema.json) in order to map the path part values to their names. + * @deprecated Replaced by `db.operation.parameter`. */ public const DB_ELASTICSEARCH_PATH_PARTS = 'db.elasticsearch.path_parts'; @@ -832,7 +993,6 @@ interface TraceAttributes * If a database system has multiple namespace components, they SHOULD be concatenated (potentially using database system specific conventions) from most general to most specific namespace component, and more specific namespaces SHOULD NOT be captured without the more general namespaces, to ensure that "startswith" queries for the more general namespaces will be valid. * Semantic conventions for individual database systems SHOULD document what `db.namespace` 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. - * This attribute has stability level RELEASE CANDIDATE. */ public const DB_NAMESPACE = 'db.namespace'; @@ -846,36 +1006,54 @@ interface TraceAttributes /** * The number of queries included in a batch operation. * Operations are only considered batches when they contain two or more operations, and so `db.operation.batch.size` SHOULD never be `1`. - * This attribute has stability level RELEASE CANDIDATE. */ public const DB_OPERATION_BATCH_SIZE = 'db.operation.batch.size'; /** * The name of the operation or command being executed. * - * It is RECOMMENDED to capture the value as provided by the application without attempting to do any case normalization. - * If the operation name is parsed from the query text, it SHOULD be the 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 `BATCH `, otherwise `db.operation.name` SHOULD be `BATCH` or some other database system specific term if more applicable. - * This attribute has stability level RELEASE CANDIDATE. + * It is RECOMMENDED to capture the value as provided by the application + * without attempting to do any case normalization. + * + * The operation name SHOULD NOT be extracted from `db.query.text`, + * unless the query format is known to only ever have a single operation name present. + * + * For batch operations, if the individual operations are known to have the same operation name + * then that operation name SHOULD be used prepended by `BATCH `, + * otherwise `db.operation.name` SHOULD be `BATCH` or some other database + * system specific term if more applicable. */ public const DB_OPERATION_NAME = 'db.operation.name'; /** - * A query parameter used in `db.query.text`, with `` being the parameter name, and the attribute value being a string representation of the parameter value. + * A database operation parameter, with `` being the parameter name, and the attribute value being a string representation of the parameter value. * - * Query parameters should only be captured when `db.query.text` is parameterized with placeholders. * If a parameter has no name and instead is referenced only by index, then `` SHOULD be the 0-based index. - * This attribute has stability level RELEASE CANDIDATE. + * If `db.query.text` is also captured, then `db.operation.parameter.` SHOULD match up with the parameterized placeholders present in `db.query.text`. + */ + public const DB_OPERATION_PARAMETER = 'db.operation.parameter'; + + /** + * A query parameter used in `db.query.text`, with `` being the parameter name, and the attribute value being a string representation of the parameter value. + * + * @deprecated Replaced by `db.operation.parameter`. */ public const DB_QUERY_PARAMETER = 'db.query.parameter'; + /** + * Low cardinality representation of a database query text. + * + * `db.query.summary` provides static summary of the query text. It describes a class of database queries and is useful as a grouping key, especially when analyzing telemetry for database calls involving complex queries. + * Summary may be available to the instrumentation through instrumentation hooks or other means. If it is not available, instrumentations that support query parsing SHOULD generate a summary following [Generating query summary](../../docs/database/database-spans.md#generating-a-summary-of-the-query-text) section. + */ + public const DB_QUERY_SUMMARY = 'db.query.summary'; + /** * The database query being executed. * * For sanitization see [Sanitization of `db.query.text`](../../docs/database/database-spans.md#sanitization-of-dbquerytext). * For batch operations, if the individual operations are known to have the same query text then that query text SHOULD be used, otherwise all of the individual query texts SHOULD be concatenated with separator `; ` or some other database system specific separator if more applicable. * Even though parameterized query text can potentially have sensitive data, by using a parameterized query the user is giving a strong signal that any sensitive data will be passed as parameter values, and the benefit to observability of capturing the static part of the query text by default outweighs the risk. - * This attribute has stability level RELEASE CANDIDATE. */ public const DB_QUERY_TEXT = 'db.query.text'; @@ -886,11 +1064,15 @@ interface TraceAttributes */ public const DB_REDIS_DATABASE_INDEX = 'db.redis.database_index'; + /** + * Number of rows returned by the operation. + */ + public const DB_RESPONSE_RETURNED_ROWS = 'db.response.returned_rows'; + /** * 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 `db.response.status_code` means in the context of that system. - * This attribute has stability level RELEASE CANDIDATE. */ public const DB_RESPONSE_STATUS_CODE = 'db.response.status_code'; @@ -909,12 +1091,18 @@ interface TraceAttributes public const DB_STATEMENT = 'db.statement'; /** - * 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 `db.system` is set to `postgresql` based on the instrumentation's best knowledge. - * This attribute has stability level RELEASE CANDIDATE. + * Deprecated, use `db.system.name` instead. + * + * @deprecated Replaced by `db.system.name`. */ public const DB_SYSTEM = '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 `db.system.name` is set to `postgresql` based on the instrumentation's best knowledge. + */ + public const DB_SYSTEM_NAME = 'db.system.name'; + /** * Deprecated, no replacement at this time. * @@ -1007,6 +1195,11 @@ interface TraceAttributes */ public const DNS_QUESTION_NAME = 'dns.question.name'; + /** + * Represents the human-readable identifier of the node/instance to which a request was routed. + */ + public const ELASTICSEARCH_NODE_NAME = 'elasticsearch.node.name'; + /** * Deprecated, use `user.id` instead. * @@ -1056,29 +1249,14 @@ interface TraceAttributes /** * Identifies the class / type of event. * - * Event names are subject to the same rules as [attribute names](/docs/general/attribute-naming.md). 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 */ public const EVENT_NAME = 'event.name'; /** - * 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. + * Indicates 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 `__exit__` 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](https://opentelemetry.io/docs/specs/semconv/exceptions/exceptions-spans/#recording-an-exception). - * - * It follows that an exception may still escape the scope of the span - * even if the `exception.escaped` 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. + * @deprecated It's no longer recommended to record exceptions that are handled and do not escape the scope of a span. */ public const EXCEPTION_ESCAPED = 'exception.escaped'; @@ -1173,7 +1351,7 @@ interface TraceAttributes * This is the name of the function as configured/deployed on the FaaS * platform and is usually different from the name of the callback * function (which may be stored in the - * [`code.namespace`/`code.function`](/docs/general/attributes.md#source-code-attributes) + * [`code.namespace`/`code.function.name`](/docs/general/attributes.md#source-code-attributes) * span attributes). * * For some cloud providers, the above definition is ambiguous. The following @@ -1214,29 +1392,50 @@ interface TraceAttributes public const FAAS_VERSION = 'faas.version'; /** - * The unique identifier of the feature flag. + * The unique identifier for the flag evaluation context. For example, the targeting key. + */ + public const FEATURE_FLAG_CONTEXT_ID = 'feature_flag.context.id'; + + /** + * A message explaining the nature of an error occurring during flag evaluation. + */ + public const FEATURE_FLAG_EVALUATION_ERROR_MESSAGE = 'feature_flag.evaluation.error.message'; + + /** + * The reason code which shows how a feature flag value was determined. + */ + public const FEATURE_FLAG_EVALUATION_REASON = 'feature_flag.evaluation.reason'; + + /** + * The lookup key of the feature flag. */ public const FEATURE_FLAG_KEY = 'feature_flag.key'; /** - * The name of the service provider that performs the flag evaluation. + * Identifies the feature flag provider. */ public const FEATURE_FLAG_PROVIDER_NAME = 'feature_flag.provider_name'; /** - * SHOULD be a semantic identifier for a value. If one is unavailable, a stringified version of the value can be used. + * The identifier of the [flag set](https://openfeature.dev/specification/glossary/#flag-set) to which the feature flag belongs. + */ + public const FEATURE_FLAG_SET_ID = 'feature_flag.set.id'; + + /** + * A semantic identifier for an evaluated flag value. * * A semantic identifier, commonly referred to as a variant, provides a means * for referring to a value without including the value itself. This can * provide additional context for understanding the meaning behind a value. * For example, the variant `red` maybe be used for the value `#c05543`. - * - * A stringified version of the value can be used in situations where a - * semantic identifier is unavailable. String representation of the value - * should be determined by the implementer. */ public const FEATURE_FLAG_VARIANT = 'feature_flag.variant'; + /** + * The version of the ruleset used during the evaluation. This may be any stable value which uniquely identifies the ruleset. + */ + public const FEATURE_FLAG_VERSION = 'feature_flag.version'; + /** * Time when the file was last accessed, in ISO 8601 format. * @@ -1381,12 +1580,14 @@ interface TraceAttributes public const GEN_AI_OPENAI_REQUEST_RESPONSE_FORMAT = 'gen_ai.openai.request.response_format'; /** - * Requests with same seed value more likely to return same result. + * Deprecated, use `gen_ai.request.seed`. + * + * @deprecated Replaced by `gen_ai.request.seed` attribute. */ public const GEN_AI_OPENAI_REQUEST_SEED = 'gen_ai.openai.request.seed'; /** - * The service tier requested. May be a specific tier, detault, or auto. + * The service tier requested. May be a specific tier, default, or auto. */ public const GEN_AI_OPENAI_REQUEST_SERVICE_TIER = 'gen_ai.openai.request.service_tier'; @@ -1395,6 +1596,11 @@ interface TraceAttributes */ public const GEN_AI_OPENAI_RESPONSE_SERVICE_TIER = 'gen_ai.openai.response.service_tier'; + /** + * A fingerprint to track any eventual change in the Generative AI environment. + */ + public const GEN_AI_OPENAI_RESPONSE_SYSTEM_FINGERPRINT = 'gen_ai.openai.response.system_fingerprint'; + /** * The name of the operation being performed. * If one of the predefined values applies, but specific system uses a different name it's RECOMMENDED to document it in the semantic conventions for specific GenAI system and use system-specific name in the instrumentation. If a different name is not documented, instrumentation libraries SHOULD use applicable predefined value. @@ -1408,6 +1614,12 @@ interface TraceAttributes */ public const GEN_AI_PROMPT = 'gen_ai.prompt'; + /** + * The encoding formats requested in an embeddings operation, if specified. + * In some GenAI systems the encoding formats are called embedding types. Also, some GenAI systems only accept a single format per request. + */ + public const GEN_AI_REQUEST_ENCODING_FORMATS = 'gen_ai.request.encoding_formats'; + /** * The frequency penalty setting for the GenAI request. */ @@ -1428,6 +1640,11 @@ interface TraceAttributes */ public const GEN_AI_REQUEST_PRESENCE_PENALTY = 'gen_ai.request.presence_penalty'; + /** + * Requests with same seed value more likely to return same result. + */ + public const GEN_AI_REQUEST_SEED = 'gen_ai.request.seed'; + /** * List of sequences that the model will use to stop generating further tokens. */ @@ -1469,8 +1686,10 @@ interface TraceAttributes * by `gen_ai.request.model` and `gen_ai.response.model` 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 `gen_ai.system` - * is set to `openai` based on the instrumentation's best knowledge. + * Multiple systems, including Azure OpenAI and Gemini, are accessible by OpenAI client + * libraries. In such cases, the `gen_ai.system` is set to `openai` based on the + * instrumentation's best knowledge, instead of the actual system. The `server.address` + * attribute may help identify the actual system in use for `openai`. * * For custom model, a custom friendly name SHOULD be used. * If none of these options apply, the `gen_ai.system` SHOULD be set to `_OTHER`. @@ -1506,6 +1725,41 @@ interface TraceAttributes */ public const GEN_AI_USAGE_PROMPT_TOKENS = 'gen_ai.usage.prompt_tokens'; + /** + * Two-letter code representing continent’s name. + */ + public const GEO_CONTINENT_CODE = 'geo.continent.code'; + + /** + * Two-letter ISO Country Code ([ISO 3166-1 alpha2](https://wikipedia.org/wiki/ISO_3166-1#Codes)). + */ + public const GEO_COUNTRY_ISO_CODE = 'geo.country.iso_code'; + + /** + * Locality name. Represents the name of a city, town, village, or similar populated place. + */ + public const GEO_LOCALITY_NAME = 'geo.locality.name'; + + /** + * Latitude of the geo location in [WGS84](https://wikipedia.org/wiki/World_Geodetic_System#WGS84). + */ + public const GEO_LOCATION_LAT = 'geo.location.lat'; + + /** + * Longitude of the geo location in [WGS84](https://wikipedia.org/wiki/World_Geodetic_System#WGS84). + */ + public const GEO_LOCATION_LON = 'geo.location.lon'; + + /** + * Postal code associated with the location. Values appropriate for this field may also be known as a postcode or ZIP code and will vary widely from country to country. + */ + public const GEO_POSTAL_CODE = 'geo.postal_code'; + + /** + * Region ISO code ([ISO 3166-2](https://wikipedia.org/wiki/ISO_3166-2)). + */ + public const GEO_REGION_ISO_CODE = 'geo.region.iso_code'; + /** * The type of memory. */ @@ -1949,6 +2203,14 @@ interface TraceAttributes */ public const K8S_NAMESPACE_NAME = 'k8s.namespace.name'; + /** + * The phase of the K8s namespace. + * + * This attribute aligns with the `phase` field of the + * [K8s NamespaceStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#namespacestatus-v1-core) + */ + public const K8S_NAMESPACE_PHASE = 'k8s.namespace.phase'; + /** * The name of the Node. */ @@ -2480,6 +2742,12 @@ interface TraceAttributes */ public const NETWORK_CARRIER_NAME = 'network.carrier.name'; + /** + * The state of network connection + * Connection states are defined as part of the [rfc9293](https://datatracker.ietf.org/doc/html/rfc9293#section-3.3.2) + */ + public const NETWORK_CONNECTION_STATE = '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. */ @@ -2490,6 +2758,11 @@ interface TraceAttributes */ public const NETWORK_CONNECTION_TYPE = 'network.connection.type'; + /** + * The network interface name. + */ + public const NETWORK_INTERFACE_NAME = 'network.interface.name'; + /** * The network IO operation direction. */ @@ -2516,7 +2789,7 @@ interface TraceAttributes public const NETWORK_PEER_PORT = 'network.peer.port'; /** - * [OSI application layer](https://osi-model.com/application-layer/) or non-OSI equivalent. + * [OSI application layer](https://wikipedia.org/wiki/Application_layer) or non-OSI equivalent. * The value SHOULD be normalized to lowercase. */ public const NETWORK_PROTOCOL_NAME = 'network.protocol.name'; @@ -2528,7 +2801,7 @@ interface TraceAttributes public const NETWORK_PROTOCOL_VERSION = 'network.protocol.version'; /** - * [OSI transport layer](https://osi-model.com/transport-layer/) or [inter-process communication method](https://wikipedia.org/wiki/Inter-process_communication). + * [OSI transport layer](https://wikipedia.org/wiki/Transport_layer) or [inter-process communication method](https://wikipedia.org/wiki/Inter-process_communication). * * The value SHOULD be normalized to lowercase. * @@ -2539,7 +2812,7 @@ interface TraceAttributes public const NETWORK_TRANSPORT = 'network.transport'; /** - * [OSI network layer](https://osi-model.com/network-layer/) or non-OSI equivalent. + * [OSI network layer](https://wikipedia.org/wiki/Network_layer) or non-OSI equivalent. * The value SHOULD be normalized to lowercase. */ public const NETWORK_TYPE = 'network.type'; @@ -2688,6 +2961,13 @@ interface TraceAttributes /** * Profiling specific build ID for executables. See the OTel specification for Profiles for more information. */ + public const PROCESS_EXECUTABLE_BUILD_ID_HTLHASH = 'process.executable.build_id.htlhash'; + + /** + * "Deprecated, use `process.executable.build_id.htlhash` instead." + * + * @deprecated Replaced by `process.executable.build_id.htlhash` + */ public const PROCESS_EXECUTABLE_BUILD_ID_PROFILING = 'process.executable.build_id.profiling'; /** @@ -2720,6 +3000,12 @@ interface TraceAttributes */ public const PROCESS_INTERACTIVE = 'process.interactive'; + /** + * The control group associated with the process. + * 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/[PID]/cgroup](https://man7.org/linux/man-pages/man7/cgroups.7.html) file. + */ + public const PROCESS_LINUX_CGROUP = 'process.linux.cgroup'; + /** * The username of the user that owns the process. */ @@ -2890,7 +3176,7 @@ interface TraceAttributes /** * The name of the (logical) method being called, must be equal to the $method part in the span name. - * 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.function` 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). + * 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.function.name` 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). */ public const RPC_METHOD = 'rpc.method'; @@ -2905,6 +3191,48 @@ interface TraceAttributes */ public const RPC_SYSTEM = 'rpc.system'; + /** + * A categorization value keyword used by the entity using the rule for detection of this event + */ + public const SECURITY_RULE_CATEGORY = 'security_rule.category'; + + /** + * The description of the rule generating the event. + */ + public const SECURITY_RULE_DESCRIPTION = 'security_rule.description'; + + /** + * Name of the license under which the rule used to generate this event is made available. + */ + public const SECURITY_RULE_LICENSE = 'security_rule.license'; + + /** + * The name of the rule or signature generating the event. + */ + public const SECURITY_RULE_NAME = '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. + */ + public const SECURITY_RULE_REFERENCE = 'security_rule.reference'; + + /** + * Name of the ruleset, policy, group, or parent category in which the rule used to generate this event is a member. + */ + public const SECURITY_RULE_RULESET_NAME = '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. + */ + public const SECURITY_RULE_UUID = 'security_rule.uuid'; + + /** + * The version / revision of the rule being used for analysis. + */ + public const SECURITY_RULE_VERSION = 'security_rule.version'; + /** * Server domain name if available without reverse DNS lookup; otherwise, IP address or Unix domain socket name. * When observed from the client side, and when communicating through an intermediary, `server.address` SHOULD represent the server address behind any intermediaries, for example proxies, if it's available. @@ -2932,7 +3260,7 @@ interface TraceAttributes * * UUIDs are typically recommended, as only an opaque value for the purposes of identifying a service instance is * needed. Similar to what can be seen in the man page for the - * [`/etc/machine-id`](https://www.freedesktop.org/software/systemd/man/machine-id.html) file, the underlying + * [`/etc/machine-id`](https://www.freedesktop.org/software/systemd/man/latest/machine-id.html) file, the underlying * data, such as pod name and namespace should be treated as confidential, being the user's choice to expose it * or not via another resource attribute. * @@ -3042,7 +3370,9 @@ interface TraceAttributes public const SYSTEM_MEMORY_STATE = 'system.memory.state'; /** - * A stateless protocol MUST NOT set this attribute + * Deprecated, use `network.connection.state` instead. + * + * @deprecated Removed, report network connection state with `network.connection.state` attribute */ public const SYSTEM_NETWORK_STATE = 'system.network.state'; @@ -3109,7 +3439,7 @@ interface TraceAttributes public const TELEMETRY_SDK_VERSION = 'telemetry.sdk.version'; /** - * The fully qualified human readable name of the [test case](https://en.wikipedia.org/wiki/Test_case). + * The fully qualified human readable name of the [test case](https://wikipedia.org/wiki/Test_case). */ public const TEST_CASE_NAME = 'test.case.name'; @@ -3119,7 +3449,7 @@ interface TraceAttributes public const TEST_CASE_RESULT_STATUS = 'test.case.result.status'; /** - * The human readable name of a [test suite](https://en.wikipedia.org/wiki/Test_suite). + * The human readable name of a [test suite](https://wikipedia.org/wiki/Test_suite). */ public const TEST_SUITE_NAME = 'test.suite.name'; @@ -3308,9 +3638,29 @@ interface TraceAttributes /** * Absolute URL describing a network resource according to [RFC3986](https://www.rfc-editor.org/rfc/rfc3986) - * For network calls, URL usually has `scheme://host[:port][path][?query][#fragment]` format, where the fragment is not transmitted over HTTP, but if it is known, it SHOULD be included nevertheless. - * `url.full` MUST NOT contain credentials passed via URL in form of `https://username:password@www.example.com/`. In such case username and password SHOULD be redacted and attribute's value SHOULD be `https://REDACTED:REDACTED@www.example.com/`. - * `url.full` SHOULD capture the absolute URL when it is available (or can be reconstructed). Sensitive content provided in `url.full` SHOULD be scrubbed when instrumentations can identify it. + * For network calls, URL usually has `scheme://host[:port][path][?query][#fragment]` format, where the fragment + * is not transmitted over HTTP, but if it is known, it SHOULD be included nevertheless. + * + * `url.full` MUST NOT contain credentials passed via URL in form of `https://username:password@www.example.com/`. + * In such case username and password SHOULD be redacted and attribute's value SHOULD be `https://REDACTED:REDACTED@www.example.com/`. + * + * `url.full` SHOULD capture the absolute URL when it is available (or can be reconstructed). + * + * Sensitive content provided in `url.full` SHOULD be scrubbed when instrumentations can identify it. + * + * + * Query string values for the following keys SHOULD be redacted by default and replaced by the + * value `REDACTED`: + * + * - [`AWSAccessKeyId`](https://docs.aws.amazon.com/AmazonS3/latest/userguide/RESTAuthentication.html#RESTAuthenticationQueryStringAuth) + * - [`Signature`](https://docs.aws.amazon.com/AmazonS3/latest/userguide/RESTAuthentication.html#RESTAuthenticationQueryStringAuth) + * - [`sig`](https://learn.microsoft.com/azure/storage/common/storage-sas-overview#sas-token) + * - [`X-Goog-Signature`](https://cloud.google.com/storage/docs/access-control/signed-urls) + * + * This list is subject to change over time. + * + * When a query string value is redacted, the query string key SHOULD still be preserved, e.g. + * `https://www.example.com/path?color=blue&sig=REDACTED`. */ public const URL_FULL = 'url.full'; @@ -3338,6 +3688,19 @@ interface TraceAttributes * The [URI query](https://www.rfc-editor.org/rfc/rfc3986#section-3.4) component * * Sensitive content provided in `url.query` SHOULD be scrubbed when instrumentations can identify it. + * + * + * Query string values for the following keys SHOULD be redacted by default and replaced by the value `REDACTED`: + * + * - [`AWSAccessKeyId`](https://docs.aws.amazon.com/AmazonS3/latest/userguide/RESTAuthentication.html#RESTAuthenticationQueryStringAuth) + * - [`Signature`](https://docs.aws.amazon.com/AmazonS3/latest/userguide/RESTAuthentication.html#RESTAuthenticationQueryStringAuth) + * - [`sig`](https://learn.microsoft.com/azure/storage/common/storage-sas-overview#sas-token) + * - [`X-Goog-Signature`](https://cloud.google.com/storage/docs/access-control/signed-urls) + * + * 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. + * `q=OpenTelemetry&sig=REDACTED`. */ public const URL_QUERY = 'url.query'; @@ -3416,6 +3779,13 @@ interface TraceAttributes */ public const USER_AGENT_ORIGINAL = 'user_agent.original'; + /** + * Specifies the category of synthetic traffic, such as tests or bots. + * + * This attribute MAY be derived from the contents of the `user_agent.original` attribute. Components that populate the attribute are responsible for determining what they consider to be synthetic bot or test traffic. This attribute can either be set for self-identification purposes, or on telemetry detected to be generated as a result of a synthetic request. This attribute is useful for distinguishing between genuine client traffic and synthetic traffic generated by bots or tests. + */ + public const USER_AGENT_SYNTHETIC_TYPE = 'user_agent.synthetic.type'; + /** * Version of the user-agent extracted from original. Usually refers to the browser's version * @@ -3435,45 +3805,157 @@ interface TraceAttributes public const V8JS_HEAP_SPACE_NAME = 'v8js.heap.space.name'; /** - * The ID of the change (pull request/merge request) if applicable. This is usually a unique (within repository) identifier generated by the VCS system. + * The ID of the change (pull request/merge request/changelist) if applicable. This is usually a unique (within repository) identifier generated by the VCS system. */ - public const VCS_REPOSITORY_CHANGE_ID = 'vcs.repository.change.id'; + public const VCS_CHANGE_ID = 'vcs.change.id'; /** - * The human readable title of the change (pull request/merge request). This title is often a brief summary of the change and may get merged in to a ref as the commit summary. + * The state of the change (pull request/merge request/changelist). */ - public const VCS_REPOSITORY_CHANGE_TITLE = 'vcs.repository.change.title'; + public const VCS_CHANGE_STATE = 'vcs.change.state'; + + /** + * The human readable title of the change (pull request/merge request/changelist). This title is often a brief summary of the change and may get merged in to a ref as the commit summary. + */ + public const VCS_CHANGE_TITLE = 'vcs.change.title'; + + /** + * The type of line change being measured on a branch or change. + */ + public const VCS_LINE_CHANGE_TYPE = 'vcs.line_change.type'; /** * The name of the [reference](https://git-scm.com/docs/gitglossary#def_ref) such as **branch** or **tag** in the repository. + * + * `base` refers to the starting point of a change. For example, `main` + * would be the base reference of type branch if you've created a new + * reference of type branch from it and created new commits. */ - public const VCS_REPOSITORY_REF_NAME = 'vcs.repository.ref.name'; + public const VCS_REF_BASE_NAME = 'vcs.ref.base.name'; /** * The revision, literally [revised version](https://www.merriam-webster.com/dictionary/revision), 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)](https://nvlpubs.nist.gov/nistpubs/FIPS/NIST.FIPS.186-5.pdf), + * `base` refers to the starting point of a change. For example, `main` + * 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)](https://nvlpubs.nist.gov/nistpubs/FIPS/NIST.FIPS.186-5.pdf), * of the recorded change to a ref within a repository pointing to a * commit [commit](https://git-scm.com/docs/git-commit) object. It does - * not necessarily have to be a hash; it can simply define a - * [revision number](https://svnbook.red-bean.com/en/1.7/svn.tour.revs.specifiers.html) + * not necessarily have to be a hash; it can simply define a [revision + * number](https://svnbook.red-bean.com/en/1.7/svn.tour.revs.specifiers.html) * which is an integer that is monotonically increasing. In cases where - * it is identical to the `ref.name`, 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 `ref.base.name`, 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. */ - public const VCS_REPOSITORY_REF_REVISION = 'vcs.repository.ref.revision'; + public const VCS_REF_BASE_REVISION = 'vcs.ref.base.revision'; /** * The type of the [reference](https://git-scm.com/docs/gitglossary#def_ref) in the repository. + * + * `base` refers to the starting point of a change. For example, `main` + * would be the base reference of type branch if you've created a new + * reference of type branch from it and created new commits. + */ + public const VCS_REF_BASE_TYPE = 'vcs.ref.base.type'; + + /** + * The name of the [reference](https://git-scm.com/docs/gitglossary#def_ref) such as **branch** or **tag** in the repository. + * + * `head` refers to where you are right now; the current reference at a + * given time. + */ + public const VCS_REF_HEAD_NAME = 'vcs.ref.head.name'; + + /** + * The revision, literally [revised version](https://www.merriam-webster.com/dictionary/revision), The revision most often refers to a commit object in Git, or a revision number in SVN. + * + * `head` refers to where you are right now; the current reference at a + * given time.The revision can be a full [hash value (see + * glossary)](https://nvlpubs.nist.gov/nistpubs/FIPS/NIST.FIPS.186-5.pdf), + * of the recorded change to a ref within a repository pointing to a + * commit [commit](https://git-scm.com/docs/git-commit) object. It does + * not necessarily have to be a hash; it can simply define a [revision + * number](https://svnbook.red-bean.com/en/1.7/svn.tour.revs.specifiers.html) + * which is an integer that is monotonically increasing. In cases where + * it is identical to the `ref.head.name`, 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. + */ + public const VCS_REF_HEAD_REVISION = 'vcs.ref.head.revision'; + + /** + * The type of the [reference](https://git-scm.com/docs/gitglossary#def_ref) in the repository. + * + * `head` refers to where you are right now; the current reference at a + * given time. + */ + public const VCS_REF_HEAD_TYPE = 'vcs.ref.head.type'; + + /** + * The type of the [reference](https://git-scm.com/docs/gitglossary#def_ref) in the repository. + */ + public const VCS_REF_TYPE = 'vcs.ref.type'; + + /** + * Deprecated, use `vcs.change.id` instead. + * + * @deprecated Deprecated, use `vcs.change.id` instead. + */ + public const VCS_REPOSITORY_CHANGE_ID = 'vcs.repository.change.id'; + + /** + * Deprecated, use `vcs.change.title` instead. + * + * @deprecated Deprecated, use `vcs.change.title` instead. + */ + public const VCS_REPOSITORY_CHANGE_TITLE = '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. + */ + public const VCS_REPOSITORY_NAME = 'vcs.repository.name'; + + /** + * Deprecated, use `vcs.ref.head.name` instead. + * + * @deprecated Deprecated, use `vcs.ref.head.name` instead. + */ + public const VCS_REPOSITORY_REF_NAME = 'vcs.repository.ref.name'; + + /** + * Deprecated, use `vcs.ref.head.revision` instead. + * + * @deprecated Deprecated, use `vcs.ref.head.revision` instead. + */ + public const VCS_REPOSITORY_REF_REVISION = 'vcs.repository.ref.revision'; + + /** + * Deprecated, use `vcs.ref.head.type` instead. + * + * @deprecated Deprecated, use `vcs.ref.head.type` instead. */ public const VCS_REPOSITORY_REF_TYPE = 'vcs.repository.ref.type'; /** - * The [URL](https://en.wikipedia.org/wiki/URL) of the repository providing the complete address in order to locate and identify the repository. + * The [canonical URL](https://support.google.com/webmasters/answer/10347851?hl=en#:~:text=A%20canonical%20URL%20is%20the,Google%20chooses%20one%20as%20canonical.) 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 `.git` extension. */ public const VCS_REPOSITORY_URL_FULL = 'vcs.repository.url.full'; + /** + * The type of revision comparison. + */ + public const VCS_REVISION_DELTA_DIRECTION = 'vcs.revision_delta.direction'; + /** * Additional description of the web engine (e.g. detailed version and edition information). */ From ebea40924ff212c82287def7ea02364f638d4ad3 Mon Sep 17 00:00:00 2001 From: Brett McBride Date: Thu, 30 Jan 2025 08:34:36 +1100 Subject: [PATCH 2/2] update version.php for 1.28 --- src/SemConv/Version.php | 1 + 1 file changed, 1 insertion(+) diff --git a/src/SemConv/Version.php b/src/SemConv/Version.php index 8848952ff..71c7db810 100644 --- a/src/SemConv/Version.php +++ b/src/SemConv/Version.php @@ -6,6 +6,7 @@ enum Version: string { + case VERSION_1_28_0 = '1.28.0'; case VERSION_1_27_0 = '1.27.0'; case VERSION_1_26_0 = '1.26.0'; case VERSION_1_25_0 = '1.25.0';