Perl 当第二个RRD文件现在才启动时,求两个图的和

Perl 当第二个RRD文件现在才启动时,求两个图的和,perl,graph,stack,nan,rrd,Perl,Graph,Stack,Nan,Rrd,我不知道如何解释我的问题。。。。但是 我有两个RRD文件: a.rrd b.rrd 我试图将这两个文件相加,并将它们叠加到图表中。 比如: 我的结果是: 问题:它不打印文件a.rrd中的值,它仅从b.rrd文件的位置显示图形 灌输类似的东西(只有第一部分是零): 显然,这是因为第二个图没有unix时间戳,而第一个图没有 那么我如何用零来填充它呢?或者更改我的图形配置?以下是问题的解决方案:) 看看IF、TIME、GT等函数的用法。 您可以尝试以下方法: CDEF:Real=TIME,som

我不知道如何解释我的问题。。。。但是 我有两个RRD文件:

a.rrd
b.rrd
我试图将这两个文件相加,并将它们叠加到图表中。 比如:

我的结果是:

问题:它不打印文件a.rrd中的值,它仅从b.rrd文件的位置显示图形

灌输类似的东西(只有第一部分是零):

显然,这是因为第二个图没有unix时间戳,而第一个图没有


那么我如何用零来填充它呢?或者更改我的图形配置?

以下是问题的解决方案:) 看看IF、TIME、GT等函数的用法。 您可以尝试以下方法: CDEF:Real=TIME,sometimestamp,GT,Real0,Real0,UN,0,Real0,IF,IF,TIME,sometimestamp,GT,Real1,Real1,UN,0,Real1,IF,IF+ 这意味着: if(TIME()>sometimestamp) 返回Real0_ else if(Real0_==UN(这是rrd文件中的NaN值)) 返回0 其他的 返回Real0_ 对实数1做同样的事情,并将两个结果相加。
希望我能帮上忙:)

以下是解决您问题的方法:) 看看IF、TIME、GT等函数的用法。 您可以尝试以下方法: CDEF:Real=TIME,sometimestamp,GT,Real0,Real0,UN,0,Real0,IF,IF,TIME,sometimestamp,GT,Real1,Real1,UN,0,Real1,IF,IF+ 这意味着: if(TIME()>sometimestamp) 返回Real0_ else if(Real0_==UN(这是rrd文件中的NaN值)) 返回0 其他的 返回Real0_ 对实数1做同样的事情,并将两个结果相加。 希望我能帮忙:)

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',