云服务中的日志追踪与Knative服务实践
追踪上下文与分布式追踪
在处理请求时,特别是当应用被拆分为多个微服务协同工作时,我们希望将不同服务的请求日志关联起来。例如,当处理一个请求并需要调用另一个Cloud Run服务时,我们期望看到第一个请求和第二个请求的日志被分组在一起。这样,当下游服务出现问题时,我们能清楚了解调用它的服务中发生了什么。
分布式追踪是一个成熟且复杂的主题,这里只是做了一个实用的初步介绍。
当捕获传入的追踪头并将追踪ID转发到服务发出的请求时,Cloud Logging会将所有请求添加到同一追踪中。GFE(Google Front End)总是会在传入请求中添加 X-Cloud-Trace-Context 头,并保留已有该头的请求中的追踪ID。
在Go中实现追踪ID转发
在Go中实现追踪ID转发,可按以下关键步骤操作:
1. 使用 crzerolog 包编写日志,将追踪ID添加到日志中。
2. 以 idtoken 包能理解的方式(使用Go的请求上下文)将追踪ID添加到所有传入请求中。
3. 将传入请求的请求上下文传递到传出请求,并使用 idtoken HTTP客户端发出请求。
以下是相关代码示例:
// "go.opencensus.io/plugin/ochttp"
// "contrib.go.opencensus.io/exporter/stackdriver/prop
超级会员免费看
订阅专栏 解锁全文
4155

被折叠的 条评论
为什么被折叠?



