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

如何为Prometheus直方图bucket的le标签设置易读单位?

解决Grafana Bar Gauge中Prometheus Bucket标签可读性问题

先确保查询的是增量值(避免累积值问题)

首先修正查询逻辑,获取每个bucket的增量而非原始累积值,用increase或rate函数:

# 示例:获取5分钟内的延迟bucket增量
increase(your_long_running_process_delay_bucket[5m])

或者用rate换算成周期内总增量:

rate(your_long_running_process_delay_bucket[5m]) * 300

方法1:用Grafana值映射手动替换标签

适合bucket数量较少的场景:

  • 进入Bar Gauge面板的「字段」选项卡,找到le标签对应的字段
  • 点击「值映射」,添加规则:
    • 输入原始秒数(如61440),映射为可读格式(如17h)
    • 依次添加所有常用bucket值的映射
  • 保存后,面板标签会自动显示映射后的可读文本

方法2:用计算字段自动转换秒数为可读时间

适合需要自动转换所有bucket的场景:

  1. 进入面板的「转换」选项卡,添加「添加字段 from calculation」
  2. 配置计算规则:
    • 来源类型选择「标签」,字段选le
    • 用JavaScript表达式转换秒数:
      const sec = parseInt(value);
      const h = Math.floor(sec / 3600);
      const m = Math.floor((sec % 3600) / 60);
      return h > 0 ? `${h}h ${m}m` : m > 0 ? `${m}m` : `${sec}s`;
      
  3. 生成新字段后,在「字段」选项卡中隐藏原始le标签,将新字段设为X轴标签

方法3:用Grafana变量动态生成可读标签

通过变量模板函数自动转换显示格式:

  1. 创建新变量:
    • 类型选「查询」,数据源选Prometheus
    • 查询语句:label_values(your_long_running_process_delay_bucket, le)
    • 在「显示名称」中输入模板:${__value:divide:3600}h(将秒数除以3600显示为小时)
  2. 在面板查询中使用该变量(如increase(your_long_running_process_delay_bucket{le=~"$le_var"}[5m]))
  3. 面板标签会自动显示转换后的小时格式,同时查询仍使用原始秒数的le值,不影响数据准确性

内容的提问来源于stack exchange,提问作者Cory Klein

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 20:02:49