instrument ingester query path with pprof user label #7184
Merged
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.
What this PR does:
Currently in the Cortex read path, there is the slow query and query stats log available to gain insights of query performance to see how heavy a query is. However, this doesn't cover all the usecases in order to identify a heavy query.
One common way to identify expensive queries is via CPU profiling. For example, unoptimized regex queries can be super expensive to evaluate and cause Ingester CPU to spike to 100%. There is no way to track how expensive a regex matcher as it is too granular. Since expensive queries usually show up in Ingester CPU profile, adding more visibility to the CPU profile itself can help identify the bad tenant or the query.
In this PR, we start to instrument Ingester query path APIs with pprof label
user=<userID>so that when looking at the Ingester CPU profile, we can at least identify which tenant ran the expensive query.Which issue(s) this PR fixes:
Fixes #
Checklist
CHANGELOG.mdupdated - the order of entries should be[CHANGE],[FEATURE],[ENHANCEMENT],[BUGFIX]