am使用收集来监视系统指标...。对于网络指标,我需要知道每分钟的传入和传出流量...但是Rx(发送的数据包总数)和Tx(总数)收到的数据包数量)数据包提供了自上次重新启动计算机以来的数据...
因此,我需要查询influxdb以获取当前值和先前值之间的差异。如何查询以获取差异....
我正在使用类似查询
select difference(last("value")) from interface_rx WHERE "type" = 'if_octets' > now() - 1h group by time(10s)
请帮助我..没有得到我需要的确切输出结果
我使用查询时遇到以下错误
Select difference(last("value")) from interface_rx WHERE "type" = 'if_octets' and time > now() - 1h group by time(1m)
答案 0 :(得分:0)
应该是这样的
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)
可能不是您想要的,因为如果未记录最新值,但它们将被较旧的值替代,并且您将获得差值= 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