
64
|
第
6
章
从这些请求头中提取信息,并添加到生成的
traceData
中的
trace_id
和
parent_id
内。
这些服务中的每一个都会将其生成的
span
发送到链路追踪后端。在后端,这些链路被拼
接在一起,用于创建瀑布式的可视化功能图以供查看。
生成的第一个 span 没有
trace ID 或者 span ID
,
所以必须创建
,
例如
:
TraceId
:
7627824
SpanId
:
f4c480e
图 6-3:示例 App 将接收
traceID
和
parentID
到每个子 span 中
当前已经了解探针收集的数据,创造了一个很有用的链路追踪视图。现在看一下还能向
span
中增加哪些内容以更有利于调试。
6.4 将自定义字段添加到链路 span
理解父子关系和执行时长是一个良好的开始,但因为在分布式系统中每个
span
的运行埋
点很深,所以通常除了必不可少的链路追踪数据外,最好添加其他字段以更好地理解每
个
span
。
例如,除了存储服务名以便于标识外,知道执行工作的精确主机及其是否涉及特定用户
可能会很有用。让我们修改例子,通过将这些细节作为键值对添加到链路追踪中来捕获
它们:
hostname, _ := os.Hostname()
traceData["tags"] = make(map[string]interface{})
traceData["tags"]["hostname"] = hostname
traceData["tags"]["user_name"] = name
也可以对例子进行扩展,以便捕获任何其他与调试有关的系统信息 ...