首页/云/可观测性速查/Go SDK 初始化示例
本包目录(282 条)

Go SDK 初始化示例

Go 接入:构建 OTLP gRPC 导出器、注册 TracerProvider 并 defer Shutdown 保证缓冲数据发出;服务名通过环境变量或 Resource 注入。

可观测性速查云更新于 2026-10-12

初始化骨架

初始化骨架
exp, err := otlptracegrpc.New(ctx,
    otlptracegrpc.WithEndpoint("otel-collector:4317"),
    otlptracegrpc.WithInsecure())
// 处理 err ...

tp := sdktrace.NewTracerProvider(
    sdktrace.WithBatcher(exp),
    sdktrace.WithSampler(sdktrace.ParentBased(sdktrace.TraceIDRatioBased(0.1))))
otel.SetTracerProvider(tp)
defer tp.Shutdown(context.Background())   // 进程退出前刷新缓冲
service.name 可用 OTEL_SERVICE_NAME 环境变量注入;Web 框架接入优先用 otelhttp 中间件。

易错点

  • 进程退出不调用 Shutdown 会丢掉缓冲中的 span,长驻服务也要处理好优雅停机
  • 每次请求新建 provider/exporter 会造成连接与内存泄漏,provider 全局一个

数据来源与参考

  • OpenTelemetry Go · Getting started
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