有效建模influxdb中的正常运行时间数据库

问题描述:

在玩了一段时间的collectd和InfluxDB之后,我已经意识到正常运行时间是作为一个单独的数据点存储的。导致测量看起来像这样:有效建模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。之间的一切都是多余的。

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

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

这将是这个样子

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个字节在磁盘上。我可能不会太担心非常高效。