Add per-metric string-value labels for prometheus output#863
Open
tarko wants to merge 1 commit into
Open
Conversation
|
Thanks for your pull request! It looks like this may be your first contribution to a Google open source project. Before we can look at your pull request, you'll need to sign a Contributor License Agreement (CLA). View this failed invocation of the CLA check for more information. For the most up to date status, view the checks section at the bottom of the pull request. |
Collaborator
|
@tarko you need to sign the CLA for the PR to be reviewed and accepted. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
When a gNMI subscription emits string-typed leaves alongside numeric ones (e.g. clei-code, name, descriptive identifiers), the existing strings-as-labels option turns those strings into Prometheus labels and applies them to all metrics produced from that event. This pollutes unrelated metrics with labels they don't logically belong to.
In my case I'm dealing with existing metrics infrastructure that has some assumptions about where (and more specifically, where-not) labels are added. As far as I've investigated, there is currently no way to do it as none of the processing functions allows one to split out specific values (so event-value-tag etc could be used to attach tags only to those values).
This POC (not to be merged as-is) adds a new opt-in Prometheus output config option strings-as-single-metric-labels that converts string-typed values into a label attached only to the metric derived from that value, rather than cross-applying it to every metric in the same event.
Example
With strings-as-single-metric-labels: true:
If this is acceptable then I can rework this accordingly, add support in TimeSeriesFromEvent etc.