Skip to content

OpenTelemetry SDK for Goのデフォルトエンドポイントはhttpsプロトコル

OpenTelemetry Protocol ExporterのConfiguration Optionsには

Endpoint (OTLP/HTTP): Default: http://localhost:4318 Endpoint (OTLP/gRPC): Default: http://localhost:4317

と書いてあるが、Go SDKのデフォルトは例えばTracing/gRPCの場合、https://localhost:4317 のようにHTTPSが使われることになっている。

/*
OTEL_EXPORTER_OTLP_ENDPOINT, OTEL_EXPORTER_OTLP_TRACES_ENDPOINT (default: "https://localhost:4317")
*/

ローカルホストで待ち受ける場合、一般的には http を期待すると思われるので、Go SDKでは以下のように明示的なオプションを渡すか、環境変数を設定して上書きが必要となる。

// export OTEL_EXPORTER_OTLP_ENDPOINT=http://localhost:4317 としても同じ
exp, err := otlpmetricgrpc.New(ctx,
otlpmetricgrpc.WithInsecure(),
otlpmetricgrpc.WithEndpoint("localhost:4317"),
)

デフォルトが https であることはThe default endpoint should use HTTP, not HTTPSというディスカッションのスレッドで話題に挙がっているけれど、対応しないと閉じられてしまった。