我用这个命令创建了一个RRD
= = =
data_sources = [ 'DS:Pprod:GAUGE:10:0:6000',
'DS:Pcons:GAUGE:10:0:6000',
'DS:Pdiff:GAUGE:10:-6000:6000'
]
rrdtool.create ( rrd_filename,
'--step', '5', # one sample every 5 sec
'--start', 'now - 7d',
data_sources,
'RRA:MAX:0.5:1:6307200') # we keep 1 year
= = =
我正在正确地填充它-
= = =
<!-- 2022-05-19 12:25:45 CEST / 1652955945 --> <row><v>4.291018731e+03</v><v>1.715717220e+03</v><v>2.574301511e+03</v></row>
<!-- 2022-05-19 12:25:50 CEST / 1652955950 --> <row><v>4.286880929e+03</v><v>1.721000000e+03</v><v>2.564880929e+03</v></row>
<!-- 2022-05-19 12:25:55 CEST / 1652955955 --> <row><v>4.286880929e+03</v><v>1.721000000e+03</v><v>2.564880929e+03</v></row>
= = =
现在我要"导出"其中的一些数据:
rrdtool xport -s $epochStart -e $epochEnd --step 5 --json -t DEF:pot=$ifn:Pprod:MAX XPORT:pot
= = =
在输出JSON中,我找到了"步骤"已更改:
{ "about": "RRDtool graph JSON output",
"meta": {
"start": 1652738755,
"end": 1652824970,
"step": 215,
"legend": [
""
]
},
"data": [
[ "1652738755",0.000000000e+00 ],
[ "1652738970",0.000000000e+00 ],
= = =
有什么合理的理由吗?
PD。- rrdtool info"说
pi@R4:~/python/pkw/dades $ rrdtool info ./pkw.rrd
filename = "./pkw.rrd"
rrd_version = "0003"
step = 5
这很可能是由于试图将数据导出到定义的RRA的当前范围之外造成的。
你的RRD只有一个定义的RRA,从(现在-7d)到(6307200x5sec)在未来。
添加到RRD的数据是epoch=1652955945左右的时间;但是您正在尝试导出的时间是在epoch=1652738755左右,在RRA开始之前。
当我试图复制这个时,我创建了一个RRD:
rrdtool create $RRD --step 5 --start 1652955935
'DS:Pprod:GAUGE:10:0:6000' 'DS:Pcons:GAUGE:10:0:6000'
'DS:Pdiff:GAUGE:10:-6000:6000' 'RRA:MAX:0.5:1:6307200'
然后添加数据
rrdtool update $RRD
1652955940:0:10:20
1652955945:100:200:300
1652955950:400:500:600
1652955955:700:800:900
1652955960:1000:1100:1200
如果我尝试从定义的RRA范围内提取数据,那么它可以工作:
rrdtool xport -s 1652955945 -e 1652956000 --step 5 --json
-t DEF:pot=${RRD}:Pprod:MAX XPORT:pot
{ "about": "RRDtool graph JSON output",
"meta": {
"start": 1652955950,
"end": 1652956000,
"step": 5,
...
但是,如果我尝试从不在可用数据空间内的范围中提取,RRDTool无法选择有意义的RRA,因此似乎默认为215秒的步骤。
rrdtool xport -s 1652738755 -e 1652824970 --step 5 --json
-t DEF:pot=${RRD}:Pprod:MAX XPORT:pot
{ "about": "RRDtool graph JSON output",
"meta": {
"start": 1652738970,
"end": 1652824970,
"step": 215,
...
我不知道为什么RRDTool默认为这个步长;然而,记录的行为是RRDTool,当做一个图或导出时,将试图找到最适合的RRA,以覆盖整个请求的数据范围在请求的合并,即使这意味着改变步长。所以,这看起来好像RRDTool已经放弃了寻找一个可行的RRA,并且给了你一个默认的215秒的空数据步骤。