我刚刚开始使用RRDtool来收集气候数据。我不使用图形功能,而是使用“fetch”来检索数据。然后我使用另一个图形解决方案(flot)来显示数据,这似乎有点奏效。但是我遇到了一些小问题,并决定检查更新和获取的细节,并且突然不确定事情是否符合我的预期。
所以我创建了一个小的shell脚本,用于创建数据库,在其中放入一个值,然后打印内容:
#!/bin/sh
RRD=test.rrd
STEP=300
HB=600
# Remove previous databse to be sure that
# old data does not affect the test
rm -f $RRD
# Create database
rrdtool create $RRD \
--start 2999999999 --step $STEP \
DS:a:GAUGE:$HB:U:U \
RRA:AVERAGE:0.5:1:1000
# Do a single update
rrdtool update $RRD \
3000000400:123
# Fetch data and print to stdout
rrdtool fetch $RRD \
--start 3000000000 --end 3000000900 AVERAGE
我希望这会打印三个(或者四个,不确定最后一个)这样的值:
3000000000: -nan
3000000300: 123
3000000600: -nan
3000000900: -nan
但这就是我得到的:
3000000300: -nan
3000000600: -nan
3000000900: -nan
3000001200: -nan
所以我有三个问题:
答案 0 :(得分:1)
时间段b包含对b步骤有效的信息,直至b EXCLUDING b本身。因此,当询问3000000000到3000000900的数据时,您得到的第一个条目是3000000300。
由于您要求数据以3000000900结尾,您将获得3000001200的条目以及3000000900本身是此条目的开头。
目前即使在仪表模式下你也必须有一个已知值才能开始......所以你的第一个已知更新只会让你回到已知状态,它还没有建立任何其他状态。有人可能会说,在GAUGE模式下,可以采用不同的方式。