diff --git a/pkg/config/config.go b/pkg/config/config.go index bf18912..285b9e6 100644 --- a/pkg/config/config.go +++ b/pkg/config/config.go @@ -112,6 +112,7 @@ func Initialize() (*Config, error) { resolveOpenIdProvider() resolveUpstream() resolveVersion() + resolveOtel() cfg := new(Config) if err := viper.UnmarshalExact(cfg, func(dc *mapstructure.DecoderConfig) { diff --git a/pkg/config/otel.go b/pkg/config/otel.go index ab92851..98c6013 100644 --- a/pkg/config/otel.go +++ b/pkg/config/otel.go @@ -1,7 +1,10 @@ package config import ( + "os" + flag "github.com/spf13/pflag" + "github.com/spf13/viper" ) type OpenTelemetry struct { @@ -15,7 +18,14 @@ const ( ) func otelFlags() { - // TODO: automatically enable if OTEL_EXPORTER_OTLP_ENDPOINT env var is set flag.Bool(OpenTelemetryEnabled, false, "Enable OpenTelemetry tracing.") flag.String(OpenTelemetryServiceName, "wonderwall", "Service name to use for OpenTelemetry.") } + +func resolveOtel() { + otelEndpoint := os.Getenv("OTEL_EXPORTER_OTLP_ENDPOINT") + if otelEndpoint != "" { + logger.Infof("config: OTLP endpoint set to %q, enabling OpenTelemetry", otelEndpoint) + viper.Set(OpenTelemetryEnabled, "true") + } +}