opentelemetry-cpp
opentelemetry-cpp copied to clipboard
[CONFIG] Implement file configuration
The spec for file configuration is shaping up, opentelemetry-cpp needs to start planning for this.
- https://github.com/open-telemetry/oteps/pull/225
- https://github.com/open-telemetry/opentelemetry-specification/pull/3805
- https://github.com/open-telemetry/opentelemetry-specification/pull/3840
- https://github.com/open-telemetry/opentelemetry-specification/pull/3850
- https://github.com/open-telemetry/opentelemetry-specification/pull/3948
- https://github.com/open-telemetry/opentelemetry-specification/pull/3804
- https://github.com/open-telemetry/opentelemetry-specification/pull/3802
- https://github.com/open-telemetry/opentelemetry-specification/issues/3752
- https://github.com/open-telemetry/opentelemetry-specification/issues/3967
- https://github.com/open-telemetry/opentelemetry-specification/issues/3966
- https://github.com/open-telemetry/opentelemetry-configuration/issues/100
Spec: https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/configuration/file-configuration.md
Sub tasks:
- [X] Define the config file format (yaml)
- [X] Define the config file schema - experimental, see https://github.com/open-telemetry/opentelemetry-configuration
- [ ] Pick a yaml parser
- [X] Evaluate yaml-cpp - DO NOT USE
- [X] Evaluate libyaml - DO NOT USE
- [X] Evaluate rapidyaml - OK technically. MIT License.
- [ ] Legal - confirm license compatibility, see https://github.com/open-telemetry/community/issues/2383
- [ ] Evaluate other choices.
- [X] Define C++ classes for the config model
- [X] Propagators.
- [X] Traces.
- [X] Metrics.
- [X] Logs.
- [X] Implement environment variables substitution from yaml
- [X] Populate the C++ config model from yaml
- [X] Propagators.
- [X] Traces.
- [X] Metrics.
- [X] Logs.
- [ ] Instantiate SDK and exporter objects from the C++ config model
- [X] Propagators.
- [X] Traces.
- [ ] Metrics.
- [ ] Logs.
- [ ] User documentation
- [X] Define a registry for plugin components
- [X] propagators
- [X] trace plugins
- [X] samplers
- [X] span processors
- [X] span exporters
- [ ] metric plugins
- [ ] logs plugins
- [X] Populate config model from yaml, for registered third party components
- [X] propagators
- [X] trace plugins
- [X] samplers
- [X] span processors
- [X] span exporters
- [ ] metric plugins
- [ ] logs plugins
- [X] Instantiate plugins from config model, for registered third party components
- [X] propagators
- [X] trace plugins
- [X] samplers
- [X] span processors
- [X] span exporters
- [ ] metric plugins
- [ ] logs plugins
- [ ] Third party documentation (for implementing plugins)
Related issues, found while implementing this feature:
- community
- https://github.com/open-telemetry/community/issues/2383
- opentelemetry-configuration
- https://github.com/open-telemetry/opentelemetry-configuration/issues/70
- https://github.com/open-telemetry/opentelemetry-configuration/issues/72
- https://github.com/open-telemetry/opentelemetry-configuration/issues/74
- https://github.com/open-telemetry/opentelemetry-configuration/issues/75
- https://github.com/open-telemetry/opentelemetry-configuration/issues/108
- https://github.com/open-telemetry/opentelemetry-configuration/issues/109
- opentelemetry-specifications
- https://github.com/open-telemetry/opentelemetry-specification/issues/3894
- https://github.com/open-telemetry/opentelemetry-specification/pull/3913
- https://github.com/open-telemetry/opentelemetry-specification/issues/3920
- opentelemetry-cpp
- https://github.com/open-telemetry/opentelemetry-cpp/issues/2545
- https://github.com/open-telemetry/opentelemetry-cpp/issues/2552
- https://github.com/open-telemetry/opentelemetry-cpp/issues/2664
- ryml
- https://github.com/biojppm/rapidyaml/issues/455
- https://github.com/biojppm/rapidyaml/issues/458
- https://github.com/biojppm/rapidyaml/issues/468