Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Clarify use of double colon (::) notation in Collector config YAML paths #4484

Closed
tiffany76 opened this issue May 14, 2024 · 6 comments · Fixed by #4524
Closed

Clarify use of double colon (::) notation in Collector config YAML paths #4484

tiffany76 opened this issue May 14, 2024 · 6 comments · Fixed by #4524
Labels
question Further information is requested sig:collector

Comments

@tiffany76
Copy link
Contributor

Desired feature or idea: The use of a double colon (::) is valid syntax for configuring nested settings in a Collector config (for example, service::telemetry::metrics::level: detailed), but the double colon is not standard YAML notation. The use of the double colon should be explained in the Collector Configuration page.

Additional context: For reference, see #4322 (comment).

@svrnm
Copy link
Member

svrnm commented May 15, 2024

@open-telemetry/collector-approvers @open-telemetry/collector-maintainers please take a look

@mx-psi
Copy link
Member

mx-psi commented May 15, 2024

To be clear: service.telemetry.metrics.level is also not standard YAML notation. There is no standard to refer to nested keys in a YAML document as far as I am aware.

@theletterf
Copy link
Member

I'd rather use the dot notation, which is more Pythonesque and hence closer to Python? Although depending on the language one might recognize :: as a namespace notation. Slashes are another option.

See https://github.com/wwkimball/yamlpath/wiki/Segments-of-a-YAML-Path

@mx-psi
Copy link
Member

mx-psi commented May 17, 2024

The main downside of dot notation I see (which is the reason we use :: for referring to nested keys) is that OpenTelemetry semantic conventions use dots for namespacing and we occasionally use semantic conventions as the name of configuration settings.

To put a concrete example, take the following dockerstats receiver configuration from its README:

receivers:
  docker_stats:
    metrics:
      container.cpu.percent:
        enabled: false
      container.cpu.utilization:
        enabled: true

This configuration disables the container.cpu.percent metric and enables the container.cpu.utilization metric. How do you refer to the setting that does this? Using ::, you have receivers::docker_stats::metrics::container.cpu.percent, but if you use dots it becomes ambiguous (receivers.docker_stats.metrics.container.cpu.percent) and one doesn't know where to split for nesting

@svrnm
Copy link
Member

svrnm commented May 22, 2024

The main downside of dot notation I see (which is the reason we use :: for referring to nested keys) is that OpenTelemetry semantic conventions use dots for namespacing and we occasionally use semantic conventions as the name of configuration settings.

That's a great reason and we should put it that way in the doc, what do you think @tiffany76 ?

@tiffany76
Copy link
Contributor Author

Sounds good to me, @svrnm, @mx-psi . I will make the addition today. Thanks!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
question Further information is requested sig:collector
Projects
None yet
Development

Successfully merging a pull request may close this issue.

4 participants