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
3 changes: 3 additions & 0 deletions examples/kitchen-sink.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -436,3 +436,6 @@ instrumentation/development:
swift:
example:
property: "value"
distribution:
example:
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

is example the name of a distribution here? if not, should it be? e.g. in Java Instrumentation we have at least two (upstream) distributions agent and spring_starter, I could see it being helpful to know what kind of config yaml we're looking at

or if not, maybe distribution could have a (mandatory?) name:?

Copy link
Copy Markdown
Contributor Author

@ysolomchenko ysolomchenko Dec 3, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

example is the name of a vendor. For example splunk, grafana, new_relic

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I agree that a distribution cannot be empty and should have at least one vendor name inside it.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I pushed a commit that ensures this. It also ensures that each entry under distribution is an object, disallowing something like:

distribution:
  grafana: bar

Has to be modeled like:

distribution:
  grafana:
    property: bar

property: "value"
11 changes: 11 additions & 0 deletions opentelemetry_configuration.json
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,10 @@
"instrumentation/development": {
"$ref": "#/$defs/ExperimentalInstrumentation",
"description": "Configure instrumentation.\nIf omitted, instrumentation defaults are used.\n"
},
"distribution": {
"$ref": "#/$defs/Distribution",
"description": "Defines configuration parameters specific to a particular OpenTelemetry distribution or vendor.\nThis section provides a standardized location for distribution-specific settings\nthat are not part of the OpenTelemetry configuration model.\nIt allows vendors to expose their own extensions and general configuration options.\nIf omitted, distribution defaults are used.\n"
}
},
"required": [
Expand Down Expand Up @@ -438,6 +442,13 @@
],
"additionalProperties": false
},
"Distribution": {
"type": "object",
"additionalProperties": {
"type": "object"
},
"minProperties": 1
},
"DropAggregation": {
"type": [
"object",
Expand Down
43 changes: 39 additions & 4 deletions schema-docs.md
Original file line number Diff line number Diff line change
Expand Up @@ -814,6 +814,32 @@ Usages:
}</pre>
</details>

## Distribution <a id="distribution"></a>

No properties.

Constraints:

* `additionalProperties`: `{"type":"object"}`
* `minProperties`: `1`

Usages:

* [`OpenTelemetryConfiguration.distribution`](#opentelemetryconfiguration)

<details>
<summary>JSON Schema</summary>

[JSON Schema Source File](./schema/opentelemetry_configuration.yaml)
<pre>{
"type": "object",
"additionalProperties": {
"type": "object"
},
"minProperties": 1
}</pre>
</details>

## DropAggregation <a id="dropaggregation"></a>

No properties.
Expand Down Expand Up @@ -1773,6 +1799,7 @@ Usages:
|---|---|---|---|---|---|
| `attribute_limits` | [`AttributeLimits`](#attributelimits) | `false` | If omitted, default values as described in AttributeLimits are used. | No constraints. | Configure general attribute limits. See also tracer_provider.limits, logger_provider.limits.<br> |
| `disabled` | one of:<br>* `boolean`<br>* `null`<br> | `false` | If omitted or null, false is used. | No constraints. | Configure if the SDK is disabled or not.<br> |
| `distribution` | [`Distribution`](#distribution) | `false` | If omitted, distribution defaults are used. | No constraints. | Defines configuration parameters specific to a particular OpenTelemetry distribution or vendor.<br>This section provides a standardized location for distribution-specific settings<br>that are not part of the OpenTelemetry configuration model.<br>It allows vendors to expose their own extensions and general configuration options.<br> |
| `file_format` | `string` | `true` | Property is required and must be non-null. | No constraints. | The file format version.<br>Represented as a string including the semver major, minor version numbers (and optionally the meta tag). For example: "0.4", "1.0-rc.2", "1.0" (after stable release).<br>See https://github.com/open-telemetry/opentelemetry-configuration/blob/main/VERSIONING.md for more details.<br>The yaml format is documented at https://github.com/open-telemetry/opentelemetry-configuration/tree/main/schema<br> |
| `log_level` | [`SeverityNumber`](#severitynumber) | `false` | If omitted, INFO is used. | No constraints. | Configure the log level of the internal logger used by the SDK.<br> |
| `logger_provider` | [`LoggerProvider`](#loggerprovider) | `false` | If omitted, a noop logger provider is used. | No constraints. | Configure logger provider.<br> |
Expand All @@ -1789,6 +1816,7 @@ Usages:
|---|---|---|---|---|
| `attribute_limits` | supported | unknown | supported | unknown |
| `disabled` | supported | unknown | supported | unknown |
| `distribution` | supported | unknown | supported | unknown |
| `file_format` | supported | unknown | supported | unknown |
| `log_level` | supported | unknown | not_implemented | unknown |
| `logger_provider` | supported | unknown | supported | unknown |
Expand Down Expand Up @@ -1849,6 +1877,9 @@ No usages.
},
"instrumentation/development": {
"$ref": "#/$defs/ExperimentalInstrumentation"
},
"distribution": {
"$ref": "#/$defs/Distribution"
}
},
"required": [
Expand Down Expand Up @@ -5623,6 +5654,7 @@ Latest supported file format: `1.0.0-rc.2`
| [`ConsoleExporter`](#consoleexporter) | supported | | |
| [`ConsoleMetricExporter`](#consolemetricexporter) | supported | | * `default_histogram_aggregation`: supported<br>* `temporality_preference`: supported<br> |
| [`DefaultAggregation`](#defaultaggregation) | supported | | |
| [`Distribution`](#distribution) | unknown | | |
| [`DropAggregation`](#dropaggregation) | supported | | |
| [`ExemplarFilter`](#exemplarfilter) | not_implemented | | * `always_off`: not_implemented<br>* `always_on`: not_implemented<br>* `trace_based`: not_implemented<br> |
| [`ExplicitBucketHistogramAggregation`](#explicitbuckethistogramaggregation) | supported | | * `boundaries`: supported<br>* `record_min_max`: supported<br> |
Expand All @@ -5643,7 +5675,7 @@ Latest supported file format: `1.0.0-rc.2`
| [`MetricReader`](#metricreader) | supported | | * `periodic`: supported<br>* `pull`: supported<br> |
| [`NameStringValuePair`](#namestringvaluepair) | supported | | * `name`: supported<br>* `value`: supported<br> |
| [`OpenCensusMetricProducer`](#opencensusmetricproducer) | supported | | |
| [`OpenTelemetryConfiguration`](#opentelemetryconfiguration) | supported | | * `attribute_limits`: supported<br>* `disabled`: supported<br>* `file_format`: supported<br>* `log_level`: supported<br>* `logger_provider`: supported<br>* `meter_provider`: supported<br>* `propagator`: supported<br>* `resource`: supported<br>* `tracer_provider`: supported<br>* `instrumentation/development`: supported<br> |
| [`OpenTelemetryConfiguration`](#opentelemetryconfiguration) | supported | | * `attribute_limits`: supported<br>* `disabled`: supported<br>* `distribution`: supported<br>* `file_format`: supported<br>* `log_level`: supported<br>* `logger_provider`: supported<br>* `meter_provider`: supported<br>* `propagator`: supported<br>* `resource`: supported<br>* `tracer_provider`: supported<br>* `instrumentation/development`: supported<br> |
| [`OpenTracingPropagator`](#opentracingpropagator) | not_implemented | | |
| [`OtlpGrpcExporter`](#otlpgrpcexporter) | supported | | * `compression`: supported<br>* `endpoint`: supported<br>* `headers`: supported<br>* `headers_list`: supported<br>* `timeout`: supported<br>* `tls`: supported<br> |
| [`OtlpGrpcMetricExporter`](#otlpgrpcmetricexporter) | supported | | * `compression`: supported<br>* `default_histogram_aggregation`: supported<br>* `endpoint`: supported<br>* `headers`: supported<br>* `headers_list`: supported<br>* `temporality_preference`: supported<br>* `timeout`: supported<br>* `tls`: supported<br> |
Expand Down Expand Up @@ -5736,6 +5768,7 @@ Latest supported file format: `0.3.0`
| [`ConsoleExporter`](#consoleexporter) | unknown | | |
| [`ConsoleMetricExporter`](#consolemetricexporter) | unknown | | * `default_histogram_aggregation`: unknown<br>* `temporality_preference`: unknown<br> |
| [`DefaultAggregation`](#defaultaggregation) | unknown | | |
| [`Distribution`](#distribution) | unknown | | |
| [`DropAggregation`](#dropaggregation) | unknown | | |
| [`ExemplarFilter`](#exemplarfilter) | unknown | | * `always_off`: unknown<br>* `always_on`: unknown<br>* `trace_based`: unknown<br> |
| [`ExplicitBucketHistogramAggregation`](#explicitbuckethistogramaggregation) | unknown | | * `boundaries`: unknown<br>* `record_min_max`: unknown<br> |
Expand All @@ -5756,7 +5789,7 @@ Latest supported file format: `0.3.0`
| [`MetricReader`](#metricreader) | unknown | | * `periodic`: unknown<br>* `pull`: unknown<br> |
| [`NameStringValuePair`](#namestringvaluepair) | unknown | | * `name`: unknown<br>* `value`: unknown<br> |
| [`OpenCensusMetricProducer`](#opencensusmetricproducer) | unknown | | |
| [`OpenTelemetryConfiguration`](#opentelemetryconfiguration) | unknown | | * `attribute_limits`: unknown<br>* `disabled`: unknown<br>* `file_format`: unknown<br>* `log_level`: unknown<br>* `logger_provider`: unknown<br>* `meter_provider`: unknown<br>* `propagator`: unknown<br>* `resource`: unknown<br>* `tracer_provider`: unknown<br>* `instrumentation/development`: unknown<br> |
| [`OpenTelemetryConfiguration`](#opentelemetryconfiguration) | unknown | | * `attribute_limits`: unknown<br>* `disabled`: unknown<br>* `distribution`: unknown<br>* `file_format`: unknown<br>* `log_level`: unknown<br>* `logger_provider`: unknown<br>* `meter_provider`: unknown<br>* `propagator`: unknown<br>* `resource`: unknown<br>* `tracer_provider`: unknown<br>* `instrumentation/development`: unknown<br> |
| [`OpenTracingPropagator`](#opentracingpropagator) | unknown | | |
| [`OtlpGrpcExporter`](#otlpgrpcexporter) | unknown | | * `compression`: unknown<br>* `endpoint`: unknown<br>* `headers`: unknown<br>* `headers_list`: unknown<br>* `timeout`: unknown<br>* `tls`: unknown<br> |
| [`OtlpGrpcMetricExporter`](#otlpgrpcmetricexporter) | unknown | | * `compression`: unknown<br>* `default_histogram_aggregation`: unknown<br>* `endpoint`: unknown<br>* `headers`: unknown<br>* `headers_list`: unknown<br>* `temporality_preference`: unknown<br>* `timeout`: unknown<br>* `tls`: unknown<br> |
Expand Down Expand Up @@ -5849,6 +5882,7 @@ Latest supported file format: `1.0.0-rc.1`
| [`ConsoleExporter`](#consoleexporter) | supported | | |
| [`ConsoleMetricExporter`](#consolemetricexporter) | supported | | * `default_histogram_aggregation`: not_implemented<br>* `temporality_preference`: ignored<br> |
| [`DefaultAggregation`](#defaultaggregation) | supported | | |
| [`Distribution`](#distribution) | unknown | | |
| [`DropAggregation`](#dropaggregation) | supported | | |
| [`ExemplarFilter`](#exemplarfilter) | supported | | * `always_off`: supported<br>* `always_on`: supported<br>* `trace_based`: supported<br> |
| [`ExplicitBucketHistogramAggregation`](#explicitbuckethistogramaggregation) | supported | | * `boundaries`: supported<br>* `record_min_max`: not_implemented<br> |
Expand All @@ -5869,7 +5903,7 @@ Latest supported file format: `1.0.0-rc.1`
| [`MetricReader`](#metricreader) | supported | | * `periodic`: supported<br>* `pull`: supported<br> |
| [`NameStringValuePair`](#namestringvaluepair) | supported | | * `name`: supported<br>* `value`: supported<br> |
| [`OpenCensusMetricProducer`](#opencensusmetricproducer) | ignored | | |
| [`OpenTelemetryConfiguration`](#opentelemetryconfiguration) | supported | | * `attribute_limits`: supported<br>* `disabled`: supported<br>* `file_format`: supported<br>* `log_level`: not_implemented<br>* `logger_provider`: supported<br>* `meter_provider`: supported<br>* `propagator`: supported<br>* `resource`: supported<br>* `tracer_provider`: supported<br>* `instrumentation/development`: supported<br> |
| [`OpenTelemetryConfiguration`](#opentelemetryconfiguration) | supported | | * `attribute_limits`: supported<br>* `disabled`: supported<br>* `distribution`: supported<br>* `file_format`: supported<br>* `log_level`: not_implemented<br>* `logger_provider`: supported<br>* `meter_provider`: supported<br>* `propagator`: supported<br>* `resource`: supported<br>* `tracer_provider`: supported<br>* `instrumentation/development`: supported<br> |
| [`OpenTracingPropagator`](#opentracingpropagator) | supported | | |
| [`OtlpGrpcExporter`](#otlpgrpcexporter) | supported | | * `compression`: supported<br>* `endpoint`: supported<br>* `headers`: supported<br>* `headers_list`: supported<br>* `timeout`: supported<br>* `tls`: ignored<br> |
| [`OtlpGrpcMetricExporter`](#otlpgrpcmetricexporter) | supported | | * `compression`: supported<br>* `default_histogram_aggregation`: supported<br>* `endpoint`: supported<br>* `headers`: supported<br>* `headers_list`: supported<br>* `temporality_preference`: supported<br>* `timeout`: supported<br>* `tls`: ignored<br> |
Expand Down Expand Up @@ -5962,6 +5996,7 @@ Latest supported file format: `1.0.0-rc.2`
| [`ConsoleExporter`](#consoleexporter) | unknown | | |
| [`ConsoleMetricExporter`](#consolemetricexporter) | unknown | | * `default_histogram_aggregation`: unknown<br>* `temporality_preference`: unknown<br> |
| [`DefaultAggregation`](#defaultaggregation) | unknown | | |
| [`Distribution`](#distribution) | unknown | | |
| [`DropAggregation`](#dropaggregation) | unknown | | |
| [`ExemplarFilter`](#exemplarfilter) | unknown | | * `always_off`: unknown<br>* `always_on`: unknown<br>* `trace_based`: unknown<br> |
| [`ExplicitBucketHistogramAggregation`](#explicitbuckethistogramaggregation) | unknown | | * `boundaries`: unknown<br>* `record_min_max`: unknown<br> |
Expand All @@ -5982,7 +6017,7 @@ Latest supported file format: `1.0.0-rc.2`
| [`MetricReader`](#metricreader) | unknown | | * `periodic`: unknown<br>* `pull`: unknown<br> |
| [`NameStringValuePair`](#namestringvaluepair) | unknown | | * `name`: unknown<br>* `value`: unknown<br> |
| [`OpenCensusMetricProducer`](#opencensusmetricproducer) | unknown | | |
| [`OpenTelemetryConfiguration`](#opentelemetryconfiguration) | unknown | | * `attribute_limits`: unknown<br>* `disabled`: unknown<br>* `file_format`: unknown<br>* `log_level`: unknown<br>* `logger_provider`: unknown<br>* `meter_provider`: unknown<br>* `propagator`: unknown<br>* `resource`: unknown<br>* `tracer_provider`: unknown<br>* `instrumentation/development`: unknown<br> |
| [`OpenTelemetryConfiguration`](#opentelemetryconfiguration) | unknown | | * `attribute_limits`: unknown<br>* `disabled`: unknown<br>* `distribution`: unknown<br>* `file_format`: unknown<br>* `log_level`: unknown<br>* `logger_provider`: unknown<br>* `meter_provider`: unknown<br>* `propagator`: unknown<br>* `resource`: unknown<br>* `tracer_provider`: unknown<br>* `instrumentation/development`: unknown<br> |
| [`OpenTracingPropagator`](#opentracingpropagator) | unknown | | |
| [`OtlpGrpcExporter`](#otlpgrpcexporter) | unknown | | * `compression`: unknown<br>* `endpoint`: unknown<br>* `headers`: unknown<br>* `headers_list`: unknown<br>* `timeout`: unknown<br>* `tls`: unknown<br> |
| [`OtlpGrpcMetricExporter`](#otlpgrpcmetricexporter) | unknown | | * `compression`: unknown<br>* `default_histogram_aggregation`: unknown<br>* `endpoint`: unknown<br>* `headers`: unknown<br>* `headers_list`: unknown<br>* `temporality_preference`: unknown<br>* `timeout`: unknown<br>* `tls`: unknown<br> |
Expand Down
3 changes: 3 additions & 0 deletions schema/meta_schema_language_cpp.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,9 @@ typeSupportStatuses:
- type: DefaultAggregation
status: supported
propertyOverrides: []
- type: Distribution
status: unknown
propertyOverrides: []
- type: DropAggregation
status: supported
propertyOverrides: []
Expand Down
3 changes: 3 additions & 0 deletions schema/meta_schema_language_go.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,9 @@ typeSupportStatuses:
- type: DefaultAggregation
status: unknown
propertyOverrides: []
- type: Distribution
status: unknown
propertyOverrides: []
- type: DropAggregation
status: unknown
propertyOverrides: []
Expand Down
3 changes: 3 additions & 0 deletions schema/meta_schema_language_java.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -54,6 +54,9 @@ typeSupportStatuses:
- type: DefaultAggregation
status: supported
propertyOverrides: []
- type: Distribution
status: unknown
propertyOverrides: []
- type: DropAggregation
status: supported
propertyOverrides: []
Expand Down
3 changes: 3 additions & 0 deletions schema/meta_schema_language_js.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,9 @@ typeSupportStatuses:
- type: DefaultAggregation
status: unknown
propertyOverrides: []
- type: Distribution
status: unknown
propertyOverrides: []
- type: DropAggregation
status: unknown
propertyOverrides: []
Expand Down
13 changes: 13 additions & 0 deletions schema/opentelemetry_configuration.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -55,6 +55,14 @@ properties:
description: |
Configure instrumentation.
defaultBehavior: instrumentation defaults are used
distribution:
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Should this be distribution/development, and reference #/$defs/ExperimentalDistribution?

With stability coming soon, we had better be sure about anything which isn't marked experimental. Makes me nervous to have new concepts which will be stable out of the gate.

Copy link
Copy Markdown
Contributor Author

@ysolomchenko ysolomchenko Dec 3, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm not sure why this need to be marked as unstable, since there are no configurations for OpenTelemetry inside the node. Everything used there relies on vendor-specific configurations. The only thing that might be unstable on the OpenTelemetry side is the name of this node. Should we really mark it as development just because of that?

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm not sure why this need to be marked as unstable

The argument is that its a new concept that has not been leveraged anywhere. If we mark it stable and get it wrong, we're stuck with it forever. OpenTelemetry tends to be conservative.

With that said, distributions are not a new concept in otel and we've been contending where to put distribution specific configuration for a while. I don't think we'll come with a different answer.

$ref: "#/$defs/Distribution"
description: |
Defines configuration parameters specific to a particular OpenTelemetry distribution or vendor.
This section provides a standardized location for distribution-specific settings
that are not part of the OpenTelemetry configuration model.
It allows vendors to expose their own extensions and general configuration options.
defaultBehavior: distribution defaults are used
required:
- file_format
$defs:
Expand Down Expand Up @@ -92,3 +100,8 @@ $defs:
$ref: resource.yaml
ExperimentalInstrumentation:
$ref: instrumentation.yaml
Distribution:
type: object
additionalProperties:
type: object
minProperties: 1
Loading