Distributed Tracing OpenTelemetry Span Fields
As discussed in Context Propagation, message traces are made up of spans that are emitted at each point along the event mesh, consumed (and converted) by the Solace Open Telemetry Receiver, and sent to your chosen backend, which reassembles these spans and provides a visual view of the movement and processing of an event message. Each span that passes to the backend is made up of span fields and include span attributes (key-value pairs).
These tables list the OpenTelemetry span attributes in the event message that are sent to your observability backend (from the OpenTelemetry Collector with a configured Solace Open Telemetry Receiver).
Span Attribute | Description | Required? |
---|---|---|
TraceId |
The traceID associated with the span. |
Yes, by OpenTelemetry |
SpanId |
The spanID associated with the span. |
Yes, by OpenTelemetry |
TraceState |
The state of the span trace. |
No |
Kind |
The kind of span as per OpenTelemetry specifications (always Client). |
Yes, by OpenTelemetry |
StartTimeUnixNano |
The start timestamp of the span. |
Yes, by OpenTelemetry |
EndTimeUnixNano |
The end timestamp of the span. |
Yes by OpenTelemetry |
Status |
The status of the OpenTelemetry span. |
No |
ParentSpanId |
The spanID associated with the parent span. |
No |
messaging.system |
The main messaging system of the event mesh. |
Yes, by Solace |
messaging.name |
The name of the event broker. |
Yes, by OpenTelemetry |
service.instance.id |
The message VPN of the event broker. |
Yes, by Solace |
service.version |
The current version of the event broker. |
Yes, by Solace |
messaging.operation |
The span operation (Receive or Send). |
Yes, by Solace |
messaging.protocol |
The protocol used when the message was received by the event broker. Expected values are: SMF, REST, AMQP, MQTT. |
No |
messaging.protocol_version |
The version of protocol used (For MQTT, it may be 3.1 or 5.0). |
No |
messaging.message_id |
Application message ID of the |
No |
messaging.conversation_id |
The correlationID (or conversation ID) of the message. |
No |
messaging.message_payload_size_bytes |
The sum of the binary, XML, and metadata attachment sizes in the message payload. |
No |
messaging.solace.client_username |
The name of the |
No |
messaging.solace.client_name |
The name of the client that is unique among all other clients on the event broker. |
No |
messaging.solace.replication_group_message_id |
The replication group message ID of the received message. |
No |
messaging.solace.priority |
The priority of the published message. |
No |
messaging.solace.ttl |
The TTL of the published message. |
No |
messaging.solace.dmq_eligible |
Indicates that the DMQ eligible bit was set in the message. |
No |
messaging.solace.dropped_enqueue_events_success |
Indicates that the enqueueing of a dropped message succeeded. |
No |
messaging.solace.dropped_enqueue_events_failed |
Indicates that the enqueueing of a dropped message failed. |
No |
messaging.solace.reply_to_topic |
The reply-to topic of the received message. |
No |
messaging.solace.broker_receive_time_unix_nano |
Indicates when the event broker first identifies that a message is to be traced. |
No |
messaging.solace.dropped_application_message_properties |
If true, indicates that not all user properties in the message were captured in
the |
No |
messaging.solace.delivery_mode |
The delivery mode of the message (Persistent, Non-Persistent, or Direct). |
No |
messaging.source.kind |
The type of the messaging source (queue or topic-endpoint). |
Yes, by Solace |
messaging.solace.message_replayed |
Indicates whether the message has been replayed by the event broker. |
No |
messaging.solace.send.outcome |
Displays the outcome of the sent message (accepted, rejected, released, delivery failed, flow unbound, transaction commit, transaction commit failed, and transaction rollback). |
Yes, by Solace |
net.host.ip |
The IP Address that the event broker received the message on. |
No |
net.host.port |
The port that the event broker received the message on. |
No |
net.peer.ip |
The IP Address of the publishing client. |
No |
net.peer.port |
The port of the publishing client. |
No |
Span Attribute | Description | Required? |
---|---|---|
event SetTimestamp(..) |
The timestamp of when the enqueue decision was made. |
Yes |
event SetName(..) |
The name of the enqueued queue or endpoint. |
Yes |
Span Attribute | Description | Required? |
---|---|---|
messaging.solace.destination_type |
The type of the message destination (queue or topic-endpoint). |
Yes |
messaging.solace.partition_number |
The number of the partition that the message was enqueued upon in a partitioned queue. |
No |
messaging.solace.enqueue_error_message |
Describes why an enqueue operation failed. |
No |
messaging.solace.rejects_all_enqueues |
Indicates that all other non-error enqueue events in this span are rejected. In other words, the message is not enqueued to any destination, regardless of what some enqueue events may indicate. |
No |
Span Attribute | Description | Required? |
---|---|---|
event SetTimestamp |
The timestamp of the initial decision for this message as part of the transaction operation. |
Yes |
event SetName |
The name of the transaction event. For example, if a client requests a commit but the transaction rolls back due to an error, the name of the transaction event will be |
Yes |
Span Attribute | Description | Required? |
---|---|---|
messaging.solace.transaction_initiator |
Identifies if the (ADMIN) operation was performed using the management interface or by the CLIENT. |
Yes |
messaging.solace.transaction_id |
The transaction ID. All messages that are part of the same transaction have the same value for this ID. |
No |
messaging.solace.transacted_session_name |
The name of the local ID of the transaction event. |
No |
messaging.solace.transacted_session_id |
The type of the local ID of the transaction event. |
No |
messaging.solace.transaction_error_message |
Describes why a transaction operation failed. |
No |
Span Attribute | Description | Required? |
---|---|---|
messaging.solace.message.baggage.<BAGGAGE_KEY NAME> |
Provides the value associated with the Baggage Key Name that is provided through context propagation. |
No |
messaging.solace.message.baggage_metadata.<BAGGAGE_KEY NAME> |
Provides the metadata value associated with the Baggage Key Name that is provided through context propagation. |
No |
For more information on traces, spans, span attributes (key-value pairs), and more, see OpenTelemetry Traces.