Суммируйте два графика, когда второй файл RRD запускается только сейчас - PullRequest
1 голос
/ 04 марта 2010

Я не знаю, как объяснить мою проблему .... но У меня есть два файла RRD:

a.rrd
b.rrd

Я пытаюсь суммировать оба файла и СОХРАНИТЬ их на графике. как:

my $bla = RRDs::graph "-",

    "--title","Test",
    "--imgformat=PNG",
    "--width=680",
    "--height=200",

    "DEF:Default0_=a.rrd:default:AVERAGE",
    "DEF:Real0_=a.rrd:real:AVERAGE",

    "DEF:Default1_=b.rrd:default:AVERAGE",
    "DEF:Real1_=b.rrd:real:AVERAGE",


    "CDEF:Default=Default0_,Default1_,+",        
    "CDEF:Real=Real0_,Real1_,+",


    'AREA:Default#00CF00:Default Test',
    'GPRINT:Default:MIN:Min\: %10.0lf%s',
    'GPRINT:Default:MAX:Max\: %10.0lf%s',
    'GPRINT:Default:AVERAGE:Average\: %10.0lf%s',
    'GPRINT:Default:LAST:Current\: %10.0lf%s \l',

    'STACK:Real#006699:Real Test',
    'LINE2:Real#000000',
    'GPRINT:Real:MIN:Min\: %10.0lf%s',
    'GPRINT:Real:MAX:Max\: %10.0lf%s',
    'GPRINT:Real:AVERAGE:Average\: %10.0lf%s',
    'GPRINT:Real:LAST:Current\: %10.0lf%s \l',

И мой результат:

альтернативный текст http://www.freeimagehosting.net/uploads/8d99a4a675.jpg

проблема: он не печатает значения из файла a.rrd, он отображает график только с позиции файла b.rrd.

что-то вроде этого (только первая часть будет с нулями):

альтернативный текст http://www.freeimagehosting.net/uploads/e036f93797.jpg

Очевидно, это потому, что второй граф не имеет метки времени Unix, когда первый граф имеет.

так как я могу заполнить его нулями? или поменять мой график конф?

1 Ответ

1 голос
/ 11 марта 2010

Вот решение вашей проблемы :) http://oss.oetiker.ch/rrdtool/tut/cdeftutorial.en.html Взгляните на использование функций IF, TIME, GT и т. Д. Вы можете попробовать это: CDEF: Real = TIME, sometimestamp, GT, Real0_, Real0_, ООН, 0, Real0_, IF, IF, TIME, sometimestamp, GT, Real1_, Real1_, ООН, 0, Real1_, IF, IF, + Это означает: if (TIME ()> sometimestamp) вернуть Real0_ иначе if (Real0_ == UN (это значение NaN в rrd файлах)) вернуть 0 еще вернуть Real0_ Сделайте то же самое для Real1_ и сделайте сумму двух результатов. Надеюсь, я помог:)

...