rrdtool fetch 不显示单点

rrdtool's fetch doesnt show single point

我使用 rrdtool python 扩展在 rrd 中保存数据:

## Creating db. 
rrdtool.create(rrd_file,
                 '--step', '2',
                   'DS:%s:GAUGE:4:U:U' % DSNAME,
                   'RRA:AVERAGE:0,5:1:288',
                   )
value = 23
for i in range(4):

    rrdtool.update('/home/way/workspace/RrdDaemon/test', "%s:%s" % (datetime_2_sec(str(datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S"))), str(value)))
    sleep(2) 

循环工作了4次,我想得到4分。但我只得到 3:

1460382646: -nan
1460382648: 2,3000000000e+01
1460382650: 2,3000000000e+01
1460382652: 2,3000000000e+01
1460382654: -nan

我尝试更改心跳、步骤、xff - 没有任何帮助。现在我尝试 1 次迭代:

for i in range(1):

    rrdtool.update('/home/way/workspace/RrdDaemon/test', "%s:%s" % (datetime_2_sec(str(datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S"))), str(value)))

时间戳:1460385371

结果:

1460385368: -nan
1460385370: -nan
1460385372: -nan

sudo rrdtool 信息测试:

filename = "test"
rrd_version = "0003"
step = 2
last_update = 1460385371
header_size = 584
ds[ds0].index = 0
ds[ds0].type = "GAUGE"
ds[ds0].minimal_heartbeat = 3
ds[ds0].min = NaN
ds[ds0].max = NaN
ds[ds0].last_ds = "23"
ds[ds0].value = NaN
ds[ds0].unknown_sec = 1
rra[0].cf = "AVERAGE"
rra[0].rows = 288
rra[0].cur_row = 65
rra[0].pdp_per_row = 1
rra[0].xff = 0,0000000000e+00
rra[0].cdp_prep[0].value = NaN
rra[0].cdp_prep[0].unknown_datapoints = 0

我有没有做错什么或者 rrd 的工作方式? 谢谢。

您 运行 遇到的问题是您正从未知状态进入已知状态。 minimal_heartbeat 定义两次更新之间允许的最大间隔,以便 rrdtool 考虑更新之间的时间以包含有效数据。

这也意味着在一段未知数据之后的第一次更新仅用于指示数据再次已知的时间......下一次更新(在 minimal_heartbeat 定义的时间间隔内)。