Skip to content
This repository has been archived by the owner on Dec 6, 2024. It is now read-only.

Remote configuration for the SDK proposal #121

Merged
merged 31 commits into from
Jul 22, 2020

Conversation

churanchen
Copy link
Contributor

@churanchen churanchen commented Jun 25, 2020

This proposal asks for approval to create an experimental feature for remote configuration of the SDK, per [this] (https://github.com/open-telemetry/opentelemetry-specification/tree/master/experimental) framework. This experiment specifically focuses on configuring metric collection.

It is related to this PR: open-telemetry/opentelemetry-proto#155

Spec: OpenTelemetry.Configuration.Service.pdf

@linux-foundation-easycla
Copy link

linux-foundation-easycla bot commented Jun 25, 2020

CLA Check
The committers are authorized under a signed CLA.

text/0121-config-service.md Outdated Show resolved Hide resolved
text/0121-config-service.md Outdated Show resolved Hide resolved
text/0121-config-service.md Outdated Show resolved Hide resolved
text/0121-config-service.md Outdated Show resolved Hide resolved
text/0121-config-service.md Outdated Show resolved Hide resolved
@SergeyKanzhelev
Copy link
Member

SergeyKanzhelev commented Jun 30, 2020

@tigrannajaryan thank you for review! Very good topics are raised. Do you agree with this project as an experimental project to be moved forward?

It is hidden in the otep description, but the motivation is to get this to POC and than decide on how to move it to the main product:

It is intended to seek approval to develop a proof of concept.

I think this POC may uncover some limitations of current SDKs config story.

Copy link
Member

@SergeyKanzhelev SergeyKanzhelev left a comment

Choose a reason for hiding this comment

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

approving as an experiment with the couple suggestions to address tigran's questions

@tigrannajaryan
Copy link
Member

tigrannajaryan commented Jun 30, 2020

@tigrannajaryan thank you for review! Very good topics are raised. Do you agree with this project as an experimental project to be moved forward?

It is hidden in the otep description, but the motivation is to get this to POC and than decide on how to move it to the main product:

It is intended to seek approval to develop a proof of concept.

I think this POC may uncover some limitations of current SDKs config story.

Yes, definitely, I think remote configuration is a very useful addition. Assuming this is an experiment I do not see anything that prevents us from moving forward. For production use this will need more refinement but it can be done after the PoC.

Copy link
Member

@c24t c24t left a comment

Choose a reason for hiding this comment

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

A few nits and questions, but LGTM to go ahead. Looking forward to using this to configure tracing too!

text/0121-config-service.md Outdated Show resolved Hide resolved
text/0121-config-service.md Outdated Show resolved Hide resolved
text/0121-config-service.md Outdated Show resolved Hide resolved
text/0121-config-service.md Outdated Show resolved Hide resolved
```
message ConfigResponse {

// Optional. The fingerprint associated with this ConfigResponse. Each change
Copy link
Member

Choose a reason for hiding this comment

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

Should response fields be optional?

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Our intention for the fingerprint field was to have an identifier for configs that the user can set and use if they wish, similar to the metadata field. The idea being that there might be some fields that are nice and useful to include, but that we shouldn't force the end users to have in their configs.

text/0121-config-service.md Outdated Show resolved Hide resolved
text/0121-config-service.md Outdated Show resolved Hide resolved
@yurishkuro
Copy link
Member

I am bothered by the wording in the motivation:

This OTEP is a request for an experimental feature... It is intended to seek approval to develop a proof of concept.

OTEL is supposed to be a collaborative project, not a rigid process. No "approval" is required to develop experimental features or proofs of concept.

OTEP is an "enhancement proposal". You're proposing new functionality and the OTEP is used to discuss the design decisions and pros & cons, not to seek approval.

It is also a good practice to cite prior art. This is not a new idea to have a remotely controlled configuration, Jaeger SDKs have implemented it from day 1.

// For this iteration, since we only want one Schedule that applies to all metrics,
// we will not check the inclusion_patterns and exclusion_patterns.
repeated Pattern inclusion_patterns = 1;
repeated Pattern exclusion_patterns = 2;
Copy link
Member

Choose a reason for hiding this comment

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

nits:

  1. because exclusion patterns have higher priority per the comment above, I would move it to the first position.
  2. I am not sure this grammar is expressive enough. Is there any prior art for this?

Copy link
Contributor Author

Choose a reason for hiding this comment

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

  1. Changed!
  2. The choice to use exact match and starts with was made because they are more efficient to apply and clearer to read than more expressive alternatives, and have in practice been the only required pattern types for specifying metric names in Google's internal metric collection configuration protocol. However we are open to also adding a more expressive grammar such as regex or glob as a third option for a pattern type, so that monitoring backends can optionally choose to support a more expressive grammar without affecting efficiency for the simpler pattern types.

@churanchen
Copy link
Contributor Author

Would welcome any more reviews!

@jmacd
Copy link
Contributor

jmacd commented Jul 21, 2020

@churanchen Could you resolve the issues that you feel are resolve (and/or indicate which are resolved)? This helps reviewers.

@bogdandrutu
Copy link
Member

@yurishkuro is this ready to be merged in your opinion?

@SergeyKanzhelev should we have a way to mark that this is experimental vs not?

@yurishkuro
Copy link
Member

I have no objections to merging. I have not had experience with metrics library that requires external configuration, so aside from the general config mechanism I don't have an opinion on the metrics-specific details of this proposal.

@@ -0,0 +1,127 @@
# A Dynamic Configuration Service for the SDK
Copy link
Member

Choose a reason for hiding this comment

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

Consider to move this to experimental/... this way we know that it is experimental.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Done! @SergeyKanzhelev, would it be a good idea to move the z-pages otep there as well?

@SergeyKanzhelev SergeyKanzhelev merged commit efa4534 into open-telemetry:master Jul 22, 2020
carlosalberto pushed a commit to carlosalberto/oteps that referenced this pull request Oct 23, 2024
* Otep for dynamic configuration

* Revisions

* Further explanation

* Fix link

* Revise proposal

Co-authored-by: Sergey Kanzhelev <[email protected]>

* Revisions

* Make experimental

* Slight revisions

* Revisions

* Phase 1

* Revisions

* Change filename

* Fix lint errors

* Update text/0121-config-service.md

Co-authored-by: Chris Kleinknecht <[email protected]>

* Revisions

* Fix lint errors

* Add metadata explanation

* Update text/0121-config-service.md

Co-authored-by: Yuri Shkuro <[email protected]>

* Update text/0121-config-service.md

Co-authored-by: Yuri Shkuro <[email protected]>

* Update text/0121-config-service.md

Co-authored-by: Yuri Shkuro <[email protected]>

* Update text/0121-config-service.md

Co-authored-by: Yuri Shkuro <[email protected]>

* Change period from enum to int

* Specified service for metrics, removed tracing

* Switch to MetricConfig

* Clarify period description

* Remove metadata field

* Move to experimental folder

Co-authored-by: Sergey Kanzhelev <[email protected]>
Co-authored-by: Chris Kleinknecht <[email protected]>
Co-authored-by: Yuri Shkuro <[email protected]>
Co-authored-by: Bogdan Drutu <[email protected]>
carlosalberto pushed a commit to carlosalberto/oteps that referenced this pull request Oct 23, 2024
* Otep for dynamic configuration

* Revisions

* Further explanation

* Fix link

* Revise proposal

Co-authored-by: Sergey Kanzhelev <[email protected]>

* Revisions

* Make experimental

* Slight revisions

* Revisions

* Phase 1

* Revisions

* Change filename

* Fix lint errors

* Update text/0121-config-service.md

Co-authored-by: Chris Kleinknecht <[email protected]>

* Revisions

* Fix lint errors

* Add metadata explanation

* Update text/0121-config-service.md

Co-authored-by: Yuri Shkuro <[email protected]>

* Update text/0121-config-service.md

Co-authored-by: Yuri Shkuro <[email protected]>

* Update text/0121-config-service.md

Co-authored-by: Yuri Shkuro <[email protected]>

* Update text/0121-config-service.md

Co-authored-by: Yuri Shkuro <[email protected]>

* Change period from enum to int

* Specified service for metrics, removed tracing

* Switch to MetricConfig

* Clarify period description

* Remove metadata field

* Move to experimental folder

Co-authored-by: Sergey Kanzhelev <[email protected]>
Co-authored-by: Chris Kleinknecht <[email protected]>
Co-authored-by: Yuri Shkuro <[email protected]>
Co-authored-by: Bogdan Drutu <[email protected]>
carlosalberto pushed a commit to carlosalberto/oteps that referenced this pull request Oct 30, 2024
* Otep for dynamic configuration

* Revisions

* Further explanation

* Fix link

* Revise proposal

Co-authored-by: Sergey Kanzhelev <[email protected]>

* Revisions

* Make experimental

* Slight revisions

* Revisions

* Phase 1

* Revisions

* Change filename

* Fix lint errors

* Update text/0121-config-service.md

Co-authored-by: Chris Kleinknecht <[email protected]>

* Revisions

* Fix lint errors

* Add metadata explanation

* Update text/0121-config-service.md

Co-authored-by: Yuri Shkuro <[email protected]>

* Update text/0121-config-service.md

Co-authored-by: Yuri Shkuro <[email protected]>

* Update text/0121-config-service.md

Co-authored-by: Yuri Shkuro <[email protected]>

* Update text/0121-config-service.md

Co-authored-by: Yuri Shkuro <[email protected]>

* Change period from enum to int

* Specified service for metrics, removed tracing

* Switch to MetricConfig

* Clarify period description

* Remove metadata field

* Move to experimental folder

Co-authored-by: Sergey Kanzhelev <[email protected]>
Co-authored-by: Chris Kleinknecht <[email protected]>
Co-authored-by: Yuri Shkuro <[email protected]>
Co-authored-by: Bogdan Drutu <[email protected]>
carlosalberto pushed a commit to open-telemetry/opentelemetry-specification that referenced this pull request Nov 8, 2024
* Otep for dynamic configuration

* Revisions

* Further explanation

* Fix link

* Revise proposal

Co-authored-by: Sergey Kanzhelev <[email protected]>

* Revisions

* Make experimental

* Slight revisions

* Revisions

* Phase 1

* Revisions

* Change filename

* Fix lint errors

* Update text/0121-config-service.md

Co-authored-by: Chris Kleinknecht <[email protected]>

* Revisions

* Fix lint errors

* Add metadata explanation

* Update text/0121-config-service.md

Co-authored-by: Yuri Shkuro <[email protected]>

* Update text/0121-config-service.md

Co-authored-by: Yuri Shkuro <[email protected]>

* Update text/0121-config-service.md

Co-authored-by: Yuri Shkuro <[email protected]>

* Update text/0121-config-service.md

Co-authored-by: Yuri Shkuro <[email protected]>

* Change period from enum to int

* Specified service for metrics, removed tracing

* Switch to MetricConfig

* Clarify period description

* Remove metadata field

* Move to experimental folder

Co-authored-by: Sergey Kanzhelev <[email protected]>
Co-authored-by: Chris Kleinknecht <[email protected]>
Co-authored-by: Yuri Shkuro <[email protected]>
Co-authored-by: Bogdan Drutu <[email protected]>
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

9 participants