有没有谁了解cacti或者rrdtool计算平均值的算法?要精确的算法我现在碰到个问题,使用cacti查看的流量平均值和我自己读取rrd文件计算的平均值不匹配。
我的cacti5分钟值设置了能保持近90天,通过选择日期查看流量平均值,例如前面1天的值,这是和我自己读取rrd文件中数据计算的结果是一致的,实际上小于41天50分钟时,计算结果都是一致的,但大于这个时间时,cacti和我自己读取rrd文件计算的结果就不一致了,有人知道cacti到底怎么计算平均值的吗?
我的cacti5分钟值设置了能保持近90天,通过选择日期查看流量平均值,例如前面1天的值,这是和我自己读取rrd文件中数据计算的结果是一致的,实际上小于41天50分钟时,计算结果都是一致的,但大于这个时间时,cacti和我自己读取rrd文件计算的结果就不一致了,有人知道cacti到底怎么计算平均值的吗?
http://hi.baidu.com/zcc_zhu/blog/item/35f454cbe0c76691c8176877.html
或者看看官方文档
http://oss.oetiker.ch/rrdtool/doc/rrdcreate.en.html
一下是我取2012-05-04 18:15到2012-05-06 12:00的数据,cacti去平均值会向后延迟一下,所以rra文件读取的是2012-05-04 18:20到2012-05-06 12:05的数据,数据太多,不能完整提供
=========traffic_in===============
index: <Fri May 04 18:20:00 CST 2012>, value <2941644.006119749>
index: <Fri May 04 18:25:00 CST 2012>, value <3028057.120941418>
index: <Fri May 04 18:30:00 CST 2012>, value <2979704.486046401>
index: <Fri May 04 18:35:00 CST 2012>, value <3107399.364020489>
index: <Fri May 04 18:40:00 CST 2012>, value <3003575.8756830543>
index: <Fri May 04 18:45:00 CST 2012>, value <2901054.3736888887>
index: <Fri May 04 18:50:00 CST 2012>, value <2976863.552376128>
index: <Fri May 04 18:55:00 CST 2012>, value <2976908.5053607104>
index: <Fri May 04 19:00:00 CST 2012>, value <3176536.6396582196>
index: <Fri May 04 19:05:00 CST 2012>, value <3181141.339755146>
index: <Fri May 04 19:10:00 CST 2012>, value <3182329.8599720187>
index: <Fri May 04 19:15:00 CST 2012>, value <3313934.3282444444>
index: <Fri May 04 19:20:00 CST 2012>, value <3371990.2901777774>
...
index: <Sun May 06 11:25:00 CST 2012>, value <2437211.4553657607>
index: <Sun May 06 11:30:00 CST 2012>, value <2486652.3038360793>
index: <Sun May 06 11:35:00 CST 2012>, value <2492365.523271687>
index: <Sun May 06 11:40:00 CST 2012>, value <2444567.7428810853>
index: <Sun May 06 11:45:00 CST 2012>, value <2611386.6049989443>
index: <Sun May 06 11:50:00 CST 2012>, value <2744872.385636507>
index: <Sun May 06 11:55:00 CST 2012>, value <2781943.9785052426>
index: <Sun May 06 12:00:00 CST 2012>, value <2886486.1765672206>
index: <Sun May 06 12:05:00 CST 2012>, value <3011064.773033222>
=========traffic_out===============
index: <Fri May 04 18:20:00 CST 2012>, value <1194647.9021172388>
index: <Fri May 04 18:25:00 CST 2012>, value <1335442.6195863658>
index: <Fri May 04 18:30:00 CST 2012>, value <1427392.0561943653>
index: <Fri May 04 18:35:00 CST 2012>, value <1250506.5980419782>
index: <Fri May 04 18:40:00 CST 2012>, value <1466262.0094267188>
index: <Fri May 04 18:45:00 CST 2012>, value <1446339.9722000002>
index: <Fri May 04 18:50:00 CST 2012>, value <1257722.5898102312>
index: <Fri May 04 18:55:00 CST 2012>, value <1245598.7106055035>
index: <Fri May 04 19:00:00 CST 2012>, value <1298020.870176053>
index: <Fri May 04 19:05:00 CST 2012>, value <1381585.2653652078>
index: <Fri May 04 19:10:00 CST 2012>, value <1294441.8926318935>
index: <Fri May 04 19:15:00 CST 2012>, value <1399341.6470666667>
index: <Fri May 04 19:20:00 CST 2012>, value <1349306.5309111113>
...
index: <Sun May 06 11:25:00 CST 2012>, value <1368637.3151909797>
index: <Sun May 06 11:30:00 CST 2012>, value <1361569.812548695>
index: <Sun May 06 11:35:00 CST 2012>, value <1407043.210607678>
index: <Sun May 06 11:40:00 CST 2012>, value <1410423.0248926792>
index: <Sun May 06 11:45:00 CST 2012>, value <1432474.1069470402>
index: <Sun May 06 11:50:00 CST 2012>, value <1493195.925382949>
index: <Sun May 06 11:55:00 CST 2012>, value <1511673.844650274>
index: <Sun May 06 12:00:00 CST 2012>, value <1519292.45461394>
index: <Sun May 06 12:05:00 CST 2012>, value <1574064.0935797845>我代码计算的结果:
==================traffic in =========================
avarate = 18.475196913919422
==================traffic out =========================
avarate = 9.427647297481014cacti的结果:
==================traffic in =========================
avarate = 18.48
==================traffic out =========================
avarate = 9.43
很吻合,
但再多5分钟结果就不一样了,时间段2012-05-04 18:10到2012-05-06 12:00
程序计算结果:
==================traffic in =========================
avarate = 18.4834252935767
==================traffic out =========================
avarate = 9.430123330740397cacti的结果:
==================traffic in =========================
avarate = 18.87
==================traffic out =========================
avarate = 9.81数据开始不匹配
=========traffic_in===============
index: <Fri May 04 18:20:00 CST 2012>, value <2941644.006119749>
index: <Fri May 04 18:25:00 CST 2012>, value <3028057.120941418>
index: <Fri May 04 18:30:00 CST 2012>, value <2979704.486046401>
index: <Fri May 04 18:35:00 CST 2012>, value <3107399.364020489>average = (2941644.006119749 + 3028057.120941418 + 2979704.486046401 + 3107399.364020489) / 4时间间隔小于41小时50分钟的用这个算法都是准确的
这样就不会溢出了
由于没有数据,不好验证算法的正确性建议你逐点计算固定间隔的值,与cacti的结果对比一下