-
Notifications
You must be signed in to change notification settings - Fork 164
Remote configuration for the SDK proposal #121
Remote configuration for the SDK proposal #121
Conversation
Co-authored-by: Sergey Kanzhelev <[email protected]>
@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:
I think this POC may uncover some limitations of current SDKs config story. |
There was a problem hiding this 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
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. |
There was a problem hiding this 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
``` | ||
message ConfigResponse { | ||
|
||
// Optional. The fingerprint associated with this ConfigResponse. Each change |
There was a problem hiding this comment.
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?
There was a problem hiding this comment.
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.
I am bothered by the wording in the motivation:
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. |
text/0121-config-service.md
Outdated
// 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; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
nits:
- because exclusion patterns have higher priority per the comment above, I would move it to the first position.
- I am not sure this grammar is expressive enough. Is there any prior art for this?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
- Changed!
- 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.
Co-authored-by: Yuri Shkuro <[email protected]>
Co-authored-by: Yuri Shkuro <[email protected]>
Co-authored-by: Yuri Shkuro <[email protected]>
Co-authored-by: Yuri Shkuro <[email protected]>
…teps into remote-configuration
Would welcome any more reviews! |
@churanchen Could you resolve the issues that you feel are resolve (and/or indicate which are resolved)? This helps reviewers. |
@yurishkuro is this ready to be merged in your opinion? @SergeyKanzhelev should we have a way to mark that this is experimental vs not? |
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. |
text/0121-config-service.md
Outdated
@@ -0,0 +1,127 @@ | |||
# A Dynamic Configuration Service for the SDK |
There was a problem hiding this comment.
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.
There was a problem hiding this comment.
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?
…teps into remote-configuration
* 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]>
* 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]>
* 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]>
* 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]>
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