跳到主要内容

分布式追踪 OpenTelemetry Span字段

如上下文传播中所讨论的,消息追踪由在事件网格的每个点发出的跨度组成,这些跨度被 Solace Open Telemetry 接收器消费(并转换),并发送到您选择的后端,后端重新组装这些跨度,并提供事件消息的移动和处理的视觉视图。每个传递到后端的跨度由跨度字段组成,包括跨度属性(键值对)。

以下表格列出了发送到您的可观测性后端的事件消息中的 OpenTelemetry 跨度属性(由配置了 Solace Open Telemetry 接收器的 OpenTelemetry 收集器)。

有关追踪、跨度、跨度属性(键值对)等的更多信息,请参见 OpenTelemetry 追踪。

  • OpenTelemetry 规范属性
  • OpenTelemetry 语义约定属性
  • Solace 跨度属性
  • 弃用属性

OpenTelemetry 规范属性

这些是由 OpenTelemetry 定义的通用属性,适用于各种类型的系统上的跨度,提供识别、计时和上下文等元数据。

以下表格的内容基于 OpenTelemetry 规范版本 1.22.0。有关更多信息,请参见 OpenTelemetry 规范。

Span 属性类型描述示例属性出现在:
发送跨度接收跨度移动跨度删除跨度
------------
TraceId16字节数组与跨度关联的 traceID。4bf92f3577b34da6a3ce929d0e0e472aimg
SpanId8字节数组与跨度关联的 spanID。b3c2a1f3d1e0a3b4
TraceState键值对集合TraceState 是跨度上下文的一部分,有关更多信息请参见 OpenTelemetry - TraceState。vendor1=value1,vendor2=value2 ...
SpanKind枚举指定跨度在追踪中的角色。可以是 PRODUCERCONSUMERPRODUCER
StartTimeUnixNano整数跨度的开始时间戳。1693056000000000000
EndTimeUnixNano整数跨度的结束时间戳。1693056060000000000
Status枚举OpenTelemetry 跨度的状态。可以是 OKERRORUNSET 之一。OK
ParentSpanId8字节数组与父跨度关联的 spanID。b3c2a1f3d1e0a3b4

OpenTelemetry 语义约定属性

OpenTelemetry 语义约定属性是具有标准化命名约定的属性。它们用于以一致的方式描述不同系统中的常见操作、资源和事件。

以下表格的内容基于 OpenTelemetry 语义约定版本 1.26.0。OpenTelemetry 未来所做的任何更改可能需要对这些属性进行相应的更新。有关更多信息,请参见 OpenTelemetry 语义约定属性注册表。

Span 属性类型描述示例属性出现在:
发送跨度接收跨度移动跨度删除跨度
------------
messaging.system字符串事件网格的主要消息系统。SolacePubSub+
service.instance.id字符串事件代理的消息 VPN。my-production-vpn
service.version字符串事件代理的当前版本。10.10.1
service.name字符串当前服务的逻辑名称。solace-cloud-client
messaging.operation.name字符串消息系统特定的操作名称。可以是 receivesendmovedelete 之一。receive发送跨度
messaging.operation.type字符串标识消息操作类型的字符串。可以是:- receive—事件代理接收或入队的事件消息。- publish—事件代理发送给消费者或由消费者确认的事件消息。- move—移动到配置的死信队列的事件消息。- delete—由事件代理或管理员删除的事件消息。publish发送跨度
network.protocol.name字符串事件代理接收消息时使用的协议。可以是 SMFRESTAMQPMQTT 之一。SMF发送跨度
network.protocol.version字符串使用的协议版本。例如在 MQTT 中可以是 3.15.03.1
messaging.message.id字符串事件代理的应用消息 ID。这是一个用户定义的属性,允许应用程序为每条消息分配一个唯一的标识符。452a7c7c704887f1572b18fc2
messaging.message.conversation_id字符串消息的相关 ID,通常由消息生产者设置,用于在您的消息系统中关联消息。MyCorrelationID
messaging.message.body.size整数消息体的大小,单位为字节。1439
messaging.message.envelope.size整数消息体和元数据的大小,单位为字节。2738
messaging.destination.name字符串消息发布到的主题或队列。my/topic/destination
messaging.source.kind字符串消息(或批次)发布到的端点类型。可以是 queuetopicEndpointqueue
messaging.source.name字符串消息(或批次)原始的 Solace 主题或队列。my/publish/destination
server.address字符串事件代理接收消息的 IP 地址。10.1.2.80
server.port整数事件代理接收消息的端口。8080
network.peer.address字符串发布客户端的 IP 地址。10.1.2.80
network.peer.port整数发布客户端的端口。65123

Solace 跨度属性

Solace 跨度属性提供了使用 Solace 系统和应用程序的消息流的额外上下文和详细信息。

以下表格的内容准确反映了 PubSub+ 事件代理版本 10.10.1 或更高版本。

