如何让持续时间直方图显示 Y 轴的持续时间、X 轴的时间序列以及一条线的百分位数?

问题描述 投票:0回答:1

我有一个直方图指标来测量完成一篇文章所需的时间。我正在使用 OpenTelemetry 的 .NET 库和 .NET 的内置直方图类。通过这个,我得到了一个带有

bucket
前缀的指标,该指标上有
le
属性,其中包含每个存储桶的计数。根据我读到的内容,我应该能够在 Grafana 中使用 Prometheus 查询,如下所示,通过时间序列可视化来查看 Y 轴上的持续时间、X 轴上的时间以及显示所选分位数的线:

histogram_quantile(0.99, sum by(le) (rate(my_metric_bucket)[5m]))

当我这样做时,Y 轴似乎与我的预期不匹配,如下所示,当我有一个特定实体,我知道该实体需要大约 20 秒才能响应,但 0.99 分位数图被固定在10,000ms(如果 Y 轴确实是预期的 ms)。0.99 quantile

我的代码还有一个测量所用时间的仪表(我的计时器抽象创建了一个仪表和一个直方图并记录两者),因此我可以确认这实际上花费了大约 20 秒,如以下查询所示:

avg(my_metric)
Gauge measuring duration

有没有办法让 Y 轴成为持续时间,并用线条来显示请求的百分位数随着时间的推移需要多长时间?

prometheus grafana open-telemetry
1个回答
0
投票

根据 @markalex 的评论,这里的问题是我的直方图存储桶达到了 10000 的最高值,因此当该值高于该值时,分位数无法显示这一点。我已经调整了存储桶以更准确地覆盖该值的预期范围,现在一切看起来都更好了。

一些了解

histogram_quantile
函数如何运作的好资源(也由 @markalex 提供)是:

普罗米修斯关于分位数估计错误的文档(我看到了一个极端的例子)

@Ace的这个答案非常详细地介绍了

histogram_quantile
函数的具体运作方式。

© www.soinside.com 2019 - 2024. All rights reserved.