diff --git a/devnet-sdk/telemetry/init.go b/devnet-sdk/telemetry/init.go index 12fd02273df0a..52ffe4bc1fa67 100644 --- a/devnet-sdk/telemetry/init.go +++ b/devnet-sdk/telemetry/init.go @@ -8,13 +8,13 @@ import ( ) const ( - serviceNameEnvVar = "OTEL_SERVICE_NAME" - serviceVersionEnvVar = "OTEL_SERVICE_VERSION" -) + serviceNameEnvVar = "OTEL_SERVICE_NAME" + serviceVersionEnvVar = "OTEL_SERVICE_VERSION" + tracesEndpointEnvVar = "OTEL_EXPORTER_OTLP_TRACES_ENDPOINT" + metricsEndpointEnvVar = "OTEL_EXPORTER_OTLP_METRICS_ENDPOINT" -var ( - serviceName = envOrDefault(serviceNameEnvVar, "devstack") - serviceVersion = envOrDefault(serviceVersionEnvVar, "0.0.0") + defaultServiceName = "devstack" + defaultServiceVersion = "0.0.0" ) func envOrDefault(key, def string) string { @@ -25,17 +25,23 @@ func envOrDefault(key, def string) string { } func SetupOpenTelemetry(ctx context.Context, opts ...otelconfig.Option) (context.Context, func(), error) { + defaultOpts := []otelconfig.Option{ + otelconfig.WithServiceName(envOrDefault(serviceNameEnvVar, defaultServiceName)), + otelconfig.WithServiceVersion(envOrDefault(serviceVersionEnvVar, defaultServiceVersion)), + otelconfig.WithPropagators(defaultPropagators), + } + // do not use localhost:4317 by default, we want telemetry to be opt-in and // explicit. - if os.Getenv("OTEL_EXPORTER_OTLP_TRACES_ENDPOINT") == "" { - return ctx, func() {}, nil + // The caller is still able to override this by passing in their own opts. + if os.Getenv(tracesEndpointEnvVar) == "" { + defaultOpts = append(defaultOpts, otelconfig.WithTracesEnabled(false)) + } + if os.Getenv(metricsEndpointEnvVar) == "" { + defaultOpts = append(defaultOpts, otelconfig.WithMetricsEnabled(false)) } - opts = append([]otelconfig.Option{ - otelconfig.WithServiceName(serviceName), - otelconfig.WithServiceVersion(serviceVersion), - otelconfig.WithPropagators(defaultPropagators), - }, opts...) + opts = append(defaultOpts, opts...) otelShutdown, err := otelconfig.ConfigureOpenTelemetry(opts...) if err != nil { return ctx, nil, err