Pular para o conteúdo

OpenTelemetry

Echo OpenTelemetry é um middleware que fornece instrumentação OpenTelemetry para requests HTTP.

OpenTelemetry é um conjunto de ferramentas open-source que fornecem instrumentação para aplicações cloud-native.

Adicione a dependência do middleware OpenTelemetry com Go modules:

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

Importe o middleware e a API de trace do OpenTelemetry:

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

Registre-o com configuração completa:

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,
}))

Para opções de configuração, veja a struct Config.

Adicione o middleware de forma simplificada fornecendo apenas o nome do servidor:

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

Adicione o middleware com opções de configuração:

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

Recupere o tracer a partir do contexto do Echo:

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

O exemplo exporta métricas e spans para stdout, mas você pode usar qualquer exporter (OTLP etc.). Veja a documentação de OpenTelemetry exporters.