首页 文章

InfluxDB和Grafana图使用午夜为Y轴导数为0

提问于
浏览
3

我正在使用Grafana(2.6.0)绘图,我有一个InfluxDB(0.10.2)数据库,其中包含以下数据:

> select * from "WattmeterMainskwh" where time > now() - 5m
name: WattmeterMainskwh
-----------------------
time                value
1457579891000000000     15529.322
1457579956000000000     15529.411
1457580011000000000     15529.425
1457580072000000000     15529.460
1457580135000000000     15529.476
 ...etc...

该数据收集我的家庭千瓦使用量,以千瓦时计量表来衡量,该指标在数月或数年内稳定增加使用 Value . 我不能轻易重置计数器,也不希望这样做 .

My goal is to create a graph that shows my daily kWH use over 24 hour periods starting at midnight, or at a minimum showing relative kWH over the interval displayed. 这种类型的图形在许多其他情况下也很有用,我可以想象"errors across the day"或"visitors since opening time"或"BGP resets per calendar week"是有用的,但是在重置或转换时间间隔时,收集计数器没有重置为零 . 在我的经历中,这种计数实际上很常见 .

这个图有效,但没有告诉我我在寻找什么:

SELECT derivative(mean("value")) FROM "WattmeterMainskwh" WHERE $timeFilter GROUP BY time($interval) fill(null)

该图只显示了一个样本和前一个样本之间的差异 . 我想要的是从图的左侧开始并且朝向图的右侧增加的稳定增加的线,其中零作为Y轴的底部,并且图形在最左侧的X值处从零开始 .

这张图也适用,并向我显示正确的曲线,但它已经减少了一万五千左右 . 到目前为止,它是最接近我想要的,但由于这是一个不能重置的不断增加的计数器,我需要从Y轴中减去一些 . 理想情况下,我想从每个样本中减去前一个午夜的值,得到基于一天的相对数,而不是基于所有时间的绝对数 .

SELECT sum("value") FROM "WattmeterMainskwh" WHERE $timeFilter GROUP BY time($interval) fill(null)

这是以前声明中的图表:

Graph that is off by 15k

这种尝试不起作用 - 我显然不能拿出衍生组的总和:

SELECT sum(derivative(mean("value"))) FROM "WattmeterMainskwh" WHERE $timeFilter GROUP BY time($interval) fill(null)

这也行不通 - 我无法在“衍生”中执行功能:

SELECT derivative(sum("value")-first("value")) FROM "WattmeterMainskwh" WHERE $timeFilter GROUP BY time($interval) fill(null)

当然,在将其写入InfluxDB之前,我可以创建一个已经应用计算的新值,但在我看来,这似乎是一种解决这个问题的数据冗余和草率的方法,而且如果我是非常不灵活的话 . 想要突发奇想地查看其他时间间隔 . 我希望在InfluxDB和Grafana的组合中有一些方法可以更优雅地做到这一点,但是我只是无法用我使用过的搜索词或者我用来解释它的思想来找到它 . 文档 .

InfluxDB / Grafana甚至可以使用这种类型的图形吗?据我所知,连续查询不是一个解决方案,并且缺少嵌套的SELECT会使得这种做法的黑客方式对我来说并不明显 .

奖励:将图表显示为每晚午夜作为“零”位置,而不是“零”作为显示间隔中的第一个点,这将是非常好的,因此查看五天的正常数据将显示五个不同的“波浪” “增加每日总能源使用量,每天12:00:01波浪Y值回落至零 . 但我会尽我所能 .

1 回答

  • 0

    嵌套函数只有部分支持 . 但是,您可以通过链接Continuous Queries来有效地嵌套函数 .

    使用CQ计算 derivative(mean(value)) 并将其存储在新测量 foo 中 . 然后,对于您的图表,您可以查询 select sum(value) from foo .

相关问题