コンテンツにスキップ

OpenTelemetry

Echo OpenTelemetry は、HTTP リクエスト向けの OpenTelemetry インストルメンテーションを提供するミドルウェアです。

OpenTelemetry は、クラウドネイティブアプリケーション向けのインストルメンテーションを提供する オープンソースツール群です。

Go modules で OpenTelemetry ミドルウェア依存関係を追加します。

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

ミドルウェアと OpenTelemetry trace API を import します。

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 ドキュメントを参照してください。