Span 属性类型描述示例属性出现在:
发送跨度接收跨度移动跨度删除跨度
------------
messaging.solace.partition_number整数事件代理中用于跨多个分区分发消息的队列或主题端点的分区号。3
messaging.solace.source.<br>partition_number 整数消息正在从中移动的队列或主题端点的分区号,如果该队列是分区队列。3
messaging.solace.destination.partition_number整数消息正在移动到的目标死信队列(DMQ)的分区号,如果该队列是分区队列。5发送跨度
messaging.solace.source.kind枚举消息源的类型。可以是 queuetopicEndpointqueue发送跨度
messaging.solace.client_username字符串客户端应用程序用于身份验证并连接到事件代理的客户用户名。user_admin发送跨度
messaging.solace.client_name字符串客户端名称是每个客户端连接到事件代理的唯一标识符。client1234发送跨度
messaging.solace.operation.reason枚举删除消息或将其移动到死信队列的原因。可以是以下之一:ttlExpired—消息的生存时间到期。rejectedNack—带有 Rejected 结果的负确认。maxRedeliveriesExceeded—最大重新交付次数达到或超过。hopCountExceeded—跳数超过(仅限删除跨度)。ingressSelector—目的地无法匹配任何入口选择器规则(仅限删除跨度)。adminAction—由管理员删除消息(仅限删除跨度)。ttlExpired发送跨度
messaging.solace.<br>replication_group_message_id字符串接收到的消息的复制组消息 ID,用于在复制组内唯一标识一条消息。0xA5F7D4E2B3C1A4F0
messaging.solace.priority整数发布消息的优先级,允许您控制从队列中交付消息的顺序。9
messaging.solace.ttl整数发布消息的生存时间(TTL),单位为毫秒。60000
messaging.solace.dmq_eligible布尔表示消息中设置了死信队列(DMQ)合格位。true
messaging.solace.<br>dropped_enqueue_events_success布尔表示丢弃消息的入队成功。true
messaging.solace.<br>dropped_enqueue_events_failed布尔表示丢弃消息的入队失败。true
messaging.solace.reply_to_topic字符串接收到的消息的回复主题。replyto/destination
messaging.solace.<br>broker_receive_time_unix_nano整数表示事件代理首次识别消息需要被追踪的时间。1693056060000000000
messaging.solace.dropped_application_message_properties布尔如果为 true,表示由于超出限制,消息中的不是所有用户属性都被捕捉到
user_properties 中。事件代理支持最多 8 KiB 的用户属性数据。true
messaging.solace.delivery_mode枚举消息的传递模式,可以是 persistentnon-persistentdirectpersistent
messaging.solace.message_replayed布尔表示消息是否已被事件代理重放。true
messaging.solace.send.outcome枚举显示发送消息的结果。可以是以下之一:- accepted - rejected - released - delivery failed - flow unbound - transaction commit - transaction commit failed - transaction rollbackaccepted
messaging.solace.user_properties.<...>字符串自定义跨度属性,其中 <...> 是用户分配的键。some-user-value-1
messaging.solace.destination.type枚举消息目的地的类型。可以是 queuetopicEndpointtopicEndpoint
messaging.solace.enqueue_error_message字符串描述入队操作失败原因的错误消息。"The specified queue does not exist"
messaging.solace.rejects_all_enqueues布尔表示此跨度中的所有其他非错误入队事件都被拒绝。换句话说,无论某些入队事件可能指示什么,消息都没有入队到任何 目的地。true
messaging.solace.ttl_override布尔TTL 覆盖用于设置或覆盖消息的 TTL 值,无论消息生产者指定的 TTL 如何。true
事务属性
messaging.solace.transaction_initiator字符串标识是否使用管理界面或客户端执行 ADMIN 操作。CLIENT
messaging.solace.transaction_id字符串事务 ID。所有属于同一事务的消息都具有相同的此 ID 值。tx12345-abcde-67890
messaging.solace.transacted_session_name字符串事务事件的本地 ID 名称。OrderProcessSession
messaging.solace.transacted_session_id字符串事务事件的本地 ID 类型。session-98765-zyxwv
messaging.solace.<br>transaction_error_message字符串描述事务操作失败原因。"Transaction timeout due to network delay"
messaging.solace.transaction_xid字符串XA 事务的事务 IDxid-45678-pqrst-12345
行李传播
<br> messaging.solace.message.baggage.<br><BAGGAGE_KEY_NAME>字符串提供通过上下文传播提供的行李键名称关联的值。region=us-west
<br> messaging.solace.message.<br>baggage_metadata.<BAGGAGE_KEY_NAME>字符串提供通过上下文传播提供的行李键名称关联的元数据值。log=true

弃用属性

以下字段在 PubSub+ 事件代理版本 10.10.1 中已被弃用:

弃用属性替代属性
messaging.protocolnetwork.protocol.name
messaging.protocol_versionnetwork.protocol.version
messaging.message_idmessaging.message.id
messaging.conversation_idmessaging.message.conversation_id
messaging.message.payload_size_bytes- messaging.message.body.size
  • messaging.message.envelope.size | | net.host.ip | server.address | | net.host.port | server.port | | net.peer.ip | network.peer.address | | net.peer.port | network.peer.port | | messaging.operation | - messaging.operation.name
  • messaging.operation.type | | messaging.destination | messaging.destination.name | | messaging.solace.destination_type | messaging.solace.destination.type |