OpenTelemetry
Echo OpenTelemetry 是一个为 HTTP 请求提供 OpenTelemetry 插桩的中间件。
OpenTelemetry 是一组开源工具,为云原生应用提供插桩能力。
使用 Go modules 添加 OpenTelemetry 中间件依赖:
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 文档。