【问题标题】:How to get the difference between the current value and the previous value in the influxdb?如何获取influxdb中当前值与前一个值的差值?
【发布时间】:2019-07-05 06:01:50
【问题描述】:

我正在使用 collectd 来监控系统指标 .... 对于网络指标,我需要知道每分钟传入和传出的流量是多少 ...但是 Rx(传输的数据包总数)和 Tx(总数收到的数据包数)数据包正在提供自机器上次重新启动以来的数据...

所以我需要查询influxdb来得到当前值和之前值之间的差异。如何查询得到差异.....

我正在使用类似的查询

select difference(last("value")) from interface_rx WHERE  "type" = 'if_octets' > now() - 1h group by time(10s)

请帮助我..我没有得到我需要的确切输出

enter image description here

使用查询时出现以下错误

Select difference(last("value")) from interface_rx WHERE "type" = 'if_octets' and time > now() - 1h group by time(1m)

enter image description here

enter image description here

【问题讨论】:

  • 在 Grafana 的右上角,上面写着最后 5 分钟;你能把它改成持续1小时吗?也可以将鼠标光标放在左上角的红色指示符上查看错误信息吗?
  • @NikolayManolov 我添加了上面的图片...请帮助我
  • 嗯,您要计算差异的字段(表列)的名称是什么?好像不是value。在difference(last("value")) 中,value 部分应该是您需要的实际字段的名称。而且它必须是一个字段,而不是一个标签。
  • @NikolayManolov 我附上了我的 influxdb 数据的上图...我的字段名称是 value....我需要每分钟与 previos 值的差异

标签: linux influxdb collectd


【解决方案1】:

应该是这样的

select difference(last("value")) from interface_rx WHERE "type" = 'if_octets' and time > now() - 1h group by time(1m)

这个查询应该返回大约 60 个值;过去一小时每分钟 1 个差异。在这种情况下,last 意味着每 1 分钟使用最后一个值(如果有多个)

您的查询的不同之处: and time > now() - 1h 丢失 - 这可能是编辑错误,但似乎无效。 如果你想要每分钟的统计数据,那么你需要group by time(1m)。您按 10 秒分组,因此结果将是每 10 秒的差异。

您可能还想做的是用以前的可用值填充缺失值(并且相应地,您会在该期间得到零) select difference(last("value")) from interface_rx WHERE "type" = 'if_octets' and time > now() - 1h group by time(1m) fill(previous) 编辑:fill(previous) 可能不是您想要的,因为如果尚未记录最新的值,它们将被旧值替换,您将得到 difference=0 作为最新值。

如果您只想要最后一个值,您可以执行类似的操作 select difference(last("value")) from interface_rx WHERE "type" = 'if_octets' and time > now() - 1h group by time(1m) fill(previous) order by time DESC limit 1

【讨论】:

  • 请参阅上面提到的编辑我的问题...查看我的错误
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2010-11-05
  • 1970-01-01
  • 2020-05-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-09-02
相关资源
最近更新 更多