Skywalking是一个偏向APM的分布式追踪系统,所以,为了提供服务端处理性能。头信息会比其他的追踪系统要更复杂一些。 你会发现,这个头信息,更像一个商业APM系统,并且,一些商业APM系统的头信息,比我们的要复杂的多。
sw3
|
分隔,包含以下内容消息头使用sw3,因为此协议始于SkyWalking 3.x版本。
Trace segment,即分布式调用链片段。这个ID为此调用链片段全局唯一ID。此ID由一次分布式调用链的一个线程执行过程独享(在Java模型中)。ID由三个Long型组成,如: "1.2343.234234234
application instance id
),此ID通过注册接口由Collector分配。一般取值范围为整形,利于protobuf传输。如果你使用其他语言实现探针,你只需要保证你的ID由三个Long型构成,并全局唯一,不必完全遵守Java的ID生成规则。
一个整数,在trace segment内唯一,从0开始自增。
父级应用节点的应用实例ID。如:在一个RPC调用中,HEAD中是客户端的应用实例ID。
入口应用节点的应用实例ID。如:在一个分布式链路A->B->C
中,此字段为A
应用的实例ID。
服务端的Peer Host或Peer Id。如:客户端使用182.14.39.1:9080
服务端,则这个就是对应的Peer Host。
此值可以通过Collector服务获得对应的ID。如果非ID,则使用#
开头,如果使用ID,则为整数类型。
调用链入口节点的应用实例下,入口Span的operation name或id。
此值可以通过Collector服务获得对应的ID。如果非ID,则使用#
开头,如果使用ID,则为整数类型。
调用链父级节点的应用实例下,入口Span的operation name或id。
此值可以通过Collector服务获得对应的ID。如果非ID,则使用#
开头,如果使用ID,则为整数类型。
分布式链路ID一般是整个调用链的全局唯一ID。如果针对批量消费情况,这个ID是批量中,第一个生产者的trace ID。此ID生成规则和Trace Segment Id
一致,由三个Long型数字构成。
value值示例:
1.2343.234234234|1|1|1|#127.0.0.1:8080|#/portal/|#/testEntrySpan|1.2343.234234234
1.2343.234234234|1|1|1|#127.0.0.1:8080|#/portal/|1038|1.2343.234234234