公司业务需要,我们要将.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个参数不一致导致了以上错误。