manuelluis / jsrrdgraph

javascript rrdgraph
61 stars 12 forks source link

Problems using TREND/TRENDNAN #24

Open msedv opened 7 years ago

msedv commented 7 years ago

I'm using jsrrdgraph in some projects to visualize measurements - compliments, a great improvement over statically (with rrdgraph) created graphs which makes analyzing values much more comfortable!

Today for the first time I tried to use TREND and TRENDNAN to get the moving average of a time series of measurements with a step of 1s; the command line version works as expected:

rrdtool graph movement.png -a PNG -s end-10min -v 'Bewegung' -t 'Bewegung' -E \ 'DEF:movement=/var/lib/rrd/measurements.rrd:movement:AVERAGE' \ 'CDEF:movementMA30s=movement,30,TRENDNAN' \ 'CDEF:movementMA3m=movement,180,TRENDNAN' \ 'LINE2:movement#ff0000: Bewegung []' \ 'LINE2:movementMA30s#8000FF: Bewegung MA 300s []' \ 'LINE2:movementMA3m#00FF00: Bewegung MA 30min []'

The jsrrdgraph version:

-s end-10min -w 800 -h 600 -v "Bewegung" -t "Bewegung" -E "DEF:movement=/var/lib/rrd/measurements.rrd:movement:AVERAGE" "CDEF:movementMA30s=movement,30,TRENDNAN" "CDEF:movementMA3m=movement,180,TRENDNAN" "LINE2:movement#ff0000: Bewegung []" "LINE2:movementMA10s#8000FF: Bewegung MA 10s []" "LINE2:movementMA30s#8000FF: Bewegung MA 30s []" "LINE2:movementMA3m#00FF00: Bewegung MA 3min []"

displays the movement-line as expected, but the moving average lines are always zero. I could "work around" the problem calculating the MA for the last 10 values by hand:

-s end-10min -w 800 -h 600 -v "Bewegung" -t "Bewegung" -E "DEF:movement=/var/lib/rrd/measurements.rrd:movement:AVERAGE" "CDEF:movement1=PREV(movement)" "CDEF:movement2=PREV(movement1)" "CDEF:movement3=PREV(movement2)" "CDEF:movement4=PREV(movement3)" "CDEF:movement5=PREV(movement4)" "CDEF:movement6=PREV(movement5)" "CDEF:movement7=PREV(movement6)" "CDEF:movement8=PREV(movement7)" "CDEF:movement9=PREV(movement8)" "CDEF:movementMA10s=movement,movement1,movement2,movement3,movement4,movement5,movement6,movement7,movement8,movement9,+,+,+,+,+,+,+,+,+,10,/" "CDEF:movementMA30s=movement,30,TRENDNAN" "CDEF:movementMA3m=movement,180,TRENDNAN" "LINE2:movement#ff0000: Bewegung []" "LINE2:movementMA10s#8000FF: Bewegung MA 10s []" "LINE2:movementMA30s#8000FF: Bewegung MA 30s []" "LINE2:movementMA3m#00FF00: Bewegung MA 3min []"

But obviously that would be a hard work for the last 180 values. :-)

Examples for all three methods:

movement_rrdgraph_cmdline movement_jsrrdgraph movement_jsrrdgraph_simulated

I'm using the last version got with git clone.

Any ideas? Thank you!

Markus