You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何基于Prometheus查询在Grafana中创建延迟分布图表

基于PromQL在Grafana制作延迟分布图表操作指南

前置条件

  • 你需要提前在业务监控中埋点了Histogram类型的延迟指标,这类指标会自动生成带_bucket、_sum、_count后缀的时间序列,默认按照预设的延迟区间(分桶)统计不同延迟范围的请求数量。

核心PromQL语句编写

延迟分布图通常展示P50(中位数)、P90、P95、P99等不同分位数的延迟走势,核心使用PromQL的histogram_quantile函数实现。
假设你的业务延迟指标为http_request_duration_seconds(单位为秒),要统计最近5分钟的延迟分位数,查询语句如下:

  • P50:histogram_quantile(0.5, sum(rate(http_request_duration_seconds_bucket[5m])) by (le))
  • P90:histogram_quantile(0.9, sum(rate(http_request_duration_seconds_bucket[5m])) by (le))
  • P95:histogram_quantile(0.95, sum(rate(http_request_duration_seconds_bucket[5m])) by (le))
  • P99:histogram_quantile(0.99, sum(rate(http_request_duration_seconds_bucket[5m])) by (le))

注:如果需要按服务、接口、请求方法等维度拆分延迟分布,只需要把对应标签加到by子句中即可,例如by (le, service, api_path)

Grafana面板配置步骤

普通多曲线延迟分布图(对应参考效果的分位数走势)

  1. 新建Grafana面板,图表类型选择时间序列(Time series)
  2. 数据源选择对应的Prometheus实例,依次添加上述4条查询语句,分别给每个查询设置别名为P50、P90、P95、P99,方便图例识别
  3. 右侧面板配置调整:
    • Y轴单位选择和指标匹配的时间单位,例如秒s、毫秒ms
    • 图例设置为底部/右侧展示,可开启展示最新值、平均值等实时数据
    • 样式调整:给不同分位数的曲线设置差异化颜色,例如P99用红色、P95用橙色、P50用绿色,视觉区分更明显

热力图形式延迟分布

如果要生成按延迟分桶的热力分布图,操作如下:

  1. 图表类型选择热力图(Heatmap)
  2. 查询语句填写:sum(increase(http_request_duration_seconds_bucket[$__rate_interval])) by (le)
  3. 开启热力图配置中的「按bucket格式解析数据」选项,绑定Y轴到le标签即可。

常见异常排查

  • 查询结果为NaN:检查Histogram的分桶设置是否合理,是否有足够请求落入对应延迟区间,可适当调大rate/increase的时间窗口(例如把5m改为10m)
  • 延迟数值和实际不符:检查指标的单位和Y轴设置的单位是否匹配,避免指标为毫秒但Y轴配置为秒的错误

内容的提问来源于stack exchange,提问作者Ronaldo Cristover

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 14:15:09