作为一款工程化完备的开发框架,GoFrame实现了标准化的分布式链路跟踪( Distributed Tracing )特性,通过GoFrame开发框架开发者可以非常简便地使用Trace特性。
GoFrame
Distributed Tracing
Trace
"日志内容中需要注入当前请求的TraceId,以方便通过日志快速查找定位问题点。组件可以自动识别当前请求链路是否开启Tracing特性,有则自动启动自身Tracing特性,并将TraceId自动读取出来输出到内容中;没有则忽略,什么也不会做。该特性是由glog组件实现,这需要开发者在输出日志的时候调用Ctx链式操作方法将context.Context上下文变量传递到当前输出日志操作链路中,没有没有传递context.Context上下文变量,就会丢失日志内容中的TraceId。"
TraceId
Tracing
glog
Ctx
context.Context
这里的 TraceId 是固定的还是取配置文件中日志配置参数:CtxKeys吗?
CtxKeys
不是。glog日志组件旧版本实现的一版链路跟踪信息不是标准化的。新版本会保留CtxKeys设计,并且新版本增加了标准化协议OpenTelemetry的支持,使得链路跟踪信息设置、获取和打印更加便捷,也就是说你无需再手动配置CtxKeys,日志组件会自动读取链路中的TraceId。此外,GoFrame未来版本中也会根据需要扩展原有的CtxKeys的能力。
OpenTelemetry
该sdk,如何实现关闭数据上报,如JAEGER_SAMPLER_PARAM=0采样率=0
sdk
JAEGER_SAMPLER_PARAM=0采样率=0
Jaeger是自己注册的,可以在注册Jaeger的时候自行配置。goframe里面的链路跟踪对接的是OpenTelemetry标准协议。
Jaeger
我如果不考虑链路跟踪这个功能, 我是不是直接塞一个全局的"ctx" 就可以了. 有点不习惯2.1的ctx. 这样做有没啥弊端.
想问下,这个链路跟踪。如果服务端内部有rpc的话,链路跟踪还能不能生效。
链路跟踪基础就是这个目的。
7 Comments
智刚
"日志内容中需要注入当前请求的
TraceId
,以方便通过日志快速查找定位问题点。组件可以自动识别当前请求链路是否开启Tracing
特性,有则自动启动自身Tracing
特性,并将TraceId
自动读取出来输出到内容中;没有则忽略,什么也不会做。该特性是由glog
组件实现,这需要开发者在输出日志的时候调用Ctx
链式操作方法将context.Context
上下文变量传递到当前输出日志操作链路中,没有没有传递context.Context
上下文变量,就会丢失日志内容中的TraceId
。"这里的
TraceId
是固定的还是取配置文件中日志配置参数:CtxKeys
吗?郭强
不是。
glog
日志组件旧版本实现的一版链路跟踪信息不是标准化的。新版本会保留CtxKeys
设计,并且新版本增加了标准化协议OpenTelemetry
的支持,使得链路跟踪信息设置、获取和打印更加便捷,也就是说你无需再手动配置CtxKeys
,日志组件会自动读取链路中的TraceId
。此外,GoFrame
未来版本中也会根据需要扩展原有的CtxKeys
的能力。Baob.wu
该
sdk
,如何实现关闭数据上报,如JAEGER_SAMPLER_PARAM=0采样率=0
郭强
Jaeger
是自己注册的,可以在注册Jaeger
的时候自行配置。goframe里面的链路跟踪对接的是OpenTelemetry
标准协议。小陈
我如果不考虑链路跟踪这个功能, 我是不是直接塞一个全局的"ctx" 就可以了. 有点不习惯2.1的ctx. 这样做有没啥弊端.
yangqibin
想问下,这个链路跟踪。如果服务端内部有rpc的话,链路跟踪还能不能生效。
郭强
链路跟踪基础就是这个目的。