首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >30天前在InfluxQL/InfluxDB上的差异

30天前在InfluxQL/InfluxDB上的差异
EN

Stack Overflow用户
提问于 2016-12-28 12:02:15
回答 2查看 4.7K关注 0票数 5

我的grafana仪表板中只有一个stat,显示磁盘的当前使用情况。要获取该信息,我使用以下查询:

代码语言:javascript
复制
SELECT last("used") FROM "disk" WHERE "host" = 'server.mycompany.com' 
AND "path" = '/dev/sda1' AND $timeFilter

我想增加另一个统计数字,显示过去30天的使用增加/减少。我想为此,我想得到最后的测量和30天前的测量,并减去它们。

我如何在InfluxQL中做到这一点?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-12-28 16:01:15

它不会是完美的,但它的效果是

代码语言:javascript
复制
SELECT last("used") - first("used") FROM "disk" WHERE ... AND time > now() - 30d

应该就够了。

票数 4
EN

Stack Overflow用户

发布于 2018-04-02 03:24:47

对于未来的人们来说,他们可能会无意中发现这个答案。

当按时间分组时,last("used") - first("used")方法将不会产生正确的结果,因为差异将在单个时间间隔内(例如,10s)内的值之间计算,而不是在整个指定的时间段内计算。

适当的解决方案在https://github.com/influxdata/influxdb/issues/7076上前面提到的问题上的最后一个评论中进行了描述,特别是针对OP的情况进行了修改:

代码语言:javascript
复制
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等)。

票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41361734

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档