我的grafana仪表板中只有一个stat,显示磁盘的当前使用情况。要获取该信息,我使用以下查询:
SELECT last("used") FROM "disk" WHERE "host" = 'server.mycompany.com'
AND "path" = '/dev/sda1' AND $timeFilter我想增加另一个统计数字,显示过去30天的使用增加/减少。我想为此,我想得到最后的测量和30天前的测量,并减去它们。
我如何在InfluxQL中做到这一点?
发布于 2016-12-28 16:01:15
它不会是完美的,但它的效果是
SELECT last("used") - first("used") FROM "disk" WHERE ... AND time > now() - 30d应该就够了。
发布于 2018-04-02 03:24:47
对于未来的人们来说,他们可能会无意中发现这个答案。
当按时间分组时,last("used") - first("used")方法将不会产生正确的结果,因为差异将在单个时间间隔内(例如,10s)内的值之间计算,而不是在整个指定的时间段内计算。
适当的解决方案在https://github.com/influxdata/influxdb/issues/7076上前面提到的问题上的最后一个评论中进行了描述,特别是针对OP的情况进行了修改:
SELECT cumulative_sum(difference)
FROM (SELECT difference(last("used"))
FROM "disk") WHERE "host" = 'server.mycompany.com'
AND "path" = '/dev/sda1' AND time >= now() - 30d GROUP BY time(5m))这将做的是选择"used"的最后一个值,间隔5分钟(桶),然后计算这些"last"值之间的差异。
这将导致一个表示HDD空间使用增加/减少的时间序列。
然后,通过cumulative_sum将这些值汇总为一个正在运行的值,后者为每个时间间隔返回一系列值(1GB、1+5GB、1+5-3GB等)。
https://stackoverflow.com/questions/41361734
复制相似问题