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 PubSub+ event broker.

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 client-username object on the event broker that the client is bound to.

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 user_properties because the limit was exceeded. (The event broker supports up to a total of 8KiB of user property data).

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

 
Enqueue Events
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

 
Enqueue Event Attributes
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

 
Transaction Events
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 commit, and the status attribute will indicate why the commit failed. Expected values are: commit, rollback, prepare, end, session_timeout, and rollback_only .

Yes

 
Transaction Event Attributes
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

 
Baggage Propagation
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.