可视化原生直方图
注意
原生直方图是 Grafana Mimir 的实验性功能。
Prometheus 原生直方图是 Prometheus 生态系统中的一种数据类型,允许您生成、存储和查询高分辨率直方图观测值。要了解有关原生直方图数据类型的更多信息以及如何开始将原生直方图发送到 Grafana Mimir,请参阅将原生直方图发送到 Mimir。
注意
并非所有可视化都支持原生直方图数据类型。但是,您可以使用 Prometheus 查询语言 (PromQL) 从原生直方图中派生出浮点时间序列,然后在可视化中使用此系列。
Prometheus 查询语言
使用 Prometheus 查询语言 (PromQL) 查询原生直方图指标。您的查询结果的数据类型取决于查询和底层数据。
有关 PromQL 的更多信息,请参阅查询 Prometheus。
以下示例展示了从原生直方图数据中派生浮点数据类型以用于可视化的常用方法,以及如何将使用经典直方图的现有查询转换为使用原生直方图的查询。
请注意,原生直方图查询不包含经典直方图的 _bucket
、_sum
和 _count
后缀。
查询直方图的计数或总和
要查询直方图中观测值的总计数,请使用以下查询
# Native histograms:
histogram_count(sum(request_duration_seconds))
# Classic histograms:
sum(request_duration_seconds_count)
要查询观测值的总和,请使用以下查询
# Native histograms:
histogram_sum(sum(request_duration_seconds))
# Classic histograms:
sum(request_duration_seconds_sum)
查找观测值的速率
要查询在 5 分钟时间窗口内计算的所有观测值的速率,请使用以下查询
# Native histograms:
histogram_count(sum(rate(request_duration_seconds[5m])))
# Classic histograms:
sum(rate(request_duration_seconds_count[5m]))
要查询介于 0
和 2
秒之间的观测值速率,请使用以下查询
# Native histograms:
histogram_fraction(0, 2, sum(rate(request_duration_seconds[5m])))
*
histogram_count(sum(rate(request_duration_seconds[5m])))
# Classic histograms:
sum(rate(request_duration_seconds_bucket{le="2.5"}[5m]))
有一个原生直方图函数,用于估算落在特定区间(例如 [0, 2]
)内的观测值总数的比例。有关更多信息,请参阅直方图比例函数。
经典直方图没有这样的函数。因此,如果区间的上下边界与经典直方图的桶边界不一致,您必须手动估算比例。
注意
仅在
histogram_fraction
函数内部包含rate
或increase
并使用适当的范围选择器时使用该函数。如果您未指定范围(例如5m
),则该函数使用直方图的当前值。在这种情况下,当前值是直方图生命周期内或自上次重置以来累积的值。
分位数
要查询 95% 的观测值落在其下的观测值上限,请使用以下查询
# Native histograms:
histogram_quantile(0.95, sum(rate(request_duration_seconds[5m])))
# Classic histograms:
histogram_quantile(0.95, sum by (le) (rate(request_duration_seconds_bucket[5m])))
注意
仅在
histogram_quantile
函数内部包含rate
或increase
并使用适当的范围选择器时使用该函数。如果您未指定范围(例如5m
),则该函数使用直方图的当前值。在这种情况下,当前值是直方图生命周期内或自上次重置以来累积的值。
创建 Grafana 仪表盘
面板类型直方图和热力图与原生直方图数据类型兼容。使用这些面板类型可视化查询,例如
sum(rate(request_duration_seconds[$__rate_interval]))
对于所有其他面板类型,例如时序图,请在Prometheus 查询语言中使用其中一个直方图函数来可视化派生浮点时间序列。
Grafana Classic Explore
在Explore中,请在Prometheus 查询语言中使用其中一个直方图函数来可视化派生浮点时间序列。
注意
目前不支持直接在 Explore 视图中可视化原生直方图数据类型而不使用直方图函数。