-
Notifications
You must be signed in to change notification settings - Fork 9.1k
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
Expose histogram_quantile() target bucket lower/upper bounds as series? #5706
Comments
I'm not clear that this is something that belongs in PromQL. If someone wants to do this sort of deeper analysis, the data is already there.
We presently only have one function (absent) that can return more series than it was passed in, and I'd like to keep it that way. I'm also against overloading functions. |
It's hard for the average user to do by themselves though. If this turned out to be useful for enough users it would be a shame if they had to implement this themselves (which I think nobody would do), while it's a readily-available by-product of calculations already happening in But yeah, that's a question of how popular and useful it would be. I do see that it would be somewhat quirky. |
This feels more like a sanity check thing to me, which would be better in a linter that's looking for alerts on series that don't exist, rates of sums etc. |
I'd see it as giving a user an ongoing idea of the possible quantile error during operation, though it'd also be useful for the tuning/linting use case you mention. |
That's determinable by inspection, no need for runtime information. |
If you want to present a 99th-perc-latency graph or a current 99th-perc-latency value as part of a dashboard, and you also want to show the lower and upper bound of the currently relevant bucket, how would you solve that by "inspection" in practice? I assume users wouldn't like to hardcode the bucketing scheme in their dashboard builder. With the current tooling, you would probably need to export the bucket boundaries as separate time series. Which is pretty crazy. It would be much easier if Prometheus represented the boundaries as floating point numbers rather than strings. You could do math on them, and use cases like this, even if they are a bit niche, would be solvable in a natural way as a byproduct. Back in the days, we considered the representation of the boundaries as strings a temporary work-around to get an MVP going ASAP. It's sad that we somehow got stuck with it. Even worse, our MVP is now leaking into OpenMetrics, with the consequences already haunting us. |
My point was more that you can determine the accuracy in general by knowing the histogram buckets, without having to know which bucket is in use. Inconsistently sized buckets (e.g. not arithmetic or geometric growth) in particular could be caught. |
With the current cost of histograms (one series per bucket), spreading them evenly over the range of interest will overwhelm even the beefiest Prometheus servers in many scenarios. (At SoundCloud, teams had to revert to put buckets around interesting values like the latency mentioned in the SLO. If the current value was far away from that, the higher error range that came with that was just something you had to know about and couldn't visualize in dashboards.) But even with geometric spacing, you still just need to know if you are on a x1.5, x2, or even x10 bucketing scheme. |
Hi. I am using prometheus along with k8s. Response time for my service is 10-15s usually. When I use prometheus' |
Can someone help me with this? |
@harsha070 a GH issue is not a good place to get support for a (only vaguely related) configuration problem. It makes more sense to ask questions like this on the prometheus-users mailing list. On the mailing list, more people are available to potentially respond to your question, and the whole community can benefit from the answers provided. |
…ted percentile from `histogram_quantile` if third arg is passed Updates prometheus/prometheus#5706
…ted percentile from `histogram_quantile` if third arg is passed Updates prometheus/prometheus#5706
FYI, just added ability to pass third arg to
The query uses |
Hi @valyala, I/we are really happy about anyone building cool products/projects around Prometheus, and I think VictoriaMetrics is making some interesting technical contributions. But at the same time we're seeing a pattern with VM that we see as increasingly problematic:
So from my perspective: I'm happy to see what comes out of VictoriaMetrics, but maybe be a bit more sensitive about using Prometheus channels to push it at every available opportunity. Secondly and more importantly, I think it would be the right thing to do to at least make "Extended PromQL" a fully compatible superset of PromQL or rename it completely to not suggest compatibility. Even if it was compatible however, it wouldn't completely avoid the issues about interoperability/fragmentation, and the connected trademark issues (without an appropriate rename). |
@vearutop Most of those qualify, yes. The mailing list at https://groups.google.com/forum/#!searchin/prometheus-users/from$3Avalyala@gmail.com$20victoriametrics%7Csort:date contains many more examples though. And again, it's not necessarily about each individual comment or post, it's about the pattern, and about pushing users onto a system that is deliberately incompatible, both in its PromQL subset, and in its "Extended PromQL" superset. This means that users can never go back to PromQL-compatible systems without breakage. @valyala has the right to build an incompatible system (naming issues aside), but then the Prometheus OSS community also has the right to discourage the above-mentioned communication behavior on our OSS channels. |
Closing and locking this issue as this is not the right place for this discussion (we're in the process of finding it), and the original issue probably won't be implemented anyway. |
The idea was born out of a conversation at https://twitter.com/juliusvolz/status/1142364117661036544.
To give users a better idea of the quantile error margin of
histogram_quantile()
, it would be useful to expose the target bucket's lower and upper bounds as two extra series in the same graph as the approximated quantile.Something like this (using a hacked-up version of
histogram_quantile()
):histogram_quantile()
as an option? E.g.histogram_quantile(φ float, b instant-vector, include_bounds bool, type_label string)
Doing it in the same function would have the advantage that we don't need to calculate the target bucket twice.
The text was updated successfully, but these errors were encountered: