用途:为 Go 应用接入 Maple 可观测性,基于官方 go.opentelemetry.io/otel SDK 与 OTLP HTTP 导出器,统一上报 trace、log、metric。
主要能力:在进程启动时一次性初始化 TracerProvider、LoggerProvider 与 MeterProvider,分别使用 otlptracehttp、otlploghttp、otlpmetrichttp 导出器;通过 resource 设置服务名、部署环境、代码仓库与提交版本等属性;提供 shutdown 函数在退出时关闭各 Provider。
使用方式:先安装依赖,命令为 go get
go.opentelemetry.io/otel
go.opentelemetry.io/otel/sdk
go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp
go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploghttp
go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp
go.opentelemetry.io/otel/log
go.opentelemetry.io/otel/sdk/log。初始化时内联端点与摄取 key,key 为项目级只写令牌(形如 Sentry DSN),不做环境变量间接引用;WithEndpoint 接收不带 scheme 的主机名,使用 HTTPS 并追加默认 /v1/<signal> 路径。端点默认 ingest.maple.dev,EU 为 ingest.eu.maple.dev。在 main 中调用初始化,失败仅记录日志不致命,成功则 defer shutdown。业务 span 在包级获取 tracer,在自动埋点覆盖不到处手动创建,出错时记录错误并设置状态,用 defer 结束 span。
自动埋点:Go 无框架级自动发现,仅对应用实际导入的库添加埋点包,如 otelhttp、otelgrpc、otelmux,以及 otelsql、otelpgx、otelfiber 等社区包;用 otelhttp.NewTransport 包装出站 HTTP 客户端以传播 trace 上下文。
共存:若项目已导出到 Honeycomb、Datadog 或 Tempo,可为每个后端各加一个 trace.WithBatcher(exp) 选项并存,除非用户要求,否则不移除既有导出器。
限制:资料未提供收费、价格、平台支持范围与效果数据。