OpenTelemetry
Echo OpenTelemetry は、HTTP リクエスト向けの OpenTelemetry インストルメンテーションを提供するミドルウェアです。
OpenTelemetry は、クラウドネイティブアプリケーション向けのインストルメンテーションを提供する オープンソースツール群です。
Go modules で OpenTelemetry ミドルウェア依存関係を追加します。
go get github.com/labstack/echo-otel/v5ミドルウェアと OpenTelemetry trace API を import します。
import ( echootel "github.com/labstack/echo-otel/v5" "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 は spans を stdout にエクスポートしますが、任意の exporter(OTLP など)を使えます。 OpenTelemetry exporters ドキュメントを参照してください。
API リファレンス
Section titled “API リファレンス”Config · github.com/labstack/echo-otel/[email protected]
フィールドの説明は英語のソースコードのコメントから生成されています。
| フィールド | 型 | 説明 | ソース |
|---|---|---|---|
ServerName | string | ServerName is set as `server.address` and `server.port` span attributes. They are not added to metrics by default (Opt-In in the semantic conventions); add them with MetricAttributes if needed. Example: "api.example.com" or "example.com:8080". Without a port, `server.port` is not set. If known, this value must be set to the server’s canonical (primary) name. For example, in Apache this corresponds to the ServerName directive (https://httpd.apache.org/docs/2.4/mod/core.html#servername), and in NGINX to the server_name directive (http://nginx.org/en/docs/http/ngx_http_core_module.html#server_name). More generally, the primary server name is the host header value that maps to the HTTP server’s default virtual host. It must include the hostname, and if the server is accessed via a non-default port, the port must be appended using the standard ":port" suffix. If the primary server name is unknown, this field should be set to an empty string. In that case, Request.Host will be used to resolve the effective server name and port. Request.Host is chosen by the client. | L50 |
Skipper | middleware.Skipper | Skipper defines a function to skip middleware. | L53 |
OnNextError | OnErrorFunc | OnNextError is used to specify how errors returned from the next middleware / handler are handled. | L56 |
OnExtractionError | OnErrorFunc | OnExtractionError is used to specify how errors returned from request extraction are handled. | L59 |
TracerProvider | oteltrace.TracerProvider | TracerProvider allows overriding the default tracer provider. | L62 |
MeterProvider | metric.MeterProvider | MeterProvider allows overriding the default meter provider. | L65 |
Propagators | propagation.TextMapPropagator | Propagators allow overriding the default propagators. | L68 |
SpanStartOptions | []oteltrace.SpanStartOption | SpanStartOptions configures an additional set of trace.SpanStartOptions, which are applied to each new span. | L71 |
SpanStartAttributes | AttributesFunc | SpanStartAttributes is used to extract additional attributes from the echo.Context and return them as a slice of attribute.KeyValue. | L75 |
SpanEndAttributes | AttributesFunc | SpanEndAttributes is used to extract additional attributes from the echo.Context and return them as a slice of attribute.KeyValue. | L79 |
MetricAttributes | MetricAttributesFunc | MetricAttributes is used to compose attributes just before Metrics.Record call. | L82 |
Metrics | MetricsRecorder | Metrics is used to record custom metrics instead of default. | L85 |