Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 8 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,10 +8,18 @@ This project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.htm

## [Unreleased]

### Added

- Configuration file can now be set via `OTEL_CONFIG_FILE` in `go.opentelemetry.io/contrib/otelconf`. (#8639)

### Fixed

- Limit the request body size at 1MB in `go.opentelemetry.io/contrib/zpages`. (#8656)

### Deprecated

- `OTEL_EXPERIMENTAL_CONFIG_FILE` has been deprecated in favour of `OTEL_CONFIG_FILE` in `go.opentelemetry.io/contrib/otelconf`. (#8639)

<!-- Released section -->
<!-- Don't change this section unless doing release -->

Expand Down
30 changes: 20 additions & 10 deletions otelconf/config.go
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,10 @@ import (
"go.opentelemetry.io/contrib/otelconf/internal/provider"
)

const envVarConfigFile = "OTEL_EXPERIMENTAL_CONFIG_FILE"
const (
envVarConfigFileDeprecated = "OTEL_EXPERIMENTAL_CONFIG_FILE"
envVarConfigFile = "OTEL_CONFIG_FILE"
)

// SDK is a struct that contains all the providers
// configured via the configuration model.
Expand Down Expand Up @@ -61,13 +64,16 @@ func (s *SDK) Shutdown(ctx context.Context) error {
return s.shutdown(ctx)
}

var noopSDK = SDK{
loggerProvider: nooplog.LoggerProvider{},
meterProvider: noopmetric.MeterProvider{},
tracerProvider: nooptrace.TracerProvider{},
propagator: propagation.NewCompositeTextMapPropagator(),
shutdown: func(context.Context) error { return nil },
}
var (
noopSDK = SDK{
loggerProvider: nooplog.LoggerProvider{},
meterProvider: noopmetric.MeterProvider{},
tracerProvider: nooptrace.TracerProvider{},
propagator: propagation.NewCompositeTextMapPropagator(),
shutdown: func(context.Context) error { return nil },
}
errDeprecatedEnvVarUsed = errors.New("OTEL_EXPERIMENTAL_CONFIG_FILE is no longer supported, use OTEL_CONFIG_FILE instead")
)

func parseConfigFileFromEnvironment(filename string) (ConfigurationOption, error) {
b, err := os.ReadFile(filename)
Expand All @@ -86,10 +92,14 @@ func parseConfigFileFromEnvironment(filename string) (ConfigurationOption, error
}

// NewSDK creates SDK providers based on the configuration model. It checks the local environment and
// uses the file set in the variable `OTEL_EXPERIMENTAL_CONFIG_FILE` to configure the SDK automatically.
// Any file defined by `OTEL_EXPERIMENTAL_CONFIG_FILE` will supersede all files passed with
// uses the file set in the variable `OTEL_CONFIG_FILE` to configure the SDK automatically.
// Any file defined by `OTEL_CONFIG_FILE` will supersede all files passed with
// [WithOpenTelemetryConfiguration].
func NewSDK(opts ...ConfigurationOption) (SDK, error) {
_, ok := os.LookupEnv(envVarConfigFileDeprecated)
if ok {
return noopSDK, errDeprecatedEnvVarUsed
}
filename, ok := os.LookupEnv(envVarConfigFile)
if ok {
opt, err := parseConfigFileFromEnvironment(filename)
Expand Down
4 changes: 4 additions & 0 deletions otelconf/config_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -428,6 +428,10 @@ func TestNewSDKWithEnvVar(t *testing.T) {
t.Setenv(envVarConfigFile, filepath.Join("testdata", "v1.0.0.yaml"))
_, err = NewSDK(cfg...)
require.ErrorIs(t, err, newErrInvalid("otlp_file/development"))
// validate that use of deprecated env var returns an error
t.Setenv(envVarConfigFileDeprecated, filepath.Join("testdata", "v1.0.0.yaml"))
_, err = NewSDK(cfg...)
require.ErrorIs(t, err, errDeprecatedEnvVarUsed)
}

var v10OpenTelemetryConfig = OpenTelemetryConfiguration{
Expand Down
Loading