跳转到内容

OpenTelemetry

Echo OpenTelemetry 是一个为 HTTP 请求提供 OpenTelemetry 插桩的中间件。

OpenTelemetry 是一组开源工具,为云原生应用提供插桩能力。

使用 Go modules 添加 OpenTelemetry 中间件依赖:

Terminal window
go get github.com/labstack/echo-opentelemetry

导入中间件和 OpenTelemetry trace API:

import (
echootel "github.com/labstack/echo-opentelemetry"
"go.opentelemetry.io/otel/trace"
)

使用完整配置注册它:

e.Use(echootel.NewMiddlewareWithConfig(echootel.Config{
ServerName: "my-server",
TracerProvider: tp,
//Skipper: nil,
//OnNextError: nil,
//OnExtractionError: nil,
//MeterProvider: nil,
//Propagators: nil,
//SpanStartOptions: nil,
//SpanStartAttributes: nil,
//SpanEndAttributes: nil,
//MetricAttributes: nil,
//Metrics: nil,
}))

配置选项请参见 Config struct。

只提供服务器名称,以简化形式添加中间件:

e.Use(echootel.NewMiddleware("app.example.com"))

带配置选项添加中间件:

e.Use(echootel.NewMiddlewareWithConfig(echootel.Config{
TracerProvider: tp,
}))

从 Echo 上下文获取 tracer:

tracer, err := echo.ContextGet[trace.Tracer](c, echootel.TracerKey)

example 会把 metrics 和 spans 导出到 stdout,但你可以使用任何 exporter(OTLP 等)。请参见 OpenTelemetry exporters 文档。