-
Notifications
You must be signed in to change notification settings - Fork 0
xtrace
omeyang edited this page Sep 17, 2026
·
1 revision
稳定性:Stable · 覆盖率:92.6% · 源码:
pkg/observability/xtrace
链路追踪中间件。W3C Trace Context 标准:从 HTTP/gRPC 协议头自动提取/注入 traceparent + tracestate。
- 跨服务链路传播
- 与 OTel Collector 对接
- 标准化跨语言/平台
import "github.com/omeyang/xkit/pkg/observability/xtrace"
// HTTP 服务端
mux.Use(xtrace.HTTPMiddleware(tracerProvider))
// gRPC 服务端
server := grpc.NewServer(
grpc.UnaryInterceptor(xtrace.UnaryServerInterceptor(tracerProvider)),
)
// 跨服务调用注入
req, _ := http.NewRequestWithContext(ctx, "GET", url, nil)
xtrace.InjectToRequest(ctx, req)| 名称 | 说明 |
|---|---|
OTelTracer |
OTel SDK 封装(零值有 propagator nil 守卫) |
HTTPMiddleware / UnaryServerInterceptor |
服务端 |
InjectToRequest / InjectToOutgoingContext |
客户端注入 |
ExtractFromHTTPHeader / ExtractFromMetadata |
显式提取 |
-
W3C 严格:
traceparent校验 version/采样位/格式;非法格式跳过不报错 -
tracestate孤立时丢弃(FG-M fix):W3C 规范要求 traceparent 缺失时不能保留 tracestate -
OTelTracer零值守卫:propagator==nil时 Inject/Extract 降级为 no-op(FG-H fix)
- 概念:
- API:api.md#pkgobservabilityxtrace