Hi, I was trying to extract the sums (sent&received per day) from mailgraph's monthly RRD archives, and I got different results. I think there's a mistake in the graph's CDEF, more exactly when values are multiplied by $step (CDEF:drecv=recv,UN,0,recv,IF,$step,*). Step is computed on the assumption that 180 averages are used for the graph. 180 is defined in mailgraph.cgi as $xpoints(540)/$points_per_sample(3), that is, a graph of width 540 pixels where each value (RRA row) is 3 pixels wide. Unfortunately the archive uses 180 averages for 35 days (not 31), as it's created with a multiple of weekly rows: $month_steps = $week_steps*5 (cf. /usr/sbin/mailgraph). So the CDEF is using a $step computed with 3600*24*31/180=14880s, while a point in the archive is really rrd.step * rra[2].pdp_per_row = 60*280 = 16800s. So monthly displayed values are about 10% less than the actual values from the RRA. This is confirmed by the value shown in rrdtool xport's <step>. An xport for 31 days will also show 160 rows instead of 180. Note that this problem does not occur for daily sums, because 180 rows at 8 points/row are exactly 1 day (180*8*60 = 86400 = 60*60*24). If you want to check/confirm, here's the xport command I used: # Use multiples to select the right RRA (see rrdfetch(1)) TIME=$(date +%s) #RRDRES=$((60*8)) # dayly = rrd.step * rra[0].pdp_per_row RRDRES=$((60*280)) # monthly = rrd.step * rra[2].pdp_per_row # DEF and CDEF are from mailgraph.cgi rrdtool xport \ -e $(($TIME/$RRDRES*$RRDRES)) -s e-31d \ "DEF:sent=mailgraph.rrd:sent:AVERAGE" \ "CDEF:dsent=sent,UN,0,sent,IF,$RRDRES,*" \ "CDEF:ssent=PREV,UN,dsent,PREV,IF,dsent,+" \ "DEF:recv=mailgraph.rrd:recv:AVERAGE" \ "CDEF:rrecv=recv,60,*" \ "CDEF:drecv=recv,UN,0,recv,IF,$RRDRES,*" \ "CDEF:srecv=PREV,UN,drecv,PREV,IF,drecv,+" \ "DEF:spam=mailgraph_virus.rrd:spam:AVERAGE" \ "CDEF:dspam=spam,UN,0,spam,IF,$RRDRES,*" \ "CDEF:sspam=PREV,UN,dspam,PREV,IF,dspam,+" \ "DEF:virus=mailgraph_virus.rrd:virus:AVERAGE" \ "CDEF:rvirus=virus,60,*" \ "CDEF:dvirus=virus,UN,0,virus,IF,$RRDRES,*" \ "CDEF:svirus=PREV,UN,dvirus,PREV,IF,dvirus,+" \ "CDEF:recvlegit=srecv,svirus,sspam,+,-" \ XPORT:recvlegit:"total_received" \ XPORT:ssent:"total_sent" \ XPORT:dsent:"sent" I had a look at Cacti, and it appears the sum is pre-computed before graphing, and included in the graph as a comment (see "summation" in http://docs.cacti.net/node/50). Maybe mailgraph could use that technique as well? Cheers, -- Sylvain -- Unsubscribe mailto:mailgraph-request@list.ee.ethz.ch?subject=unsubscribe Help mailto:mailgraph-request@list.ee.ethz.ch?subject=help Archive http://lists.ee.ethz.ch/mailgraph WebAdmin http://lists.ee.ethz.ch/lsg2.cgi |