Open
Description
The spec for file configuration is shaping up, opentelemetry-cpp needs to start planning for this.
- Configuration proposal oteps#225
- Define OTEL_CONFIG_FILE environment variable opentelemetry-specification#3805
- Define OTEL_CONFIG_FILE with environment variable merge semantics opentelemetry-specification#3840
- Define OTEL_CONFIG_FILE with placeholder for new environment variable override scheme opentelemetry-specification#3850
- Define OTEL_EXPERIMENTAL_CONFIG_FILE to ignore other env vars, add env var substitution default syntax opentelemetry-specification#3948
- Add spec compliance matrix entries for file configuration opentelemetry-specification#3804
- Define sdk extension component support in file configuration opentelemetry-specification#3802
- Should file configuration merge environment variable configuration? opentelemetry-specification#3752
- Deprecate environment variables which do not interoperate with file config when ready for stabilization opentelemetry-specification#3967
- Ensure that file config has solution for platforms which contribute to config opentelemetry-specification#3966
- Tracking language implementations opentelemetry-configuration#100
Sub tasks:
- Define the config file format (yaml)
- Define the config file schema - experimental, see https://github.com/open-telemetry/opentelemetry-configuration
- Pick a yaml parser
- Evaluate yaml-cpp - DO NOT USE
- Evaluate libyaml - DO NOT USE
- Evaluate rapidyaml - OK technically. MIT License.
- Legal - confirm license compatibility, see Need legal review, licenses compatibility of third party dependencies with the OpenTelemetry license community#2383
- Evaluate other choices.
- Define C++ classes for the config model
- Propagators.
- Traces.
- Metrics.
- Logs.
- Implement environment variables substitution from yaml
- Populate the C++ config model from yaml
- Propagators.
- Traces.
- Metrics.
- Logs.
- Instantiate SDK and exporter objects from the C++ config model
- Propagators.
- Traces.
- Metrics.
- Logs.
- User documentation
- Define a registry for plugin components
- propagators
- trace plugins
- samplers
- span processors
- span exporters
- metric plugins
- logs plugins
- Populate config model from yaml, for registered third party components
- propagators
- trace plugins
- samplers
- span processors
- span exporters
- metric plugins
- logs plugins
- Instantiate plugins from config model, for registered third party components
- propagators
- trace plugins
- samplers
- span processors
- span exporters
- metric plugins
- logs plugins
- Third party documentation (for implementing plugins)
Related issues, found while implementing this feature:
- community
- opentelemetry-configuration
- Add IdGenerator in tracer_provider opentelemetry-configuration#70
- Improve key/value pairs in headers opentelemetry-configuration#72
- Rename file_format to avoid confusion opentelemetry-configuration#74
- Define schema for simple propagator opentelemetry-configuration#75
- [EXAMPLES] Periodic exporter interval default value is inconsistent. opentelemetry-configuration#108
- [SCHEMA] The MetricExporter schema is unsafe opentelemetry-configuration#109
- MetricReader allows invalid configurations opentelemetry-configuration#138
- opentelemetry-specifications
- [file configuration] Clarify environment variable substitution is not recursive. opentelemetry-specification#3894
- Clarify environment variable substitution is not recursive opentelemetry-specification#3913
- [File configuration] Alternate proposal for config.yaml, including merges opentelemetry-specification#3920
- opentelemetry-cpp
- ryml