Cacti - ERROR:RPN最终堆栈大小!= 1,带有4个图形

时间:2018-04-23 07:16:29

标签: graph stack rrdtool cacti

我使用Cacti和rrdxport来获得2个图的总和,它运行正常。

rrdtool xport --start now-5min --end now-5min DEF:out1=sbc1_fs_call_five_min_do_137.rrd:fs_call_five_min_do:LAST DEF:out2=sbc2_fs_call_five_min_do_147.rrd:fs_call_five_min_do:LAST CDEF:sum=out1,out2,+ XPORT:sum:"output sum"

输出:

<xport> 
<meta>
<start>1524226500</start>
<step>300</step>
<end>1524226500</end>
<rows>1</rows>
<columns>1</columns>
<legend>
<entry>output sum</entry>
</legend>
</meta>  
<data>
<row><t>1524226500</t><v>7.1630000000e+02</v></row> 
</data>
</xport>

现在我想添加4个图,但我总是得到错误RPN最终堆栈大小!= 1.

rrdtool xport --start now-5min --end now-5min DEF:out1=sbc1_fs_call_five_min_do_137.rrd:fs_call_five_min_do:LAST DEF:out2=sbc1_berlin_fs_call_five_min_do_1176.rrd:fs_call_five_min_do:LAST DEF:out3=sbc2_fs_call_five_min_do_147.rrd:fs_call_five_min_do:LAST DEF:out4=sbc2_berlin_fs_call_five_min_do_1187.rrd:fs_call_five_min_do:LAST CDEF:sum=out1,out2,out3,out4,+ XPORT:sum:"output sum" ERROR: RPN final stack size != 1

为什么它适用于2个图形但不适用于4个图形? 谢谢你的帮助!

1 个答案:

答案 0 :(得分:1)

您错误地指定了您的RPN功能,并且堆栈中还有多个项目。

此功能按预期工作:

CDEF:sum=out1,out2,+

这是因为RPN命令序列说:

  • out1放在堆栈上,
  • out2放在堆栈上,
  • 删除前两个项目并添加它们,然后将结果推送到堆栈

这会导致堆栈中包含一个项目,其值为(out1 + out2)。

然而,你的第二次尝试是这样做的:

CDEF:sum=out1,out2,out3,out4,+

这意味着:

  • out1放在堆栈上,
  • out2放在堆栈上,
  • out3放在堆栈上,
  • out4放在堆栈上,
  • 删除前两个项目并添加它们,然后将结果推送到堆栈

结果,堆栈现在有三个东西 - out1,out2和(out3 + out4)。 RRDTool检查堆栈大小以捕获任何RPN错误和错误,因为它看到堆栈中剩余多个项目。

您应该做的是在定义中再添加两个添加操作:

CDEF:sum=out1,out2,out3,out4,+,+,+

这为RPN添加了两个步骤,在堆栈中添加剩余的两个项目并获得所需的结果。

我建议你通过RPN tutorial来更好地了解如何指定RPN。