在Influxdb内有效地建立数据库的正常运行时间

时间:2016-07-26 17:19:23

标签: database model influxdb uptime

在使用了collectd和InfluxDB一段时间之后,我意识到正常运行时间每次都作为单个数据点存储,例如导致测量结果如下:

1469552552940296000 localhost   uptime  426568
1469552931893217000 localhost   uptime  426947
1469552991889480000 localhost   uptime  427007
1469553051889521000 localhost   uptime  427067
1469553111890071000 localhost   uptime  427127
1469553171889512000 localhost   uptime  427187
1469553231889512000 localhost   uptime  427247

这对我来说似乎效率低下,因为它有点多余。鉴于上次测量,我可以计算所有其他测量值,那么为什么要将它们存储起来呢?我现在正在研究保留策略,但我不太确定如何在这里应用它们。对于这类数据,什么是好策略?

我绝对希望在系统关闭时获取信息,所以基本上我想存储“开始”点和最新的uptime_value。介于两者之间的一切都是多余的。

1 个答案:

答案 0 :(得分:0)

这里要做的正确的事情是使用连续查询和保留策略。我不知道你只能存储第一个和最后一个点,但你绝对可以。

连续查询将用于将所有数据下采样到单个点。保留策略将用于删除旧数据。

它看起来像这样

CREATE RETENTION POLICY myrp on mydb DURATION 1d REPLICATION 1

然后有类似以下连续查询的内容

CREATE CONTINUOUS QUERY mycq on mydb BEGIN
  SELECT max(uptime) FROM mymeasurement GROUP BY time(10m), *
END

话虽如此,压缩后,每个点在磁盘上占用的字节数不会超过2.5个字节。我可能不会太担心效率。