From 7eca953fc550aff30acc6dd854a9c4931340ff34 Mon Sep 17 00:00:00 2001 From: Jack Berg Date: Fri, 5 Jan 2024 13:39:09 -0600 Subject: [PATCH 1/9] Define OTEL_CONFIG_FILE environment variable --- .../sdk-environment-variables.md | 93 +++++++++++++------ 1 file changed, 65 insertions(+), 28 deletions(-) diff --git a/specification/configuration/sdk-environment-variables.md b/specification/configuration/sdk-environment-variables.md index ef4794cb046..0acb0406583 100644 --- a/specification/configuration/sdk-environment-variables.md +++ b/specification/configuration/sdk-environment-variables.md @@ -8,7 +8,39 @@ aliases: # OpenTelemetry Environment Variable Specification -**Status**: [Mixed](../document-status.md) +**Status**: [Stable](../document-status.md) except where otherwise specified + +
+Table of Contents + + + +- [Implementation guidelines](#implementation-guidelines) +- [Parsing empty value](#parsing-empty-value) +- [Special configuration types](#special-configuration-types) + * [Boolean value](#boolean-value) + * [Numeric value](#numeric-value) + * [Enum value](#enum-value) + * [Duration](#duration) +- [General SDK Configuration](#general-sdk-configuration) +- [Batch Span Processor](#batch-span-processor) +- [Batch LogRecord Processor](#batch-logrecord-processor) +- [Attribute Limits](#attribute-limits) +- [Span Limits](#span-limits) +- [LogRecord Limits](#logrecord-limits) +- [OTLP Exporter](#otlp-exporter) +- [Zipkin Exporter](#zipkin-exporter) +- [Prometheus Exporter](#prometheus-exporter) +- [Exporter Selection](#exporter-selection) +- [Metrics SDK Configuration](#metrics-sdk-configuration) + * [Exemplar](#exemplar) + * [Periodic exporting MetricReader](#periodic-exporting-metricreader) +- [File Configuration](#file-configuration) +- [Language Specific Environment Variables](#language-specific-environment-variables) + + + +
The goal of this specification is to unify the environment variable names between different OpenTelemetry implementations. @@ -17,22 +49,16 @@ If they do, they SHOULD use the names listed in this document. ## Implementation guidelines -**Status**: [Stable](../document-status.md) - Environment variables MAY be handled (implemented) directly by a component, in the SDK, or in a separate component (e.g. environment-based autoconfiguration component). The environment-based configuration MUST have a direct code configuration equivalent. ## Parsing empty value -**Status**: [Stable](../document-status.md) - The SDK MUST interpret an empty value of an environment variable the same way as when the variable is unset. ## Special configuration types -**Status**: [Stable](../document-status.md) - ### Boolean value Any value that represents a Boolean MUST be set to true only by the case-insensitive string `"true"`, meaning `"True"` or `"TRUE"` are also accepted, as true. @@ -47,9 +73,9 @@ Renaming or changing the default value MUST NOT happen without a major version u If an implementation chooses to support an integer-valued environment variable, it SHOULD support nonnegative values between 0 and 2³¹ − 1 (inclusive). Individual SDKs MAY choose to support a larger range of values. > The following paragraph was added after stabilization and the requirements are -thus qualified as "SHOULD" to allow implementations to avoid breaking changes. -For new -implementations, these should be treated as MUST requirements. +> thus qualified as "SHOULD" to allow implementations to avoid breaking changes. +> For new +> implementations, these should be treated as MUST requirements. For variables accepting a numeric value, if the user provides a value the implementation cannot parse, or which is outside the valid range for the configuration item, the implementation SHOULD @@ -83,8 +109,6 @@ For example, the value `12000` indicates 12000 milliseconds, i.e., 12 seconds. ## General SDK Configuration -**Status**: [Stable](../document-status.md) - | Name | Description | Default | Notes | |--------------------------|---------------------------------------------------------------------------------------------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| | OTEL_SDK_DISABLED | Disable the SDK for all signals | false | Boolean value. If "true", a no-op SDK implementation will be used for all telemetry signals. Any other value or absence of the variable will have no effect and the SDK will remain enabled. This setting has no effect on propagators configured through the OTEL_PROPAGATORS variable. | @@ -129,8 +153,6 @@ Depending on the value of `OTEL_TRACES_SAMPLER`, `OTEL_TRACES_SAMPLER_ARG` may b ## Batch Span Processor -**Status**: [Stable](../document-status.md) - | Name | Description | Default | Notes | | ------------------------------ | ---------------------------------------------------------------- | ------- | ----------------------------------------------------- | | OTEL_BSP_SCHEDULE_DELAY | Delay interval (in milliseconds) between two consecutive exports | 5000 | | @@ -140,8 +162,6 @@ Depending on the value of `OTEL_TRACES_SAMPLER`, `OTEL_TRACES_SAMPLER_ARG` may b ## Batch LogRecord Processor -**Status**: [Stable](../document-status.md) - | Name | Description | Default | Notes | | ------------------------------- | ---------------------------------------------------------------- | ------- | ------------------------------------------------------ | | OTEL_BLRP_SCHEDULE_DELAY | Delay interval (in milliseconds) between two consecutive exports | 1000 | | @@ -163,8 +183,6 @@ See the SDK [Attribute Limits](../common/README.md#attribute-limits) section for ## Span Limits -**Status**: [Stable](../document-status.md) - See the SDK [Span Limits](../trace/sdk.md#span-limits) section for the definition of the limits. | Name | Description | Default | Notes | @@ -178,8 +196,6 @@ See the SDK [Span Limits](../trace/sdk.md#span-limits) section for the definitio ## LogRecord Limits -**Status**: [Stable](../document-status.md) - See the SDK [LogRecord Limits](../logs/sdk.md#logrecord-limits) section for the definition of the limits. | Name | Description | Default | Notes | @@ -193,8 +209,6 @@ See [OpenTelemetry Protocol Exporter Configuration Options](../protocol/exporter ## Zipkin Exporter -**Status**: [Stable](../document-status.md) - | Name | Description | Default | | ----------------------------- | ---------------------------------------------------------------------------------- |------------------------------------- | | OTEL_EXPORTER_ZIPKIN_ENDPOINT | Endpoint for Zipkin traces | `http://localhost:9411/api/v2/spans` | @@ -220,8 +234,6 @@ _is no specified default, or configuration via environment variables_. ## Exporter Selection -**Status**: [Stable](../document-status.md) - We define environment variables for setting one or more exporters per signal. | Name | Description | Default | @@ -260,8 +272,6 @@ NOT be supported by new implementations. ## Metrics SDK Configuration -**Status**: [Mixed](../document-status.md) - ### Exemplar **Status**: [Experimental](../document-status.md) @@ -278,8 +288,6 @@ Known values for `OTEL_METRICS_EXEMPLAR_FILTER` are: ### Periodic exporting MetricReader -**Status**: [Stable](../document-status.md) - Environment variables specific for the push metrics exporters (OTLP, stdout, in-memory) that use [periodic exporting MetricReader](../metrics/sdk.md#periodic-exporting-metricreader). @@ -288,6 +296,35 @@ that use [periodic exporting MetricReader](../metrics/sdk.md#periodic-exporting- | `OTEL_METRIC_EXPORT_INTERVAL` | The time interval (in milliseconds) between the start of two export attempts. | 60000 | | | `OTEL_METRIC_EXPORT_TIMEOUT` | Maximum allowed time (in milliseconds) to export data. | 30000 | | +## File Configuration + +**Status**: [Experimental](../document-status.md) + +Environment variables involved in [file configuration](file-configuration.md). + +| Name | Description | Default | Notes | +|------------------|---------------------------------------------------------------|---------|-----------| +| OTEL_CONFIG_FILE | The path of the configuration file used to configure the SDK. | | See below | + +If `OTEL_CONFIG_FILE` is set, the file at the specified path is used to +call [Parse](file-configuration.md#parse). The +resulting [configuration model](./file-configuration.md#configuration-model) is +used to call [Create](file-configuration.md#create) to produce fully configured +SDK components. + +When `OTEL_CONFIG_FILE` is set, all other environment variables besides those +reference in the configuration file +for [environment variable substitution](file-configuration.md#environment-variable-substitution) +MUST be ignored. Ignoring the environment variables is necessary because +there is no intuitive way to merge the flat environment variable scheme with the +structured file configuration scheme in all cases. Users that require merging +multiple sources of configuration are encouraged to customize the configuration +model returned by `Parse` before `Create` is called. For example, a user may +call `Parse` on multiple files and define logic from merging the resulting +configuration models, or overlay values from environment variables on top of a +configuration model. Implementations MAY provide a mechanism to customize the +configuration model parsed from `OTEL_CONFIG_FILE`. + ## Language Specific Environment Variables To ensure consistent naming across projects, this specification recommends that language specific environment variables are formed using the following convention: From 4f4318141e4c43792b24e0501b5d83d96374b4b0 Mon Sep 17 00:00:00 2001 From: Jack Berg Date: Mon, 8 Jan 2024 12:57:56 -0600 Subject: [PATCH 2/9] Fix typo --- specification/configuration/sdk-environment-variables.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/specification/configuration/sdk-environment-variables.md b/specification/configuration/sdk-environment-variables.md index 0acb0406583..5f1650ab6a5 100644 --- a/specification/configuration/sdk-environment-variables.md +++ b/specification/configuration/sdk-environment-variables.md @@ -313,7 +313,7 @@ used to call [Create](file-configuration.md#create) to produce fully configured SDK components. When `OTEL_CONFIG_FILE` is set, all other environment variables besides those -reference in the configuration file +referenced in the configuration file for [environment variable substitution](file-configuration.md#environment-variable-substitution) MUST be ignored. Ignoring the environment variables is necessary because there is no intuitive way to merge the flat environment variable scheme with the From 26e87df87101ff3ea209697b5c15c4455201d213 Mon Sep 17 00:00:00 2001 From: Jack Berg Date: Mon, 8 Jan 2024 12:58:55 -0600 Subject: [PATCH 3/9] Add changelog entry --- CHANGELOG.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 5d10dd4e242..8b3fc02afe0 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -29,6 +29,9 @@ release. ### SDK Configuration +- Define `OTEL_CONFIG_FILE` environment variable. + ([#3805](https://github.com/open-telemetry/opentelemetry-specification/pull/3805)) + ### Common - Clarify that attribute keys are case-sensitive. From ae19265e5a1481bcd740d7276d59ec34ab240865 Mon Sep 17 00:00:00 2001 From: Jack Berg Date: Thu, 18 Jan 2024 09:34:34 -0600 Subject: [PATCH 4/9] PR feedback --- specification/configuration/sdk-environment-variables.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/specification/configuration/sdk-environment-variables.md b/specification/configuration/sdk-environment-variables.md index 5f1650ab6a5..3421315f9d9 100644 --- a/specification/configuration/sdk-environment-variables.md +++ b/specification/configuration/sdk-environment-variables.md @@ -302,9 +302,9 @@ that use [periodic exporting MetricReader](../metrics/sdk.md#periodic-exporting- Environment variables involved in [file configuration](file-configuration.md). -| Name | Description | Default | Notes | -|------------------|---------------------------------------------------------------|---------|-----------| -| OTEL_CONFIG_FILE | The path of the configuration file used to configure the SDK. | | See below | +| Name | Description | Default | Notes | +|------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|---------|-----------| +| OTEL_CONFIG_FILE | The path of the configuration file used to configure the SDK. If set, the configuration in this file takes precedence over all other SDK configuration environment variables. | | See below | If `OTEL_CONFIG_FILE` is set, the file at the specified path is used to call [Parse](file-configuration.md#parse). The From b32c801c2a4cc966e6eb6b6dc29af136acdac22b Mon Sep 17 00:00:00 2001 From: Jack Berg Date: Thu, 18 Jan 2024 09:35:23 -0600 Subject: [PATCH 5/9] Add entry to spec compliance matrix --- spec-compliance-matrix.md | 63 ++++++++++++++++++++------------------- 1 file changed, 32 insertions(+), 31 deletions(-) diff --git a/spec-compliance-matrix.md b/spec-compliance-matrix.md index 91a9cc819cd..a5f00f48dc6 100644 --- a/spec-compliance-matrix.md +++ b/spec-compliance-matrix.md @@ -276,37 +276,38 @@ Disclaimer: this list of features is still a work in progress, please refer to t Note: Support for environment variables is optional. -| Feature | Go | Java | JS | Python | Ruby | Erlang | PHP | Rust | C++ | .NET | Swift | -|----------------------------------------------------------|-----|------|-----|-------------|------|--------|-----|------|-----|------|-------| -| OTEL_SDK_DISABLED | - | + | - | - | - | - | + | - | - | - | - | -| OTEL_RESOURCE_ATTRIBUTES | + | + | + | + | + | + | + | + | + | + | - | -| OTEL_SERVICE_NAME | + | + | + | + | + | + | + | | | + | | -| OTEL_LOG_LEVEL | - | - | + | [-][py1059] | + | - | + | | - | - | - | -| OTEL_PROPAGATORS | - | + | | + | + | + | + | - | - | - | - | -| OTEL_BSP_* | + | + | + | + | + | + | + | + | - | + | - | -| OTEL_BLRP_* | | + | | | | | | | | + | | -| OTEL_EXPORTER_OTLP_* | + | + | | + | + | + | + | + | + | + | - | -| OTEL_EXPORTER_ZIPKIN_* | - | + | | + | + | - | + | - | - | + | - | -| OTEL_TRACES_EXPORTER | - | + | + | + | + | + | + | - | - | - | | -| OTEL_METRICS_EXPORTER | - | + | | + | - | - | + | - | - | - | - | -| OTEL_LOGS_EXPORTER | - | + | | + | | | + | | | - | | -| OTEL_SPAN_ATTRIBUTE_COUNT_LIMIT | + | + | + | + | + | + | + | + | - | + | | -| OTEL_SPAN_ATTRIBUTE_VALUE_LENGTH_LIMIT | + | + | + | + | + | + | + | | | + | | -| OTEL_SPAN_EVENT_COUNT_LIMIT | + | + | + | + | + | + | + | + | - | + | | -| OTEL_SPAN_LINK_COUNT_LIMIT | + | + | + | + | + | + | + | + | - | + | | -| OTEL_EVENT_ATTRIBUTE_COUNT_LIMIT | + | - | | + | + | + | + | | | + | | -| OTEL_LINK_ATTRIBUTE_COUNT_LIMIT | + | - | | + | + | + | + | | | + | | -| OTEL_LOGRECORD_ATTRIBUTE_COUNT_LIMIT | | | | | | | + | | | | | -| OTEL_LOGRECORD_ATTRIBUTE_VALUE_LENGTH_LIMIT | | | | | | | + | | | | | -| OTEL_TRACES_SAMPLER | + | + | + | + | + | + | + | - | - | - | | -| OTEL_TRACES_SAMPLER_ARG | + | + | + | + | + | + | + | - | - | - | | -| OTEL_ATTRIBUTE_VALUE_LENGTH_LIMIT | + | + | + | + | + | - | + | | | + | | -| OTEL_ATTRIBUTE_COUNT_LIMIT | + | + | + | + | + | - | + | | | + | | -| OTEL_METRIC_EXPORT_INTERVAL | - | + | | | | | + | | | + | | -| OTEL_METRIC_EXPORT_TIMEOUT | - | - | | | | | + | | | + | | -| OTEL_METRICS_EXEMPLAR_FILTER | - | + | | | | | + | | | - | | -| OTEL_EXPORTER_OTLP_METRICS_TEMPORALITY_PREFERENCE | - | + | + | + | | | + | | | + | | -| OTEL_EXPORTER_OTLP_METRICS_DEFAULT_HISTOGRAM_AGGREGATION | | + | | | | | | | | | | +| Feature | Go | Java | JS | Python | Ruby | Erlang | PHP | Rust | C++ | .NET | Swift | +|----------------------------------------------------------|----|------|----|-------------|------|--------|-----|------|-----|------|-------| +| OTEL_SDK_DISABLED | - | + | - | - | - | - | + | - | - | - | - | +| OTEL_RESOURCE_ATTRIBUTES | + | + | + | + | + | + | + | + | + | + | - | +| OTEL_SERVICE_NAME | + | + | + | + | + | + | + | | | + | | +| OTEL_LOG_LEVEL | - | - | + | [-][py1059] | + | - | + | | - | - | - | +| OTEL_PROPAGATORS | - | + | | + | + | + | + | - | - | - | - | +| OTEL_BSP_* | + | + | + | + | + | + | + | + | - | + | - | +| OTEL_BLRP_* | | + | | | | | | | | + | | +| OTEL_EXPORTER_OTLP_* | + | + | | + | + | + | + | + | + | + | - | +| OTEL_EXPORTER_ZIPKIN_* | - | + | | + | + | - | + | - | - | + | - | +| OTEL_TRACES_EXPORTER | - | + | + | + | + | + | + | - | - | - | | +| OTEL_METRICS_EXPORTER | - | + | | + | - | - | + | - | - | - | - | +| OTEL_LOGS_EXPORTER | - | + | | + | | | + | | | - | | +| OTEL_SPAN_ATTRIBUTE_COUNT_LIMIT | + | + | + | + | + | + | + | + | - | + | | +| OTEL_SPAN_ATTRIBUTE_VALUE_LENGTH_LIMIT | + | + | + | + | + | + | + | | | + | | +| OTEL_SPAN_EVENT_COUNT_LIMIT | + | + | + | + | + | + | + | + | - | + | | +| OTEL_SPAN_LINK_COUNT_LIMIT | + | + | + | + | + | + | + | + | - | + | | +| OTEL_EVENT_ATTRIBUTE_COUNT_LIMIT | + | - | | + | + | + | + | | | + | | +| OTEL_LINK_ATTRIBUTE_COUNT_LIMIT | + | - | | + | + | + | + | | | + | | +| OTEL_LOGRECORD_ATTRIBUTE_COUNT_LIMIT | | | | | | | + | | | | | +| OTEL_LOGRECORD_ATTRIBUTE_VALUE_LENGTH_LIMIT | | | | | | | + | | | | | +| OTEL_TRACES_SAMPLER | + | + | + | + | + | + | + | - | - | - | | +| OTEL_TRACES_SAMPLER_ARG | + | + | + | + | + | + | + | - | - | - | | +| OTEL_ATTRIBUTE_VALUE_LENGTH_LIMIT | + | + | + | + | + | - | + | | | + | | +| OTEL_ATTRIBUTE_COUNT_LIMIT | + | + | + | + | + | - | + | | | + | | +| OTEL_METRIC_EXPORT_INTERVAL | - | + | | | | | + | | | + | | +| OTEL_METRIC_EXPORT_TIMEOUT | - | - | | | | | + | | | + | | +| OTEL_METRICS_EXEMPLAR_FILTER | - | + | | | | | + | | | - | | +| OTEL_EXPORTER_OTLP_METRICS_TEMPORALITY_PREFERENCE | - | + | + | + | | | + | | | + | | +| OTEL_EXPORTER_OTLP_METRICS_DEFAULT_HISTOGRAM_AGGREGATION | | + | | | | | | | | | | +| OTEL_CONFIG_FILE | | | | | | | | | | | | ## File Configuration From b5de964f441e308ab9d7b5e507a348c15a6274ce Mon Sep 17 00:00:00 2001 From: Jack Berg Date: Tue, 30 Jan 2024 09:48:42 -0600 Subject: [PATCH 6/9] Ignore environment variables, but leave placeholder for new env var override scheme --- .../configuration/file-configuration.md | 5 ++ .../sdk-environment-variables.md | 53 ++++++++++++------- 2 files changed, 38 insertions(+), 20 deletions(-) diff --git a/specification/configuration/file-configuration.md b/specification/configuration/file-configuration.md index 8b2bcec2564..dae0834ba3f 100644 --- a/specification/configuration/file-configuration.md +++ b/specification/configuration/file-configuration.md @@ -179,6 +179,11 @@ This SHOULD return an error if: * The parsed `file` content does not conform to the [configuration model](#configuration-model) schema. +#### Merge Environment + +TODO: define environment variable naming scheme with names derived from the +configuration model + #### Create Interpret [configuration model](#in-memory-configuration-model) and return SDK components. diff --git a/specification/configuration/sdk-environment-variables.md b/specification/configuration/sdk-environment-variables.md index 3421315f9d9..536fb0525b0 100644 --- a/specification/configuration/sdk-environment-variables.md +++ b/specification/configuration/sdk-environment-variables.md @@ -302,28 +302,41 @@ that use [periodic exporting MetricReader](../metrics/sdk.md#periodic-exporting- Environment variables involved in [file configuration](file-configuration.md). -| Name | Description | Default | Notes | -|------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|---------|-----------| -| OTEL_CONFIG_FILE | The path of the configuration file used to configure the SDK. If set, the configuration in this file takes precedence over all other SDK configuration environment variables. | | See below | +| Name | Description | Default | Notes | +|------------------|------------------------------------------------------------------------------------------------------------------------------------|---------|-----------| +| OTEL_CONFIG_FILE | The path of the configuration file used to configure the SDK. If set other environment variables defined in this file are ignored. | | See below | If `OTEL_CONFIG_FILE` is set, the file at the specified path is used to -call [Parse](file-configuration.md#parse). The -resulting [configuration model](./file-configuration.md#configuration-model) is -used to call [Create](file-configuration.md#create) to produce fully configured -SDK components. - -When `OTEL_CONFIG_FILE` is set, all other environment variables besides those -referenced in the configuration file -for [environment variable substitution](file-configuration.md#environment-variable-substitution) -MUST be ignored. Ignoring the environment variables is necessary because -there is no intuitive way to merge the flat environment variable scheme with the -structured file configuration scheme in all cases. Users that require merging -multiple sources of configuration are encouraged to customize the configuration -model returned by `Parse` before `Create` is called. For example, a user may -call `Parse` on multiple files and define logic from merging the resulting -configuration models, or overlay values from environment variables on top of a -configuration model. Implementations MAY provide a mechanism to customize the -configuration model parsed from `OTEL_CONFIG_FILE`. +call [Parse](file-configuration.md#parse), [Merge Environment](./file-configuration#merge-environment), [Create](file-configuration.md#create). +The implementation SHOULD log a warning if calling Merge Environment results in +changes to +the [configuration model](./file-configuration.md#configuration-model). +Implementations MAY provide a mechanism to further customize the configuration +model parsed from `OTEL_CONFIG_FILE`. It SHOULD be possible to opt-in to logging +the resolved configuration model. + +Note: Environment variable overrides are available as defined +in [Merge Environment](./file-configuration.md#merge-environment), but the +environment variables described in this file are ignored. + +An example Java implementation: + +```java +OpenTelemetryConfiguration parsedModel = parse("/path/to/config.yaml"); +OpenTelemetryConfiguration modelWithEnvironment = mergeEnvironment(parsedModel); +if (parsedModel.equals(modelWithEnvironment)) { + logger.warn("Environment variables were set that overrode the configuration specified at /path/to/config.yaml"); +} +// Log at debug level so user has to opt-in to logging effective configuration +logger.debug("Effective configuration: \n" + toString(modelWithEnvironment)); +OpenTelemetrySdk sdk = create(modelWithEnvironment); +``` + +Users with complex configuration requirements (e.g. merging multiple +configuration files or non-standard merging of environment variables) are +encouraged to directly use [Parse](./file-configuration.md#parse) and +programmatically manipulate the configuration model before +calling [Create](./file-configuration.md#create). ## Language Specific Environment Variables From 9564b300bd44ea46d8031e29c0c011f62fc589e3 Mon Sep 17 00:00:00 2001 From: Jack Berg Date: Tue, 30 Jan 2024 15:35:29 -0600 Subject: [PATCH 7/9] Fix broken links --- specification/configuration/sdk-environment-variables.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/specification/configuration/sdk-environment-variables.md b/specification/configuration/sdk-environment-variables.md index 536fb0525b0..b9469057b84 100644 --- a/specification/configuration/sdk-environment-variables.md +++ b/specification/configuration/sdk-environment-variables.md @@ -300,17 +300,17 @@ that use [periodic exporting MetricReader](../metrics/sdk.md#periodic-exporting- **Status**: [Experimental](../document-status.md) -Environment variables involved in [file configuration](file-configuration.md). +Environment variables involved in [file configuration](./file-configuration.md). | Name | Description | Default | Notes | |------------------|------------------------------------------------------------------------------------------------------------------------------------|---------|-----------| | OTEL_CONFIG_FILE | The path of the configuration file used to configure the SDK. If set other environment variables defined in this file are ignored. | | See below | If `OTEL_CONFIG_FILE` is set, the file at the specified path is used to -call [Parse](file-configuration.md#parse), [Merge Environment](./file-configuration#merge-environment), [Create](file-configuration.md#create). +call [Parse](file-configuration.md#parse), [Merge Environment](./file-configuration.md#merge-environment), [Create](file-configuration.md#create). The implementation SHOULD log a warning if calling Merge Environment results in changes to -the [configuration model](./file-configuration.md#configuration-model). +the [configuration model](file-configuration.md#configuration-model). Implementations MAY provide a mechanism to further customize the configuration model parsed from `OTEL_CONFIG_FILE`. It SHOULD be possible to opt-in to logging the resolved configuration model. From f99e2a592d9b4fe1d5da1252d9784480166675be Mon Sep 17 00:00:00 2001 From: Jack Berg Date: Tue, 30 Jan 2024 15:59:18 -0600 Subject: [PATCH 8/9] markdown-toc --- specification/configuration/file-configuration.md | 1 + 1 file changed, 1 insertion(+) diff --git a/specification/configuration/file-configuration.md b/specification/configuration/file-configuration.md index f39bab20a3c..9aceee263b6 100644 --- a/specification/configuration/file-configuration.md +++ b/specification/configuration/file-configuration.md @@ -21,6 +21,7 @@ linkTitle: File + [Create Plugin](#create-plugin) * [Operations](#operations) + [Parse](#parse) + + [Merge Environment](#merge-environment) + [Create](#create) + [Register Component Provider](#register-component-provider) - [References](#references) From ed4770bdd6b48bfe631bfab532007dd5b98b03a9 Mon Sep 17 00:00:00 2001 From: jack-berg <34418638+jack-berg@users.noreply.github.com> Date: Tue, 20 Feb 2024 14:30:24 -0600 Subject: [PATCH 9/9] Update specification/configuration/sdk-environment-variables.md Co-authored-by: Marc Alff --- specification/configuration/sdk-environment-variables.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/specification/configuration/sdk-environment-variables.md b/specification/configuration/sdk-environment-variables.md index b9469057b84..1600c1bd7ac 100644 --- a/specification/configuration/sdk-environment-variables.md +++ b/specification/configuration/sdk-environment-variables.md @@ -304,7 +304,7 @@ Environment variables involved in [file configuration](./file-configuration.md). | Name | Description | Default | Notes | |------------------|------------------------------------------------------------------------------------------------------------------------------------|---------|-----------| -| OTEL_CONFIG_FILE | The path of the configuration file used to configure the SDK. If set other environment variables defined in this file are ignored. | | See below | +| OTEL_CONFIG_FILE | The path of the configuration file used to configure the SDK. If set other environment variables defined in the sdk environment variables specifications are ignored. | | See below | If `OTEL_CONFIG_FILE` is set, the file at the specified path is used to call [Parse](file-configuration.md#parse), [Merge Environment](./file-configuration.md#merge-environment), [Create](file-configuration.md#create).