Document `messaging.operation.name` for azure messaging systems (#942)
This commit is contained in:
parent
cde003cd37
commit
8a309d0cf9
|
|
@ -0,0 +1,4 @@
|
||||||
|
change_type: enhancement
|
||||||
|
component: messaging
|
||||||
|
note: Document `messaging.operation.name` for Azure messaging systems.
|
||||||
|
issues: [942]
|
||||||
|
|
@ -2,7 +2,7 @@
|
||||||
linkTitle: Azure Messaging
|
linkTitle: Azure Messaging
|
||||||
--->
|
--->
|
||||||
|
|
||||||
# Semantic Conventions for Azure Messaging systems
|
# Semantic Conventions for Azure Messaging Systems
|
||||||
|
|
||||||
**Status**: [Experimental][DocumentStatus]
|
**Status**: [Experimental][DocumentStatus]
|
||||||
|
|
||||||
|
|
@ -24,21 +24,32 @@ The following additional attributes are defined:
|
||||||
|
|
||||||
| Attribute | Type | Description | Examples | [Requirement Level](https://opentelemetry.io/docs/specs/semconv/general/attribute-requirement-level/) | Stability |
|
| Attribute | Type | Description | Examples | [Requirement Level](https://opentelemetry.io/docs/specs/semconv/general/attribute-requirement-level/) | Stability |
|
||||||
|---|---|---|---|---|---|
|
|---|---|---|---|---|---|
|
||||||
| [`messaging.operation.name`](/docs/attributes-registry/messaging.md) | string | Azure Service Bus operation name. | `send`; `receive`; `complete`; `process`; `peek` | `Required` |  |
|
| [`messaging.operation.name`](/docs/attributes-registry/messaging.md) | string | Azure Service Bus operation name. [1] | `send`; `receive`; `complete`; `process`; `peek` | `Required` |  |
|
||||||
| [`error.type`](/docs/attributes-registry/error.md) | string | Describes a class of error the operation ended with. [1] | `amqp:decode-error`; `KAFKA_STORAGE_ERROR`; `channel-error` | `Conditionally Required` If and only if the messaging operation has failed. |  |
|
| [`error.type`](/docs/attributes-registry/error.md) | string | Describes a class of error the operation ended with. [2] | `amqp:decode-error`; `KAFKA_STORAGE_ERROR`; `channel-error` | `Conditionally Required` If and only if the messaging operation has failed. |  |
|
||||||
| [`messaging.batch.message_count`](/docs/attributes-registry/messaging.md) | int | The number of messages sent, received, or processed in the scope of the batching operation. [2] | `0`; `1`; `2` | `Conditionally Required` [3] |  |
|
| [`messaging.batch.message_count`](/docs/attributes-registry/messaging.md) | int | The number of messages sent, received, or processed in the scope of the batching operation. [3] | `0`; `1`; `2` | `Conditionally Required` [4] |  |
|
||||||
| [`messaging.destination.name`](/docs/attributes-registry/messaging.md) | string | The message destination name [4] | `MyQueue`; `MyTopic` | `Conditionally Required` [5] |  |
|
| [`messaging.destination.name`](/docs/attributes-registry/messaging.md) | string | The message destination name [5] | `MyQueue`; `MyTopic` | `Conditionally Required` [6] |  |
|
||||||
| [`messaging.operation.type`](/docs/attributes-registry/messaging.md) | string | A string identifying the type of the messaging operation. [6] | `publish`; `create`; `receive` | `Conditionally Required` If applicable. |  |
|
| [`messaging.operation.type`](/docs/attributes-registry/messaging.md) | string | A string identifying the type of the messaging operation. [7] | `publish`; `create`; `receive` | `Conditionally Required` If applicable. |  |
|
||||||
| [`messaging.servicebus.destination.subscription_name`](/docs/attributes-registry/messaging.md) | string | The name of the subscription in the topic messages are received from. | `mySubscription` | `Conditionally Required` If messages are received from the subscription. |  |
|
| [`messaging.servicebus.destination.subscription_name`](/docs/attributes-registry/messaging.md) | string | The name of the subscription in the topic messages are received from. | `mySubscription` | `Conditionally Required` If messages are received from the subscription. |  |
|
||||||
| [`messaging.servicebus.disposition_status`](/docs/attributes-registry/messaging.md) | string | Describes the [settlement type](https://learn.microsoft.com/azure/service-bus-messaging/message-transfers-locks-settlement#peeklock). | `complete`; `abandon`; `dead_letter` | `Conditionally Required` if and only if `messaging.operation` is `settle`. |  |
|
| [`messaging.servicebus.disposition_status`](/docs/attributes-registry/messaging.md) | string | Describes the [settlement type](https://learn.microsoft.com/azure/service-bus-messaging/message-transfers-locks-settlement#peeklock). | `complete`; `abandon`; `dead_letter` | `Conditionally Required` if and only if `messaging.operation` is `settle`. |  |
|
||||||
| [`messaging.servicebus.message.delivery_count`](/docs/attributes-registry/messaging.md) | int | Number of deliveries that have been attempted for this message. | `2` | `Conditionally Required` [7] |  |
|
| [`messaging.servicebus.message.delivery_count`](/docs/attributes-registry/messaging.md) | int | Number of deliveries that have been attempted for this message. | `2` | `Conditionally Required` [8] |  |
|
||||||
| [`server.address`](/docs/attributes-registry/server.md) | string | Server domain name if available without reverse DNS lookup; otherwise, IP address or Unix domain socket name. [8] | `example.com`; `10.1.2.80`; `/tmp/my.sock` | `Conditionally Required` If available. |  |
|
| [`server.address`](/docs/attributes-registry/server.md) | string | Server domain name if available without reverse DNS lookup; otherwise, IP address or Unix domain socket name. [9] | `example.com`; `10.1.2.80`; `/tmp/my.sock` | `Conditionally Required` If available. |  |
|
||||||
| [`messaging.message.conversation_id`](/docs/attributes-registry/messaging.md) | string | Message [correlation Id](https://learn.microsoft.com/azure/service-bus-messaging/service-bus-messages-payloads#message-routing-and-correlation) property. | `MyConversationId` | `Recommended` |  |
|
| [`messaging.message.conversation_id`](/docs/attributes-registry/messaging.md) | string | Message [correlation Id](https://learn.microsoft.com/azure/service-bus-messaging/service-bus-messages-payloads#message-routing-and-correlation) property. | `MyConversationId` | `Recommended` |  |
|
||||||
| [`messaging.message.id`](/docs/attributes-registry/messaging.md) | string | A value used by the messaging system as an identifier for the message, represented as a string. | `452a7c7c7c7048c2f887f61572b18fc2` | `Recommended` If span describes operation on a single message. |  |
|
| [`messaging.message.id`](/docs/attributes-registry/messaging.md) | string | A value used by the messaging system as an identifier for the message, represented as a string. | `452a7c7c7c7048c2f887f61572b18fc2` | `Recommended` If span describes operation on a single message. |  |
|
||||||
| [`messaging.servicebus.message.enqueued_time`](/docs/attributes-registry/messaging.md) | int | The UTC epoch seconds at which the message has been accepted and stored in the entity. | `1701393730` | `Recommended` |  |
|
| [`messaging.servicebus.message.enqueued_time`](/docs/attributes-registry/messaging.md) | int | The UTC epoch seconds at which the message has been accepted and stored in the entity. | `1701393730` | `Recommended` |  |
|
||||||
| [`server.port`](/docs/attributes-registry/server.md) | int | Server port number. [9] | `80`; `8080`; `443` | `Recommended` |  |
|
| [`server.port`](/docs/attributes-registry/server.md) | int | Server port number. [10] | `80`; `8080`; `443` | `Recommended` |  |
|
||||||
|
|
||||||
**[1]:** The `error.type` SHOULD be predictable, and SHOULD have low cardinality.
|
**[1]:** The operation name SHOULD match one of the following values:
|
||||||
|
|
||||||
|
- sender operations: `send`, `schedule`, `cancel_scheduled`
|
||||||
|
- transaction operations: `create_transaction`, `commit_transaction`, `rollback_transaction`
|
||||||
|
- receiver operation: `receive`, `peek`, `receive_deferred`, `renew_message_lock`
|
||||||
|
- settlement operations: `abandon`, `complete`, `defer`, `dead_letter`, `delete`
|
||||||
|
- session operations: `accept_session`, `get_session_state`, `set_session_state`, `renew_session_lock`
|
||||||
|
|
||||||
|
If none of the above operation names apply, the attribute SHOULD be set
|
||||||
|
to the name of the client method in snake_case.
|
||||||
|
|
||||||
|
**[2]:** The `error.type` SHOULD be predictable, and SHOULD have low cardinality.
|
||||||
|
|
||||||
When `error.type` is set to a type (e.g., an exception type), its
|
When `error.type` is set to a type (e.g., an exception type), its
|
||||||
canonical class name identifying the type within the artifact SHOULD be used.
|
canonical class name identifying the type within the artifact SHOULD be used.
|
||||||
|
|
@ -58,22 +69,22 @@ it's RECOMMENDED to:
|
||||||
* Use a domain-specific attribute
|
* Use a domain-specific attribute
|
||||||
* Set `error.type` to capture all errors, regardless of whether they are defined within the domain-specific set or not.
|
* Set `error.type` to capture all errors, regardless of whether they are defined within the domain-specific set or not.
|
||||||
|
|
||||||
**[2]:** Instrumentations SHOULD NOT set `messaging.batch.message_count` on spans that operate with a single message. 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.
|
**[3]:** Instrumentations SHOULD NOT set `messaging.batch.message_count` on spans that operate with a single message. 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.
|
||||||
|
|
||||||
**[3]:** If the span describes an operation on a batch of messages.
|
**[4]:** If the span describes an operation on a batch of messages.
|
||||||
|
|
||||||
**[4]:** Destination name SHOULD uniquely identify a specific queue, topic or other entity within the broker. If
|
**[5]:** Destination name SHOULD uniquely identify a specific queue, topic or other entity within the broker. If
|
||||||
the broker doesn't have such notion, the destination name SHOULD uniquely identify the broker.
|
the broker doesn't have such notion, the destination name SHOULD uniquely identify the broker.
|
||||||
|
|
||||||
**[5]:** If span describes operation on a single message or if the value applies to all messages in the batch.
|
**[6]:** If span describes operation on a single message or if the value applies to all messages in the batch.
|
||||||
|
|
||||||
**[6]:** If a custom value is used, it MUST be of low cardinality.
|
**[7]:** If a custom value is used, it MUST be of low cardinality.
|
||||||
|
|
||||||
**[7]:** If delivery count is available and is bigger than 0.
|
**[8]:** If delivery count is available and is bigger than 0.
|
||||||
|
|
||||||
**[8]:** Server domain name of the broker if available without reverse DNS lookup; otherwise, IP address or Unix domain socket name.
|
**[9]:** Server domain name of the broker if available without reverse DNS lookup; otherwise, IP address or Unix domain socket name.
|
||||||
|
|
||||||
**[9]:** When observed from the client side, and when communicating through an intermediary, `server.port` SHOULD represent the server port behind any intermediaries, for example proxies, if it's available.
|
**[10]:** When observed from the client side, and when communicating through an intermediary, `server.port` SHOULD represent the server port behind any intermediaries, for example proxies, if it's available.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -127,19 +138,31 @@ The following additional attributes are defined:
|
||||||
|
|
||||||
| Attribute | Type | Description | Examples | [Requirement Level](https://opentelemetry.io/docs/specs/semconv/general/attribute-requirement-level/) | Stability |
|
| Attribute | Type | Description | Examples | [Requirement Level](https://opentelemetry.io/docs/specs/semconv/general/attribute-requirement-level/) | Stability |
|
||||||
|---|---|---|---|---|---|
|
|---|---|---|---|---|---|
|
||||||
| [`messaging.operation.name`](/docs/attributes-registry/messaging.md) | string | Azure Event Hubs operation name. | `send`; `receive`; `checkpoint` | `Required` |  |
|
| [`messaging.operation.name`](/docs/attributes-registry/messaging.md) | string | Azure Event Hubs operation name. [1] | `send`; `receive`; `checkpoint` | `Required` |  |
|
||||||
| [`error.type`](/docs/attributes-registry/error.md) | string | Describes a class of error the operation ended with. [1] | `amqp:decode-error`; `KAFKA_STORAGE_ERROR`; `channel-error` | `Conditionally Required` If and only if the messaging operation has failed. |  |
|
| [`error.type`](/docs/attributes-registry/error.md) | string | Describes a class of error the operation ended with. [2] | `amqp:decode-error`; `KAFKA_STORAGE_ERROR`; `channel-error` | `Conditionally Required` If and only if the messaging operation has failed. |  |
|
||||||
| [`messaging.batch.message_count`](/docs/attributes-registry/messaging.md) | int | The number of messages sent, received, or processed in the scope of the batching operation. [2] | `0`; `1`; `2` | `Conditionally Required` [3] |  |
|
| [`messaging.batch.message_count`](/docs/attributes-registry/messaging.md) | int | The number of messages sent, received, or processed in the scope of the batching operation. [3] | `0`; `1`; `2` | `Conditionally Required` [4] |  |
|
||||||
| [`messaging.destination.name`](/docs/attributes-registry/messaging.md) | string | The message destination name [4] | `MyQueue`; `MyTopic` | `Conditionally Required` [5] |  |
|
| [`messaging.destination.name`](/docs/attributes-registry/messaging.md) | string | The message destination name [5] | `MyQueue`; `MyTopic` | `Conditionally Required` [6] |  |
|
||||||
| [`messaging.destination.partition.id`](/docs/attributes-registry/messaging.md) | string | String representation of the partition id messages are sent to or received from, unique within the Event Hub. | `1` | `Conditionally Required` If available. |  |
|
| [`messaging.destination.partition.id`](/docs/attributes-registry/messaging.md) | string | String representation of the partition id messages are sent to or received from, unique within the Event Hub. | `1` | `Conditionally Required` If available. |  |
|
||||||
| [`messaging.eventhubs.consumer.group`](/docs/attributes-registry/messaging.md) | string | The name of the consumer group the event consumer is associated with. | `indexer` | `Conditionally Required` If not default ("$Default"). |  |
|
| [`messaging.eventhubs.consumer.group`](/docs/attributes-registry/messaging.md) | string | The name of the consumer group the event consumer is associated with. | `indexer` | `Conditionally Required` If not default ("$Default"). |  |
|
||||||
| [`messaging.operation.type`](/docs/attributes-registry/messaging.md) | string | A string identifying the type of the messaging operation. [6] | `publish`; `create`; `receive` | `Conditionally Required` If applicable. |  |
|
| [`messaging.operation.type`](/docs/attributes-registry/messaging.md) | string | A string identifying the type of the messaging operation. [7] | `publish`; `create`; `receive` | `Conditionally Required` If applicable. |  |
|
||||||
| [`server.address`](/docs/attributes-registry/server.md) | string | Server domain name if available without reverse DNS lookup; otherwise, IP address or Unix domain socket name. [7] | `example.com`; `10.1.2.80`; `/tmp/my.sock` | `Conditionally Required` If available. |  |
|
| [`server.address`](/docs/attributes-registry/server.md) | string | Server domain name if available without reverse DNS lookup; otherwise, IP address or Unix domain socket name. [8] | `example.com`; `10.1.2.80`; `/tmp/my.sock` | `Conditionally Required` If available. |  |
|
||||||
| [`messaging.eventhubs.message.enqueued_time`](/docs/attributes-registry/messaging.md) | int | The UTC epoch seconds at which the message has been accepted and stored in the entity. | `1701393730` | `Recommended` |  |
|
| [`messaging.eventhubs.message.enqueued_time`](/docs/attributes-registry/messaging.md) | int | The UTC epoch seconds at which the message has been accepted and stored in the entity. | `1701393730` | `Recommended` |  |
|
||||||
| [`messaging.message.id`](/docs/attributes-registry/messaging.md) | string | A value used by the messaging system as an identifier for the message, represented as a string. | `452a7c7c7c7048c2f887f61572b18fc2` | `Recommended` If span describes operation on a single message. |  |
|
| [`messaging.message.id`](/docs/attributes-registry/messaging.md) | string | A value used by the messaging system as an identifier for the message, represented as a string. | `452a7c7c7c7048c2f887f61572b18fc2` | `Recommended` If span describes operation on a single message. |  |
|
||||||
| [`server.port`](/docs/attributes-registry/server.md) | int | Server port number. [8] | `80`; `8080`; `443` | `Recommended` |  |
|
| [`server.port`](/docs/attributes-registry/server.md) | int | Server port number. [9] | `80`; `8080`; `443` | `Recommended` |  |
|
||||||
|
|
||||||
**[1]:** The `error.type` SHOULD be predictable, and SHOULD have low cardinality.
|
**[1]:** The operation name SHOULD match one of the following values:
|
||||||
|
|
||||||
|
- `send`
|
||||||
|
- `receive`
|
||||||
|
- `process`
|
||||||
|
- `checkpoint`
|
||||||
|
- `get_partition_properties`
|
||||||
|
- `get_event_hub_properties`
|
||||||
|
|
||||||
|
If none of the above operation names apply, the attribute SHOULD be set
|
||||||
|
to the name of the client method in snake_case.
|
||||||
|
|
||||||
|
**[2]:** The `error.type` SHOULD be predictable, and SHOULD have low cardinality.
|
||||||
|
|
||||||
When `error.type` is set to a type (e.g., an exception type), its
|
When `error.type` is set to a type (e.g., an exception type), its
|
||||||
canonical class name identifying the type within the artifact SHOULD be used.
|
canonical class name identifying the type within the artifact SHOULD be used.
|
||||||
|
|
@ -159,20 +182,20 @@ it's RECOMMENDED to:
|
||||||
* Use a domain-specific attribute
|
* Use a domain-specific attribute
|
||||||
* Set `error.type` to capture all errors, regardless of whether they are defined within the domain-specific set or not.
|
* Set `error.type` to capture all errors, regardless of whether they are defined within the domain-specific set or not.
|
||||||
|
|
||||||
**[2]:** Instrumentations SHOULD NOT set `messaging.batch.message_count` on spans that operate with a single message. 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.
|
**[3]:** Instrumentations SHOULD NOT set `messaging.batch.message_count` on spans that operate with a single message. 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.
|
||||||
|
|
||||||
**[3]:** If the span describes an operation on a batch of messages.
|
**[4]:** If the span describes an operation on a batch of messages.
|
||||||
|
|
||||||
**[4]:** Destination name SHOULD uniquely identify a specific queue, topic or other entity within the broker. If
|
**[5]:** Destination name SHOULD uniquely identify a specific queue, topic or other entity within the broker. If
|
||||||
the broker doesn't have such notion, the destination name SHOULD uniquely identify the broker.
|
the broker doesn't have such notion, the destination name SHOULD uniquely identify the broker.
|
||||||
|
|
||||||
**[5]:** If span describes operation on a single message or if the value applies to all messages in the batch.
|
**[6]:** If span describes operation on a single message or if the value applies to all messages in the batch.
|
||||||
|
|
||||||
**[6]:** If a custom value is used, it MUST be of low cardinality.
|
**[7]:** If a custom value is used, it MUST be of low cardinality.
|
||||||
|
|
||||||
**[7]:** Server domain name of the broker if available without reverse DNS lookup; otherwise, IP address or Unix domain socket name.
|
**[8]:** Server domain name of the broker if available without reverse DNS lookup; otherwise, IP address or Unix domain socket name.
|
||||||
|
|
||||||
**[8]:** When observed from the client side, and when communicating through an intermediary, `server.port` SHOULD represent the server port behind any intermediaries, for example proxies, if it's available.
|
**[9]:** When observed from the client side, and when communicating through an intermediary, `server.port` SHOULD represent the server port behind any intermediaries, for example proxies, if it's available.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -245,6 +245,18 @@ groups:
|
||||||
conditionally_required: If the span describes an operation on a batch of messages.
|
conditionally_required: If the span describes an operation on a batch of messages.
|
||||||
- ref: messaging.operation.name
|
- ref: messaging.operation.name
|
||||||
brief: Azure Service Bus operation name.
|
brief: Azure Service Bus operation name.
|
||||||
|
note: |
|
||||||
|
The operation name SHOULD match one of the following values:
|
||||||
|
|
||||||
|
- sender operations: `send`, `schedule`, `cancel_scheduled`
|
||||||
|
- transaction operations: `create_transaction`, `commit_transaction`, `rollback_transaction`
|
||||||
|
- receiver operation: `receive`, `peek`, `receive_deferred`, `renew_message_lock`
|
||||||
|
- settlement operations: `abandon`, `complete`, `defer`, `dead_letter`, `delete`
|
||||||
|
- session operations: `accept_session`, `get_session_state`, `set_session_state`, `renew_session_lock`
|
||||||
|
|
||||||
|
If none of the above operation names apply, the attribute SHOULD be set
|
||||||
|
to the name of the client method in snake_case.
|
||||||
|
|
||||||
examples: ['send', 'receive', 'complete', 'process', 'peek']
|
examples: ['send', 'receive', 'complete', 'process', 'peek']
|
||||||
|
|
||||||
- id: messaging.eventhubs
|
- id: messaging.eventhubs
|
||||||
|
|
@ -268,3 +280,15 @@ groups:
|
||||||
- ref: messaging.operation.name
|
- ref: messaging.operation.name
|
||||||
brief: Azure Event Hubs operation name.
|
brief: Azure Event Hubs operation name.
|
||||||
examples: ['send', 'receive', 'checkpoint']
|
examples: ['send', 'receive', 'checkpoint']
|
||||||
|
note: |
|
||||||
|
The operation name SHOULD match one of the following values:
|
||||||
|
|
||||||
|
- `send`
|
||||||
|
- `receive`
|
||||||
|
- `process`
|
||||||
|
- `checkpoint`
|
||||||
|
- `get_partition_properties`
|
||||||
|
- `get_event_hub_properties`
|
||||||
|
|
||||||
|
If none of the above operation names apply, the attribute SHOULD be set
|
||||||
|
to the name of the client method in snake_case.
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue