公司业务需要,我们要将.rrd文件转化成.xml,修改内容再通过.xml转化成.rrd或者图形。在Ubuntu中转化正常,但是到了Centos下就报错如下:
rrdtool.OperationalError: the RRD does not contain an RRA matching the chosen CF
Ubuntu的rrdtool版本为:1.7.0
Centos的rrdtool版本为:1.4.8
可能是因为版本问题,然后我们写的.xml文件又不规范。python生成.xml的部分代码如下:
tmp_xml_str += '<!-- {} UTC / {} --> <row><v>{}</v><v>{}</v></row>\n '.format(write_time,tmp_time,traffic_in,traffic_out)
xml_str = '\
<?xml version="1.0" encoding="utf-8"?>\n\
<!DOCTYPE rrd SYSTEM "http://oss.oetiker.ch/rrdtool/rrdtool.dtd">\n\
<!-- Round Robin Database Dump -->\n\
<rrd>\n\
<version>0003</version>\n\
<step>300</step> <!-- Seconds -->\n\
<lastupdate>{}</lastupdate> <!-- {} UTC -->\n\
<ds><name> traffic_in </name><type> COUNTER </type></ds>\n\
<ds><name> traffic_out </name><type> COUNTER </type></ds>\n\
<rra>\n\
<cf>MAX</cf>\n\
<pdp_per_row>1</pdp_per_row> <!-- 300 seconds -->\n\
<database>\n\
{} \
</database>\n\
</rra>\n\
</rrd>'.format(tmp_time,write_time,tmp_xml_str)
注意:我们此处写的是 <cf>MAX</cf>
。原先我们这里写的是 <cf>AVERAGE</cf> ,但是我们在新的rrd生成图的时候写的又是MAX,可能这里2个参数不一致导致了以上错误。