-
Notifications
You must be signed in to change notification settings - Fork 806
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
Ingester: Add matchers to LabelNames() ingester RPC #6209
Conversation
2b01472
to
a9a2483
Compare
a9a2483
to
5262d1e
Compare
@@ -109,6 +109,10 @@ querier: | |||
# CLI flag: -querier.ingester-metadata-streaming | |||
[ingester_metadata_streaming: <boolean> | default = true] | |||
|
|||
# Use LabelNames ingester RPCs with match params. | |||
# CLI flag: -querier.ingester-label-names-with-matchers | |||
[ingester_label_names_with_matchers: <boolean> | default = false] |
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.
Do we need this config?
If the matcher is in the request, its not cause we always wanna filter out?
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.
This feature flag is for safe guarding during a deployment.
In this PR, queriers will start calling ingester LabelNames with Matchers. But if ingesters haven't restarted yet, then ingesters will ignore that and return label names without filtering out.
We can remove this flag in 2 releases and make this behavior the default.
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.
I suggest we add TODO or create an issue about removing/deprecating this flag now. Otherwise we will forget
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.
I was thinking that if the ingesters ignored the matchers in the request from the querier since the ingesters had not restarted yet, wouldn't that be the same behavior today since the ingesters already do not handle the matchers?
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.
Today's behavior for label names calls with matchers is like this:
- Querier will retrieve all the series using
MetricsForLabelMatchers
call. It'll then get the unique label names from the retrieved series.
The new behaviour is for label names calls with matchers:
- Querier will directly call
LabelNames
call and pass the matchers. - If ingesters ignore the matchers, this will break the API.
I think having the feature flag is unavoidable.
Created #6222 for tracking the deprecation of the flag.
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.
I see, thank you for the clarification @harry671003.
Signed-off-by: 🌲 Harry 🌊 John 🏔 <[email protected]>
5262d1e
to
a9a6dd1
Compare
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.
Thanks!
What this PR does:
Prometheus has supported matchers in LabelNames() API also. This change will pass the matchers to LabelNames() call on ingesters.
The main motivation is to improve the efficiency of /api/v1/labels and avoid using the MetricsWithLabelMatchers() call when it's not necessary.
Which issue(s) this PR fixes:
Fixes #
Checklist
CHANGELOG.md
updated - the order of entries should be[CHANGE]
,[FEATURE]
,[ENHANCEMENT]
,[BUGFIX]