Ir al contenido

OpenTelemetry

Echo OpenTelemetry es un middleware que proporciona instrumentación OpenTelemetry para requests HTTP.

OpenTelemetry es un conjunto de herramientas open-source que proporcionan instrumentación para aplicaciones cloud-native.

Agrega la dependencia del middleware OpenTelemetry con Go modules:

Ventana de terminal
go get github.com/labstack/echo-opentelemetry

Importa el middleware y la API de tracing de OpenTelemetry:

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

Regístralo con configuración 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 opciones de configuración, consulta el struct Config.

Agrega el middleware en forma simplificada proporcionando solo el nombre del servidor:

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

Agrega el middleware con opciones de configuración:

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

Obtén el tracer desde el contexto de Echo:

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

El ejemplo exporta metrics y spans a stdout, pero puedes usar cualquier exporter (OTLP, etc.). Consulta la documentación de OpenTelemetry exporters.