You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过Fiber中间件传递Span上下文?

解决方法

你需要把包含当前Span的上下文重新设置回Fiber的Ctx中,这样后续处理器获取上下文时,就能将当前Span作为父Span。修改后的代码如下:

testGroup := fiberServer.Group("test")

testGroup.Use(func(c *fiber.Ctx) error {
    // 基于当前上下文创建Span,得到包含Span的新上下文p
    p, span := otel.Tracer("my-service").Start(c.UserContext(), "middleware")
    defer span.End()

    // 将新上下文设置回Ctx,传递给后续处理器
    c.SetUserContext(p)

    // 执行你的业务逻辑
    /// some work

    return c.Next()
})

关键说明

  • otel.Tracer().Start()方法会返回一个包含新Span的上下文(即变量p),这个上下文是原上下文的衍生版本,携带了当前Span的追踪信息。
  • 调用c.SetUserContext(p)后,后续的处理器通过c.UserContext()获取的就是这个新上下文,当它们创建自己的Span时,OpenTelemetry会自动识别这个上下文中的Span作为父Span,实现追踪链路的传递。

内容的提问来源于stack exchange,提问作者vovanchello

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.10 16:57:02