diff --git a/crates/weaver_semconv/data/event.yaml b/crates/weaver_semconv/data/event.yaml index 244d5fa2..a05e5bc1 100644 --- a/crates/weaver_semconv/data/event.yaml +++ b/crates/weaver_semconv/data/event.yaml @@ -77,17 +77,17 @@ groups: - id: span.event.test.no_name stability: experimental type: event - prefix: span.event.test + name: span.event.test brief: > This event represents an occurrence of a span event. attributes: - - id: attribute1 + - id: span.event.test.attribute1 type: string brief: 'The attribute1' examples: ['value1', 'value2'] requirement_level: conditionally_required: Required if `attribute2` is not set, recommended otherwise. - - id: attribute2 + - id: span.event.test.attribute2 type: string brief: 'The attribute2' examples: ['value1', 'value2'] @@ -98,17 +98,16 @@ groups: name: span.event.test.with_name stability: experimental type: event - prefix: span.event.test.with_name brief: > This event represents an occurrence of a span event. attributes: - - id: attribute1 + - id: span.event.test.with_name.attribute1 type: string brief: 'The attribute1' examples: ['value1', 'value2'] requirement_level: conditionally_required: Required if `attribute2` is not set, recommended otherwise. - - id: attribute2 + - id: span.event.test.with_name.attribute2 type: string brief: 'The attribute2' examples: ['value1', 'value2'] diff --git a/crates/weaver_semconv/data/exception.yaml b/crates/weaver_semconv/data/exception.yaml index 1c4eb9a5..f7fb4d76 100644 --- a/crates/weaver_semconv/data/exception.yaml +++ b/crates/weaver_semconv/data/exception.yaml @@ -1,23 +1,22 @@ groups: - id: exception type: span - prefix: exception brief: > This document defines the shared attributes used to report a single exception associated with a span or log. attributes: - - id: type + - id: exception.type type: string brief: > The type of the exception (its fully-qualified class name, if applicable). The dynamic type of the exception should be preferred over the static type in languages that support it. examples: ["java.net.ConnectException", "OSError"] - - id: message + - id: exception.message type: string brief: The exception message. examples: ["Division by zero", "Can't convert 'int' object to str implicitly"] - - id: stacktrace + - id: exception.stacktrace type: string brief: > A stacktrace as a string in the natural representation for the language runtime. diff --git a/crates/weaver_semconv/data/faas-common.yaml b/crates/weaver_semconv/data/faas-common.yaml index 43de8f25..03a050c2 100644 --- a/crates/weaver_semconv/data/faas-common.yaml +++ b/crates/weaver_semconv/data/faas-common.yaml @@ -3,9 +3,8 @@ groups: type: attribute_group brief: "Describes FaaS attributes." display_name: "FaaS Attributes" - prefix: faas attributes: - - id: trigger + - id: faas.trigger brief: 'Type of the trigger which caused this function invocation.' type: allow_custom_values: false @@ -25,7 +24,7 @@ groups: - id: other value: 'other' brief: 'If none of the others apply' - - id: invoked_name + - id: faas.invoked_name type: string requirement_level: required brief: > @@ -34,7 +33,7 @@ groups: SHOULD be equal to the `faas.name` resource attribute of the invoked function. examples: 'my-function' - - id: invoked_provider + - id: faas.invoked_provider type: allow_custom_values: true members: @@ -59,7 +58,7 @@ groups: note: > SHOULD be equal to the `cloud.provider` resource attribute of the invoked function. - - id: invoked_region + - id: faas.invoked_region type: string requirement_level: conditionally_required: > diff --git a/crates/weaver_semconv/data/faas.yaml b/crates/weaver_semconv/data/faas.yaml index 3ce4fc25..4775a8a3 100644 --- a/crates/weaver_semconv/data/faas.yaml +++ b/crates/weaver_semconv/data/faas.yaml @@ -1,6 +1,5 @@ groups: - id: faas_span - prefix: faas type: span brief: > This semantic convention describes an instance of a function that @@ -18,20 +17,19 @@ groups: trigger that corresponding incoming would have (i.e., this has nothing to do with the underlying transport used to make the API call to invoke the lambda, which is often HTTP). - - id: invocation_id + - id: faas.invocation_id type: string brief: 'The invocation ID of the current function invocation.' examples: 'af9d5aa4-a685-4c5f-a22b-444f80b3cc28' - ref: cloud.resource_id - id: faas_span.datasource - prefix: faas.document type: span brief: > Semantic Convention for FaaS triggered as a response to some data source operation such as a database or filesystem read/write. attributes: - - id: collection + - id: faas.document.collection type: string requirement_level: required brief: > @@ -39,7 +37,7 @@ groups: For example, in Cloud Storage or S3 corresponds to the bucket name, and in Cosmos DB to the database name. examples: ['myBucketName', 'myDbName'] - - id: operation + - id: faas.document.operation requirement_level: required type: allow_custom_values: true @@ -54,14 +52,14 @@ groups: value: 'delete' brief: 'When an object is deleted.' brief: 'Describes the type of the operation that was performed on the data.' - - id: time + - id: faas.document.time type: string brief: > A string containing the time when the data was accessed in the [ISO 8601](https://www.iso.org/iso-8601-date-and-time-format.html) format expressed in [UTC](https://www.w3.org/TR/NOTE-datetime). examples: "2020-01-23T13:47:06Z" - - id: name + - id: faas.document.name type: string brief: > The document name/table subjected to the operation. @@ -88,19 +86,18 @@ groups: attributes: [] - id: faas_span.timer - prefix: faas type: span brief: > Semantic Convention for FaaS scheduled to be executed regularly. attributes: - - id: time + - id: faas.time type: string brief: > A string containing the function invocation time in the [ISO 8601](https://www.iso.org/iso-8601-date-and-time-format.html) format expressed in [UTC](https://www.w3.org/TR/NOTE-datetime). examples: "2020-01-23T13:47:06Z" - - id: cron + - id: faas.cron type: string brief: > A string containing the schedule period as @@ -109,12 +106,11 @@ groups: - id: faas_span.in span_kind: server - prefix: faas type: span brief: > Contains additional attributes for incoming FaaS spans. attributes: - - id: coldstart + - id: faas.coldstart type: boolean brief: > A boolean that is true if the serverless function is executed for the @@ -134,7 +130,6 @@ groups: - id: faas_span.out span_kind: client - prefix: faas type: span brief: > Contains additional attributes for outgoing FaaS spans. diff --git a/crates/weaver_semconv/data/http-common.yaml b/crates/weaver_semconv/data/http-common.yaml index 41b30c68..458e8f57 100644 --- a/crates/weaver_semconv/data/http-common.yaml +++ b/crates/weaver_semconv/data/http-common.yaml @@ -2,9 +2,8 @@ groups: - id: attributes.http.common type: attribute_group brief: "Describes HTTP attributes." - prefix: http attributes: - - id: request.method + - id: http.request.method type: allow_custom_values: true members: @@ -56,7 +55,7 @@ groups: HTTP method names are case-sensitive and `http.request.method` attribute value MUST match a known HTTP method name exactly. Instrumentations for specific web frameworks that consider HTTP methods to be case insensitive, SHOULD populate a canonical equivalent. Tracing instrumentations that do so, MUST also set `http.request.method_original` to the original value. - - id: response.status_code + - id: http.response.status_code type: int requirement_level: conditionally_required: If and only if one was received/sent. @@ -70,7 +69,6 @@ groups: examples: ['1.0', '1.1', '2', '3'] - id: attributes.http.client - prefix: http type: attribute_group brief: 'HTTP Client attributes' attributes: @@ -96,11 +94,10 @@ groups: URI port identifier, otherwise it MUST match `Host` header port identifier. - id: attributes.http.server - prefix: http type: attribute_group brief: 'HTTP Server attributes' attributes: - - id: route + - id: http.route type: string requirement_level: conditionally_required: If and only if it's available diff --git a/crates/weaver_semconv/data/http.yaml b/crates/weaver_semconv/data/http.yaml index 27d346bd..99a8ae5b 100644 --- a/crates/weaver_semconv/data/http.yaml +++ b/crates/weaver_semconv/data/http.yaml @@ -1,6 +1,5 @@ groups: - id: trace.http.common - prefix: http extends: attributes.http.common type: attribute_group brief: 'This document defines semantic conventions for HTTP client and server Spans.' @@ -8,20 +7,20 @@ groups: These conventions can be used for http and https schemes and various HTTP versions like 1.1, 2 and SPDY. attributes: - - id: request.method_original + - id: http.request.method_original type: string requirement_level: conditionally_required: If and only if it's different than `http.request.method`. brief: Original HTTP method sent by the client in the request line. examples: ["GeT", "ACL", "foo"] - - id: request.body.size + - id: http.request.body.size type: int brief: > The size of the request payload body in bytes. This is the number of bytes transferred excluding headers and is often, but not always, present as the [Content-Length](https://www.rfc-editor.org/rfc/rfc9110.html#field.content-length) header. For requests using transport encoding, this should be the compressed size. examples: 3495 - - id: response.body.size + - id: http.response.body.size type: int brief: > The size of the response payload body in bytes. This is the number of bytes transferred excluding headers and @@ -37,13 +36,12 @@ groups: - ref: user_agent.original - id: trace.http.client - prefix: http type: span extends: attributes.http.client span_kind: client brief: 'Semantic Convention for HTTP Client' attributes: - - id: resend_count + - id: http.resend_count type: int brief: > The ordinal number of request resending attempt (for any reason, including redirects). @@ -86,7 +84,6 @@ groups: - id: trace.http.server - prefix: http type: span extends: attributes.http.server span_kind: server diff --git a/crates/weaver_semconv/data/jvm-metrics.yaml b/crates/weaver_semconv/data/jvm-metrics.yaml index 9e6d2b33..6dac8471 100644 --- a/crates/weaver_semconv/data/jvm-metrics.yaml +++ b/crates/weaver_semconv/data/jvm-metrics.yaml @@ -2,9 +2,8 @@ groups: - id: attributes.jvm.memory type: attribute_group brief: "Describes JVM memory metric attributes." - prefix: jvm.memory attributes: - - id: type + - id: jvm.memory.type type: allow_custom_values: false members: @@ -17,7 +16,7 @@ groups: requirement_level: recommended brief: The type of memory. examples: ["heap", "non_heap"] - - id: pool.name + - id: jvm.memory.pool.name type: string requirement_level: recommended brief: Name of the memory pool. @@ -64,9 +63,8 @@ groups: brief: "Duration of JVM garbage collection actions." instrument: histogram unit: "s" - prefix: jvm.gc attributes: - - id: name + - id: jvm.gc.name type: string requirement_level: recommended brief: Name of the garbage collector. @@ -74,7 +72,7 @@ groups: note: > Garbage collector name is generally obtained via [GarbageCollectionNotificationInfo#getGcName()](https://docs.oracle.com/en/java/javase/11/docs/api/jdk.management/com/sun/management/GarbageCollectionNotificationInfo.html#getGcName()). - - id: action + - id: jvm.gc.action type: string requirement_level: recommended brief: Name of the garbage collector action. diff --git a/crates/weaver_semconv/data/media.yaml b/crates/weaver_semconv/data/media.yaml index d6aa0108..9b3362db 100644 --- a/crates/weaver_semconv/data/media.yaml +++ b/crates/weaver_semconv/data/media.yaml @@ -1,10 +1,9 @@ groups: - id: attributes.log - prefix: log type: attribute_group brief: "Describes Log attributes" attributes: - - id: iostream + - id: log.iostream requirement_level: opt_in brief: > The stream associated with the log. See below for a list of well-known values. @@ -18,30 +17,29 @@ groups: value: 'stderr' brief: 'Events from stderr stream' - id: attributes.log.file - prefix: log.file type: attribute_group brief: > A file to which log was emitted. attributes: - - id: name + - id: log.file.name type: string requirement_level: recommended brief: > The basename of the file. examples: ["audit.log"] - - id: path + - id: log.file.path type: string requirement_level: opt_in brief: > The full path to the file. examples: [ "/var/log/mysql/audit.log" ] - - id: name_resolved + - id: log.file.name_resolved type: string requirement_level: opt_in brief: > The basename of the file, with symlinks resolved. examples: [ "uuid.log" ] - - id: path_resolved + - id: log.file.path_resolved type: string requirement_level: opt_in brief: > diff --git a/crates/weaver_semconv/data/messaging.yaml b/crates/weaver_semconv/data/messaging.yaml index adabe096..306a452f 100644 --- a/crates/weaver_semconv/data/messaging.yaml +++ b/crates/weaver_semconv/data/messaging.yaml @@ -1,33 +1,31 @@ groups: - id: messaging.message - prefix: messaging type: attribute_group brief: "Semantic convention describing per-message attributes populated on messaging spans or links." attributes: - ref: messaging.destination.name - - id: message.id + - id: messaging.message.id type: string brief: "A value used by the messaging system as an identifier for the message, represented as a string." examples: "452a7c7c7c7048c2f887f61572b18fc2" - - id: message.conversation_id + - id: messaging.message.conversation_id type: string brief: > The [conversation ID](#conversations) identifying the conversation to which the message belongs, represented as a string. Sometimes called "Correlation ID". examples: "MyConversationId" - - id: message.payload_size_bytes + - id: messaging.message.payload_size_bytes type: int brief: > The (uncompressed) size of the message payload in bytes. Also use this attribute if it is unknown whether the compressed or uncompressed payload size is reported. examples: 2738 - - id: message.payload_compressed_size_bytes + - id: messaging.message.payload_compressed_size_bytes type: int brief: "The compressed size of the message payload in bytes." examples: 2048 - id: messaging.destination - prefix: messaging.destination type: attribute_group brief: "Semantic convention for attributes that describe messaging destination on broker" note: | @@ -40,14 +38,14 @@ groups: applies to all messages in the batch. In other cases, destination attributes may be set on links. attributes: - - id: name + - id: messaging.destination.name type: string brief: "The message destination name" note: | Destination name SHOULD uniquely identify a specific queue, topic or other entity within the broker. If the broker does not have such notion, the destination name SHOULD uniquely identify the broker. examples: ["MyQueue", "MyTopic"] - - id: template + - id: messaging.destination.template type: string brief: Low cardinality representation of the messaging destination name note: > @@ -57,15 +55,14 @@ groups: the underlying template is of low cardinality and can be effectively used for grouping and aggregation. examples: ["/customers/{customerId}"] - - id: temporary + - id: messaging.destination.temporary type: boolean brief: "A boolean that is true if the message destination is temporary and might not exist anymore after messages are processed." - - id: anonymous + - id: messaging.destination.anonymous type: boolean brief: "A boolean that is true if the message destination is anonymous (could be unnamed or have auto-generated name)." - id: messaging.destination_publish - prefix: messaging.destination_publish type: attribute_group brief: > Semantic convention for attributes that describe the publish messaging destination on broker. @@ -81,30 +78,29 @@ groups: applies to all messages in the batch. In other cases, destination attributes may be set on links. attributes: - - id: name + - id: messaging.destination_publish.name type: string brief: "The name of the original destination the message was published to" note: | The name SHOULD uniquely identify a specific queue, topic, or other entity within the broker. If the broker does not have such notion, the original destination name SHOULD uniquely identify the broker. examples: ["MyQueue", "MyTopic"] - - id: anonymous + - id: messaging.destination_publish.anonymous type: boolean brief: "A boolean that is true if the publish message destination is anonymous (could be unnamed or have auto-generated name)." - id: messaging - prefix: messaging type: span brief: > This document defines general attributes used in messaging systems. attributes: - - id: system + - id: messaging.system type: string requirement_level: required brief: "A string identifying the messaging system." examples: ["kafka", "rabbitmq", "rocketmq", "activemq", "AmazonSQS"] - - id: operation + - id: messaging.operation type: allow_custom_values: true members: @@ -119,7 +115,7 @@ groups: A string identifying the kind of messaging operation as defined in the [Operation names](#operation-names) section above. note: If a custom value is used, it MUST be of low cardinality. - - id: batch.message_count + - id: messaging.batch.message_count type: int brief: The number of messages sent, received, or processed in the scope of the batching operation. requirement_level: @@ -129,7 +125,7 @@ groups: When a messaging client library supports both batch and single-message API for the same operation, instrumentations SHOULD use `messaging.batch.message_count` for batching APIs and SHOULD NOT use it for single-message APIs. examples: [0, 1, 2] - - id: client_id + - id: messaging.client_id type: string requirement_level: recommended: If a client id is available @@ -184,13 +180,12 @@ groups: - ref: network.protocol.version - id: messaging.rabbitmq - prefix: messaging.rabbitmq type: attribute_group extends: messaging brief: > Attributes for RabbitMQ attributes: - - id: destination.routing_key + - id: messaging.rabbitmq.destination.routing_key type: string requirement_level: conditionally_required: If not empty. @@ -199,13 +194,12 @@ groups: examples: "myKey" - id: messaging.kafka - prefix: messaging.kafka type: attribute_group extends: messaging brief: > Attributes for Apache Kafka attributes: - - id: message.key + - id: messaging.kafka.message.key type: string brief: > Message keys in Kafka are used for grouping alike messages to ensure they're processed on the same partition. @@ -215,69 +209,68 @@ groups: If the key type is not string, it's string representation has to be supplied for the attribute. If the key has no unambiguous, canonical string form, don't include its value. examples: "myKey" - - id: consumer.group + - id: messaging.kafka.consumer.group type: string brief: > Name of the Kafka Consumer Group that is handling the message. Only applies to consumers, not producers. examples: "my-group" - - id: destination.partition + - id: messaging.kafka.destination.partition type: int brief: > Partition the message is sent to. examples: 2 - - id: message.offset + - id: messaging.kafka.message.offset type: int brief: > The offset of a record in the corresponding Kafka partition. examples: 42 - - id: message.tombstone + - id: messaging.kafka.message.tombstone type: boolean requirement_level: conditionally_required: If value is `true`. When missing, the value is assumed to be `false`. brief: "A boolean that is true if the message is a tombstone." - id: messaging.rocketmq - prefix: messaging.rocketmq type: attribute_group extends: messaging brief: > Attributes for Apache RocketMQ attributes: - - id: namespace + - id: messaging.rocketmq.namespace type: string requirement_level: required brief: > Namespace of RocketMQ resources, resources in different namespaces are individual. examples: "myNamespace" - - id: client_group + - id: messaging.rocketmq.client_group type: string requirement_level: required brief: > Name of the RocketMQ producer/consumer group that is handling the message. The client type is identified by the SpanKind. examples: "myConsumerGroup" - - id: message.delivery_timestamp + - id: messaging.rocketmq.message.delivery_timestamp type: int requirement_level: conditionally_required: If the message type is delay and delay time level is not specified. brief: > The timestamp in milliseconds that the delay message is expected to be delivered to consumer. examples: 1665987217045 - - id: message.delay_time_level + - id: messaging.rocketmq.message.delay_time_level type: int requirement_level: conditionally_required: If the message type is delay and delivery timestamp is not specified. brief: > The delay time level for delay message, which determines the message delay time. examples: 3 - - id: message.group + - id: messaging.rocketmq.message.group type: string requirement_level: conditionally_required: If the message type is FIFO. brief: > It is essential for FIFO message. Messages that belong to the same message group are always processed one by one within the same consumer group. examples: "myMessageGroup" - - id: message.type + - id: messaging.rocketmq.message.type type: allow_custom_values: false members: @@ -295,17 +288,17 @@ groups: brief: "Transaction message" brief: > Type of message. - - id: message.tag + - id: messaging.rocketmq.message.tag type: string brief: > The secondary classifier of message besides topic. examples: tagA - - id: message.keys + - id: messaging.rocketmq.message.keys type: string[] brief: > Key(s) of message, another way to mark message besides message id. examples: [["keyA"], ["keyB"]] - - id: consumption_model + - id: messaging.rocketmq.consumption_model type: allow_custom_values: false members: diff --git a/crates/weaver_semconv/data/network.yaml b/crates/weaver_semconv/data/network.yaml index ea74399a..bb6b068e 100644 --- a/crates/weaver_semconv/data/network.yaml +++ b/crates/weaver_semconv/data/network.yaml @@ -1,11 +1,10 @@ groups: - id: network-core - prefix: network type: attribute_group brief: > These attributes may be used for any network related operation. attributes: - - id: transport + - id: network.transport type: allow_custom_values: true members: @@ -26,7 +25,7 @@ groups: [Inter-process Communication method](https://en.wikipedia.org/wiki/Inter-process_communication). The value SHOULD be normalized to lowercase. examples: ['tcp', 'udp'] - - id: type + - id: network.type type: allow_custom_values: true members: @@ -40,13 +39,13 @@ groups: [OSI Network Layer](https://osi-model.com/network-layer/) or non-OSI equivalent. The value SHOULD be normalized to lowercase. examples: ['ipv4', 'ipv6'] - - id: protocol.name + - id: network.protocol.name type: string brief: > [OSI Application Layer](https://osi-model.com/application-layer/) or non-OSI equivalent. The value SHOULD be normalized to lowercase. examples: ['amqp', 'http', 'mqtt'] - - id: protocol.version + - id: network.protocol.version type: string brief: 'Version of the application layer protocol used. See note below.' examples: '3.1.1' @@ -56,12 +55,11 @@ groups: of `0.27.2`, but sends HTTP version `1.1`, this attribute should be set to `1.1`. - id: network-connection-and-carrier - prefix: network type: attribute_group brief: > These attributes may be used for any network related operation. attributes: - - id: connection.type + - id: network.connection.type type: allow_custom_values: true members: @@ -77,7 +75,7 @@ groups: value: "unknown" brief: 'The internet connection type.' examples: 'wifi' - - id: connection.subtype + - id: network.connection.subtype type: allow_custom_values: true members: @@ -146,28 +144,27 @@ groups: value: "lte_ca" brief: '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.' examples: 'LTE' - - id: carrier.name + - id: network.carrier.name type: string brief: "The name of the mobile carrier." examples: "sprint" - - id: carrier.mcc + - id: network.carrier.mcc type: string brief: "The mobile carrier country code." examples: "310" - - id: carrier.mnc + - id: network.carrier.mnc type: string brief: "The mobile carrier network code." examples: "001" - - id: carrier.icc + - id: network.carrier.icc type: string brief: "The ISO 3166-1 alpha-2 2-character country code associated with the mobile carrier network." examples: "DE" - id: peer - prefix: peer type: span brief: "Operations that access some remote service." attributes: - - id: service + - id: peer.service type: string brief: > The [`service.name`](/docs/resource/README.md#service) @@ -175,23 +172,22 @@ groups: resource attribute of the remote service if any. examples: "AuthTokenCache" - id: identity - prefix: enduser type: span brief: > These attributes may be used for any operation with an authenticated and/or authorized enduser. attributes: - - id: id + - id: enduser.id type: string brief: > Username or client_id extracted from the access token or [Authorization](https://tools.ietf.org/html/rfc7235#section-4.2) header in the inbound request from outside the system. examples: 'username' - - id: role + - id: enduser.role type: string brief: 'Actual/assumed role the client is making the request under extracted from token or application security context.' examples: 'admin' - - id: scope + - id: enduser.scope type: string brief: > Scopes or granted authorities the client currently possesses extracted from token @@ -200,52 +196,50 @@ groups: or an attribute value in a [SAML 2.0 Assertion](http://docs.oasis-open.org/security/saml/Post2.0/sstc-saml-tech-overview-2.0.html). examples: 'read:message, write:files' - id: thread - prefix: thread type: span brief: > These attributes may be used for any operation to store information about a thread that started a span. attributes: - - id: id + - id: thread.id type: int brief: > Current "managed" thread ID (as opposed to OS thread ID). examples: 42 - - id: name + - id: thread.name type: string brief: > Current thread name. examples: main - - id: daemon + - id: thread.daemon brief: "Whether the thread is daemon or not." type: boolean - id: code - prefix: code type: span brief: > These attributes allow to report this unit of code and therefore to provide more context about the span. attributes: - - id: function + - id: code.function type: string brief: > The method or function name, or equivalent (usually rightmost part of the code unit's name). examples: serveRequest - - id: namespace + - id: code.namespace type: string brief: > 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. examples: com.example.MyHttpService - - id: filepath + - id: code.filepath type: string brief: > The source code file name that identifies the code unit as uniquely as possible (preferably an absolute file path). examples: /usr/local/MyApplication/content_root/app/index.php - - id: lineno + - id: code.lineno type: int brief: > The line number in `code.filepath` best representing the operation. It SHOULD point within the code unit named in `code.function`. examples: 42 - - id: column + - id: code.column type: int brief: > The column number in `code.filepath` best representing the operation. It SHOULD point within the code unit named in `code.function`. diff --git a/crates/weaver_semconv/data/rpc.yaml b/crates/weaver_semconv/data/rpc.yaml index 9acc7548..73661913 100644 --- a/crates/weaver_semconv/data/rpc.yaml +++ b/crates/weaver_semconv/data/rpc.yaml @@ -1,11 +1,10 @@ groups: - id: rpc - prefix: rpc type: span brief: 'This document defines semantic conventions for remote procedure calls.' events: [rpc.message] attributes: - - id: system + - id: rpc.system requirement_level: required brief: 'A string identifying the remoting system. See below for a list of well-known identifiers.' type: @@ -26,7 +25,7 @@ groups: - id: connect_rpc value: 'connect_rpc' brief: 'Connect RPC' - - id: service + - id: rpc.service type: string requirement_level: recommended brief: 'The full (logical) name of the service being called, including its package name, if applicable.' @@ -38,7 +37,7 @@ groups: e.g., class with method actually executing the call on the server side, RPC client stub class on the client side). examples: "myservice.EchoService" - - id: method + - id: rpc.method type: string requirement_level: recommended brief: 'The name of the (logical) method being called, must be equal to the $method part in the span name.' @@ -81,7 +80,6 @@ groups: recommended: If different than `server.address` and if `server.socket.address` is set. - id: rpc.server - prefix: rpc type: span extends: rpc span_kind: server @@ -95,12 +93,11 @@ groups: - ref: network.type - id: rpc.grpc - prefix: rpc.grpc type: span extends: rpc brief: 'Tech-specific attributes for gRPC.' attributes: - - id: status_code + - id: rpc.grpc.status_code type: members: - id: ok @@ -158,18 +155,17 @@ groups: brief: "The [numeric status code](https://github.com/grpc/grpc/blob/v1.33.2/doc/statuscodes.md) of the gRPC request." - id: rpc.jsonrpc - prefix: rpc.jsonrpc type: span extends: rpc brief: 'Tech-specific attributes for [JSON RPC](https://www.jsonrpc.org/).' attributes: - - id: version + - id: rpc.jsonrpc.version type: string requirement_level: conditionally_required: If other than the default version (`1.0`) brief: "Protocol version as in `jsonrpc` property of request/response. Since JSON-RPC 1.0 does not specify this, the value can be omitted." examples: ['2.0', '1.0'] - - id: request_id + - id: rpc.jsonrpc.request_id type: string brief: > `id` property of request or response. @@ -177,13 +173,13 @@ groups: value is expected to be cast to string for simplicity. Use empty string in case of `null` value. Omit entirely if this is a notification. examples: ['10', 'request-7', ''] - - id: error_code + - id: rpc.jsonrpc.error_code type: int requirement_level: conditionally_required: If response is not successful. brief: "`error.code` property of response if it is an error response." examples: [-32700, 100] - - id: error_message + - id: rpc.jsonrpc.error_message type: string brief: "`error.message` property of response if it is an error response." examples: ['Parse error', 'User already exists'] @@ -194,11 +190,11 @@ groups: RPC conventions for more information. - id: rpc.message - prefix: "message" # TODO: Change the prefix to rpc.message? type: event brief: "RPC received/sent message." + name: message attributes: - - id: type + - id: message.type type: members: - id: sent @@ -206,24 +202,23 @@ groups: - id: received value: "RECEIVED" brief: "Whether this is a received or sent message." - - id: id + - id: message.id type: int brief: "MUST be calculated as two different counters starting from `1` one for sent messages and one for received message." note: "This way we guarantee that the values will be consistent between different implementations." - - id: compressed_size + - id: message.compressed_size type: int brief: "Compressed size of the message in bytes." - - id: uncompressed_size + - id: message.uncompressed_size type: int brief: "Uncompressed size of the message in bytes." - id: rpc.connect_rpc - prefix: rpc.connect_rpc type: span extends: rpc brief: 'Tech-specific attributes for Connect RPC.' attributes: - - id: error_code + - id: rpc.connect_rpc.error_code type: members: - id: cancelled diff --git a/crates/weaver_semconv/data/server.yaml b/crates/weaver_semconv/data/server.yaml index 85690b2d..4aab6a86 100644 --- a/crates/weaver_semconv/data/server.yaml +++ b/crates/weaver_semconv/data/server.yaml @@ -1,6 +1,5 @@ groups: - id: server - prefix: server type: attribute_group brief: > These attributes may be used to describe the server in a connection-based network interaction @@ -10,28 +9,28 @@ groups: protocol / API does not expose a clear notion of client and server). This also covers UDP network interactions where one side initiates the interaction, e.g. QUIC (HTTP/3) and DNS. attributes: - - id: address + - id: server.address type: string brief: Server address - domain name if available without reverse DNS lookup, otherwise IP address or Unix domain socket name. note: | When observed from the client side, and when communicating through an intermediary, `server.address` SHOULD represent the server address behind any intermediaries (e.g. proxies) if it's available. examples: ['example.com'] - - id: port + - id: server.port type: int brief: Server port number note: > When observed from the client side, and when communicating through an intermediary, `server.port` SHOULD represent the server port behind any intermediaries (e.g. proxies) if it's available. examples: [80, 8080, 443] - - id: socket.domain + - id: server.socket.domain type: string brief: Immediate server peer's domain name if available without reverse DNS lookup examples: ['proxy.example.com'] note: Typically observed from the client side, and represents a proxy or other intermediary domain name. requirement_level: recommended: If different than `server.address`. - - id: socket.address + - id: server.socket.address type: string brief: Server address of the socket connection - IP address or Unix domain socket name. note: > @@ -41,7 +40,7 @@ groups: examples: ['10.5.3.2'] requirement_level: recommended: If different than `server.address`. - - id: socket.port + - id: server.socket.port type: int brief: Server port number of the socket connection. note: > diff --git a/crates/weaver_semconv/data/source.yaml b/crates/weaver_semconv/data/source.yaml index 76feccfa..5bc668e6 100644 --- a/crates/weaver_semconv/data/source.yaml +++ b/crates/weaver_semconv/data/source.yaml @@ -1,6 +1,5 @@ groups: - id: source - prefix: source type: attribute_group brief: These attributes may be used to describe the sender of a network exchange/packet. These should be used when there is no client/server relationship between the two sides, or when that relationship is unknown. @@ -9,16 +8,16 @@ groups: This also covers unidirectional UDP flows and peer-to-peer communication where the "user-facing" surface of the protocol / API does not expose a clear notion of client and server. attributes: - - id: domain + - id: source.domain type: string brief: The domain name of the source system. examples: ['foo.example.com'] note: This value may be a host name, a fully qualified domain name, or another host naming format. - - id: address + - id: source.address type: string brief: 'Source address, for example IP address or Unix socket name.' examples: ['10.5.3.2'] - - id: port + - id: source.port type: int brief: 'Source port number' examples: [3389, 2888] \ No newline at end of file diff --git a/crates/weaver_semconv/data/tls.yaml b/crates/weaver_semconv/data/tls.yaml index d1dda483..19b724d8 100644 --- a/crates/weaver_semconv/data/tls.yaml +++ b/crates/weaver_semconv/data/tls.yaml @@ -1,10 +1,9 @@ groups: - id: registry.tls - prefix: tls type: attribute_group brief: "This document defines semantic convention attributes in the TLS namespace." attributes: - - id: cipher + - id: tls.cipher brief: > String indicating the [cipher](https://datatracker.ietf.org/doc/html/rfc5246#appendix-A.5) used during the current connection. type: string @@ -16,62 +15,62 @@ groups: "TLS_RSA_WITH_3DES_EDE_CBC_SHA", "TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256", ] - - id: client.certificate + - id: tls.client.certificate type: string brief: > PEM-encoded stand-alone certificate offered by the client. This is usually mutually-exclusive of `client.certificate_chain` since this value also exists in that list. examples: ["MII..."] - - id: client.certificate_chain + - id: tls.client.certificate_chain type: string[] brief: > Array of PEM-encoded certificates that make up the certificate chain offered by the client. This is usually mutually-exclusive of `client.certificate` since that value should be the first certificate in the chain. examples: [["MII..."], ["MI..."]] - - id: client.hash.md5 + - id: tls.client.hash.md5 type: string brief: > Certificate fingerprint using the MD5 digest of DER-encoded version of certificate offered by the client. For consistency with other hash values, this value should be formatted as an uppercase hash. examples: ["0F76C7F2C55BFD7D8E8B8F4BFBF0C9EC"] - - id: client.hash.sha1 + - id: tls.client.hash.sha1 type: string brief: > Certificate fingerprint using the SHA1 digest of DER-encoded version of certificate offered by the client. For consistency with other hash values, this value should be formatted as an uppercase hash. examples: ["9E393D93138888D288266C2D915214D1D1CCEB2A"] - - id: client.hash.sha256 + - id: tls.client.hash.sha256 type: string brief: > Certificate fingerprint using the SHA256 digest of DER-encoded version of certificate offered by the client. For consistency with other hash values, this value should be formatted as an uppercase hash. examples: ["0687F666A054EF17A08E2F2162EAB4CBC0D265E1D7875BE74BF3C712CA92DAF0"] - - id: client.issuer + - id: tls.client.issuer type: string brief: "Distinguished name of [subject](https://datatracker.ietf.org/doc/html/rfc5280#section-4.1.2.6) of the issuer of the x.509 certificate presented by the client." examples: ["CN=Example Root CA, OU=Infrastructure Team, DC=example, DC=com"] - - id: client.ja3 + - id: tls.client.ja3 type: string brief: "A hash that identifies clients based on how they perform an SSL/TLS handshake." examples: ["d4e5b18d6b55c71272893221c96ba240"] - - id: client.not_after + - id: tls.client.not_after type: string brief: "Date/Time indicating when client certificate is no longer considered valid." examples: ["2021-01-01T00:00:00.000Z"] - - id: client.not_before + - id: tls.client.not_before type: string brief: "Date/Time indicating when client certificate is first considered valid." examples: ["1970-01-01T00:00:00.000Z"] - - id: client.server_name + - id: tls.client.server_name type: string brief: "Also called an SNI, this tells the server which hostname to which the client is attempting to connect to." examples: ["opentelemetry.io"] - - id: client.subject + - id: tls.client.subject type: string brief: "Distinguished name of subject of the x.509 certificate presented by the client." examples: ["CN=myclient, OU=Documentation Team, DC=example, DC=com"] - - id: client.supported_ciphers + - id: tls.client.supported_ciphers type: string[] brief: Array of ciphers offered by the client during the client hello. examples: @@ -80,22 +79,22 @@ groups: ["TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384"], ["..."], ] - - id: curve + - id: tls.curve brief: "String indicating the curve used for the given cipher, when applicable" type: string examples: ["secp256r1"] - - id: established + - id: tls.established brief: "Boolean flag indicating if the TLS negotiation was successful and transitioned to an encrypted tunnel." type: boolean examples: [true] - - id: next_protocol + - id: tls.next_protocol brief: > String indicating the protocol being tunneled. Per the values in the [IANA registry](https://www.iana.org/assignments/tls-extensiontype-values/tls-extensiontype-values.xhtml#alpn-protocol-ids), this string should be lower case. type: string examples: ["http/1.1"] - - id: protocol.name + - id: tls.protocol.name brief: > Normalized lowercase protocol name parsed from original string of the negotiated [SSL/TLS protocol version](https://www.openssl.org/docs/man1.1.1/man3/SSL_get_version.html#RETURN-VALUES) type: @@ -105,63 +104,63 @@ groups: value: ssl - id: tls value: tls - - id: protocol.version + - id: tls.protocol.version brief: > Numeric part of the version parsed from the original string of the negotiated [SSL/TLS protocol version](https://www.openssl.org/docs/man1.1.1/man3/SSL_get_version.html#RETURN-VALUES) type: string examples: ["1.2", "3"] - - id: resumed + - id: tls.resumed brief: "Boolean flag indicating if this TLS connection was resumed from an existing TLS negotiation." type: boolean examples: [true] - - id: server.certificate + - id: tls.server.certificate type: string brief: > PEM-encoded stand-alone certificate offered by the server. This is usually mutually-exclusive of `server.certificate_chain` since this value also exists in that list. examples: ["MII..."] - - id: server.certificate_chain + - id: tls.server.certificate_chain type: string[] brief: > Array of PEM-encoded certificates that make up the certificate chain offered by the server. This is usually mutually-exclusive of `server.certificate` since that value should be the first certificate in the chain. examples: [["MII..."], ["MI..."]] - - id: server.hash.md5 + - id: tls.server.hash.md5 type: string brief: > Certificate fingerprint using the MD5 digest of DER-encoded version of certificate offered by the server. For consistency with other hash values, this value should be formatted as an uppercase hash. examples: ["0F76C7F2C55BFD7D8E8B8F4BFBF0C9EC"] - - id: server.hash.sha1 + - id: tls.server.hash.sha1 type: string brief: > Certificate fingerprint using the SHA1 digest of DER-encoded version of certificate offered by the server. For consistency with other hash values, this value should be formatted as an uppercase hash. examples: ["9E393D93138888D288266C2D915214D1D1CCEB2A"] - - id: server.hash.sha256 + - id: tls.server.hash.sha256 type: string brief: > Certificate fingerprint using the SHA256 digest of DER-encoded version of certificate offered by the server. For consistency with other hash values, this value should be formatted as an uppercase hash. examples: ["0687F666A054EF17A08E2F2162EAB4CBC0D265E1D7875BE74BF3C712CA92DAF0"] - - id: server.issuer + - id: tls.server.issuer type: string brief: "Distinguished name of [subject](https://datatracker.ietf.org/doc/html/rfc5280#section-4.1.2.6) of the issuer of the x.509 certificate presented by the client." examples: ["CN=Example Root CA, OU=Infrastructure Team, DC=example, DC=com"] - - id: server.ja3s + - id: tls.server.ja3s type: string brief: "A hash that identifies servers based on how they perform an SSL/TLS handshake." examples: ["d4e5b18d6b55c71272893221c96ba240"] - - id: server.not_after + - id: tls.server.not_after type: string brief: "Date/Time indicating when server certificate is no longer considered valid." examples: ["2021-01-01T00:00:00.000Z"] - - id: server.not_before + - id: tls.server.not_before type: string brief: "Date/Time indicating when server certificate is first considered valid." examples: ["1970-01-01T00:00:00.000Z"] - - id: server.subject + - id: tls.server.subject type: string brief: "Distinguished name of subject of the x.509 certificate presented by the server." examples: ["CN=myserver, OU=Documentation Team, DC=example, DC=com"] diff --git a/crates/weaver_semconv/data/trace-exception.yaml b/crates/weaver_semconv/data/trace-exception.yaml index 08e6420c..d44e9450 100644 --- a/crates/weaver_semconv/data/trace-exception.yaml +++ b/crates/weaver_semconv/data/trace-exception.yaml @@ -1,6 +1,6 @@ groups: - id: trace-exception - prefix: exception + name: exception type: event brief: > This document defines the attributes used to @@ -9,7 +9,7 @@ groups: - ref: exception.type - ref: exception.message - ref: exception.stacktrace - - id: escaped + - id: exception.escaped type: boolean brief: > SHOULD be set to true if the exception event is recorded at a point where diff --git a/crates/weaver_semconv/data/url.yaml b/crates/weaver_semconv/data/url.yaml index 815bf43d..de7f5fd2 100644 --- a/crates/weaver_semconv/data/url.yaml +++ b/crates/weaver_semconv/data/url.yaml @@ -2,13 +2,12 @@ groups: - id: url brief: Attributes describing URL. type: attribute_group - prefix: url attributes: - - id: scheme + - id: url.scheme type: string brief: 'The [URI scheme](https://www.rfc-editor.org/rfc/rfc3986#section-3.1) component identifying the used protocol.' examples: ["https", "ftp", "telnet"] - - id: full + - id: url.full type: string brief: Absolute URL describing a network resource according to [RFC3986](https://www.rfc-editor.org/rfc/rfc3986) note: > @@ -22,18 +21,18 @@ groups: and SHOULD NOT be validated or modified except for sanitizing purposes. examples: ['https://www.foo.bar/search?q=OpenTelemetry#SemConv', '//localhost'] tag: sensitive-information - - id: path + - id: url.path type: string brief: 'The [URI path](https://www.rfc-editor.org/rfc/rfc3986#section-3.3) component' examples: ['/search'] note: When missing, the value is assumed to be `/` - - id: query + - id: url.query type: string brief: 'The [URI query](https://www.rfc-editor.org/rfc/rfc3986#section-3.4) component' examples: ["q=OpenTelemetry"] note: Sensitive content provided in query string SHOULD be scrubbed when instrumentations can identify it. tag: sensitive-information - - id: fragment + - id: url.fragment type: string brief: 'The [URI fragment](https://www.rfc-editor.org/rfc/rfc3986#section-3.5) component' examples: ["SemConv"] \ No newline at end of file diff --git a/crates/weaver_semconv/data/user-agent.yaml b/crates/weaver_semconv/data/user-agent.yaml index 33fbafd2..73380d84 100644 --- a/crates/weaver_semconv/data/user-agent.yaml +++ b/crates/weaver_semconv/data/user-agent.yaml @@ -2,9 +2,8 @@ groups: - id: attributes.user_agent type: attribute_group brief: "Describes user-agent attributes." - prefix: user_agent attributes: - - id: original + - id: user_agent.original type: string brief: 'Value of the [HTTP User-Agent](https://www.rfc-editor.org/rfc/rfc9110.html#field.user-agent) header sent by the client.' examples: ['CERN-LineMode/2.15 libwww/2.17b3'] \ No newline at end of file diff --git a/crates/weaver_semconv/data/vm-metrics-experimental.yaml b/crates/weaver_semconv/data/vm-metrics-experimental.yaml index 8b2bec43..e019dabe 100644 --- a/crates/weaver_semconv/data/vm-metrics-experimental.yaml +++ b/crates/weaver_semconv/data/vm-metrics-experimental.yaml @@ -34,9 +34,8 @@ groups: - id: attributes.jvm.buffer type: attribute_group brief: "Describes JVM buffer metric attributes." - prefix: jvm.buffer attributes: - - id: pool.name + - id: jvm.buffer.pool.name type: string requirement_level: recommended brief: Name of the buffer pool.