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

使用SQL在Grafana中基于流量计算累计产品量(Singlestat面板)

嘿,这个需求我熟!用Grafana的Singlestat面板计算时间段内的产品总量其实不难,核心是把流量(单位lbs/hour)和时间间隔结合起来累加,我给你一步步拆解:

用Grafana Singlestat计算时间段产品总量

核心逻辑

流量是每小时的磅数,所以每个数据点的实际产量是当前流量 × 该数据点到下一个数据点的时间间隔(转成小时),把所有这些小段的产量加起来,就是整个时间段的总量。如果你的数据采集间隔是固定的(比如示例里的10秒一次),还能简化计算,不过先讲通用的稳妥方法。

具体操作步骤

1. 编写数据源查询语句

这里分两种常见数据源举例:

如果你用InfluxDB

直接用这个查询,它会自动计算时间间隔并累加:

SELECT SUM("val" * (time - lag(time))/3600000000000) FROM "你的数据表名" WHERE $timeFilter

给你解释下每个部分:

  • lag(time):获取上一个数据点的时间戳
  • time - lag(time):得到两个数据点的时间差(单位是纳秒)
  • 除以3600000000000:把纳秒转换成小时(1小时=3600秒=3.6e12纳秒)
  • 乘以val:算出这段时间的产量
  • SUM():把所有时间段的产量加起来得到总量

如果你的数据有缺失,可以加fill(previous)来补全,避免误差:

SELECT SUM("val" * (time - lag(time))/3600000000000) FROM (SELECT "val" FROM "你的数据表名" WHERE $timeFilter fill(previous))

如果你用Prometheus

用这个PromQL查询:

sum_over_time( (your_metric_name) * on() group_left() (time() - last_over_time(time()[$__interval])) )[$__range:]

要是你的采集间隔固定(比如10秒),可以更简单:

sum(your_metric_name) * 10/3600

直接用总流量乘以时间间隔(转成小时)就行。

2. 配置Singlestat面板

  • 新建面板,选择Singlestat类型
  • 到Metrics标签页,把上面的查询语句填进去
  • 切换到Options标签页:
    • 在Value区域,Stat选Current就行(因为我们已经用SUM算出了总量,直接取结果)
    • 可以在Suffix里填 lbs,让结果显示更直观
    • 按需调整字体大小、颜色这些样式,符合你的看板风格

3. 验证结果

可以手动算几个点测试,比如示例里前两个数据点:
第一个点产量:38.13187 × 10/3600 ≈ 0.1059 lbs
第二个点产量:38.14498 ×10/3600≈0.10596 lbs
把这些加起来,和Grafana显示的结果对比,确保计算正确。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 04:05:26